运动规划概览
运动规划(Motion Planning)是机器人学中的核心问题之一:给定机器人的初始状态和目标状态,计算出一条满足各种约束条件(无碰撞、运动学可行、动力学可行、关节限制等)的运动轨迹。
运动规划广泛应用于移动机器人导航、机械臂操作和自动驾驶等领域。
运动规划的核心概念
Section titled “运动规划的核心概念”配置空间(Configuration Space)
Section titled “配置空间(Configuration Space)”配置空间(C-space)是运动规划的基础概念。它将机器人的所有可能配置(即关节角度的组合)映射到一个高维空间中:
- C-free:无碰撞的配置空间区域,即机器人不与环境发生碰撞的配置集合。
- C-obstacle:会导致碰撞的配置空间区域。
运动规划的目标就是在 C-free 中找到一条从起始配置到目标配置的路径。
对于自由度较低的机械臂,配置空间维度等于关节数(如 6 自由度机械臂的 C-space 是 6 维的)。对于移动机器人,配置空间通常是 3 维的(x, y, θ)。
- 路径(Path):配置空间中从起点到终点的一系列连续配置序列,不含时间信息。
- 轨迹(Trajectory):带有时间参数的路径,即每个配置点都有对应的时间戳和速度/加速度信息。
运动规划通常先生成路径,再通过时间参数化(Time Parameterization)将路径转换为可执行的轨迹。
主要规划算法
Section titled “主要规划算法”基于采样的规划(Sampling-based Planning)
Section titled “基于采样的规划(Sampling-based Planning)”基于采样的规划器通过在配置空间中随机采样来构建路径,适合高维空间:
- RRT(Rapidly-exploring Random Tree):从起点开始,不断向随机采样的配置方向扩展树,直到连接到目标。
- RRT*:RRT 的优化版本,保证渐近最优性(asymptotic optimality)。
- PRM(Probabilistic Roadmap):在配置空间中预先构建一个路线图,然后在该图上搜索最短路径。适合多次查询的场景。
OMPL(Open Motion Planning Library) 是 ROS 2 / MoveIt 2 中最常用的基于采样的规划库,提供了 RRT、RRT*、PRM、EST、SBL 等多种算法实现。
基于搜索的规划(Search-based Planning)
Section titled “基于搜索的规划(Search-based Planning)”基于搜索的规划器在离散化的网格上进行图搜索:
- A*:启发式搜索算法,在栅格代价地图上寻找最短路径。Nav2 的全局规划器默认使用 A* 变体。
- Dijkstra:无启发式的最短路径搜索。
- D*/D* Lite:增量式搜索算法,适用于动态环境中的重规划。
基于优化的规划(Optimization-based Planning)
Section titled “基于优化的规划(Optimization-based Planning)”基于优化的规划器通过最小化一个目标函数(包含路径长度、平滑度、避障距离等)来优化轨迹:
- CHOMP(Covariant Hamiltonian Optimization for Motion Planning):通过协变梯度优化将初始路径(如直线插值)优化为无碰撞路径。
- STOMP(Stochastic Trajectory Optimization for Motion Planning):使用无梯度的随机优化方法,不需要显式计算梯度。
- TrajOpt(Trajectory Optimization):基于顺序凸优化的方法。
- Tesseract / OMPL optimizations:结合采样与优化的混合方法。
特殊用途规划器
Section titled “特殊用途规划器”- Pilz 工业运动规划器:基于预定义的轨迹模板(如 PTP、LIN、CIRC)进行确定性规划,适合工业场景中对可重复性要求较高的应用。
- TRAC-IK:一种高效的逆运动学求解器,同时使用数值和解析方法。
运动规划在 ROS 2 中的应用
Section titled “运动规划在 ROS 2 中的应用”MoveIt 2 中的运动规划
Section titled “MoveIt 2 中的运动规划”MoveIt 2 通过插件化架构支持多种规划算法:
Planning Pipeline: 1. 接收运动规划请求(目标位姿 + 约束) 2. 运动规划器(Motion Planner)生成路径 3. 轨迹处理(平滑 + 时间参数化) 4. 碰撞检测验证 5. 通过动作接口执行轨迹常见的规划器插件包括:
ompl_interface/OMPLPlanner:基于 OMPL 的采样规划pilz_industrial_motion_planner/CommandPlanner:Pilz 确定性规划stomp_moveit/StompPlanner:STOMP 优化规划chomp_interface/CHOMPPlanner:CHOMP 优化规划
详见 MoveIt 2 运动规划概念。
Nav2 中的运动规划
Section titled “Nav2 中的运动规划”Nav2 的运动规划分为两级:
- 全局规划:在代价地图上使用 A* 或 Navfn 规划全局路径。
- 局部规划/控制:使用 DWB、TEB、MPPI 等算法生成局部速度命令,跟随全局路径并避开动态障碍物。
详见 Nav2 核心概念。
约束感知规划
Section titled “约束感知规划”现代运动规划系统支持在规划过程中考虑各种约束:
- 位置/朝向约束:限制末端执行器在特定区域内或保持特定朝向。
- 关节限制:遵守关节的角度、速度和加速度限制。
- 碰撞约束:避免与环境和自身的碰撞。
- 运动学约束:如保持末端执行器在笛卡尔空间中的直线运动。
对于需要高实时性的应用(如工业机器人的周期性任务),运动规划的执行时间至关重要。相关技术包括:
- 预计算和缓存常用轨迹。
- 使用 Pilz 等确定性规划器以减少计算不确定性。
- 利用实时操作系统(RTOS)保证调度确定性。
有关实时编程的更多信息,请参见 实时编程。