当在上一节中,Pangolin 安装成功后,便可进行ORB-SLAM2的安装
这里的普通模式是指直接运行编译之后的可执行文件,ROS 模式是以ROS机器人框架的形式执行
首先从 github 下载源文件
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
普通模式运行
然后运行.sh 可执行文件
cd ORB_SLAM2
chmod +x build.sh
./build.sh
可以看到编译报错
那么如果在编译过程中显示 相关的错误,则需要在 ~/ORB_SLAM2/include/System.h
中添加对应的头文件
#include <unistd.h>
再次编译,发现报错
参考文件:
ORB_SLAM2编译及试运行(含ROS)
在参考的文章中能找到
result: ORB SLAM2 编译报错 /usr/bin/ld:找不到 -lEigen3::Eigen
解决方法是将CMakeLists.txt
文件的find_package(Eigen3 3.1.0 REQUIRED
后面添加上NO_MODULE
保存重新编译,编译完成
ROS模式运行
如果要用 ROS 模式跑 demo,还要额外编译 ROS 文件。
首先将 ROS 所在目录加入 ROS_PACKAGE_PATH
环境变量中
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/heying/ORB_SLAM2/Examples/ROS
完成后保存并退出
source 更新变量之后开始编译:
chmod +x build_ros.sh
./build_ros.sh
出现报错
Pangolin版本的调整
2022年 09月 13日 星期二 09:29:09 CST
继续流程重新编译后发生报错
进行查询后得知可能安装的版本有误
【在ROS下编译ORB_SLAM2遇到错误,】pangolin could not be found because dependency Eigen3 could not be found
cd Pangolin
git checkout tags/v0.5
git checkout -b v0.5
然后重新编译
cmake ..
cmake --build .
完成编译
当Pangolin重新编译完成后,那么再重新编译ORB_SLAM2
当尝试将libORB_SLAM2.so移动到/usr/lib/后,编译还是报错
尝试跟换分支为v0.5
cd Pangolin/
git checkout -b v0.5
git checkout tags/v0.5
git checkout v0.5
然后重新编译Pangolin后再重新编译ORB_SLAM2
然后编译bulid_ros.sh,出现报错
./bulid_ros.sh
解决方法
https://github.com/raulmur/ORB_SLAM2/issues/535
在路径Examples/ROS/ORB_SLAM2
的CMakeList.txt
中添加一行
-lboost_system
完成后保存并退出
重新编译,编译通过
./bulid_ros.sh
至此,ORB-SLAM2的安装完成