【SLAM】使用evo工具来绘制ORB_SLAM2轨迹图,评估ATE\RPE指标
本文介绍了如何使用evo工具来绘制ORB_SLAM2的轨迹图和进行ATE\RPE评估。
参考博客:SLAM轨迹精度评价工具evo简介与使用
1. 说明
为了让SLAM建图的结果能够更好的展示出来,我们可以使用github开源的evo工具集[1]来对ORB_SLAM2生成的相机轨迹进行绘制,展现出绘制后的结果图。同时进行ape和rpe评估,评估结果也是我们SLAM系统和其他SLAM系统进行对比的重要指标。
github开源地址:https://github.com/MichaelGrupp/evo
2. 工具安装
evo工具可以直接使用pip来安装,命令如下,使用了清华镜像源。
1 | pip install evo -i https://pypi.tuna.tsinghua.edu.cn/simple |
第一次安装的时候报错了,提示是缺少了Fortran compiler。
1 | customize UnixCCompiler |
咨询GPT后,说是需要安装gfortran包
1 | sudo apt-get install -y gfortran |
如果安装gfortran的时候连不上ports.ubuntu.com站点,可以使用如下命令修改镜像源。
1 sudo sed -i 's#ports.ubuntu.com#mirrors.ustc.edu.cn/ubuntu-ports#g' /etc/apt/sources.list
默认情况下pip会把evo工具安装在用户家目录下,所以需要把这个目录放入PATH中才能使用evo命令。
1 | export PATH=$PATH:$HOME/.local/bin/ |
3. 工具使用
3.1. 轨迹绘制
绘制轨迹的命令如下,这里的参数包含了ORB_SLAM2运行后产生的相机轨迹结果CameraTrajectory.txt,以及用作参考(ref)的TUM数据集groundtruth真实值。同时提供-a
选项来对齐相机轨迹结果和TUM数据集对真实值,--plot
参数代表我们当前需要做的操作是显示轨迹图。
1 | evo_traj tum \ |
运行效果如下,可以看到蓝色的是我们运行出来的结果,灰色虚线是TUM数据集的真实值,二者基本拟合,效果不错。
图中出现了一个报错,会导致我们没有办法挪动GUI中的图像(本来是可以3D挪动的)
1 | QStandardPaths: wrong ownership on runtime directory /run/user/1000, 1000 instead of 0 |
解决办法就是修改下面两个目录的权限
1 | sudo chown root:root /run/user/1000 |
修改之后重新启动工具,就可以正常显示并且移动了
3.2. ATE\RPE评估
除了绘制轨迹图外,evo工具还可以用来输出ORB_SLAM2运行结果的绝对位姿误差ATE,对应的命令是evo_ape。如果要显示相对位姿误差RPE就用evo_rpe命令。
本文只涉及evo工具使用,关于ATE和RPE这两个指标的含义,可以去参考TUM针对SLAM系统性能评估的论文:A benchmark for the evaluation of RGB-D SLAM systems[2]。
在我参考的evo工具使用博客中有下面这一句话:
大多数中论文的指标为测量绝对误差,在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。
说人话就是在使用这两个位姿评估命令的时候,groundtruth必须要在CameraTrajectory之前传入。示例命令如下:
1 | evo_ape tum \ |
运行之后会绘制出一张APE的结果图,展现了整体的APE波动。
终端中会显示各项指标的计算结果:
max
:最大误差;mean
:平均误差;median
:误差中位数;min
:最小误差;rmse
:均方根误差;sse
:和方差、误差平方和;std
:标准差。
下面这个是ORB_SLAM2针对tum fr1/desk序列的的运行结果
1 | APE w.r.t. translation part (m) |
一般情况下,在论文中可以直接使用RMSE这个均方根误差来作为SLAM系统精度的对比指标,该指标越低代表系统误差越低,也就是系统越优秀。
4. The end
本文对evo工具的简单介绍就到这里啦。
Grupp M. evo: Python package for the evaluation of odometry and SLAM [EB/OL]. https://github.com/MichaelGrupp/evo, 2017. ↩︎
J. Sturm, N. Engelhard, F. Endres, W. Burgard and D. Cremers, “A benchmark for the evaluation of RGB-D SLAM systems,” 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems, Vilamoura-Algarve, Portugal, 2012, pp. 573-580, doi: 10.1109/IROS.2012.6385773. ↩︎