SLAM中evo评估工具(用自己的数据集评估vinsFusion)

本文档详细介绍了如何配置VINS-Fusion的标题文件以适应特定设备,并展示了如何修改源码以适应EVO评估工具的轨迹格式。主要修改了三个文件段落,涉及位姿输出、回环检测位姿优化和路径更新。重新编译工程后,安装EVO并介绍了其常用指令。通过EVO评估了VINS-Fusion生成的带和不带回环检测的轨迹文件,展示了回环检测的强大功能。
摘要由CSDN通过智能技术生成

配置标题文件修改

主要根据自己的设备,修改自己传感器的ROS话题陀螺仪的噪声相机的内参外参,以及输出路径,以及要开启回环检测等功能:

image-20220906222444974

源码修改

由于VINS-Fusion保存的轨迹格式与evo所使用的格式不同,VINS-Fusion输出的轨迹格式不符合tum数据集的格式。因此需要对源代码就行修改,更改保存轨迹的格式。需要修改三处地方:

第一处
~/vins_fusion_ws/src/VINS-Fusion/vins_estimator/src/utility/visualization.cpp

这个文件功能是:保存不带回环检测的位姿输出并可视化

void pubOdometry(const Estimator &estimator, const std_msgs::Header &header)函数中:

修改前:

image-20220906221509567

修改为:

ofstream foutC2(VINS_RESULT_PATH, ios::app);
foutC2.precision(9);
foutC2.setf(ios::fixed,  ios::floatfield);
foutC2 << header.stamp.toSec() << " ";
foutC2.precision(6);
foutC2 	<< estimator.Ps[WINDOW_SIZE].x() << " "
        << estimator.Ps[WINDOW_SIZE].y() << " "
        << estimator.Ps[WINDOW_SIZE].z() << " "
        << tmp_Q.x() << " "
        << tmp_Q.y() << " "
        << tmp_Q.z() << " "
        << tmp_Q.w() << endl;
foutC2.close();
第二处
~/vins_fusion_ws/src/VINS-Fusion/loop_fusion/src/pose_graph.cpp

这个文件功能是:回环检测的位姿优化

void PoseGraph::addKeyFrame(KeyFrame* cur_kf, bool flag_detect_loop) 函数中

修改前:

image-20220906221842468

修改为:

ofstream loop_path_file2(VINS_RESULT_PATH, ios::app);
loop_path_file2.setf(ios::fixed,  ios::floatfield);
loop_path_file2.precision(9);
loop_path_file2 << cur_kf->time_stamp << " ";
loop_path_file2.precision(6);
loop_path_file2 << P.x() << " "
                << P.y() << " "
                << P.z() << " "
                << Q.x() << " "
                << Q.y() << " "
                << Q.z() << " "
                << Q.w() << endl;
loop_path_file2.close();
第三处

同样在pose_graph.cpp这个文件夹

~/vins_fusion_ws/src/VINS-Fusion/loop_fusion/src/pose_graph.cpp

void PoseGraph::updatePath() 函数中

修改前:

image-20220906222125214

修改为:

ofstream loop_path_file2(VINS_RESULT_PATH, ios::app);
loop_path_file2.setf(ios::fixed,  ios::floatfield);
loop_path_file2.precision(9);
loop_path_file2 << (*it)->time_stamp << " ";
loop_path_file2.precision(6);
loop_path_file2 << P.x() << " "
                << P.y() << " "
                << P.z() << " "
                << Q.x() << " "
                << Q.y() << " "
                << Q.z() << " "
                << Q.w() << endl;
loop_path_file2.close();
重新编译工程
cd ~/vinFusion_ws/
catkin_make

安装evo

1、安装命令
//安装pip
sudo apt-get update
sudo apt install python-pip

//安装EVO
pip install evo --upgrade --no-binary evo
2、常用指令

evo包括两个带尺度的评估工具和四个简单的工具:

Metrics工具

evo_ape:绝对位姿评估工具;
evo_rpe:相对位姿评估工具;

简单工具

evo_traj:轨迹可视化工具
evo_res:结果评估工具
evo_fig:绘图查看工具
evo_config:evo配置工具

-h 可以查看对应工具的可选参数,包括:轨迹对齐、可视化坐标、尺度对齐等等

image-20220906223006549

运行vinsFusion生成位姿估计文件

image-20220906223913796

运行中画面

image-20220906224644424

可以看到回环检测模块的功能很强大,直接把错误的地图纠正,红色的线即为回环检测模块的位姿估计

生成的轨迹文件

image-20220906224011645

其中,vio.csv 是不带回环的位姿估计器生成的轨迹文件,vio_loop.csv是回环检测模块生成的轨迹文件,另外一个是真值文件

使用evo评估轨迹

image-20220906225125628

评估结果:

image-20220906225300591
KITTI数据集的groundtruth是指对于KITTI数据集的图像序列,提供了每帧相机的位姿信息。通过使用KITTI数据集的groundtruth,可以用于评估算法在相机视觉定位、SLAM等任务上的性能。为了处理KITTI数据集的groundtruth,可以通过下载evo的源码,其包含了一些脚本用于处理KITTI数据集。可以从GitHub上获取evo的源码,地址为https://github.com/MichaelGrupp/evo.git。此外,可以在KITTI官网上获取更多关于KITTI数据集的相关介绍和下载链接,包括各个榜单的介绍、数据集的标注数据、图像数据、标定校准数据等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vins-Fusion运行kitti,euroc和tum数据集并使用evo评估](https://blog.csdn.net/qq_41246375/article/details/125412820)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [KITTI数据集(概念版)](https://blog.csdn.net/m0_37605642/article/details/119804038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值