在使用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;

版权声明:本文为guanjing_dream原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。