基于搜索的 L-Shape 拟合算法原理详解(第一次写,大家多多包涵
1. 背景:为什么要用 L-Shape 拟合?
激光雷达(LiDAR)在探测物体时存在一个先天的物理限制——遮挡对于车辆、箱子等矩形物体,雷达扫描到的点云通常呈现两种形态:
- “I” 形:只扫描到物体的一个侧面。
- “L” 形:扫描到了物体相邻的两个侧面。
传统算法的局限性
如果直接使用 PCA(主成分分析) 来计算方向,由于 PCA 寻找的是点云分布方差最大的方向,对于一个标准的 “L” 形点云,PCA 计算出的主轴往往是 45° 对角线方向。
这会导致机器人误判物体的朝向(Yaw),从而在避障或抓取时产生严重误差。L-Shape 算法的核心目的,就是强制假设物体是矩形的,并找到最贴合这个“L”形边缘的矩形框。
2. 核心逻辑:面积最小化搜索 (Area Minimization)
算法的核心思想非常直观:寻找一个旋转角度,使得在该角度下的轴对齐包围盒(AABB)面积最小。
由于矩形具有 的对称性,我们只需要在 到 的范围内进行搜索。
算法步骤
-
旋转遍历: 将点云中的所有点 绕原点逆时针旋转一个角度 。
我们让 从 逐步增加到 (例如步长为 或 )。
-
计算包围盒 (AABB): 在每一个 下,计算旋转后点云的边界:
-
计算面积: 计算当前角度下的矩形面积:
-
寻找最优解: 记录下让 最小的那个角度 。这个角度即为物体边缘最“正”的朝向。
为什么面积最小是对的?
当矩形框的边没有与物体边缘平行时,框的四个角会有大量“空隙”,导致包围盒面积较大。只有当矩形框完美贴合点云边缘(即 等边界紧贴点云)时,围出来的面积才是最小的。
3. 关键难点:几何中心补偿 (Center Compensation)
找到最佳角度后,我们得到了一个紧贴点云的框。但由于雷达存在盲区(背对雷达的那两侧没有数据),直接使用这个框的中心会偏向雷达一侧。
我们需要通过**锚点(Anchor Point)**来推算物体的真实几何中心。
补偿步骤
-
确定锚点: 在拟合出的矩形框的 4 个顶点中,计算它们到雷达原点 的距离。距离最近的那个顶点,即为锚点。物理上,这通常对应物体“L”形的拐角点。
-
推算中心: 基于锚点坐标 ,向矩形内部延伸。
- 如果已知物体尺寸(如已知标准集装箱尺寸):从锚点沿长宽方向分别移动 和 。
- 如果尺寸未知:通常假设当前扫描到的 和 就是物体的近似长宽,直接取当前包围盒的几何中心作为物体中心(虽然有误差,但保证了包围盒覆盖了可见部分)。
4. 总结:算法输入与输出
- 输入:
- 一组 2D 点云数据(通常是去除了地面点后聚类的一团点)。
- 处理:
- 遍历旋转搜索最小面积。
- 锁定最近角点作为锚点。
- 坐标逆变换回世界坐标系。
- 输出:
- 位置 :修正后的物体几何中心。
- 尺寸 :拟合出的长宽。
- 朝向 :物体的旋转角度。
相比于深度学习方法,L-Shape 拟合算法不需要训练数据,计算量极小(适合嵌入式 CPU),且对规则矩形物体的位姿估计精度非常高。