文章目录
- 一、下载ORB Slam2依赖
- 二、安装编译ORB_SLAM2
- 三 、运行Kitee数据集
- 3.1 数据集准备
- 3.2 启动!!!
- 安装ORB Slam2遇到的问题
- 总结
- 参考资料
一、下载ORB Slam2依赖
Orb Slam2
需要下载的依赖项:
Pangolin0.5 、Eigen3.1以上、 Sophus、Ceres、OpenCV、g2o、DBoW3
这些依赖项的github地址集成:https://github.com/Gongkaka/slambook2/tree/master/3rdparty
- Pangolin安装
直接从github下载下来。解压之后进行编译:注意安装0.5版本的,不然会出错
cd Pangolin
mkdir build && cd build
cmake ..
sudo make -j8
- Eigen、Sophus直接git下来即可
- Ceres安装
先安装依赖项:sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-devgit下来编译:
cd ceres-solver
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
- OpenCV安装
可参考以前的博客 - g2o安装
安装依赖:sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3git下来编译:
cd g2o
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
- DBoW3安装
git下来mkdir build
cd build/
cmake ..
make
sudo make install
二、安装编译ORB_SLAM2
- 进入你的ROS工作空间的src目录下,下载ORB_SLAM2的安装包
配置环境:
在控制台输入:export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:你的ORB_SLAM2的目录/Examples/ROS
,比如在我的虚拟机就是export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
- 进入ORB_SLAM2文件夹下
cd ~/catkin_ws/src/ORB_SLAM2
sudo chmod +x build.sh
./build.sh
- 接着使用ROS编译
sudo chmod +x build_ros.sh
./build_ros.sh
成功之后是这样:
Example目录下也多了可执行文件:
三 、运行Kitee数据集
3.1 数据集准备
链接:https://www.cvlibs.net/datasets/kitti/eval_odometry.php
3.2 启动!!!
执行命令:ORB-SLAM2支持单目、双目和RGBD数据,这里选择mono_kitti的单目数据集来运行和调试。
运行命令格式为:
./mono_kitti path_to_vocabulary path_to_settings path_to_sequence
该命令共有4个参数:
-
mono_kitti:为ORB-SLAM2编译生成的针对MONO_KITTI数据集的可执行文件,一般路径为ORB-SLAM2工程目录下Examples/Monocular/mono_kitti;
-
path_to_vocabulary为所选词典的路径,路径为ORB_SLAM2/Vocabulary/ORBvoc.txt;
-
path_to_settings为配置文件,存放在ORB-SLAM2/Examples/Monocular下,运行时选择了KITTI00-02.yaml(可选择别的),该配置文件中存放的相机的内参和外参,提取特征时候图像金字塔相关参数,可视化过程中用到的参数;
-
path_to_sequence为数据集路径,这个根据自己下载的kitti数据集路径来指定。这里在工作空间中建立文件夹dataset来存放数据集00,故目录为 …/dataset/sequences/00/ (…/表示上层目录,./表示当前目录)
我的执行,如下:在ORB_Slam2目录下,开启终端,输入:
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml ../dataset/sequences/00/
安装ORB Slam2遇到的问题
- 1.static错误
解决方法参考资料:
ORB_SLAM2/include/LoopClosing.h
文件中的:
修改为:
- 2、"not a std"错误
解决方法:修改CMakeLists.txt文件 参考资料
- 3、
Pangolin_FOUND to FALSE so package “Pangolin“ is considered to be NOT FOUND.
错误
解决方法:修改CMakeLists.txt文件 参考资料
- 4、
usleep错误
解决方法就是在对应文件里加#include <unistd.h>
,比如我上面那个错误是发生在mono_kitti.cc文件里,就去这里面添加即可 - 5、
找不到../../config.h
这个错误的原因是没有先运行./build.sh
而直接运行build_ros.sh
。
解决办法就是先./build.sh编译成功后再build_ros.sh。 - 6、ros的opencv版本和本地opencv版本矛盾问题。
参考的这个
总结
经过本次实验,了解了ORB_SLAM2的调用方法,进一步见识到了SLAM的魅力,同时在实验过程中,遇到特别多的bug,最终还是解决了。一定要多尝试,学会搜索,学好English。
参考资料
orb Slam2安装1
orb Slam2安装2
Orb_SLAM+Kitti
依赖项安装