实操指南:ORB-SLAM3的编译运行

前面我们提到,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 https://github.com/UZ-SLAMLab/ORB_SLAM3

或者

git clone https://github.com/electech6/ORB_SLAM3_detailed_comments

第二步,按照代码中的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;下载地址:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

将其解压后并命名为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,下载地址:https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download

  • 纯单目

./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,下载地址:https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download

然后下载associate.py,下载地址:https://cvg.cit.tum.de/data/datasets/rgbd-dataset/tools

目的是从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.bag,fr1/xyz选择more info找到bag文件后,然后下载。下载地址:

https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download#freiburg1_xyz

之后运行:

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

rosbag play rgbd_dataset_freiburg1_xyz.bag

至于KITTI数据集,我们留给感兴趣的同学自行下载探索。下载地址:https://www.cvlibs.net/datasets/kitti/eval_object.php

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ORB-SLAM3 是一种用于实时摄像头SLAM (Simultaneous Localization and Mapping) 的开源系统。以下是在Ubuntu操作系统上实操ORB-SLAM3程序的步骤: 1. 安装依赖项 ORB-SLAM3需要安装一些依赖项,包括Eigen, Pangolin, OpenCV, g2o等。可以通过命令行安装这些依赖项,例如: ``` sudo apt-get install libeigen3-dev libpangolin-dev libopencv-dev libopencv-highgui-dev libopencv-calib3d-dev libopencv-contrib-dev libopencv-imgproc-dev libopencv-video-dev libglew-dev libc++-dev libblas-dev liblapack-dev libatlas-base-dev libsuitesparse-dev ``` 2. 下载ORB-SLAM3 可以在ORB-SLAM3的官方网站上下载源代码。 3. 编译ORB-SLAM3 进入ORB-SLAM3的源代码目录,运行以下命令: ``` mkdir build cd build cmake .. make ``` 4. 运行ORB-SLAM3 运行以下命令启动ORB-SLAM3: ``` ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /path/to/dataset ``` 其中,/path/to/dataset是要处理的数据集的路径。 以上是在Ubuntu上实操ORB-SLAM3程序的基本步骤。但是在具体操作中,还需要根据实际情况进行一些参数配置和调试。 ### 回答2: 要实操ORB-SLAM3的程序,可以按照以下步骤进行: 1. 环境配置:首先需要在计算机上配置好相应的环境。ORB-SLAM3是一个基于C++的开源项目,可以在GitHub上找到其源代码。在配置环境过程中,需要确保计算机上安装了CMake、OpenCV和Pangolin等必要的依赖库。 2. 下载ORB-SLAM3代码:在GitHub上找到ORB-SLAM3的源代码,并将其下载到本地计算机上。确保下载的版本是稳定的,并且符合你的实际需求。 3. 构建项目:使用CMake工具,根据ORB-SLAM3的CMakeLists.txt文件,构建可执行文件。这一步将会编译源代码并生成可执行文件,用于运行ORB-SLAM3程序。 4. 准备数据集:为了运行ORB-SLAM3,需要准备一个实际的数据集,可以是从相机或者其他传感器中获得的视频或图像序列。确保数据集包含足够多的特征点和图像质量较好。 5. 运行ORB-SLAM3:执行生成的可执行文件,并指定数据集的路径作为输入参数。ORB-SLAM3将自动读取数据集,进行图像特征提取、相机位姿估计、特征点匹配等计算,并输出实时的相机轨迹和三维地图重建结果。 6. 分析和调试:根据ORB-SLAM3的输出结果,可以对实际运行的效果进行分析和调试。观察相机轨迹是否准确,重建的三维地图是否符合预期,并检查是否存在错误或异常情况。 总结:实操ORB-SLAM3的程序主要包括环境配置、下载源代码、构建项目、准备数据集、运行程序和分析调试。通过这些步骤,可以使用ORB-SLAM3进行实时的视觉SLAM(同时定位与地图构建),并从输入的图像序列中获取相机的位置姿态和环境的三维结构。 ### 回答3: 要实操ORB-SLAM3的程序,可以按照以下步骤进行操作: 1. 环境准备:首先,需要准备好合适的硬件设备,如搭载Ubuntu操作系统的计算机和摄像头。然后,在计算机上安装相应的开发环境和依赖库,如CMake、OpenCV和Eigen等。 2. 下载源代码:在ORB-SLAM3的GitHub仓库上,下载源代码并解压到本地。可以通过命令行或者GUI界面进行操作。 3. 编译代码:使用CMake来构建和编译ORB-SLAM3的源代码。在终端中切换到ORB-SLAM3的根目录,在终端中执行以下命令: ``` mkdir build cd build cmake .. make -j ``` 这将生成可执行文件和相关的库文件。 4. 数据集准备:获取用于测试的数据集,可以是视频文件或图像序列。确保数据集与ORB-SLAM3的输入格式兼容,如图像的分辨率和格式等。 5. 运行程序:在终端中执行以下命令,运行ORB-SLAM3程序,并指定数据集作为输入: ``` ./Examples/Monocular/mono_sam Examples/Monocular/Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml path_to_dataset_directory ``` 其中,ORBvoc.txt是ORB特征词汇文件,KITTI00-02.yaml是相机参数文件,path_to_dataset_directory是数据集所在的目录。 6. 观察结果:ORB-SLAM3程序将会运行,并输出实时的相机位姿估计和场景重建结果。可以在控制台中观察输出信息,或者在图形界面中查看实时的相机轨迹和稀疏点云重建结果。 需要注意的是,实操ORB-SLAM3的程序需要一定的编程和计算机视觉知识基础,同时要理解程序的工作原理和参数配置。此外,为了获得更好的实验结果,可以尝试不同的配置和数据集,以及对源代码进行定制化开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值