在使用evo进行轨迹评估时提示时间戳没有对齐

这个问题出现在euroc数据集中,不止VINs-mono和ORB-slam会出现。

found no matching timestamps between reference and /home/xxx/uv_traj/stamped_traj_estimate.txt with max. time diff 0.01 (s) and time offset 0.0 (s)

第一个解决办法

因为生成轨迹和数据集需求轨迹不同。

ORB-slam:

轨迹保存函数是SaveTrajectoryTUM, 找到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;

VINs-mono:

…/VINS-Mono/vins_estimator/src/utility/visualization.cpp中的pubOdometry()函数:

//修改前
ofstream foutC(VINS_RESULT_PATH, ios::app);
foutC.setf(ios::fixed, ios::floatfield);
foutC.precision(0);
foutC << header.stamp.toSec() * 1e9 << ",";
foutC.precision(5);
foutC << estimator.Ps[WINDOW_SIZE].x() << ","
      << estimator.Ps[WINDOW_SIZE].y() << ","
      << estimator.Ps[WINDOW_SIZE].z() << ","
         << tmp_Q.w() << ","
      << tmp_Q.x() << ","
      << tmp_Q.y() << ","
      << tmp_Q.z() << ","
      << estimator.Vs[WINDOW_SIZE].x() << ","
      << estimator.Vs[WINDOW_SIZE].y() << ","
      << estimator.Vs[WINDOW_SIZE].z() << "," << endl;
foutC.close();
//修改后
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;
foutC.close();

第二个解决办法:

关闭回环显示pose-graph,注销以下代码

//…/VINS-Mono/pose_graph/src/pose_graph.cpp中的addKeyFrame()函数:
        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 * 1e9 << ",";
        loop_path_file.precision(5);
        loop_path_file  << P.x() << ","
              << P.y() << ","
              << P.z() << ","
              << Q.w() << ","
              << Q.x() << ","
              << Q.y() << ","
              << Q.z() << ","
              << endl;*/
///VINS-Mono/pose_graph/src/pose_graph.cpp中的updatePath()函数:
            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 * 1e9 << ",";
            loop_path_file.precision(5);
            loop_path_file  << P.x() << ","
                  << P.y() << ","
                  << P.z() << ","
                  << Q.w() << ","
                  << Q.x() << ","
                  << Q.y() << ","
                  << Q.z() << ","
                  << endl;
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机务猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值