本文使用evo工具对EuRoC开源数据集的视觉SLAM精度进行评价
默认已经安装好了ORB-SLAM3和evo,两者的安装教程网上很多资料可以参考,这里不再赘述
1.运行ORB-SLAM3,跑EuRoC数据集的双目部分,以MH04_difficult为例:
cd ~/orb_slam3/Examples
./Stereo/stereo_euroc ../Vocabulary/ORBvoc.txt ./Stereo/EuRoC.yaml ../test/MH_04_difficult/ ./Stereo/EuRoC_TimeStamps/MH04.txt
这里,./Stereo/stereo_euroc为双目可执行文件,../Vocabulary/ORBvoc.txt为ORB字典所在位置,../test/MH_04_difficult/为数据集位置,注意:ORB-SLAM3运行双目数据集时,路径到MH_04_difficult即可,./Stereo/EuRoC_TimeStamps/MH04.txt为双目数据集对应的时间戳。
然后会看到这样的界面

等跑完后生成两个txt,一个是CameraTrajectory.txt,代表全局轨迹,一个是KeyFrameTrajectory.txt,代表关键帧轨迹。
2.使用ORB-SLAM3带的评价工具评价
ORB-SLAM3自带了一个评价工具,位置在~/orb_slam3/evaluation/Ground_truth/,里面有个evaluate_ate_scale.py可以对SLAM轨迹进行粗略评价,使用方法如下:
python ../evaluation/evaluate_ate_scale.py ../evaluation/Ground_truth/EuRoC_left_cam/MH04_GT.txt ../evaluation/CameraTrajectory.txt --plot mh04ORB-SLAM2.pdf
也会如果加上参数--verbose和--verbose2也会得到RMSE这些误差,感兴趣的可以自己了解一下,因为我对这个python脚本做了一些修改,得到了这样的图:

3.使用evo工具进行评价
evo工具主要有6个常用命令
evo_ape:用于评估绝对位姿误差
evo_rpe:用于评估相对位姿误差
evo_traj:用于画轨迹、输出轨迹文件、转换轨迹数据格式
evo_res:比较来自evo_ape和evo_rpe生成的一个或多个结果文件的工具
evo_fig:(不常用)用于重新打开序列化图
evo_config:(不常用)evo工具全局设置和配置文件操作
(1)evo_ape:评估绝对位姿误差
首先把EuRoc的数据格式转化成TUM数据格式
evo_traj euroc data.csv --save_as_tum
得到data.tum,这里我把CameraTrajectory.txt重命名为ORB-SLAM2,然后进行评价,
evo_ape tum data.tum ORB-SLAM2 -v -a --plot --plot_mode xy -s --save_results results_gai1/ape.zip
推荐使用
evo_ape tum data.tum ORB-SLAM --plot_mode xyz -as --save_results results_gai1/ape.zip
其中
-v表示verbose mode,详细模式
-a表示采用SE(3) Umeyama对齐,只处理平移和旋转
-s 表示仅对齐尺度,不加-s表示默认尺度对齐参数为1.0,即不进行尺度对齐
-as表示采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度
–plot表示画图,–plot_mode选择画图模式,二维图或者三维图,可选参数为[xy, xz, yx, yz, zx, zy, xyz],默认为xyz



上述命令运行之后会在终端输出统计信息(单位:米),其中
max:最大误差
mean:误差均值
median:误差中位数
min:最小误差
rmse:均方根误差
sse:方差
std:标准差
(2)evo_rpe:评估相对位姿误差
evo_rpe和evo_ape的使用方法基本一致,只是换个指令,可以得到类似的结果图和误差
evo_rpe tum data.tum ORB-SLAM2 -v --plot --plot_mode xyz -as --save_results results_gai1/ape.zip
(3)evo_traj:画轨迹
通过evo_traj可以画出两条轨迹,参数和上面一样
evo_traj tum ORB-SLAM2 --ref data.tum -v --plot --plot_mode xy -as

(4)evo_res:比较结果
通过evo_res可以比较两条轨迹的误差曲线,箱型图等一些误差
evo_res results_gai1/ape.zip results_gai1/ape1.zip -p --ignore_title --save_table results/table.csv

(5)evo_config:配置evo
evo_config set 进行参数设置
下面是几个常用的参数,其含义以及可选项
参数
| plot_export_format | 输出图像时图像存储格式 ;常用png,pdf等 |
|---|---|
| plot_linewidth | 作图时线的宽度;matplotlib支持的宽度,默认1.5 |
| plot_reference_color | 图像中参考轨迹的颜色; black,red,green等 |
| plot_reference_linestyle | 参考轨迹的线型; matplotlib支持的线型,默认– |
| plot_seaborn_style | 图像背景和网格;whitegrid,darkgrid,white,dark |
| plot_split | 是否分开显示/存储图像; false/true |
| plot_figsize | 画图的图像大小;默认宽高均为6,可使用其他值 |
| table_export_format | 表格数据输出格式; 常用 csv,excel,latex,json |
例如命令
evo_config set plot_seaborn_style whitegrid 将画图背景更改成白色网格
evo_config set plot_fontfamily serif plot_fontscale 1.2 将字体改为衬线型并调为1.2倍大小
evo_config set plot_reference_linestyle - 将画图所使用的线型改为 -
evo_config set plot_figsize 10 9 将所画图的图像大小调整为10 9(宽 高)
evo_config reset 将参数还原到默认值
参考:
https://blog.csdn.net/dcq1609931832/article/details/102465071
https://blog.csdn.net/Yangy_Jiaojiao/article/details/124419966



1万+

被折叠的 条评论
为什么被折叠?



