【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)

文章目录

  • 一、`./build.sh`编译ORB-SLAM3出现的各种问题
    • 1、问题:OpenCV > 4.4 not found
    • 2、问题:error: ‘slots_reference’ was not declared in this scope
  • 二、ORB-SLAM3 效果展示
    • 1、编译`./build.sh`成功
    • 2、发现源码里没有euroc_examples.sh文件
    • 3、测试EuRoC数据集上的效果
      • (2)视频序列:MH_01_easy
      • (3)视频序列:MH_03_medium
      • (3)视频序列:V1_01_easy
      • (4)使用IMU数据时可能出现的问题:
      • (5)单目、双目、单目+IMU、双目+IMU精度对比
    • 4、测试TUM-VI数据集上的效果
      • (2)视频序列:dataset-room1_512_16
      • (3)视频序列:dataset-corridor1_512_16
      • (4)视频序列:dataset-magistrale1_512_16
      • (5)视频序列:dataset-outdoors1_512_16
      • (6)运行问题:Fail to track local map!
  • 三、其他问题及本地相机运行参考

一、./build.sh编译ORB-SLAM3出现的各种问题

1、问题:OpenCV > 4.4 not found

编译build.sh时报错:OpenCV > 4.4 not found
图片[1] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
解决方法
(1)找到ORB_SLAM3文件夹下的CMakeList.txt 中的find_package(OpenCV 4.4)位置,修改为:

LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules) find_package(OpenCV 3 REQUIRED)   if(NOT OpenCV_FOUND)      message(FATAL_ERROR "OpenCV > 4.4 not found.")

2、问题:error: ‘slots_reference’ was not declared in this scope

Pangolin最新版本导致的bug,报错error;如果跑ORB-SLAM2、ORB-SLAM3不要用最新版的Pangolin进行编译安装,会导致error: ‘slots_reference’ was not declared in this scope或者cannot findind Eigen3.cmake,我就是安装了最新版然后编译ORB-SLAM2库的时候报了一大堆错,改环境跟代码花了一天时间都没有搞定,最后发现是这个问题,欲哭无泪www

解决方法

1、卸载最新版Pangolin,进入Pangolin文件夹的build里边,执行
sudo make uninstall

2、安装Pangolin v0.5的版本。

安装链接:https://github.com/stevenlovegrove/Pangolin/tree/v0.5

3、安装步骤
cd Pangolin
mkdir build && cd build
cmake ..
cd ..
cmake --build .
sudo make install

参考链接:https://codingnote.cc/p/484790/

二、ORB-SLAM3 效果展示

1、编译./build.sh成功

图片[2] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

2、发现源码里没有euroc_examples.sh文件

好不容易build.sh编译完要测数据了,然后发现源码里没有euroc_examples.sh,然而README里是这么说的:
图片[3] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
直接裂开,虚空examples,一查发现有同行说是新版的ORB-SLAM3库里没有了,于是赶紧找找有没有前辈下载下来了euroc_examples.sh这个文件,然后就找到了个github里头是有这个文件的,这个github还是ORB-SLAM3的详细注释版,以后要看懂代码的话少不了它,链接先放这了

https://github.com/electech6/ORB_SLAM3_detailed_comments

3、测试EuRoC数据集上的效果

(1)EuRoC数据集由两个针孔摄像头(pinhole)和一个惯性传感器(IMU)记录得到,以下只展示测试的部分视频序列的部分结果

(2)视频序列:MH_01_easy

MH_01_easy 双目 效果
图片[4] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
Eval命令行示例:

echo "Launching MH01 with Stereo sensor"./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereoecho "------------------------------------"echo "Evaluation of MH01 trajectory with Stereo sensor"python evaluation/evaluate_ate_scale.py evaluation/Ground_truth/EuRoC_left_cam/MH01_GT.txt f_dataset-MH01_stereo.txt --plot MH01_stereo.pdf

和GroundTruth轨迹对比的Eval结果:
absolute_translational_error.rmse 0.025333 m
absolute_translational_error.mean 0.022465 m
absolute_translational_error.median 0.022143 m
absolute_translational_error.std 0.011709 m
absolute_translational_error.min 0.000709 m
absolute_translational_error.max 0.072913 m
图片[5] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(3)视频序列:MH_03_medium

MH_03_medium 双目 效果
图片[6] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
MH_03_medium 单目+IMU 效果
图片[7] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(3)视频序列:V1_01_easy

V1_01_easy 双目 效果图片[8] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
V1_01_easy 单目+IMU 效果
图片[9] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(4)使用IMU数据时可能出现的问题:

(4-a)跟踪局部地图失败,需要等SLAM系统重新初始化

Fail to track local map!IMU is not or recently initialized.Reseting active map...SYSTEM-> Reseting active map in monocular case`

图片[10] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
(4-b)IMU加速度不足 not enough acceleration
图片[11] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(5)单目、双目、单目+IMU、双目+IMU精度对比

以MH_01_easy视频序列为例,双目或单目+IMU精度最高,单目偏差离谱(由于没有尺度因子,存在零点漂移)
图片[12] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

4、测试TUM-VI数据集上的效果

(1)TUM-VI数据集由两个鱼眼摄像头(fisheye)和一个惯性传感器(IMU)记录得到,以下只展示测试的部分视频序列的部分结果

(2)视频序列:dataset-room1_512_16

dataset-room1_512_16 单目+IMU 效果
图片[13] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
dataset-room1_512_16 双目+IMU 效果
图片[14] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(3)视频序列:dataset-corridor1_512_16

dataset-corridor1_512_16 单目+IMU 效果
图片[15] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
dataset-corridor1_512_16 双目+IMU 效果
图片[16] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(4)视频序列:dataset-magistrale1_512_16

dataset-magistrale1_512_16 单目+IMU 效果
图片[17] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(5)视频序列:dataset-outdoors1_512_16

dataset-outdoors1_512_16 单目+IMU 效果
→ A.不忽略20米外的远处特征点,运行至户外大天空场景时可见算法跟踪到的红框内有很多天空点,会导致算法发散,对地图点的定位失败
图片[18] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
→ B. 忽略20米外的远处特征点后最终建图效果,跑到最后不知为啥总会Shutdown,没能看到闭环检测后的效果,具体后面得再找找原因,
图片[19] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
dataset-outdoors1_512_16 双目+IMU 效果
→ A.(1)不忽略20米外的远处特征点,运行至户外大天空场景时可见算法跟踪到的红框内有很多天空点,会导致算法发散,对地图点的定位失败
图片[20] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
(2)运行到后边越来越卡顿,这是由于地图太大,缓存都吃满了
图片[21] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
图片[22] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
→ B.(1)忽略20米外的远处特征点,可见户外大天空场景下许多天空点都被滤除了,算法不会发散,匹配点集中在20米内
图片[23] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
(2)这个是我跑的,在远、大场景不做闭环时,最后可能存在累计漂移
图片[24] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
(3)我跑到最后不知为啥总会Shutdown,没能看到闭环检测后的效果,具体后面得再找找原因,最终建图效果可参照别人的结果
图片[25] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL
(4)忽略20米外的特征点后不会爆内存
图片[26] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

(6)运行问题:Fail to track local map!

跟踪局部地图失败,等待系统执行重定位Relocalize或重新建图new map即可
图片[27] - 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic) - MaxSSL

三、其他问题及本地相机运行参考

https://blog.csdn.net/hhz_999/article/details/120473659
https://blog.csdn.net/qq_36804414/article/details/109241264
https://blog.csdn.net/qq_36804414/article/details/109248693

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享