Iterative LQR (iLQR)

本章定位:理解 iLQR 如何求解非线性轨迹优化问题,掌握其核心思想、算法流程和应用场景。


一、从 LQR 到 iLQR

LQR 的局限性

LQR 问题有闭式解,但仅适用于:

假设数学形式限制
线性动力学\(x_{t+1} = A_t x_t + B_t u_t\)只能处理线性系统
二次目标函数\(J = x_T^T Q_T x_T + \sum (x_t^T Q_t x_t + u_t^T R_t u_t)\)代价必须是二次的

问题:人形角色动画是非线性系统

  • 关节旋转涉及三角函数
  • 动力学方程包含科里奥利力、离心力等非线性项
  • 接触约束是非线性的

iLQR 的核心思想

关键洞察:虽然 LQR 只能处理线性系统,但可以在当前轨迹附近局部线性化,然后用 LQR 求解。

非线性轨迹优化问题
    ↓
在当前轨迹 (x̄, ū) 附近线性化
    ↓
δx_{t+1} = A·δx_t + B·δu_t  (线性化动力学)
    ↓
J ≈ δx^T Q δx + δu^T R δu  (二次近似)
    ↓
LQR 问题(有闭式解)
    ↓
求解得到最优控制 δu* = -K·δx
    ↓
更新轨迹:x ← x̄ + δx, u ← ū + δu
    ↓
重复线性化→求解→更新,直到收敛

这就是 iLQR(Iterative LQR)的核心思想!


二、每轮迭代中做了什么

iLQR 的每一轮迭代,本质上就是在当前轨迹处构造一个 LQR 子问题并求解。构造过程涉及三个操作(详细推导见 LQR):

操作对 LQR 的意义在 iLQR 中的含义
线性化动力学直接给出 A、B在标称轨迹 \((\bar{x}, \bar{u})\) 处计算雅可比 \(A_t = \partial f/\partial x\)、\(B_t = \partial f/\partial u\)
二次化代价直接给出 Q、R在标称轨迹处计算 Hessian \(Q_t = \partial^2 J/\partial x^2\)、\(R_t = \partial^2 J/\partial u^2\)
求解 Riccati 方程得到最优反馈 \(u^* = -Kx\)得到最优修正量 \(\delta u^* = -K\delta x\)

关键区别:LQR 里 A、B、Q、R 是问题本身给定的,而 iLQR 里它们每轮都在变——因为线性化点 \((\bar{x}, \bar{u})\) 随着迭代在移动。

修正量 vs 全量

LQR 直接输出最优控制 \(u^* = -Kx\)。iLQR 输出的是修正量

$$u_{new} = \bar{u} + \alpha \cdot \delta u^* = \bar{u} + \alpha \cdot (-K\delta x)$$

其中 \(\alpha\) 是线搜索步长。直觉上:每次只敢走一小步,避免跳出局部近似的有效范围。


三、iLQR 算法

完整算法流程

算法:iLQR 轨迹优化

输入:
    - 非线性动力学 f(x, u)
    - 目标函数 J(x, u)
    - 初始状态 x₀
    - 初始控制猜测 ū₀:T

输出:
    - 最优状态轨迹 x*₀:T
    - 最优控制轨迹 u*₀:T

步骤:
1. 初始化:设定初始轨迹 (x̄, ū)
2. Repeat until convergence:
   
   (a) 前向传递(Forward Pass)
       - 用当前控制 ū 仿真得到状态轨迹 x̄
       - 计算当前总代价 J
   
   (b) 线性化/二次化
       - 计算雅可比矩阵:Aₜ = ∂f/∂x, Bₜ = ∂f/∂u
       - 计算 Hessian 矩阵:Qₜ = ∂²J/∂x², Rₜ = ∂²J/∂u²
   
   (c) 逆向传递(Backward Pass)
       - 初始化:P_T = Q_T
       - 对 t = T-1, ..., 0:
         · 计算 Kₜ = (Rₜ + BₜᵀPₜ₊₁Bₜ)⁻¹ BₜᵀPₜ₊₁Aₜ
         · 计算 Pₜ = Qₜ + KₜᵀRₜKₜ + (Aₜ - BₜKₜ)ᵀPₜ₊₁(Aₜ - BₜKₜ)
         · (可选)计算 feedforward 项 kₜ
   
   (d) 更新控制
       - 计算新控制:u_new = ū + α·δu* (α 为线搜索步长)
       - δu* = -K·δx + k (LQR 解)
   
   (e) 收敛检查
       - 如果 |J_new - J| < ε,则收敛


前向传递 vs 逆向传递

步骤目的输入输出
前向传递仿真轨迹、计算代价控制轨迹 ū状态轨迹 x̄、代价 J
线性化局部近似为 LQR 问题轨迹 (x̄, ū)矩阵 A, B, Q, R
逆向传递求解 LQR、计算最优策略矩阵 A, B, Q, R反馈增益 K、Value 矩阵 P
更新改进轨迹K, 当前轨迹新控制轨迹

算法可视化

迭代 1: 初始轨迹(可能不满足动力学)
    ↓
┌─────────────────────────────┐
│  前向传递:仿真得到 x̄        │
│  线性化:计算 A, B           │
│  逆向传递:计算 K            │
│  更新:u_new = u + δu*      │
└─────────────────────────────┘
    ↓
迭代 2: 改进的轨迹
    ↓
┌─────────────────────────────┐
│  重复...                    │
└─────────────────────────────┘
    ↓
迭代 N: 收敛到最优轨迹

四、iLQR 与 DDP 的对比

一阶 vs 二阶方法

方法动力学近似目标函数近似梯度需求收敛速度
iLQR一阶泰勒展开二阶泰勒展开一阶导数线性收敛
DDP二阶泰勒展开二阶泰勒展开二阶导数二阶收敛

数学差异

iLQR(一阶动力学): $$ f(x,u) \approx f(\bar{x},\bar{u}) + \nabla f(\bar{x},\bar{u}) \begin{bmatrix} x-\bar{x} \ u-\bar{u} \end{bmatrix} $$

DDP(二阶动力学): $$ f(x,u) \approx f(\bar{x},\bar{u}) + \nabla f(\bar{x},\bar{u}) \begin{bmatrix} x-\bar{x} \ u-\bar{u} \end{bmatrix} + \frac{1}{2} \begin{bmatrix} x-\bar{x} \ u-\bar{u} \end{bmatrix}^T \nabla^2 f(\bar{x},\bar{u}) \begin{bmatrix} x-\bar{x} \ u-\bar{u} \end{bmatrix} $$

方法选择

场景推荐方法原因
平滑非线性问题iLQR一阶导数易计算,收敛快
高精度需求DDP二阶收敛,迭代次数少
动力学复杂iLQR避免计算二阶导数
接触频繁其他方法iLQR/DDP 都需可微模型

五、iLQR 在轨迹优化中的定位

按分类维度

维度iLQR 的定位
优化时机离线/在线均可
求解方法数值法(迭代)
梯度需求基于梯度(一阶)
适用系统非线性(通过线性化)
适用场景平滑非线性问题

与其他方法对比

方法时机梯度闭式解适用场景
LQR离线/在线N/A线性系统
iLQR离线/在线一阶⚠️ 每轮闭式平滑非线性
DDP离线/在线二阶⚠️ 每轮闭式高精度需求
CMA-ES离线零阶非凸/不可微
SAMCON在线零阶角色实时控制

方法选择建议

更多方法对比请参见:方法对比与分类

问题类型 → 推荐方法
─────────────────────────
线性系统 → LQR
平滑非线性 → iLQR/DDP
接触频繁/不可微 → CMA-ES
实时控制 → MPC/SAMCON
需要泛化 → DeepMimic/AMP
离线制作动作 → iLQR/DDP/CMA-ES

六、工程实践

应用实例

应用说明
轨迹跟踪用动捕数据作为参考,优化出物理可行的轨迹
局部修正在现有轨迹附近优化,应对扰动
动作生成结合前馈 + 反馈控制,生成平滑动作

实际考虑

1. 初始猜测的重要性

  • iLQR 是局部优化方法,可能陷入局部最优
  • 好的初始猜测(如动捕数据)能显著提高结果质量

2. 线搜索(Line Search)

  • 更新轨迹时需要控制步长 α
  • 常用:Armijo 条件、回溯线搜索

3. 正则化

  • 在 Hessian 矩阵上加正则项防止奇异
  • \(R \leftarrow R + \lambda I\)

4. 终止条件

  • 代价变化小于阈值:\(|J_{new} - J| < \epsilon\)
  • 达到最大迭代次数

七、与 DeepMimic/AMP 的关系

维度iLQRDeepMimic/AMP
输出单一轨迹 \(\mathbf{x} _{0:T}\)策略 \(\pi(\mathbf{a}
计算时机离线优化(每任务一次)训练一次,在线推理
泛化能力无(仅适用于该轨迹)有(可处理新情况)
计算成本中(秒级)低(毫秒级推理)
适用场景特定动作生成通用角色控制

关系

  • iLQR 轨迹优化结果可作为 RL 的参考轨迹
  • RL 可学习模仿 iLQR 生成的行为

八、关键要点总结

核心思想

  1. 迭代线性化:在当前位置附近将非线性问题近似为 LQR 问题
  2. 前后向传递:前向仿真轨迹,逆向求解最优策略
  3. 闭式解:每轮迭代都有 LQR 闭式解,但需要多次迭代收敛

算法流程

初始化轨迹 → 前向传递 → 线性化 → 逆向传递 → 更新轨迹 → 检查收敛

优缺点

优点缺点
收敛快(相比无梯度方法)需要可微模型
适用于高维问题可能陷入局部最优
每轮迭代有闭式解计算雅可比矩阵成本高

适用场景

  • ✅ 平滑的非线性轨迹优化问题
  • ✅ 有参考轨迹的跟踪问题
  • ✅ 需要精确控制的场景
  • ❌ 接触频繁、不可微的问题(用 CMA-ES)
  • ❌ 实时控制(用 MPC/SAMCON)

九、深入学习

前置知识

相关方法

  • DDP - 二阶方法
  • CMA-ES - 无梯度优化
  • MPC - 在线优化

参考资料


本文出自 CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES105_mdbook/