龙空技术网

一看就懂的ORB-SLAM3编译运行指南

智星崛起 65

前言:

此刻朋友们对“orb算法中文”都比较看重,姐妹们都需要剖析一些“orb算法中文”的相关内容。那么小编同时在网络上汇集了一些关于“orb算法中文””的相关文章,希望小伙伴们能喜欢,看官们快快来了解一下吧!

前面我们提到,ORB-SLAM3作为常用的机器人建图与定位技术,是当前最优秀的基于特征点的视觉SLAM系统之一。

它支持单目、双目、单目惯导、双目惯导、RGB-D等多种相机模式,兼具精度和鲁棒性,是机器人SLAM算法工程师的一项「必备技能」。

为了更好地帮助大家学习和理解ORB-SLAM3,小智计划进行一系列理论与实践相结合的深度技术分享。而这些,都是我们在实践过程中总结出来的宝贵经验。

具体内容包括:

1. ORB-SLAM3论文导读与整体算法流程梳理

2. ORB-SLAM3中的跟踪线程

2.1特征点提取、匹配,以及地图初始化

2.2 IMU预积分原理及代码梳理

2.3跟踪模式详解:参考关键帧跟踪、恒速模型跟踪、重定位跟踪、局部地图跟踪

3. ORB-SLAM3中的局部建图线程

3.1 IMU的初始化

3.2 局部建图线程代码梳理

4. ORB-SLAM3中的闭环检测及多地图融合线程

4.1闭环检测代码梳理

4.2多地图概念及地图融合代码梳理

本期则是这系列课程的「开胃前菜」——ORB-SLAM3的编译运行。

我们结合实践经验,对ORB-SLAM3安装和编译的常见问题进行总结分享,同时细化不同传感器的运行方式。可以说,这是一份非常适合「新手小白」的ORB-SLAM3编译运行指南。

ORB-SLAM3编译及常见问题解决

第一步,下载代码:

git clone

或者

git clone

第二步,按照代码中的README.md,进行环境安装和编译即可,具体就不赘述了。

不过我掐指一算,大家在编译过程中,可能会遇到几个小问题:

1)提示找不到GLEW

解决方法:sudo apt install libglew-dev

2)当执行./euroc_examples.sh时,出现找不到libpango_image.so这个库的情况;

解决方法:首先,在系统中查找文件sudo find / -name libpango_image.so;结果为:/usr/local/lib/libpango_image.so

然后,将.so文件路径的目录添加到/etc/ld.so.conf

sudo gedit/etc/ld.so.conf,同时在文件的末尾添加一行:/usr/local/lib/libpango_image.so,执行sudo /sbin/ldconfig生效。

最后,在编译build_ros.sh之前,需要执行gedit ~/.bashrc,在文件末尾添加如下:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples/ROS

ORB-SLAM3各类传感器运行

不同传感器下,ORB-SLAM3的运行方式存在着差异。在这里,我们分为非ROS和ROS两种环境来进行讨论。

非ROS环境下运行

1)EuROC数据集

用微型飞行器采集的视觉惯性数据集,包含双目相机和IMU同步测量数据及位姿的真值。

这里需下载MH_01_easy.zip;下载地址:

将其解压后并命名为MH01;之后根据自己的地址${dir}来运行。

纯单目

./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml ${dir}/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono

纯双目

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ${dir}/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo

单目惯导

./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ${dir}/MH01 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_monoi

双目惯导

./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml ${dir}/MH01 ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereoi

2)TUM VI 数据集

其采用的相机和IMU传感器,在硬件上进行了时间同步。

所提供的图像具有高动态范围,事先进行了光度标定,用20Hz的帧率采集,分辨率为1024像素*1024像素;三轴IMU采样频率为200Hz,可测量加速度和角速度。

需要下载数据集dataset-room1_512_16,下载地址:

纯单目

./Monocular/mono_tum_vi ../Vocabulary/ORBvoc.txt Monocular/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data Monocular/TUM_TimeStamps/dataset-room1_512.txt dataset-room1_512_mono

纯双目

./Stereo/stereo_tum_vi ../Vocabulary/ORBvoc.txt Stereo/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data /home/sangfor/2023/bro_ws/dataset-room1_512_16/mav0/cam1/data Stereo/TUM_TimeStamps/dataset-room1_512.txt dataset-room1_512_stereo

单目惯导

./Monocular-Inertial/mono_inertial_tum_vi ../Vocabulary/ORBvoc.txt Monocular-Inertial/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data Monocular-Inertial/TUM_TimeStamps/dataset-room1_512.txt Monocular-Inertial/TUM_IMU/dataset-room1_512.txt dataset-room1_512_monoi

双目惯导

./Stereo-Inertial/stereo_inertial_tum_vi ../Vocabulary/ORBvoc.txt Stereo-Inertial/TUM_512.yaml ${dir}/dataset-room1_512_16/mav0/cam0/data ${dir}/dataset-room1_512_16/mav0/cam1/data Stereo-Inertial/TUM_TimeStamps/dataset-room1_512.txt Stereo-Inertial/TUM_IMU/dataset-room1_512.txt dataset-room1_512_stereoi

RGB-D

这里下载数据集:rgbd_dataset_freiburg1_desk,下载地址:

然后下载associate.py,下载地址:

目的是从rgb.txt 文件和 depth.txt 文件中读取时间戳,并通过查找最佳匹配来连接它们。

之后开始运行:

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ${dir}/rgbd_dataset_freiburg1_desk /home/sangfor/2023/bro_ws/rgbd_dataset_freiburg1_desk/associations.txt

ROS环境下运行

纯单目

rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml

rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/image_raw

纯双目

rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false

rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw

单目惯导

rosrun ORB_SLAM3 Mono_Inertial Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/EuRoC.yaml

rosbag play MH_01_easy.bag

双目惯导

rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml false

rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu

RGB-D

下载数据集:rgbd_dataset_freiburg1_xyz.bagfr1/xyz选择more info找到bag文件后,然后下载。下载地址:

之后运行:

rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml

rosbag play rgbd_dataset_freiburg1_xyz.bag

至于KITTI数据集,我们留给感兴趣的同学自行下载探索。下载地址:

相关阅读

盘点机器人常用的六大主流SLAM算法

标签: #orb算法中文 #特征匹配算法orb