ORB_SLAM2、ORB_SLAM3跑EuRoc&KITTI数据集及evo评估

2023-05-16

EuRoc数据集

ORB_SLAM2

单目

./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml ../slam_data/RuRoc/MH01/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt 

双目

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml ../slam_data/EuRoc/MH01/mav0/cam0/data ../slam_data/EuRoc/MH01/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt

ORB_SLAM3

为使结果能在evo中进行评估,需要修改文件夹下system.cc文件中的第584行、第592行、第638行和第647行(SaveTrajectoryEuroc和SaveKeyFrameTrajectoryEuroc函数),把1e9*(*lT)改成(*lT),1e9*pKF改成pKF,改完示例如下:

f << setprecision(6) << pKF->mTimeStamp << " " <<  setprecision(9) << t.at<float>(0) << " " << t.at<float>(1) << " " << t.at<float>(2) << " " << q[0] << " " << q[1] << " " << q[2] << " " << q[3] << endl;

改完后重新编译(./build.sh)

改对应目标主函数中的结果储存路径可以把结果存在对应的文件夹,示例如下(stereo_inertial_euroc.cc文件):

SLAM.SaveTrajectoryEuRoC("~/Desktop/result-3/EuRoc/stereo+IMU/"+f_file);
SLAM.SaveKeyFrameTrajectoryEuRoC("~/Desktop/result-3/EuRoc/stereo+IMU/"+kf_file);

在orb_slam3的example文件夹下,打开一个terminal

单目:

./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml ../../slam_data/EuRoc/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt MH01_mono

单目+IMU:

在orb_slam3的example文件夹下,打开一个terminal

./Monocular-Inertial/mono_inertial_euroc ../Vocabulary/ORBvoc.txt ./Monocular-Inertial/EuRoC.yaml ../../slam_data/EuRoc/MH05 ./Monocular-Inertial/EuRoC_TimeStamps/MH05.txt MH05_monoi

双目:

./Stereo/stereo_euroc ../Vocabulary/ORBvoc.txt ./Stereo/EuRoC.yaml ../../slam_data/EuRoc/MH01 ./Stereo/EuRoC_TimeStamps/MH01.txt MH01_stereo

双目+IMU:

./Stereo-Inertial/stereo_inertial_euroc ../Vocabulary/ORBvoc.txt ./Stereo-Inertial/EuRoC.yaml ../../slam_data/EuRoc/MH01 ./Stereo-Inertial/EuRoC_TimeStamps/MH01.txt MH01_stereoi

Kitti数据集

Orb slam3

1)stereo

在examples文件夹下打开terminal

./Stereo/stereo_kitti ../Vocabulary/ORBvoc.txt ./Stereo/KITTI04-12.yaml ../../slam_data/kitti/sequences/05

2)stereo+IMU

需要自己写stereo_initial_kitti.cc文件及配置文件,可参考:​​​​​​https://blog.csdn.net/a922922737/article/details/115116952?utm_term=orbslam3%E8%83%BD%E4%B8%8D%E8%83%BDkitti%E6%95%B0%E6%8D%AE%E9%9B%86&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-1-115116952&spm=3001.4430

另需将saveTrajectory函数设置为SaveTrajectoryTum,使最终结果保存为tum格式,方便后续评估(kitti格式无时间戳,需输出文件与真值文件行数完全相同,加了IMU之后的结果文件由于开始无imu数据导致结果行数与真值结果行数不一致,无法在evo中进行比较)

将真值文件改为TUM格式可参考:https://www.zhihu.com/question/56510863

重新./build.sh后在orb slam3文件夹下打开terminal

./Examples/Stereo-Inertial/stereo_inertial_kitti ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/KITTI00-02.yaml ../slam_data/kitti/sequences/00 ../slam_data/kitti/IMU/2011_10_03-00/oxts/data ../slam_data/kitti/IMU/NewTimestamps00.txt
./Examples/Stereo-Inertial/stereo_inertial_kitti ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/KITTI00-02.yaml ../slam_data/kitti/sequences/01 ../slam_data/kitti/IMU/2011_10_03-01/2011_10_03_drive_0042_extract/oxts/data ../slam_data/kitti/IMU/NewTimestamps01.txt
./Examples/Stereo-Inertial/stereo_inertial_kitti ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/KITTI05-12.yaml ../slam_data/kitti/sequences/05 ../slam_data/kitti/IMU/05/oxts/data ../slam_data/kitti/IMU/NewTimestamps05.txt
./Examples/Stereo-Inertial/stereo_inertial_kitti ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/KITTI05-12.yaml ../slam_data/kitti/sequences/07 ../slam_data/kitti/IMU/2011_09_30-07/2011_09_30_drive_0027_extract/oxts/data ../slam_data/kitti/IMU/NewTimestamps07.txt
./Examples/Stereo-Inertial/stereo_inertial_kitti ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/KITTI05-12.yaml ../slam_data/kitti/sequences/09 ../slam_data/kitti/IMU/09/oxts/data ../slam_data/kitti/IMU/NewTimestamps09.txt
./Examples/Stereo-Inertial/stereo_inertial_kitti ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/KITTI05-12.yaml ../slam_data/kitti/sequences/10 ../slam_data/kitti/IMU/10/oxts/data ../slam_data/kitti/IMU/NewTimestamps10.txt

TUM_VI数据集

./Stereo-Inertial/stereo_inertial_tum_vi ../Vocabulary/ORBvoc.txt ./Stereo-Inertial/TUM-VI.yaml ../../slam_data/tum_vi/dataset-room2_512_16/mav0/cam0/data ../../slam_data/tum_vi/dataset-room2_512_16/mav0/cam1/data ./Stereo-Inertial/TUM_TimeStamps/dataset-room2_512.txt ./Stereo-Inertial/TUM_IMU/dataset-room2_512.txt room2_1

EVO评估

1、绝对误差

算平移误差

evo_ape tum MH01.tum f_MH01_mono.txt   -p --plot_mode=xyz -a --correct_scale –-save_results ./orb3_ape01.zip
evo_ape tum kitti_10_tum_gt.txt CameraTrajectory_10.txt   -p --plot_mode=xz

kitti纯视觉的真值和估计出来的轨迹一开始就是对齐的,所以在评估时不用对齐

evo_ape tum kitti_10_tum_gt.txt traj_kitti_10.txt -va --n_to_align=10  -p --plot_mode=xz

VI估计的结果在评估时需要对齐,只用前10帧对齐数据,可以避免由于全局对齐导致的轨迹误差均摊到整条轨迹上,能更明显地看出随时间误差累积的情况

算旋转误差 

evo_ape tum MH01.tum MH01_CameraTrajectory.txt -r angle_deg -va

2、相对误差

每帧之间

evo_rpe tum MH01.tum f_MH01_mono.txt   -p --plot_mode=xyz -a --correct_scale --save_results ./orb3_rpe01.zip

每米之间

evo_rpe tum MH01.tum f_MH01_mono.txt   --delta 1 --delta_unit m -p --plot_mode=xyz -a --correct_scale --save_results ./orb3_rpe001.zip

3、各数据集结果对比

evo_res orb3_ape01.zip orb3_ape03.zip orb3_ape05.zip -v -p –-save_table evo/orb3_mono.csv

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORB_SLAM2、ORB_SLAM3跑EuRoc&KITTI数据集及evo评估 的相关文章

随机推荐