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点云匹配时为什么要重力对齐?的主要内容,如果未能解决你的问题,请参考以下文章