cartographer点云匹配时为什么要重力对齐?

Posted COCO_PEAK_NOODLE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cartographer点云匹配时为什么要重力对齐?相关的知识,希望对你有一定的参考价值。

AddAccumulatedRangeData里面的这行代码的含义

在这里插入代码片
  const transform::Rigid2d pose_prediction = transform::Project2D(
     non_gravity_aligned_pose_prediction * gravity_alignment.inverse());```

表面上只是重力对齐以后再处理,其实这里面还为后续的匹配与查找减轻了查找范围,因为* gravity_alignment.inverse()这一乘使得与上一帧数据的角度变化缩小了(基本是同一角度),所以为后面的ScanMatch节省了角度的查找范围

  pose_estimate_2d =
      ScanMatch(time, pose_prediction, filtered_gravity_aligned_point_cloud);

最后再把角度乘回来

  transform::Rigid3d pose_estimate =
     transform::Embed3D(*pose_estimate_2d) * gravity_alignment;

这样就实现了角度的估计。gravity_alignment上下是同一数值,只是为了减少计算量,那么我们把他们都去掉行不行呢?答案是不行
因为点云数据也按这个gravity_alignment做了处理,所以这一步看似简单的重力对齐,其实感觉还有一些文章在里面。

以上是关于cartographer点云匹配时为什么要重力对齐?的主要内容,如果未能解决你的问题,请参考以下文章

cartographer源码解析

在cartographer上调试自己录制的数据(Pandar64 + IMU)

cartographer自动更新地图 初探

为什么我的重力形式复选框和标签不对齐?

基于移动最小二乘曲面的点云对齐 —— 优化点云对齐迭代点

PopupMenu 子菜单不尊重重力对齐