Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

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

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。