ORB-SLAM是西班牙Zaragoza大学的Raul Mur-Artal编写的视觉SLAM系统。他的论文“ORB-SLAM: a versatile andaccurate monocular SLAM system"发表在2015年的IEEE Trans. on Robotics上。开源代码包括前期的ORB-SLAM和后期的ORB-SLAM2。
项目主页网址为: http://webdiis.unizar.es/~raulmur/orbslam/。
ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模的、小规模的、室内室外的环境都可以运行。该系统对剧烈运动也很鲁棒,支持宽基线的闭环检测和重定位,包括全自动初始化。该系统包含了所有SLAM系统共有的模块: 跟踪(Tracking)、建图(Mapping)、重定位(Relocalization)、闭环检测(Loop closing)。由于ORB-SLAM系统是基于特征点的SLAM系统,故其能够实时计算出相机的轨线,并生成场景的稀疏三维重建结果。ORB-SLAM2在ORB-SLAM的基础上,还支持标定后的双目相机和RGB-D相机。
ORB-SLAM是一个完整的SLAM系统,包括视觉里程计、跟踪、回环检测。它是一种完全基于稀疏特征点的单目SLAM系统,其核心是使用ORB(Orinted FAST and BRIEF)作为整个视觉SLAM中的核心特征。具体体现在几个方面:
它主要有三个线程组成:跟踪、Local Mapping(又称小图)、Loop Closing(又称大图)。
本机系统:虚拟机Ubuntu16.04
(考虑后续其他项目配置,建议虚拟机操作)
注:跟过slam14讲的环境配置基本就满足了。
1.安装工具
在配置过程中需要cmake、gcc、g++和Git工具。可在终端通过以下命令下载。(考虑后续使用,cmake装3.5以上最好)
sudo apt-get install cmake
sudo apt-get install git
sudo apt-get install gcc g++
2.安装Pangolin
依赖:
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev
安装:
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j4
sudo make install
图形不显示问题参考:
https://blog.csdn.net/weixin_45080292/article/details/122386491?spm=1001.2014.3001.5501
3.安装Eigen3
安装:
sudo apt-get install libeigen3-dev
主要用于矩阵计算,给个学习连接:
https://github.com/fengbingchun/Eigen_Test
4.g2o安装
g2o库官网:https://github.com/RainerKuemmerle/g2o.git
点击commits可以查看旧版本的提交文件
可以自己下载下来,也可以通过终端指令下载在开启的文件目录下:
git clone https://github.com/RainerKuemmerle/g2o.git
用git tag可以查看旧版本的提交文件
安装依赖项:sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.4 libcholmod3.0.6
低版本的依赖安装
sudo apt-get install libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev
cd g2o //进入g2o文件夹
mkdir build //创建build文件夹
cd build //进入 build
cmake .. //cmake编译 这个过程比较漫长
make
sudo make install //安装即可
sudo ldconfig //更新一下刚安装好的库文件
5.OPENCV3安装
为后续使用直接装opencv3版本,该过程很容易出现各种错误,但基本都可搜到解决方案。
安装链接:
https://blog.csdn.net/Ding_0110M/article/details/88083741?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164775358416782246429325%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164775358416782246429325&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-88083741.142v2pc_search_result_control_group,143v4control&utm_term=ubuntu16.04%E5%AE%89%E8%A3%85opencv&spm=1018.2226.3001.4187
6.DBow安装
从Github上现在模型库:
https://github.com/dorian3d/DBoW2
进入文件目录,安装
mkdir build
cd build/
cmake ..
make
sudo make install
ROS安装(可选),至此环境配置完成。
克隆仓库
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
编译ORB-SLAM2,第三方库中的DBoW2和g2o,并解压ORB词典
cd ORB_SLAM2
chmod +x build.sh
./build.sh
编译出现内存无法分配,将./build.sh最后的make -j改为make,保存退出。
1.单目例子
有TUM、KITTI、EuRoC三种数据集,本实验使用TUM数据集,从http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载序列并解压缩。
本机测试数据集:
解压:
tar -zxvf rgbd-dataset_freiburg1_xyz.tgz
在ORB-SLAM2文件下运行
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml Data/rgbd_dataset_freiburg1_xyz
https://github.com/Navigine/Indoor-Positioning-And-Navigation-Algorithms#indoor-navigation-algorithms-