运行SLAM:
cd ORB-SLAM3/Example
#run slam
./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml "$pathDatasetEuroc"/MH03 ./Monocular/EuRoC_TimeStamps/MH03.txt dataset-MH03_mono
利用ORB-SLAM3自带模块评估:
cd ORB-SLAM3/Example
#evaluate & plot
python ../evaluation/evaluate_ate_scale.py ../evaluation/Ground_truth/EuRoC_left_cam/MH03_GT.txt f_dataset-MH03_mono.txt --plot MH03_mono.pdf
运行结果(ORB_SLAM3_ate.rmse,scale,GT_ate.rmse):
由于单目的尺度未标定,故出现RMSE数值大的现象。
evo评估 (ate):
#plot trajct
evo_traj tum f_dataset-MH03_mono.txt --ref=MH03_groundtruth.txt -p -a -s
#evaluate ate
evo_ape tum f_dataset-MH03_mono.txt MH03_groundtruth.txt -p -a -s
运行结果:
2、pure stereo
运行SLAM:
cd ORB-SLAM3/Example
#run slam
./Stereo/stereo_euroc ../Vocabulary/ORBvoc.txt ./Stereo/EuRoC.yaml "$pathDatasetEuroc"/MH03 ./Stereo/EuRoC_TimeStamps/MH03.txt dataset-MH03_stereo
利用ORB-SLAM3自带模块评估(ate):
cd ORB-SLAM3/Example
#evaluate & plot
python ../evaluation/evaluate_ate_scale.py ../evaluation/Ground_truth/EuRoC_left_cam/MH03_GT.txt f_dataset-MH03_stereo.txt --plot MH03_stereo.pdf
运行结果:
evo评估 (ate):
#plot trajct
evo_traj tum f_dataset-MH03_stereo.txt --ref=MH03_groundtruth.txt -p -a -s
#evaluate ate
evo_ape tum f_dataset-MH03_stereo.txt MH03_groundtruth.txt -p -a -s
运行结果:
轨迹图与投影图与上边基本一致,具体精度如下:
3、mono+IMU
运行SLAM:
cd ORB-SLAM3/Example
#run slam
./Monocular-Inertial/mono_inertial_euroc ../Vocabulary/ORBvoc.txt ./Monocular-Inertial/EuRoC.yaml "$pathDatasetEuroc"/MH03 ./Monocular-Inertial/EuRoC_TimeStamps/MH03.txt dataset-MH03_mono_inertial
利用ORB-SLAM3自带模块评估(ate):
cd ORB-SLAM3/Example
#evaluate & plot
python ../evaluation/evaluate_ate_scale.py ../evaluation/Ground_truth/EuRoC_left_cam/MH03_GT.txt f_dataset-MH03_mono_inertial.txt --plot MH03_mono_inertial.pdf
评估结果:
evo评估 (ate):
#plot trajct
evo_traj tum f_dataset-MH03_mono_inertial.txt --ref=MH03_groundtruth.txt -p -a -s
#evaluate ate
evo_ape tum f_dataset-MH03_mono_inertial.txt MH03_groundtruth.txt -p -a -s
评估结果:
4、stereo+IMU
运行SLAM:
cd ORB-SLAM3/Example
#run slam
./Stereo-Inertial/stereo_inertial_euroc ../Vocabulary/ORBvoc.txt ./Stereo-Inertial/EuRoC.yaml "$pathDatasetEuroc"/MH03 ./Stereo-Inertial/EuRoC_TimeStamps/MH03.txt dataset-MH03_stereo_inertial
利用ORB-SLAM3自带模块评估(ate):
cd ORB-SLAM3/Example
#evaluate & plot
python ../evaluation/evaluate_ate_scale.py ../evaluation/Ground_truth/EuRoC_left_cam/MH03_GT.txt f_dataset-MH03_stereo_inertial.txt --plot MH03_stereo_inertial.pdf
评估结果:
evo评估 (ate):
#plot trajct
evo_traj tum f_dataset-MH03_stereo_inertial.txt --ref=MH03_groundtruth.txt -p -a -s
#evaluate ate
evo_ape tum f_dataset-MH03_stereo_inertial.txt MH03_groundtruth.txt -p -a -s
评估结果:
由于:1.特征点提取后,要在distributeOctTree函数里用到了sort排序,应该是排序加入了不稳定因素,使得每次保留的特征点不一样;2.多线程:并行运行过程中,每次电脑的运行状况不同;3.算EPnP的ransac不是稳定的;导致每次运行结果都有变化,故以下结果中RMSE和SCALE取运行多次的均值。
数据 | 运动特征 | 模式 | Max (cm) |
Min (cm) |
Median (cm) |
RMSE (cm) |
SCALE |
MH_01 (easy) |
length:80.6m time:182s 回环多,速度慢 |
pure mono | 10.4 | 0.3 | 3.0 | 3.6 | -- |
pure stereo | 6.3 | 0.2 | 2.7 | 3.1 | 1 | ||
mono+IMU | 14.0 | 0.4 | 4.5 | 5.8 | 1 | ||
stereo+IMU | 14.7 | 0.4 | 5.1 | 6.2 | 1 | ||
MH_02 (easy) |
length:73.4m time:150s 回环多,速度慢 |
pure mono | 42 | 0.7 | 5.8 | 6.5 | -- |
pure stereo | 4.6 | 0 | 1.24 | 2.1 | 1 | ||
mono+IMU | 11 | 0.4 | 3.4 | 4.6 | 0.999 | ||
stereo+IMU | 8.8 | 0.1 | 2.7 | 3.8 | 1 | ||
MH_03 (medium) |
length:130.9m time:132s 回环多,距离长,速度快 |
pure mono | 25.3 | 0.1 | 3.4 | 4.3 | -- |
pure stereo | 9.6 | 0.2 | 1.9 | 2.5 | 1 | ||
mono+IMU | 13 | 0.6 | 5.4 | 6.3 | 0.995 | ||
stereo+IMU | 10.7 | 0.5 | 3.9 | 5.2 | 0.995 | ||
MH_04 (difficult) |
length:91.7m time:99s 回环少,速度快,中间有段环境光度变化大 |
pure mono | 40.5 | 2.1 | 8.8 | 13.2 | -- |
pure stereo | 25.7 | 1.1 | 9.5 | 12.75 | 1.008 | ||
mono+IMU | 27.8 | 1.8 | 11.5 | 15.55 | 0.986 | ||
stereo+IMU | 17.2 | 0.7 | 6.0 | 6.6 | 0.998 | ||
MH_05 (difficult) |
length:97.5m time:111s 与MH04相似 |
pure mono | 23.6 | 0.6 | 5.3 | 6.4 | -- |
pure stereo | 16 | 0.4 | 3.9 | 5.4 | 0.994 | ||
mono+IMU | 27.3 | 0.3 | 7.6 | 9.2 | 0.992 | ||
stereo+IMU | 17.4 | 1.4 | 7.4 | 8.5 | 0.991 |