从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录四:ORBSLAM评估工具EVO的使用
前文:
从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(一):安装与配置
从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(二):相机测试与标定
从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(三):使用USB相机运行ORBSLAM
1 工具安装
git clone https://github.com/MichaelGrupp/evo.git
cd evo
pip3 install --editable . --upgrade --no-binary evo
执行下面指令验证安装是否成功:
$ evo_ape -h
usage: evo_ape [-h] {
kitti,tum,euroc,bag} ...
Absolute pose error (APE) metric app (c) evo authors
positional arguments:
{
kitti,tum,euroc,bag}
optional arguments:
-h, --help show this help message and exit
2 数据测试
2.1 KITTI数据集
cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz
若测试通过说明EVO配置无误,本文在配置过程中遇到下面问题,特作记录。
错误1
:
ImportError cannot import name _imaging from PIL
[ERROR] evo module evo.main_ape crashed - no logfile written (disabled)
解决方法:更新Pillow库,根据matplotlib3.4.2要求,Pillow库版本应大于等于6.2.0,pyparsing版本应大于2.2.1这里对它们进行升级。由于matplotlib同时依赖两个库,因此升级过程遇到
错误1.1
:ERROR: pip’s dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts
即依赖冲突
。
解决方法:直接卸载当前的pillow和pyparsing,重新安装
pip3 install pillow==6.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install pyparsing==2.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
更新完毕后问题解决。
错误2
:
File “/home/winter/.local/lib/python3.8/site-packages/matplotlib/backends/backend_tkagg.py”, line 1, in
from . import _backend_tk
File “/home/winter/.local/lib/python3.8/site-packages/matplotlib/backends/_backend_tk.py”, line 7, in
import tkinter as tk
ModuleNotFoundError: No module named ‘tkinter’
[ERROR] evo module evo.main_ape crashed - no logfile written (disabled)
解决方法:安装tkinter库
sudo apt install tk-dev
# 本文使用3.8版本python,因为evo要求Python版本大于3.7
sudo apt-get install python3.8-tk
至此,测试完毕。
2.2 EuRoC数据集
EuRoC数据集的真值文件是.csv格式,为使用evo进行多轨迹绘图需要转换为tum格式
cd ~/Project/SLAM/ORBSLAM2/dataSet/MH05-D/mav0/state_groundtruth_estimate0
evo_traj euroc data.csv --save_as_tum
将ORSLAM2运行EuRoC数据集保存的KeyFrameTrajectory.txt视为实际值,与真值data.tum进行比较,
evo_traj tum KeyFrameTrajectory.txt --ref=groundtruth.tum -p -a
可以看出真值与实际值差了一个尺度系数,这是因为单目视觉具有尺度不确定性,通过evo工具的–correct_scale可以进行修正
evo_ape tum KeyFrameTrajectory.txt groundtruth.tum -p -a --correct_scale
2.3 TUM数据集
类似地,执行命令
cd test/data
evo_ape tum fr2_desk_groundtruth.txt fr2_desk_ORB.txt -p -a
3 参数使用说明
--save_as_tum
:保存为TUM格式
-a --align
:轨迹对齐
-p --plot
:绘制轨迹
-s --correct_scale
:尺度对齐
--ref
:参数指定参考轨迹
-va
:两条轨迹进行对齐
-v
:命令行输出细节信息