跳转至

10_采样式MPC总论

MPPI / 采样式 MPC 方向 C++ 进阶教学大纲(v0.1 · 八段式完整版)

定位:本大纲是规划与控制 C++ 进阶体系的**采样式 MPC 增量扩展**,面向已掌握梯度式 MPC(OCS2/Crocoddyl/acados/SQP-RTI)和 RL 基础(PPO/SAC/IsaacLab)的机器人算法工程师,从梯度式 MPC 扩展到**采样式 MPC / 路径积分控制**范式。

与梯度式 MPC 的关系:梯度式 MPC(iLQR/DDP/SQP)要求可微动力学与可微代价,擅长凸/近凸问题;采样式 MPC(MPPI/CEM/Predictive Sampling)不需要任何梯度,天然兼容不连续代价、黑箱仿真器和神经网络动力学模型,且可在 GPU 上大规模并行。两者互补,不替代。

章节编号:共 10 章,约 18 周。Part 1(Ch1-Ch2,理论+核心)→ Part 2(Ch3-Ch4,变体+统一)→ Part 3(Ch5-Ch6,扩散+世界模型)→ Part 4(Ch7-Ch8,应用)→ Part 5(Ch9-Ch10,对比+实战)。

数据基础:基于 30+ 篇顶会/顶刊论文的脉络梳理(ICRA/RSS/T-RO/JGCD/RA-L/CoRL/NeurIPS/ICLR/L4DC)、15+ 个开源项目的代码精读、6 轮深度调研的交叉验证。

前置假设:学员已掌握——现代 C++17(含模板元编程)、Eigen 高级(Map/Block/固定大小)、CUDA 基础(kernel/shared memory/warp)、梯度式 MPC(OCS2 或 acados 用过至少一个)、RL 训练管线(PPO/SAC + IsaacLab/MuJoCo)、ROS2 基础。在此基础上切入采样式 MPC 不需要重新学 C++,只需补"路径积分数学 + GPU 并行采样工程 + 采样分布设计"。

风格对齐:沿用本文档统一的**八段式**章节结构。

核心实验室缩写:Georgia Tech ACDS(Theodorou 组,MPPI 原创)、CMU LeCAR(Shi 组,CoVO-MPC/DIAL-MPC)、UCSD Hansen(TD-MPC 系列)、MPI Martius(iCEM)、Indiana VAIL(Mohamed 组,Log-MPPI/U-MPPI/GP-MPPI)、UW/NVIDIA Fox-Boots(SV-MPC/STORM)、DeepMind Tassa(MuJoCo MPC/Predictive Sampling)、Nagoya Honda(SVG-MPPI)、ROS Nav2 Macenski(Nav2 MPPI Controller)、UPenn KumarRobotics(微分平坦原创)。


整体路线图

梯度式 MPC 基础已完成(OCS2/Crocoddyl/acados)
RL 基础已完成(PPO/SAC/IsaacLab)
         │  学生此时具备:
         │   - iLQR/DDP/SQP-RTI 的数学与代码
         │   - 可微动力学(Pinocchio/CasADi)
         │   - GPU 并行 RL 训练(IsaacLab)
         │   - ROS2 部署经验
┌──────────────────────────────────────────────────────┐
│ Part 1:路径积分理论与 MPPI 核心(Ch1-Ch2,4 周)       │
│   Ch1 路径积分控制——从 Kappen 到信息论 MPPI            │
│   Ch2 MPPI 核心算法与 GPU 并行实现                     │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ Part 2:MPPI 变体与 CEM 统一(Ch3-Ch4,3.5 周)        │
│   Ch3 MPPI 六大变体——鲁棒/平滑/多模态/不确定性         │
│   Ch4 CEM 家族与采样 MPC 统一视角                      │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ Part 3:扩散启发 MPC 与学习世界模型(Ch5-Ch6,4 周)     │
│   Ch5 扩散启发采样 MPC——MPPI 作为单步去噪              │
│   Ch6 学习世界模型 + 采样规划——TD-MPC 系列              │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ Part 4:应用领域专精(Ch7-Ch8,3.5 周)                 │
│   Ch7 腿足全身 MPPI 与接触丰富操作                     │
│   Ch8 导航、自驾与无人机采样 MPC                       │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ Part 5:对比与实战(Ch9-Ch10,3 周)                    │
│   Ch9 MPPI vs 梯度式 MPC——何时选谁                    │
│   Ch10 Mini-MPPI 综合实战                              │
└──────────────────────────────────────────────────────┘

全部投入:Part 1-5 共 ~18 周,全职等效约 4-5 个月;业余 15-20 小时/周约 8-12 个月。

与梯度式 MPC 的对照

维度 采样式 MPC(本大纲) 梯度式 MPC(已有基础)
梯度需求 零梯度——纯前向采样 需要 \(\partial f/\partial x\)\(\partial f/\partial u\) 和代价 Hessian
代价函数 任意(含不连续 indicator、CNN cost-map) 需平滑、可二次近似
动力学 黑箱/神经网络/仿真器皆可 需可微(CasADi/Pinocchio)
GPU 友好度 极高——数千线程并行 rollout 低——Riccati sweep 串行性强
收敛 全局/概率性,方差大 局部二次收敛,确定性
约束处理 软约束(barrier/投影)为主 硬约束(QP/NLP)为主
典型求解器 MPPI-Generic/pytorch_mppi/MJPC acados/OCS2/Crocoddyl
实时性 依赖 GPU,~1-10 ms @ K=2048 依赖 CPU,~0.1-5 ms @ SQP-RTI
代表应用 AutoRally 激进驾驶、Nav2 导航、DIAL-MPC 腿足 rpg_mpc 四旋翼、OCS2 腿足 MPC

三大认知跨越(从梯度式 MPC 到采样式 MPC)

跨越一:从"求解 KKT 系统"到"蒙特卡洛估计最优控制"。 梯度式 MPC 的核心是构造并求解 KKT 系统(Riccati/内点法);采样式 MPC 的核心是用大量随机 rollout 的加权平均**估计**最优控制。数学从**矩阵分解**转向**重要性采样与指数加权**。好消息是:RL 训练的直觉(reward shaping、温度调节、variance reduction)直接可迁移。

跨越二:从"CPU 串行求解"到"GPU 大规模并行采样"。 梯度式 MPC 的 Riccati sweep 天然串行;采样式 MPC 的 K 条 rollout 天然并行。这要求掌握 CUDA 编程模型(thread→warp→block)、shared memory 优化、以及 Eigen::Map 与 CUDA 的零拷贝互操作。IsaacLab 的 GPU 并行经验在此直接复用。

跨越三:从"精确梯度指导搜索"到"采样分布设计决定一切"。 梯度式 MPC 的收敛由局部曲率保证;采样式 MPC 的性能**完全取决于采样分布的质量**——高斯噪声的方差、有色噪声的频谱、协方差的自适应调度(CoVO-MPC)、甚至扩散式退火(DIAL-MPC)。理解"如何设计好的采样分布"是本大纲的**核心技能目标**。


梯度式 MPC / RL → 采样式 MPC 的技能迁移速查

已有技能 在采样式 MPC 中的对应 迁移难度
iLQR/DDP backward sweep MPPI 无 backward sweep——对照而非复用 概念对照
CasADi 可微动力学 MPPI 不需可微——MuJoCo/PyBullet 黑箱即可 零迁移(直接放弃)
acados SQP-RTI MPPI warm-start shift 与 SQP-RTI 准备阶段**类似**
Pinocchio RNEA/ABA 可作为 MPPI rollout 的动力学模型——但通常用仿真器替代
PPO/SAC 策略梯度 MPPI 权重公式与 REINFORCE 数学同构 零迁移
IsaacLab GPU 并行环境 MPPI CUDA 并行 rollout 思路完全一致 零迁移
reward shaping MPPI cost function 设计 = reward shaping 零迁移
温度/熵系数调节 MPPI 温度 \(\lambda\) = 探索-利用权衡 零迁移
Eigen 矩阵运算 MPPI-Generic 的 Eigen::Map + CUDA 互操作
ROS2 节点/消息 Nav2 MPPI Controller 直接用 ROS2 零迁移
约束 QP(OSQP/ProxQP) MPPI 用 barrier 函数/投影替代硬约束——范式不同

Part 1:路径积分理论与 MPPI 核心(Ch1-Ch2,4 周)

本部分定位:Part 1 回答两个问题——为什么 HJB 方程能通过一次指数变换变成线性的?(Ch1 理论)和**如何在 GPU 上以 50 Hz 执行数千条 rollout 的加权平均?**(Ch2 工程)。这是整个大纲的数学地基和工程地基。