Direct Collocation
- 又称: collocation, direct transcription
- 类别: Planning & manipulation › Trajectory optimisation
- 标签: trajectory-optimization, optimal-control, nonlinear-programming, motion-planning, dynamics
一种轨迹优化方法,它把采样时刻的状态和控制量当作变量,并把动力学作为相邻样本之间的约束来施加。
定义
直接配点法(Direct collocation)是把最优控制问题(即找出随时间变化的控制输入,以最小代价把系统从起点带到目标)转化为标准求解器可以处理的有限维非线性规划的一种方法。轨迹被切分为若干时间点,称为节点(knot points)。每个节点上的状态和控制输入都成为决策变量,系统动力学则以等式约束的形式施加,这些约束称为缺陷约束(defect constraints),要求相邻状态与某个积分规则(例如梯形规则或 Hermite–Simpson 规则)保持一致。伪谱法是与之相关的一类方法,它在整条轨迹上使用高阶多项式。
这与打靶法(shooting)不同:在打靶法中,只有控制量是决策变量,状态通过向前仿真动力学得到。配点法产生的问题规模更大,但非常稀疏,用 IPOPT 或 SNOPT 等稀疏非线性规划求解器求解。它的优点在于:对状态的限制(例如关节范围、与障碍物的间隙或接触条件)很容易直接施加;求解器可以从一个物理上不一致的猜测出发,例如一条穿过障碍物的直线;而且在长时域和不稳定系统上,它往往比单次打靶法表现更好。
这种结构带来的一个结果是,中间迭代解不必满足动力学:求解器在早期可以自由地违反缺陷约束,只在收敛时才满足它们。把动力学或碰撞约束移入惩罚项的建模方式让这一点变得显式,允许解先穿过不可行区域,再由惩罚把它推回。这一思想已被机器人学习借鉴,例如先让仿真中的机器人在惩罚下穿过障碍物,之后再强制执行硬碰撞。与大多数轨迹优化一样,直接配点法找到的是局部最优解,因此结果取决于初始猜测。
为何重要
直接配点法是腿足机器人、无人机和机械臂轨迹优化的主力方法之一,因为它能很好地处理约束,并且容易从粗略的猜测开始。理解它还能解释机器人学习中一个有用的设计思路:先放松物理约束,再逐步强制执行。
主要应用
- 腿足机器人跳跃、翻转和步态的轨迹优化
- 机械臂和无人机的时间最优与能量最优轨迹
- 为移动机器人规划搜索和覆盖轨迹
- 为学习得到的策略和跟踪控制器生成参考运动
- 航天器和飞行器的轨迹设计
实际应用
一位工程师在 Drake 或 CasADi 中为腿足机器人规划一次跳跃,他建立的问题在整个跳跃过程中设有比如固定数量的节点,每个节点包含机器人的状态和关节力矩。缺陷约束通过机器人的动力学把相邻节点联系起来,额外的约束让力矩保持在电机限值以内,并让脚在支撑期间留在地面上,代价函数则惩罚控制量和末端误差。他们用起跳姿态和落地姿态之间的简单插值进行初始化,这违反了动力学,然后让 IPOPT 找出一条一致的轨迹。如果求解失败,他们会增加节点、对变量进行缩放或改进初始猜测。得到的轨迹随后由反馈控制器跟踪,或用作学习策略的参考。
常见误解
- 求解器的每一次迭代都是物理上有效的轨迹 — 动力学只在收敛时才被满足;中间解可能违反它们
- 直接配点法能找到全局最优的轨迹 — 它在局部求解一个非凸问题,因此不同的初始猜测可能给出不同的答案
- 配点法和打靶法求解的是不同的问题 — 它们是同一个最优控制问题的两种转写形式,只是数值表现不同
谁需要了解
- 轨迹优化和运动规划工程师
- 腿足机器人和无人机控制开发者
- 使用优化参考运动的机器人学习研究人员
- 学习最优控制的机器人专业学生
相关技术
- Drake
- CasADi
- IPOPT
- SNOPT
- 多重打靶法(Multiple Shooting)
- 伪谱法(Pseudospectral Methods)
相关术语
- Trajectory Planning
- Model Predictive Control
- Differential Flatness
- Motion Planning
- Curriculum Learning
- Ergodic Coverage
相关项目
- Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
- OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
- MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
- Ruckig: Real-time jerk-constrained time-optimal trajectory generation for robots and machines