Differential dynamic programming
- 又称: DDP
- 类别: Planning & manipulation › Trajectory optimisation
- 标签: trajectory-optimization, optimal-control, model-predictive-control, numerical-optimization, shooting-methods
一种轨迹优化方法,它沿当前轨迹使用未来代价(cost-to-go)的局部二次模型,通过反复的反向与前向过程改进控制序列。
定义
微分动态规划(Differential dynamic programming,DDP)是一种轨迹优化算法:给定动力学模型、关于状态和控制量的代价以及初始状态,它找出一个使总代价局部最小的控制序列。它由 David Mayne 于 1966 年提出,并在 Jacobson 和 Mayne 1970 年出版的同名著作中得到进一步发展。DDP 是一种打靶法:决策变量是控制量,在其经典形式中,状态总是通过向前模拟动力学得到,因此每一次迭代的结果都是一条动力学上可行的轨迹。
每次迭代包含两个过程。反向过程从最后一个时间步开始向起点推进,在局部应用 Bellman 最优性原理:它利用动力学和代价的一阶与二阶导数,在当前轨迹附近构造未来代价(cost-to-go)的二次近似,并在每一步求解一个仿射控制更新,该更新由前馈项 k 和反馈增益矩阵 K 组成。随后前向过程用更新后的控制量 u = ū + αk + K(x − x̄) 模拟系统,其中 α 是线搜索步长。由于展开式包含动力学的二阶项,DDP 在局部极小值附近像牛顿法一样二次收敛,而每次迭代的计算量只随时域长度线性增长。
动力学的二阶导数计算代价高昂,因此使用最广泛的变体,即迭代线性二次调节器(iLQR),舍弃了这些导数,只保留动力学的一阶模型,即 Gauss-Newton 近似。实用的求解器会对反向过程进行正则化,使其保持良态,并把该方法扩展到控制量限制(控制受限 DDP)、一般约束(增广拉格朗日方法,例如 ALTRO)、不可行的初始猜测(Crocoddyl 中的可行性驱动 DDP),以及像 Parameterized DDP 那样与控制量一起优化的时不变参数。DDP 只能找到局部最优解,因此结果取决于初始猜测。一个有用的副产品是这组反馈增益,它们可以使机器人稳定在优化后的轨迹附近。
为何重要
DDP 和 iLQR 是机器人轨迹优化和非线性模型预测控制中使用最多的求解器之一。它们利用问题的时间结构,计算量随时域长度线性增长,并且在给出轨迹的同时返回一个局部反馈策略,这就是足式机器人、人形机器人和无人机在机载计算机上实时运行它们的原因。
主要应用
- 足式机器人和人形机器人的非线性模型预测控制
- 无人机和敏捷载具的轨迹优化
- 机械臂的力矩级运动规划
- 欠驱动系统的起摆与平衡
- 轨迹与模型参数或设计参数的联合优化
实际应用
一个为四足机器人构建全身模型预测控制的团队在 Crocoddyl 中建立问题。接触序列来自固定的步态时间表,因此每个阶段的接触都是已知的;代价函数结合了基座跟踪、落脚位置、控制量消耗,以及使接触力保持在摩擦锥内的惩罚项。在每个控制周期,求解器以前一次的解向后平移一步作为热启动,只运行一次或几次迭代。第一个控制量及其反馈增益被发送给底层关节控制器,后者利用该增益修正两次求解器更新之间的状态变化。大部分调参工作集中在代价权重、正则化和时域长度上,它们在预见能力与求解时间之间进行权衡。
常见误解
- DDP 能找到全局最优轨迹 — 它是一种局部方法;结果取决于初始猜测,并且可能是一个很差的局部极小值
- iLQR 和 DDP 是同一种算法 — iLQR 省略了动力学的二阶项,使每次迭代的计算量小得多,代价是在解附近收敛更慢
- DDP 无法处理约束 — 基本算法是无约束的,但控制受限变体和增广拉格朗日变体已被广泛使用
- DDP 是在整个状态空间上进行的动态规划 — 它只沿一条轨迹应用 Bellman 递推,这避免了维数灾难,但只能给出局部结果
谁需要了解
- 为足式机器人和无人机构建模型预测控制器的控制工程师
- 轨迹优化研究人员
- 人形机器人和全身控制开发人员
- 学习最优控制的机器人专业学生
相关技术
- iLQR
- Crocoddyl
- ALTRO
- Riccati 递推(Riccati Recursion)
- 打靶法(Shooting Methods)
相关术语
- Direct Collocation
- Model Predictive Control
- Trajectory Planning
- Moving horizon estimation
- Underactuated system
- Hybrid system
相关项目
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- MuJoCo MPC: DeepMind's interactive real-time model predictive control framework for MuJoCo
- python_simple_mppi: MPPI control derived and implemented in numpy, with four worked examples
- mjbatch: Runs thousands of MuJoCo simulations in parallel on the CPU
- Quadruped-PyMPC: Python MPC framework for quadruped locomotion with gradient and sampling control
- STLCG: JAX toolbox for differentiable Signal Temporal Logic robustness