运动规划
定义
运动规划是计算无碰撞轨迹的问题,该轨迹将机器人从初始配置移动到目标配置,同时遵守物理约束 — 关节限制、速度界限、加速度限制和障碍物避免。它是任何机器人系统中的核心能力之一:没有可靠的运动规划,机器人无法安全地到达物体、在工作站之间移动或避免与其环境或人类同事的碰撞。
该问题在机器人的配置空间(C 空间)中制定,其中每个点代表一组完整的关节值,障碍物被映射到导致碰撞的 C 空间区域。运动计划是通过自由 C 空间的连续路径 — 机器人不与任何东西碰撞的配置子集。对于 6 自由度手臂,C 空间是 6 维的;对于类人机器人,它可以超过 30 维,使规划问题在计算上具有挑战性。
基于采样的规划器
基于采样的方法通过随机采样配置并测试它们的碰撞来探索 C 空间。它们是概率完整的:给定足够的时间,如果存在路径,它们会找到路径,但它们不保证最优性。
- RRT(快速探索随机树)— 通过重复采样随机配置并将最近的树节点向其扩展,从起始配置增长树。RRT 快速探索空间,但产生生硬的、次优的路径,需要后处理(捷径、平滑)。
- RRT* — 一个渐近最优的变体,在添加新节点时重新连接树,随着时间的推移收敛到最短路径。比基本 RRT 慢,但产生明显更好的路径。
- RRT-Connect — 同时增长两棵树 — 一棵来自起点,一棵来自目标 — 并尝试连接它们。通常是找到任何可行路径的最快变体,也是 MoveIt 中的默认规划器。
- PRM(概率路线图)— 在预处理阶段预计算采样配置和连接的图。查询然后搜索该图以获取路径。当许多查询共享相同的环境时(例如,固定工作单元),PRM 是高效的,摊销路线图构造成本。
基于优化的规划器
基于优化的方法从初始轨迹(通常是 C 空间中的直线插值)开始,并通过最小化惩罚碰撞、路径长度和平滑度违反的成本函数来迭代细化它。
基于优化的规划器擅长产生平滑的、接近最优的轨迹,但需要合理的初始猜测,在高度杂乱的环境中可能会失败,其中初始轨迹远离任何可行解。
- CHOMP(运动规划的协变哈密顿优化)— 在结合障碍物惩罚(基于有符号距离场)和平滑项的成本上使用函数梯度下降。快速收敛,但可能陷入局部最小值。
- TrajOpt — 将运动规划制定为顺序凸优化,以碰撞避免作为约束而不是惩罚项。通常产生比 CHOMP 更高质量的路径,并更好地处理狭窄通道。
- STOMP(运动规划的随机轨迹优化)— 生成随机轨迹扰动并使用其成本更新轨迹,无需计算梯度。适用于不可微分的成本函数(例如,二进制碰撞检查),并自然地探索多个同伦类。
比较:采样与优化
基于采样的规划器更擅长在杂乱、高维空间中找到路径,其中自由 C 空间很复杂。它们对局部最小值更稳健,可以处理具有狭窄通道的环境(给定足够的样本)。然而,路径通常是生硬的,需要平滑。
基于优化的规划器产生更平滑、更高效的轨迹,当有良好的初始猜测时速度更快。它们对于已知环境中的重复任务(例如,结构化工作单元中的拾取和放置)是首选。然而,它们在高度杂乱的场景中苦苦挣扎,可能收敛到不可行的局部最小值。
在实践中,许多系统结合两者:基于采样的规划器找到可行路径,基于优化的方法将其细化以获得平滑度和时间最优性。
MoveIt 2:标准框架
MoveIt 2 是 ROS2 最广泛使用的开源运动规划框架。它将规划、逆运动学、碰撞检查、轨迹执行和感知集成到统一的管道中。关键组件包括:
- OMPL(开放运动规划库)— 提供 MoveIt 默认规划后端使用的基于采样的规划器实现(RRT、RRT*、PRM 等)。
- 规划场景 — 维护机器人及其环境的碰撞模型,从点云或网格数据实时更新。
- 轨迹处理 — 时间参数化(TOTG、迭代样条)将几何路径转换为尊重速度和加速度限制的时间最优轨迹。
- MoveIt Servo — 用于遥操作和反应式控制的实时笛卡尔和关节空间伺服。
动态环境中的挑战
经典运动规划假设静态环境:障碍物在规划和执行期间不移动。现实世界场景 — 人机协作、从传送带拾取、移动操纵 — 违反了这一假设。动态规划的方法包括:
重新规划:持续运行规划器,使用新的传感器数据更新碰撞模型,并在每个周期生成新的轨迹。当规划足够快(低于 100 毫秒)时有效。
反应式方法:势场、速度障碍或学习的反应式策略,在实时调整轨迹而无需完全重新规划。更快,但可能产生次优路径或陷入局部最小值。
学习的规划器:神经网络基础的规划器(MPNets、MotionPolicyNetworks)直接从点云观察预测可行路径,绕过显式碰撞检查。这些可以以高频率运行,但目前缺乏经典方法的可靠性保证。
实际要求
碰撞模型:精确的碰撞几何至关重要。简化的网格或原始形状(盒子、圆柱体、球体)检查速度更快,但可能过于保守。详细的网格改进路径质量,但减慢规划。
规划时间预算:工业拾取和放置通常允许 50-200 毫秒的规划。复杂的多臂组装可能需要 1-5 秒。遥操作和反应式控制需要低于 10 毫秒的响应,有利于基于伺服或反应式方法而不是完整规划。
计算:运动规划是 CPU 密集型的(碰撞检查占主导运行时间)。GPU 加速碰撞检查(例如,NVIDIA 的 cuRobo)可以将规划时间减少 10-100 倍,实现实时基于优化的规划。
运动规划和学习策略
运动规划和学习策略在现代机器人系统中发挥互补作用:
- 规划用于粗运动,策略用于精细操纵 — 常见的架构使用 MoveIt 2 规划从主位置到预抓取姿态的无碰撞路径,然后切换到学习策略(ACT、Diffusion Policy)以进行接触丰富的操纵阶段。这种混合方法利用规划的可靠性进行障碍物避免和策略的灵巧性进行操纵。
- 规划作为安全层 — 安全包装器使用实时运动规划来检查策略的命令轨迹是否会导致碰撞。如果策略输出不安全的动作,规划器会修改或替换它。MoveIt Servo 以 100+ Hz 提供此功能。
- 学习规划 — 神经运动规划器(MPNets、MPPI、STOMP 的学习成本函数)可以通过从点云观察预测良好的初始轨迹来加速规划。这些学习的规划器比基于采样的方法快 10-100 倍,但还没有达到其可靠性。
- cuRobo:GPU 加速规划 — NVIDIA 的 cuRobo 库在 GPU 上执行轨迹优化,为 7 自由度手臂实现 10-50 毫秒的规划时间。这使基于优化的规划对实时反应式控制可行,缩小规划和基于策略的方法之间的差距。







