tum格式 就用 evo_traj tum
euroc格式,就用 evo_traj euroc
拿到Vins-mono代码,只修改 output_path 和 pose_graph_save_path后,使用闭环,使用时间偏置估计。
在运行 roslaunch vins_estimator euroc.launch 的窗口,最后按入's'键保存生成了 vins_result_loop.csv文件。
然后运行:
evo_traj tum vins_result_no_loop.csv -p --plot_mode=xyz
结果会出现这个错误:(你这里本身是euroc数据集,用的是tum命令,不出错才怪)
[ERROR] TUM trajectory files must have 8 entries per row and no trailing delimiter at the end of the rows (space)
以上原因在于 evo 仅仅支持 TUM 格式数据集绘制,而VINS-Mono源码保存的是 EUROC 格式数据集。把源码中的数据集保存方式改成 TUM 格式的 即可。euroc和tum的数据格式区别参考博客[1],euroc由于是四旋翼采集的数据,因此,包含:
(时间戳,位置,姿态,速度,陀螺仪bias,加速度bias)
tum的数据集格式如下:
(时间戳,位置,姿态)
因此,euroc数据集可以转为tum格式的数据集,反过来是不行的。
小疑问:虽然说这是euroc格式的数据,但是输出的 vins_result_loop.csv 文件明显只有8列啊,哪里不符合tum格式了,不太明白~~
具体修改了3个地方,参考博客[3]。
最后就能运行出 tum格式的 vins_result_loop.csv文件。
运行的 MH_01_easy.bag 的绝对轨迹在文件夹
EuRoC/mav0/state_groundtruth_estimate0/data.csv
参考[2] 运行下述代表,把euroc格式的数据集转为 tum格式的数据集
evo_traj euroc data.csv --save_as_tum// 将euroc格式的文件data.cs转成tum格式。生成data.tum
反正数据集格式tum就用tum,euroc就用euroc
实际轨迹就是 (二)中生成的 vins_result_loop.csv 格式文件,内部已经是tum格式的数据了
直接运行
evo_traj tum vins_result_no_loop.csv -p --plot_mode=xyz
即可出现
evo_ape tum data.tum ~/output/vins_result_no_loop.csv -va --plot --plot_mode xyz --save_results a.zip
不太懂为什么roll角突变那么严重,这正常吗?
euroc就用下述代码:
evo_ape euroc data.csv ~/output/vins_result_no_loop.csv -va --plot --plot_mode xyz --save_results a.zip
tum就用下述代码:文件具体是什么后缀,取决于你的数据集保存的文件。
evo_ape tum data.csv ~/output/vins_result_no_loop.csv -va --plot --plot_mode xyz --save_results a.zip
目前联合对比轨迹,很容易出现下述问题:(经过运行ground_truth,你发现两个轨迹天差地别,肯定是你的ground_truth找错了)
[ERROR] found no matching timestamps between /home/zjj/Data/EuRoC/mav0/state_groundtruth_estimate0/data.tum and /home/zjj/output/vins_result_loop.csv with max. time diff 0.01 (s) and time offset 0.0 (s)
[1]. 各类数据格式_半尺杆头的博客-CSDN博客
[2]. Ubuntu 18.04 ——— VINS-Mono运行与EVO的评测与使用_@曾记否的博客-CSDN博客_vins-mono评估
[3].