参考博客---来源于作者:111111111112454545
安装和编译orbslam2和3
数据集为EUROC数据集--选择双目数据
一、对于orbslam2:
这条指令在:按照ORB_SLAM3作者的Github说明,从kmavvisualinertialdatasets – ASL Datasets 下载一个ASL格式的序列(本人下载的Machine Hall 01数据集,简称MH01),之后双击打开ORB-SLAM3源码中的脚本“euroc_examples.sh“,找到包含MH01的指令,并将其改为自己的路径。
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/hhj/data/MH_01_easy/mav0/cam0/data /home/hhj/data/MH_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt
./Examples/Stereo/stereo_euroc 指双目的可执行程序
Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml代表相机的参数
/home/du/work/proslma_ws/MH_01_easy/mav0/cam0/data相机0拍摄的照片路径(换成自己的)
/home/du/work/proslma_ws/MH_01_easy/mav0/cam1/data 相机1拍摄的照片(换成自己的)
Examples/Stereo/EuRoC_TimeStamps/MH01.txt 时间戳(通过时间戳调用照片)
-
运行完会在ORB-SLAM2文件夹下产生CameraTrajectory.txt文件,
-
这个文件是用来evo评估时与真实值进行对比。记得复制走不然下次运行会被覆盖
orbslam2运行效果:
二、对于orbslam3
运行双目数据:
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/hhj/data/MH_01_easy Examples/Stereo/EuRoC_TimeStamps/MH01.txt
./Examples/Stereo/stereo_euroc双目可执行文件
./Vocabulary/ORBvoc.txt
./Examples/Stereo/EuRoC.yaml 相机参数
/home/du/work/proslma_ws/MH_01_easy 数据集路径,换成自己的
./Examples/Stereo/EuRoC_TimeStamps/MH01.txt 时间戳
运行效果
运行双目+imu的数据:
三、使用evo轨迹评价工具对orbslam2和orbslam3在双目数据下进行比较
用EVO评价绝对位姿误差(APE)和相对位姿误差(PRE):
3.1什么是APE和PRE?-------参考博客
绝对轨迹误差(ATE):将对齐后的轨迹直接与真值比较,求取每个状态的RMSE作为整段轨迹总误差。其计算步骤主要包含两个:(1)轨迹对齐 (2)在对齐轨迹与真值之间计算RMSE。
相对轨迹误差(RTE):将整段轨迹按一定规则截取成若干小段。取每一小段的第一个状态求取与真值的变换,利用这个变换将最后一个状态与真值对齐,计算误差。该计算结果即作为该段的误差。重复上述步骤即可以得到多段误差。
RMSE是所有观测值与真值偏差的平方和与观测次数n比值的平方根 术语解释 剩余标准差S,也称均方差。
3.2evo工具的简单使用
evo支持一下几种数据格式:
TUM 轨迹文件
KITTI 位姿
EUROC .csv和.txt文件
ROS bag文件
3.2.1 evo_traj:直接画出轨迹
evo_traj tum CameraTrajectory_ORBSLAM2.txt
这里画出刚刚得出的orbslam2的轨迹图
3.2.2多个轨迹画到一起
evo_traj tum CameraTrajectory_ORBSLAM2.txt CameraTrajectory_ORBSLAM3.txt --ref CameraTrajectory_ORBSLAM2.txt -va -p
把orbslam2和orbslam3的轨迹图合在一起时出现报错,原因可能是orbslam3中时间精度问题。在orbslam2和orbslam3中system.cc中时间精度输出不一样。需要:
把system.cc里面的Line677和Line685的源码中的1e9*(*lT)变成(*lT)
效果图:
这里我想把orbslam2和orbslam3以及真实轨迹合在一起,但是报错了
应该是真实轨迹data.csv文件类型错误,要转换1下
为了进行evo测评需要将其转换为tum格式,转换后第一个第一列为时间戳信息。第二到第四列为位置信息,后四列为四元数表示旋转信息。转换方式如下:
将euroc转换成tum格式
evo_traj euroc data.csv --save_as_tum
效果图:
3.3EVO评价绝对位姿误差(APE)和相对位姿误差(PRE)
3.2.1orbslam3与真实轨迹的APE和PRE
evo_ape tum data.tum CameraTrajectory_ORBSLAM3.txt -va -p
-va:表示对齐后的详细信息
-p:表示画出图像
这里tum后面的第一个文件就是标准文件,用于比较。
3.2.1orbslam2与真实轨迹的APE和PRE
3.4综合比较两种算法
evo_res orbslam2_mh01_ape.zip orbslam3_mh01_ape.zip -p
evo_res orbslam2_mh01_rpe.zip orbslam3_mh01_rpe.zip -p