ORB-SLAM3轨迹保存与evo评测

ORB-SLAM3轨迹保存与evo评测

为了利用evo对ORB-SLAM3进行评测,花了一点时间走了一些弯路,简单记录一下同时也为需要的人提供一点参考。
我主要用的是ROS接口,用单目+imu跑的EuRoC数据集。
主要是参考这篇博客:https://my.oschina.net/u/4404709/blog/4794586
但是这篇博客有些细节有点问题,自己摸索了一下。

1.修改ORB_SLAM3/Examples/ROS/ORB_SLAM3/src下的ros_mono_inertial.cc(或其他你需要的接口的源码文件),在main函数内添加如下内容:

  // Stop all threads
  SLAM.Shutdown();
  // Save camera trajectory
  SLAM.SaveKeyFrameTrajectoryTUM("ORB-SLAM3-KeyFrameTrajectory.txt");
  // Save camera trajectory
  SLAM.SaveTrajectoryTUM("ORB-SLAM3-FrameTrajectory.txt");

ORB-SLAM3轨迹保存与evo评测_第1张图片
2. 在ORB_SLAM3文件夹根目录下重新执行./build_ros.sh
3. 运行结束后Ctrl+c就可以在ORB_SLAM3文件夹根目录下看到保存的两个轨迹文件了ORB-SLAM3轨迹保存与evo评测_第2张图片

4.保存的轨迹是TUM格式,可以直接用evo显示。evo相关使用方法参考官网说明:https://github.com/MichaelGrupp/evo/wiki

相关实验结果后续再做补充


#2020.12.16
对于ORB-SLAM3我实际测试的效果不是很好,特别是在ROS接口容易出现“fail to track lacal map”的情况,而非ROS接口感觉又比实际的播放速度慢很多,感觉帧率很低,而且都没办法达到论文里描述的精度,测试的是EuRoc数据集。我用的是笔记本工作站,i7-9750H,32G运存,按理说配置应该算不错了,而且跑的时候我看资源使用率并不是很高,不知道为什么会出现这种情况。

考虑特征匹配确实会比较耗时,尝试着将rosbag的播放时间降低(rosbag play *** -r 0.5 ;设置成0.5倍速播放)效果好很多。

#2021.12.22
时隔一年再跑ORB-SLAM3,发现播放速度放慢确实有点效果,但是还是会经常出现丢弃地图的问题,跑了euroc的数据发现常速跑也没问题,又琢磨了好一阵,最后重新标定了IMU,把IMU参数更新了下,问题解决。。。。。。
还是得花点时间研究一下源码

你可能感兴趣的:(VSLAM,slam,evo,orb)