MoveIt PlanningScene 是 MoveIt 中表示当前机器人和环境的规划场景,包含机器人模型状态、碰撞对象、附着物体和碰撞检查所需的上下文。

它让规划器或 MoveIt Servo 能在同一套场景里判断机器人是否会自碰撞、是否会碰到环境物体,以及当前状态是否满足规划约束。

核心问题

运动规划和实时控制不能只知道机器人关节角,还需要知道:

  • 机器人每个 link 的当前空间位置。
  • 环境中有哪些 collision objects。
  • 哪些 link 之间允许接触,哪些必须避开。
  • 夹爪是否附着了物体,以及附着物体如何参与碰撞。

PlanningScene 负责把这些信息组织成可查询的场景状态。

核心机制

PlanningScene 通常基于 URDF、SRDF、当前 MoveIt RobotState 和外部环境更新构建。它可用于:

  • 自碰撞检查:机器人 link 之间是否相交。
  • 环境碰撞检查:机器人或附着物体是否碰到外部 collision objects。
  • 距离查询:离碰撞还有多远,用于速度缩放或风险提示。
  • 约束评估:判断状态是否满足规划相关约束。

在 MoveIt Servo 中,PlanningScene 是碰撞检查和安全缩放的重要输入。

工程用途

  • MoveIt 规划前判断起点和路径是否有效。
  • Servo 周期中检查接近碰撞时是否需要降速或停机。
  • 把感知系统输出的障碍物加入机器人可查询的环境模型。
  • 管理抓取后附着在末端执行器上的物体。

边界与常见坑

  • PlanningScene 只和它收到的场景同步一样准确;感知延迟或漏建模会导致碰撞风险漏掉。
  • collision mesh 和 visual mesh 可能不同,不要用 RViz 看起来没碰撞来替代真实碰撞检查。
  • frame_id 不一致会让环境物体出现在错误位置。
  • 允许碰撞矩阵配置过宽会掩盖真实自碰撞风险。

相关术语