为了想测试室外场景下VINS-MONO定位情况,室外环境的KITTY数据集因无时间戳,EVO测评较困难。
故选择TUM数据集,outdoors1~8(户外):在校园内的室外场景拍摄,但是数据包里只在开始和结束有真实值,没办法与真值全程评测。(outdoors4)
所以再选择个室内 room1~6(室内):对应有5个图像序列,整个过程都带有运动捕捉系统提高的真实值进行测试。(room4)

修改VINS-mono轨迹保存代码

直接输出的结果格式并不能用EVO工具进行评估,需要修改代码,将其输出格式改为tum格式:

首先修改VINS-Mono-master\vins_estimator\src\utility\中的visualization.cpp,从156行开始修改为以下形式:

ofstream foutC(VINS_RESULT_PATH, ios::app);foutC.setf(ios::fixed, ios::floatfield);foutC.precision(0);foutC << header.stamp.toSec() << " ";foutC.precision(5);foutC << 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;

然后修改VINS-Mono-master\pose_graph\src中的pose_graph.cpp中的addKeyFrame函数,在153行,修改为以下形式:

ofstream loop_path_file(VINS_RESULT_PATH, ios::app);loop_path_file.setf(ios::fixed, ios::floatfield);loop_path_file.precision(0);loop_path_file << cur_kf->time_stamp << " ";loop_path_file.precision(5);loop_path_file  << P.x() << " "<< P.y() << " "<< P.z() << " "<< Q.x() << " "<< Q.y() << " "<< Q.z() << " "<< Q.w() << endl;

在VINS-Mono-master\pose_graph\src中的pose_graph.cpp中,updatePath函数中的内容也要修改,在630行。

ofstream loop_path_file(VINS_RESULT_PATH, ios::app);loop_path_file.setf(ios::fixed, ios::floatfield);loop_path_file.precision(0);loop_path_file << (*it)->time_stamp << " ";loop_path_file.precision(5);loop_path_file  << P.x() << " "<< P.y() << " "<< P.z() << " "<< Q.x() << " "<< Q.y() << " "<< Q.z() << " "<< Q.w() << endl;

最后修改VINS-Mono-master\pose_graph\src中的pose_graph_node.cpp中的main函数,506行,将csv格式改为txt格式:

VINS_RESULT_PATH = VINS_RESULT_PATH + "/vins_result_loop.txt";

到此,VINS输出结果的格式更改完成,接下去修改真实值的格式。

修改config文件

想要得到带有回环检测的结果需要修改tum_config.yaml文件,首先修改输出路径,有两个地方可以改成同一个路径,第6行的output_path修改为自己指定的路径,然后第70行pose_graph_save_path修改为指定路径,然后开启回环检测,第67行loop_closure改为1,这样才会输出带回环检测的结果。

真实值修改为tum格式

真实值为对应的.tar文件中的gt_imu.csv文件,由于EVO并不支持这种格式,需要先进行格式转换,转换成.tum文件再和VINS运行的结果进行比较。
转换的命令为:

evo_traj euroc gt_imu.csv --save_as_tum

得到的gt_imu.tum就是可以使用EVO和VINS结果进行比较的格式。

终端运行

roscore
roslaunch vins_estimator tum.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play dataset-outdoors4_512_16.bag

EVO评测

evo_traj tum vins_result_loop_tumout.txt -p --plot_mode=xyz
--------------------------------------------------------------------------------
name:   vins_result_loop_tumout
infos:  6092 poses, 992.077m path length, 696.322s duration
evo_ape tum gt_imu.tum vins_result_loop_tumout.txt -va --plot
--------------------------------------------------------------------------------
APE w.r.t. translation part (m)
(with SE(3) Umeyama alignment)max   86.683007mean   12.773848median 8.709058min 7.277328rmse    15.745825sse    303467.550378std    9.206509


因outdoors1~8(户外):在校园内的室外场景拍摄,只在开始和结束有真实值,不是全程有真值,所以无法进行APE绝对位姿误差的评断。

因room1~6(室内):对应有5个图像序列,整个过程都带有运动捕捉系统提高的真实值。故找段室内场景进行测试。

roscore
roslaunch vins_estimator tum.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play dataset-room4_512_16.bag

evo_ape tum gt_imu.tum vins_result_loop_tumroom.txt -va --plotAPE w.r.t. translation part (m)
(with SE(3) Umeyama alignment)max   0.124530mean    0.045489median  0.037617min 0.009132rmse    0.053137sse 2.961871std 0.027464

evo评测VINS-MONO---TUM数据集相关推荐

  1. m2dgr数据集在vins mono运行

    m2dgr数据集在vins mono运行 1.代码的修改 1.1 yaml文件的修改 1.2修改VINS-mono轨迹保存代码 1.3修改launch文件 2 EVO显示轨迹 2.1运行比较结果 参考 ...

  2. 使用evo工具评估ORB_SLAM2在TUM数据集上的运行轨迹

    目录 一.安装evo工具 二.运行RGB-D基准数据集 1.下载TUM数据集 2.关联rgb图像和depth图像 3.运行rgb-d数据集 三.使用evo评估 1.常用指令 2.绝对轨迹误差 3.相对 ...

  3. evo评测VINS-MONO---代码修改、数据格式转换、数据测试

    数据格式(data formal):TUM/EuRoC/Kitti数据集 格式转换 修改VINS-mono轨迹保存代码 由于VINS-Mono保存的轨迹格式与EVO所使用的格式不同,VISNmono输 ...

  4. ORB-SLAM3轨迹保存与evo评测

    ORB-SLAM3轨迹保存与evo评测 为了利用evo对ORB-SLAM3进行评测,花了一点时间走了一些弯路,简单记录一下同时也为需要的人提供一点参考. 我主要用的是ROS接口,用单目+imu跑的Eu ...

  5. TUM数据集官方说明相应的评估文件evaluate_rpe.py和evaluate_ate.py的使用

    一.TUM数据集使用方法 TUM数据集的格式解读地址:https://vision.in.tum.de/data/datasets/rgbd-dataset/file_formats TUM的RGBD ...

  6. 利用Realsense D435和Mocap制作TUM数据集

    利用Realsense D435和Mocap制作TUM数据集 开门见山 步骤 开门见山 步骤 如果有Mocap,根据mocap系统指示获取Groundtruth,我实验室的mocap为optitrac ...

  7. 将TUM数据集制作成BundleFusion数据集

    在上一篇文章中,我写到了如何将TUM数据生成BundleFusion所需要的数据集,生成的数据集如下图中所示.并且是将每一组数据的groundtruth.txt中的位姿数据写如到这里的pose文件中, ...

  8. TUM数据集制作BundleFusion数据集

    BundleFusion的数据集中,在生成.sens文件之前,包括彩色图,深度图和一个位姿文件,并且这个pose文件中的位姿态是有变化的,所以我怀疑,推测,在这个pose文件中可以写入groundtr ...

  9. ROS下获取kinectv2相机的仿照TUM数据集格式的彩色图和深度图

    准备工作: 1. ubuntu16.04上安装iai-kinect2, 2. 运行roslaunch kinect2_bridge kinect2_bridge.launch, 3. 运行 rosru ...

最新文章

  1. LeetCode-35. Search Insert Position
  2. 第12章:Linux服务管理
  3. 【C#】获取网页内容及HTML解析器HtmlAgilityPack的使用
  4. Git 常用操作 | 重写 commit 历史
  5. 【洛谷P5114】八月脸【边分治】【闵可夫斯基和】
  6. pyspark.sql写入mysql_将pyspark dataframe写入MySQL数据库时出错
  7. 易语言c调用,易语言调用C++编写的DLL
  8. 用友仓库档案boot直接访问html,图文解析用友仓库软件怎样设置档案?
  9. 扬州大学c语言上机作业答案,扬州大学C语言上机作业1-9整理
  10. fedora html 编辑器,分享|在 Fedora 上使用 Pitivi 编辑视频
  11. 前端项目开发总结:电商后台管理系统
  12. videojs重播_videojs 视频播放器从入门到精通
  13. 【成功的忙人】在北京30套房的小哥:人一闲,就废了!
  14. 本地打印后台处理程序服务没有运行
  15. 天道(遥远的救世主)金句,自悟自性
  16. 制作一个简单七夕情人节表白网页(HTML+CSS)
  17. ArrayList的三种遍历方法
  18. 内存溢出问题核查与定位
  19. 【经济学】【综合篇】经济机器是怎样运行的
  20. 如何优雅地实现C++编译期多态?

热门文章

  1. 性能测试Loaderrunner
  2. python 柱形图实现不了渐变_如何使用渐变色为分布图的条形图着色?
  3. 首都经济贸易大学本科毕业论文答辩PPT模板
  4. mysql查询成绩并排名_Mysql 查询实现成绩排名
  5. pyscript的简单应用
  6. 重新定义公司,一点体会
  7. pd读取文件显示不全问题解决,如何显示全部的列
  8. 重装系统十大排行:一键重装系统对比
  9. sql解析json格式字段、sql关联json格式字段,mysql解析json、sql解析json字符串
  10. ubuntu 20.04 kylin gpg: 从公钥服务器接收失败:Server indicated a failure 解决方法