腿足机器人之十- SLAM地图如何用于运动控制
相比于轮式机器人(如人形轮式机器,可以看成是扫地机器人之上加了一个人形上身,实际的导航还是扫地机器人那一套),腿足式机器人(如人形机器人、四足机器人狗)的运动控制复杂度远高于轮式机器人,需要解决以下核心问题:
- 复杂地形适应:楼梯、碎石、斜坡、火车铁轨等非结构化环境
- 动态平衡控制:保持运动中的稳定性(如ZMP判据)
- 高自由度协调:多关节协同运动(如12~28个自由度),(天工机器人2024.4具有42个自由度,内置多个视觉感知传感器及六维力传感器,配备惯性测量单元(IMU)和3D视觉传感器,拥有每秒550万亿次的算力。)
SLAM地图的核心作用:
- 地形几何建模:提供地面高度、坡度、障碍物尺寸等信息
- 语义理解:识别可通行区域(如草地、水泥地、台阶)
- 运动规划基础:结合地形信息生成安全步态和路径
腿足机器人SLAM地图的表示与处理
和到底机器人相比,腿足机器人可以双脚离地(小跑、跳跃),SLAM地图需要包含高度信息,因此使用三维地图,这可以使用点云地图、高程地图以及体素地图。
- 点云地图:通过RGB-D相机或激光雷达生成稠密3D点云
- 高程地图(Elevation Map):将点云投影为2.5D网格,每个网格存储高度均值和方差:
h i , j = 1 N ∑ k = 1 N z k , σ i , j 2 = 1 N ∑ k = 1 N ( z k − h i , j ) 2 h_{i,j}=\frac{1}{N}\sum \limits_{k=1}^Nz_k, \sigma_{i,j}^2=\frac{1}{N}\sum \limits_{k=1}^N(z_k-h_{i,j})^2 hi,j=N1k=1∑Nzk,σi,j2=N1k=1∑N(zk−hi,j)2
其中 z k z_k zk为网格内低 k k k个点的高度。 - 体素地图(Voxel Map):将空间划分为立方体单元,标记占用状态(如OctoMap)。
以高程地图为例,可以通过下式提取关键地形特征(坡度,以便评估机器人是否可以通过该倾斜度):
其坡度计算如下:
s l o p e i , j = arctan ( ( ∂ h ∂ x ) 2 + ( ∂ h ∂ y ) 2 ) \mathbf{slope}_{i,j}=\arctan \left({\sqrt{(\frac{\partial h}{\partial x})^2+ (\frac{\partial h}{\partial y})^2} }\right ) slopei,j=arctan((∂x∂h)2+(∂y∂h)2)
其中: ∂ h ∂ x ≈ h i + 1 , j − h i − 1 , j 2 △ x \frac{\partial h}{\partial x} \approx \frac{h_{i+1,j }-h_{i-1,j}}{2 \triangle x} ∂x∂h≈2△xhi+1,j−hi−1,j, ∂ h ∂ y ≈ h i , j + 1 − h i , j − 1 2 △ y \frac{\partial h}{\partial y} \approx \frac{h_{i,j+1 }-h_{i,j-1}}{2 \triangle y}