在使用evo进行orb-slam2轨迹评估时提示时间戳没有对齐的问题

最近使用一个orb-slam2修改版跑euroc数据集,在使用evo评估绝对轨迹误差时出现下面的报错:

found no matching timestamps between CameraTrajectory.txt and gt/MH01_GT.txt with max. time diff 0.01 (s) and time offset 0.0 (s)

然后对比了一下生成的轨迹和groundtruth,发现时间戳的格式不一样,如下:
在这里插入图片描述
定位到问题是在例子程序中调用的轨迹保存函数是SaveTrajectoryTUM,因此得到的时间戳的小数点位是按照TUM数据集保存的

解决: 找到System.cc中的SaveTrajectoryTUM函数,将*lT改为1e9*(*lT)

//修改前
f << setprecision(6) << (*lT) << " " << setprecision(9) 
  << twc.at<float>(0) << " " << twc.at<float>(1) << " "<< twc.at<float>(2) << " "
  << q[0] << " " << q[1] << " " << q[2] << " " << q[3] << endl;
//修改后
  f << setprecision(6) << 1e9*(*lT) << " " << setprecision(9) 
  << twc.at<float>(0) << " " << twc.at<float>(1) << " "<< twc.at<float>(2) << " "
  << q[0] << " " << q[1] << " " << q[2] << " " << q[3] << endl;
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在ROS中使用ORB-SLAM进行定位和建图,需要将相机的图像数据发布到ROS中,然后订阅这些图像数据,将其传递给ORB-SLAM进行处理。 首先,你需要使用ROS中的相机驱动程序来获取相机的图像数据,并将其发布到ROS中。你可以使用任何ROS支持的相机驱动程序,例如USB相机驱动程序或者网络相机驱动程序。在获取到相机图像数据后,你需要将它们以图像话题的形式发布到ROS中,例如使用`sensor_msgs/Image`消息类型来发布图像数据。 然后,你需要在ORB-SLAM节点中订阅这些图像话题,并使用ORB-SLAM进行处理。在ORB-SLAM节点中,你需要订阅相机的图像话题,例如使用`ros::Subscriber`来订阅`sensor_msgs/Image`消息类型的话题。然后,你需要将这些图像数据传递给ORB-SLAM进行处理。ORB-SLAM使用这些图像数据进行定位和建图。 在ORB-SLAM节点中,你还需要发布ORB-SLAM的位姿信息和地图数据,以便其他节点订阅并使用。你可以使用`ros::Publisher`来发布ORB-SLAM的位姿信息和地图数据,例如使用`geometry_msgs/PoseStamped`消息类型来发布ORB-SLAM的位姿信息,使用`nav_msgs/OccupancyGrid`消息类型来发布ORB-SLAM的地图数据。 总之,使用ORB-SLAM进行定位和建图需要以下几个步骤: 1. 使用ROS相机驱动程序获取相机图像数据,并以图像话题的形式发布到ROS中。 2. 在ORB-SLAM节点中订阅相机图像话题,并使用ORB-SLAM进行处理。 3. 在ORB-SLAM节点中发布ORB-SLAM的位姿信息和地图数据,以便其他节点订阅并使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值