cartographer中时间的转换


::cartographer::common::Time FromRos(const ::ros::Time& time) {
  // The epoch of the ICU Universal Time Scale is "0001-01-01 00:00:00.0 +0000",
  // exactly 719162 days before the Unix epoch.
  // ICU世界时标的纪元是“0001-01-01 00:00:00.0+0000”,正好比Unix纪元早719162天 
  return ::cartographer::common::FromUniversal(
      (time.sec +
       ::cartographer::common::kUtsEpochOffsetFromUnixEpochInSeconds) *
          10000000ll +
      (time.nsec + 50) / 100);  // + 50 to get the rounding correct.
}

constexpr int64 kUtsEpochOffsetFromUnixEpochInSeconds =
    (719162ll * 24ll * 60ll * 60ll);

请问一下 两个纪元相差的天数转换为秒数再加上运行时间的秒数后边需要乘10000000是为什么阿

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 用自己的雷达进行Cartographer建图或仿真中的 运行与建图 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    对修改后的工作空间, 在终端执行以下语句以重编译:

    //编译cartographer工作空间
    catkin_make_isolated --install --use-ninja

    //刷新环境
    source devel_isolated/setup.bash

    运行时, 先运行雷达的相关topic, 保证雷达已有有效数据通过topic输出后, 运行我们的新launch文件:
    roslaunch cartographer_ros my_demo_revo_lds.launch

    即可开始建图.


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^