碰撞检查Collision Checking)是基于机器人与环境的几何模型,判断当前状态、候选轨迹或实时命令是否会导致自碰撞或碰到外部物体的过程。

它是运动规划、MoveIt Servo 和机器人安全策略中的基础能力,但它依赖模型和场景是否准确。

核心问题

IK 或 servo 求得一个关节命令,只说明几何目标可能可达,不说明运动过程中不会撞到机器人自己、桌面、夹持物或人。碰撞检查补上的是空间安全约束:

  • 当前姿态是否已经碰撞?
  • 下一步命令是否更接近碰撞?
  • 路径上的中间状态是否穿过障碍物?
  • 是否需要降速、拒绝命令或重新规划?

核心机制

MoveIt 中的碰撞检查通常依赖 URDF/SRDF 提供的 collision geometry、allowed collision matrix、当前 MoveIt RobotStateMoveIt PlanningScene 中的环境物体。

检查可分为:

  • 自碰撞:机器人 link 之间是否相交。
  • 环境碰撞:机器人或附着物体是否碰到场景物体。
  • 距离检查:尚未碰撞但距离过近时,用于提前降速。

工程用途

  • 规划前验证起点和目标状态。
  • 轨迹规划时过滤无效路径。
  • 实时 servo 中接近碰撞时缩放速度或停止。
  • 调试 URDF collision mesh、工具偏置和环境感知同步。

边界与常见坑

  • 碰撞检查不是力传感器;模型中没有的物体不会被检查到。
  • collision mesh 过粗会误报,过细会拖慢实时检查。
  • 场景更新延迟会让检查结果落后于真实世界。
  • 只检查离散状态可能漏掉高速运动中的中间碰撞。
  • 允许碰撞配置错误会让本该禁止的接触被静默放行。

相关术语