本文档属于 Robotics Tutorial 项目,作者:Pengfei Guo,达妙科技。采用 CC BY 4.0 协议,转载请注明出处。
足式方向综合教学大纲
版本: v2.0 | 日期: 2026-05-24 定位: 面向完成 C++ 主线 v8 的 SLAM/机器人工程师,系统掌握足式机器人运动控制全栈 数据基础: 现有 27 个教学文件(序章 2 + 正文 24 + 大纲 1),约 44,985 行;规划新增 足式/265_Contact-Implicit_MPC / 足式/270_全身MPC与采样控制 / 足式/275_可微分仿真用于控制 三章(待创建) 总投入: 序章 2 章(通读)+ 现有正文 24 章 + 规划 3 章,完整学习约 39 周;可按 Part 独立选修
快速路径(Quick-Start Tracks)
不是每个人都需要 39 周完整课程。以下三条路径面向最常见的职业目标:
路径 A:工业工程师路径(~16 周)
目标:在 MuJoCo/IsaacLab 中部署四足 MPC+WBC 控制器,训练并导出 RL locomotion policy,掌握全身 MPC 新范式。
足式/30_Pinocchio深度精读(Pinocchio浮动基座, 1.5周) → 足式/50_空间向量与浮动基座动力学(空间向量代数, 2周) → 足式/60_QP_NLP建模(QP/NLP, 1.5周)
→ 足式/70_腿足简化模型理论(简化模型, 1.5周) → 足式/90_WBC分层优化与TSID(WBC/TSID, 2周) → 足式/110_OCS2完整栈与双线程MPC(OCS2 MPC, 2周)
→ 足式/270_全身MPC与采样控制(全身MPC/MPPI, 1.5周) [规划]
→ 足式/190_腿足RL训练栈(RL训练栈, 1.5周) → 足式/240_legged_control精读(legged_control精读, 1.5周)
总计 ~16 周
里程碑: - 第 5 周:能用 Pinocchio 加载四足 URDF 并计算浮动基座正/逆动力学 - 第 9 周:能组装 WBC QP 并在仿真中实现四足站立平衡 - 第 12 周:能部署 OCS2 MPC + WBC 实现 trot 步态;了解全身 MPC/MPPI 新范式 - 第 14 周:能训练 RL policy 并用 legged_control 架构跑通全栈 - 第 16 周:能对比分层 MPC+WBC 与单层全身 MPC 的性能差异
路径 B:全栈博士路径(~39 周)
目标:完整掌握优化/学习/感知三大范式,覆盖 Contact-Implicit MPC、全身 MPC、可微分仿真前沿方向,具备博士研究入门能力。
全部 27 个正文章节(现有 24 + 规划 3;序章另行通读)。
Part I (6周) → Part II (10周) → Part II-B (4周, 265/270/275 规划)
→ Part III (5周) → Part IV (3周)
→ Part V (5周) → Part VI (7周)
总计 ~39 周(不含规划章节约 35 周)
里程碑: - 第 6 周:Pinocchio + QP 基础设施就绪 - 第 16 周:MPC + WBC + 步态管理全链路打通 - 第 20 周:Contact-Implicit MPC + 全身 MPC + 可微分仿真前沿掌握 - 第 25 周:状态估计 + 落脚点规划闭环 - 第 28 周:实时工程 + 硬件栈认知完成 - 第 33 周:RL 训练/部署/混合范式掌握 - 第 39 周:Mini-Legged 综合实战 + 研究方向选定
路径 C:RL 特化路径(~13 周)
目标:专攻端到端 RL locomotion,快速具备 sim-to-real 能力。
足式/30_Pinocchio深度精读(Pinocchio基础, 1周) → 足式/70_腿足简化模型理论(简化模型速览, 1周) → 足式/90_WBC分层优化与TSID(WBC概念, 1周)
→ 足式/190_腿足RL训练栈(RL训练栈, 2周) → 足式/200_RL的CPP部署(RL C++部署, 1.5周) → 足式/210_RL与MPC混合范式(RL+MPC混合, 1.5周)
→ 足式/270_全身MPC与采样控制(全身MPPI速览, 1周) [规划] → 足式/220_腿足感知数据结构(感知数据结构, 1周)
→ 足式/180_腿足硬件栈(硬件栈, 1周) → 足式/250_Mini-Legged综合实战(综合实战, 2周)
总计 ~13 周
里程碑: - 第 3 周:理解简化模型与 WBC 概念,知道 RL 要替代什么 - 第 6 周:能在 IsaacLab 训练四足 locomotion policy - 第 9 周:能将 RL policy 导出为 C++ 推理并理解混合范式 - 第 10 周:理解全身 MPPI 与 RL 采样控制的联系,了解 DIAL-MPC - 第 13 周:能在仿真中完成感知驱动的 locomotion 全栈
计算与硬件需求表
| 章节范围 | GPU | 真机 | 最低配置 | 推荐配置 | 备注 |
|---|---|---|---|---|---|
| Part I 足式/30-60 | 不需要 | 不需要 | 8GB RAM, 4核 | 16GB RAM | Pinocchio+Eigen 纯 CPU |
| Part II 足式/70-80 | 不需要 | 不需要 | 8GB RAM | 16GB RAM | 理论推导+仿真验证 |
| Part II 足式/90-120 | 不需要 | 推荐四足 | 16GB RAM | 32GB + Go2 | OCS2 MPC+WBC+步态,推荐真机 |
| Part III 足式/130-140 | 不需要 | 推荐 | 16GB RAM | 32GB + Go2 | 状态估计需真机传感器 |
| Part III 足式/150-160 | 推荐 | 推荐 | RTX 3060 | RTX 4090 + Go2 | CNN 落脚需 GPU |
| Part IV 足式/170-180 | 不需要 | 强烈推荐 | PREEMPT_RT 内核 | Go2 + Jetson Orin | 实时+硬件章节 |
| Part V 足式/190-210 | 需要(GPU 并行) | 不需要 | RTX 3060 | RTX 4090 | IsaacLab/MJX 训练 |
| Part VI 足式/220-260 | 推荐 | 推荐 | RTX 3060 | RTX 4090 + Go2 | 感知+全栈+研究导引 |
| Part II-B 足式/265_Contact-Implicit_MPC | 推荐 | 推荐 | RTX 3060 | RTX 4090 + Go2 | CI-MPC GPU 求解(ci-SCvx JAX) |
| Part II-B 足式/270_全身MPC与采样控制 | 推荐(MPPI) | 推荐 | RTX 3060 | RTX 4090 + Go2 | 全身 MPPI 需 GPU 并行采样 |
| Part II-B 足式/275_可微分仿真用于控制 | 需要(GPU) | 不需要 | RTX 3060 | RTX 4090 | DiffSim/MJX 可微仿真需 GPU |
推荐完整训练配置(覆盖全部仿真训练):RTX 4090 24GB + 32GB 系统内存 + Ubuntu 22.04 PREEMPT_RT
工业级配置(含真机部署):上述 + Unitree Go2 四足 + Jetson Orin NX(部署端)
工业 vs 研究标记
| 标记 | 含义 | 代表章节 |
|---|---|---|
| [工业必修] | 工程落地核心能力 | 足式/30_Pinocchio深度精读, 足式/50_空间向量与浮动基座动力学, 足式/60_QP_NLP建模, 足式/90_WBC分层优化与TSID, 足式/110_OCS2完整栈与双线程MPC, 足式/170_实时CPP工程, 足式/180_腿足硬件栈, 足式/200_RL的CPP部署, 足式/240_legged_control精读 |
| [研究必修] | 博士/研究方向核心 | 足式/80_接触力学与约束优化, 足式/100_DDP家族与Crocoddyl, 足式/150_优化驱动落脚与接触规划, 足式/160_感知驱动落脚规划, 足式/210_RL与MPC混合范式, 足式/230_Perceptive_MPC, 足式/260_研究方向与博士导引, 足式/265(规划), 足式/270(规划), 足式/275(规划) |
| [进阶选修] | 按需深入 | 足式/40_CppAD与代码生成, 足式/120_步态管理与接触序列, 足式/140_落脚点规划经典方法, 足式/190_腿足RL训练栈, 足式/220_腿足感知数据结构, 足式/250_Mini-Legged综合实战 |
标记使用说明: - 工业导向学习者可跳过所有 [研究必修] 章节,节约约 30% 时间 - 博士预备者应全部完成,特别重视 [研究必修] 章节的论文精读部分(265/270/275 为规划章节,是 2025 最活跃的研究前沿,正文创建后纳入正式学习路径) - [进阶选修] 章节中 足式/190_腿足RL训练栈(RL 训练栈)对 RL 方向学习者为必修 - 足式/270_全身MPC与采样控制 虽标记为 [研究必修],但其工程实践价值日益增长,工业路径 A 已纳入
总览路线图
02_C++基础与进阶 + 03_SLAM 主线完成(第 1-48 周)
│ C++17 · Eigen · 并发 · SLAM 优化 · ROS2 · CMake/CUDA
▼
┌─────────────────────────────────────────────────────────────────┐
│ 序章: 全景导论 (足式/10-20, 2章, 通读性质) │
│ 足式/10_序章上篇_全景与四分法 全景与四分法 — 规控本体四分法+基础设施共享+腿足定位 │
│ 足式/20_序章下篇_前沿与学习路径 前沿与学习路径 — 自驾特殊地位+VLA/DiffSim/WorldModel+路径 │
└─────────────────────────┬───────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ Part I: 动力学基础设施 (足式/30-60, 4章 ~6周) │
│ 足式/30_Pinocchio深度精读 Pinocchio深度精读 [工业必修] │
│ 足式/40_CppAD与代码生成 CppAD与CppADCodeGen [进阶选修] │
│ 足式/50_空间向量与浮动基座动力学 空间向量代数与浮动基座动力学 [工业必修] │
│ 足式/60_QP_NLP建模 QP/NLP建模 [工业必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part II: 腿足控制核心 (足式/70-120, 6章 ~10周) │
│ 足式/70_腿足简化模型理论 腿足简化模型理论 [工业必修] │
│ 足式/80_接触力学与约束优化 接触力学与约束优化 [研究必修] │
│ 足式/90_WBC分层优化与TSID WBC分层优化与TSID [工业必修] │
│ 足式/100_DDP家族与Crocoddyl DDP家族与Crocoddyl [研究必修] │
│ 足式/110_OCS2完整栈与双线程MPC OCS2完整栈与双线程MPC [工业必修] │
│ 足式/120_步态管理与接触序列 步态管理与接触序列 [进阶选修] │
├─────────────────────────────────────────────────────────────────┤
│ Part II-B: 前沿 MPC 与可微分方法 (足式/265-275, 3章 ~4周) │
│ 足式/265_Contact-Implicit_MPC Contact-Implicit MPC [研究必修] │
│ 足式/270_全身MPC与采样控制 全身MPC与采样控制 [研究必修] │
│ 足式/275_可微分仿真用于控制 可微分仿真用于控制 [研究必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part III: 状态估计与感知 (足式/130-160, 4章 ~5周) │
│ 足式/130_腿足状态估计 腿足状态估计 [工业必修] │
│ 足式/140_落脚点规划经典方法 落脚点规划经典方法 [进阶选修] │
│ 足式/150_优化驱动落脚与接触规划 优化驱动的落脚与接触规划 [研究必修] │
│ 足式/160_感知驱动落脚规划 感知驱动的落脚规划 [研究必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part IV: 实时工程与硬件 (足式/170-180, 2章 ~3周) │
│ 足式/170_实时CPP工程 实时C++工程 [工业必修] │
│ 足式/180_腿足硬件栈 腿足硬件栈 [工业必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part V: RL与混合范式 (足式/190-210, 3章 ~5周) │
│ 足式/190_腿足RL训练栈 腿足RL训练栈 [进阶选修/RL方向必修] │
│ 足式/200_RL的CPP部署 RL的C++部署 [工业必修] │
│ 足式/210_RL与MPC混合范式 RL与MPC混合范式 [研究必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part VI: 感知控制综合与实战 (足式/220-260, 5章 ~7周) │
│ 足式/220_腿足感知数据结构 腿足感知数据结构 [进阶选修] │
│ 足式/230_Perceptive_MPC Perceptive MPC [研究必修] │
│ 足式/240_legged_control精读 legged_control精读(ROS1/ros_control) [工业必修] │
│ 足式/250_Mini-Legged综合实战 Mini-Legged综合实战 [进阶选修] │
│ 足式/260_研究方向与博士导引 研究方向与博士导引 [研究必修] │
└─────────────────────────────────────────────────────────────────┘
章节依赖关系图
足式/10_序章上篇_全景与四分法/足式/20_序章下篇_前沿与学习路径 (序章, 可随时回看)
│
▼
足式/30_Pinocchio深度精读 Pinocchio ──→ 足式/40_CppAD与代码生成 CppAD [可延迟]
│ │
▼ ▼
足式/50_空间向量与浮动基座动力学 空间向量 ←────── 足式/40_CppAD与代码生成 (AD导数验证)
│
▼
足式/60_QP_NLP建模 QP/NLP
│
├──────────────────┬──────────────────┐
▼ ▼ ▼
足式/70_腿足简化模型理论 简化模型 足式/80_接触力学与约束优化 接触力学 足式/90_WBC分层优化与TSID WBC/TSID
│ │ │
│ ▼ │
│ 足式/100_DDP家族与Crocoddyl DDP/Crocoddyl ←───┘
│ │
▼ ▼
足式/120_步态管理与接触序列 步态管理 ←── 足式/110_OCS2完整栈与双线程MPC OCS2 MPC ←── 足式/100_DDP家族与Crocoddyl
│ │
│ ┌─────────────┼──────────────────────────────┐
│ │ │ │
│ ▼ ▼ ▼
│ 足式/265 CI-MPC 足式/270 全身MPC/MPPI 足式/275 可微分仿真
│ (前置:80+110) (前置:90+110) (前置:80+S04)
│ │ │ │
│ └─────────────┼──────────────────────────────┘
│ │
▼ ▼
足式/140_落脚点规划经典方法 落脚点经典 足式/130_腿足状态估计 状态估计
│ │
▼ │
足式/150_优化驱动落脚与接触规划 优化落脚 ←────────┘
│
▼
足式/160_感知驱动落脚规划 感知驱动落脚
│
├──────────────────┐
▼ ▼
足式/170_实时CPP工程 实时C++ 足式/180_腿足硬件栈 硬件栈
│ │
▼ ▼
足式/190_腿足RL训练栈 RL训练栈 足式/220_腿足感知数据结构 感知数据结构
│ │
▼ ▼
足式/200_RL的CPP部署 RL C++部署 足式/230_Perceptive_MPC Perceptive MPC
│ │
▼ │
足式/210_RL与MPC混合范式 RL+MPC混合 ───────┤
│ │
▼ ▼
足式/240_legged_control精读 legged_control精读(ROS1)
│
▼
足式/250_Mini-Legged综合实战 Mini-Legged综合实战
│
▼
足式/260_研究方向与博士导引 研究方向与博士导引
前置知识依赖矩阵
| 本大纲章节 | 依赖 C++/SLAM 主线章节 | 关键知识点 |
|---|---|---|
| 足式/30_Pinocchio深度精读 | 02_C++/11(Eigen 高级), 02_C++/14(CRTP), 01_数学/李群 manif | Eigen Map/Block, CRTP 静态多态, SE(3) 流形运算 |
| 足式/40_CppAD与代码生成 | 02_C++/24(Ceres 自动微分), 02_C++/14(CRTP) | 前向/反向 AD, Jet 类型, 表达式模板 |
| 足式/50_空间向量与浮动基座动力学 | 02_C++/11(Eigen), 01_数学/李群 | 旋转/变换矩阵, Plucker 坐标, 递归算法 |
| 足式/60_QP_NLP建模 | 02_C++/11(Eigen), 02_C++/24(Ceres) | 凸优化基础, KKT 条件, 稀疏矩阵 |
| 足式/70-80 简化模型/接触力学 | 01_数学/李群, 02_C++/11(Eigen) | 质心动力学, 摩擦锥, LCP/NCP |
| 足式/90_WBC分层优化与TSID | 足式/50, 足式/60 | RNEA/ABA, QP 求解, 零空间投影 |
| 足式/100-110 DDP/OCS2 | 足式/60, 足式/90 | 最优控制, Riccati 递推, SQP |
| 足式/130_腿足状态估计 | 03_SLAM/VIO/滤波, 01_数学/李群 | EKF/ESKF, InEKF, 因子图 |
| 足式/170_实时CPP工程 | 02_C++/17-20(并发), 02_C++/35(pmr 内存) | SCHED_FIFO, mlockall, 无堆分配 |
| 足式/190-210 RL/混合范式 | 02_C++/45-46(CUDA/Docker), PPO/SAC 基础(自学) | GPU 训练, LibTorch/ONNX, sim-to-real |
最小前置:未完成主线者至少补 02_C++/11(Eigen)、14(CRTP)、17(锁)、19-20(并发)、24(自动微分)、35(pmr 内存) + 01_数学/李群 共 7 章。
生态速览(2026-05-24 更新)
核心工具栈
| 工具/框架 | 当前版本 | 状态 | 在本大纲中的位置 |
|---|---|---|---|
| Pinocchio | 3.9.0 | 活跃开发 | 足式/30_Pinocchio深度精读 核心精读,贯穿全部章节 |
| OCS2 | v1.0 | 维护模式(ETH RSL 不再积极开发) | 足式/110_OCS2完整栈与双线程MPC 核心精读,足式/240_legged_control精读 架构参考 |
| Crocoddyl | 3.2 | 活跃(重大 API 重构,不向后兼容) | 足式/100_DDP家族与Crocoddyl 核心精读 |
| Aligator/ProxDDP | T-RO 2025 | Crocoddyl 之外的新一代约束 DDP 路线(原生约束,Crocoddyl 兼容前端) | 足式/100_DDP家族与Crocoddyl 延伸,新项目可优先评估 |
| TSID | Pinocchio 生态 | 活跃 | 足式/90_WBC分层优化与TSID 核心 |
| ProxQP | ProxSuite | 活跃 | 足式/60_QP_NLP建模 推荐 QP 后端 |
| OSQP | 0.6.x | 稳定 | 足式/60_QP_NLP建模 备选 QP |
| Ipopt | 3.14+ | 稳定 | 足式/60_QP_NLP建模 NLP 核心 |
| IsaacLab | 3.0 early access (Newton) | 活跃(Newton 后端 = MuJoCo Warp,3.0 为 early access) | 足式/190_腿足RL训练栈 RL 训练主平台 |
| MuJoCo | 3.8.1 | 活跃(MJX GPU 成熟) | 足式/190_腿足RL训练栈 仿真后端 |
| MuJoCo Playground | v0.2.0 | RSS 2025 Outstanding Demo | 足式/190_腿足RL训练栈 RL 训练参考平台 |
| rsl_rl | ETH RSL | 活跃 | 足式/190_腿足RL训练栈 RL 训练库 |
| legged_control | ETH RSL | 维护模式(ROS1/ros_control) | 足式/240_legged_control精读 精读,架构参考 |
| rl_sar | 社区 | 活跃 | 足式/200_RL的CPP部署 RL 部署参考 |
| CppAD | 20240000+ | 稳定 | 足式/40_CppAD与代码生成 精读 |
| CppADCodeGen | -- | 稳定 | 足式/40_CppAD与代码生成 精读 |
MPC 框架对比
| 框架 | 状态 | 求解方法 | 特点 | 适用场景 |
|---|---|---|---|---|
| OCS2 | 维护模式 | SQP-RTI + HPIPM | 双线程异步、ROS 集成成熟、教学友好 | 分层 MPC+WBC |
| Aligator | Crocoddyl 之外的新一代约束 DDP 路线 | ProxDDP (T-RO 2025) | 原生约束、Crocoddyl 兼容前端、新项目推荐 | 轨迹优化/MPC |
| MJPC | DeepMind 标准 | iLQR/MPPI | MuJoCo 原生零配置、直接全身 MPC | 全身 MPC 入门 |
| Fatrop | 新兴 | 结构化内点法 | 全身 NLP 80Hz 实时、逆动力学 MPC | 高 DoF 全身 MPC |
| RAPTOR | 人形专用 | 优化驱动关节+逆动力学重建 | 仅优化驱动关节减少决策变量 | 人形 MPC |
| RoMoCo | 开源工具箱 | 统一 LIP/ALIP/HLIP/MLIP/DCM | C++ 实现,arXiv:2509.19545 | 简化模型对比研究 |
接触模型生态
| 模型 | 来源 | 特点 | arXiv |
|---|---|---|---|
| ComFree-Sim | -- | 无互补性闭式求解,GPU 线性扩展,吞吐比 MJWarp 高 2-3x | 2603.12185 |
| 无互补性方法 (Jin) | RSS 2025 | 封闭形式时间步进,灵巧手 96.5% 成功率 | 2408.07855 |
| DiffMJX CFD | -- | Contacts From Distance,未接触也有梯度 | 2506.14186 |
| MuJoCo 软接触 | Google DeepMind | 凸接触 + 隐式积分,GPU via MJX | -- |
| Drake Hydroelastic | TRI | 体积接触力计算,几何精确 | -- |
关键生态事件(2025-2026): - OCS2 进入维护模式:存量代码巨大,教学价值不减,但新项目应考虑 Aligator - Aligator 成为 Crocoddyl 之外的新一代路线:ProxDDP (T-RO 2025) 提供原生约束处理,Crocoddyl 兼容前端保证平滑迁移 - Crocoddyl 3.2 重大 API 重构:足式/100_DDP家族与Crocoddyl 以 3.2 API 为准 - IsaacLab 3.0 (early access) Newton 后端实质运行 MuJoCo Warp:打破 IsaacLab=PhysX 的绑定,文档和稳定性仍在完善中 - MuJoCo Playground 获 RSS 2025 Outstanding Demo:MuJoCo GPU RL 训练栈生产就绪 - ComFree-Sim 与无互补性接触模型:解析光滑模型正在形成对传统互补性方法的替代路线 - 全身 MPC 范式转变:简化模型 MPC+WBC 向单层全身 MPC 演进,MPPI/iLQR on MuJoCo 首次真机验证 - legged_control 为 ROS1 (ros_control):ROS2 迁移可参考 legubiao/ocs2_ros2
Per-Part 章节详情
Part I:动力学基础设施(第 49-54 周,~6 周)
完成本 Part 后你能做什么:用 Pinocchio 加载任意浮动基座 URDF,计算 FK/ID/FD 及其解析导数;用 CppAD 做自动微分验证;用 ProxQP/Ipopt 组装和求解 QP/NLP。这是后续所有章节的计算基础。
足式/30_Pinocchio深度精读 Pinocchio 深度精读(1538 行)⭐ [工业必修]
精读 Pinocchio 3.x 在浮动基座场景下的架构与算法,掌握 CRTP 访问者模式、标量参数化与 Lie 群抽象。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 主线 11(Eigen 高级), Ch14(CRTP), Ch23(李群 manif) |
| 标记 | [工业必修] |
科研脉络: - Featherstone (1987, 2008):空间向量代数 + RNEA/ABA 算法奠基 - Carpentier & Mansard (2018):刚体动力学算法的解析导数 - Carpentier et al. (2019):Pinocchio C++ 库架构设计
教学目标:
- 能加载浮动基座 URDF 并正确配置 SE(3) 根关节
- 能用 double/CppAD::AD<double> 双标量实例化同一模型
- 能调用 FK/RNEA/ABA 并理解 O(n) 复杂度来源
核心知识点:
1. Model/Data 分离 + Algorithm 无状态函数式设计
2. CRTP 访问者模式:JointModelBase<Derived> 静态多态 dispatch
3. 标量参数化:ModelTpl<Scalar> 支持 double/AutoDiffXd/casadi::SX
4. Lie 群抽象:LieGroupBase 的 integrate/difference/interpolate
5. 浮动基座特化:JointModelFreeFlyer 的 SE(3) 积分
6. RNEA/ABA 的模板展开路径与 O(n) 递推细节
7. 解析导数 computeABADerivatives() vs 有限差分的精度/速度
8. Coal(hpp-fcl 3.x) 碰撞接口
前沿连接: - Aligator(Crocoddyl 后继)的 Pinocchio 3.x 深度依赖 - 可微仿真中 Pinocchio 作为解析梯度源
练习:
1. 加载 Go2 URDF,分别用 double 和 AD<double> 计算 RNEA,验证 AD 导数与解析导数一致性 (<1e-10)
2. 画出 JointModelRevoluteTpl 的 CRTP 继承链调用图
预估时间:1.5 周
足式/40_CppAD与代码生成 CppAD 与 CppADCodeGen(1529 行)⭐⭐ [进阶选修,可延迟]
掌握 CppAD 前向/反向模式 AD 与 CppADCodeGen 的编译期代码生成,为 MPC/优化提供高效梯度。
| 属性 | 值 |
|---|---|
| 周数 | 1 周(可延迟至 足式/100_DDP家族与Crocoddyl 前补) |
| 前置依赖 | 足式/30_Pinocchio深度精读, 主线 24(Ceres 自动微分) |
| 标记 | [进阶选修] |
科研脉络: - Griewank & Walther (2008):"Evaluating Derivatives" 自动微分经典教材 - Bell (2005):CppAD 设计原理
教学目标: - 理解前向模式(tangent) vs 反向模式(adjoint) 的适用场景 - 能用 CppADCodeGen 将动力学函数预编译为 C 代码
核心知识点: 1. AD 的 tape 录制机制与计算图 2. 前向模式:\(n\) 次传播获得 \(n\) 列雅可比(输入维度小时高效) 3. 反向模式:\(m\) 次传播获得 \(m\) 行雅可比(输出维度小时高效) 4. Jacobian/Hessian 的稀疏模式利用 5. CppADCodeGen:离线生成 .c 文件 → dlopen 动态加载 6. OCS2 中 AD 的实际使用模式
前沿连接: - JAX 的 jit+vmap 与 CppAD 的设计哲学对比 - 可微仿真中 AD 穿透物理引擎
练习: 1. 对 3-DOF 摆臂的正向运动学做前向/反向 AD,对比 Jacobian 耗时 2. 用 CppADCodeGen 预编译 Go2 的 RNEA,测量与运行期 AD 的速度差异
预估时间:1 周
足式/50_空间向量与浮动基座动力学 空间向量代数与浮动基座动力学(2046 行)⭐ [工业必修]
从 Featherstone 空间向量代数出发,完整推导浮动基座多体动力学方程,掌握 RNEA/ABA/CRBA 的 O(n) 递推算法。
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | 足式/30_Pinocchio深度精读, 主线 23(李群) |
| 标记 | [工业必修] |
科研脉络: - Featherstone (1983):空间向量代数初创 - Featherstone (2008):"Rigid Body Dynamics Algorithms" 经典教材 - Orin et al. (2013):质心动力学(Centroidal Dynamics) 与质心动量矩阵
教学目标: - 能手推 Plucker 坐标系下的 6D 力/运动变换 - 能用 RNEA 做逆动力学、ABA 做正动力学 - 理解浮动基座 \(M\dot{v} + h = S^T\tau + J_c^T\lambda\) 中每一项的物理意义
核心知识点: 1. Plucker 坐标:6D 运动向量 \(\hat{v} = (\omega, v)\) 与力向量 \(\hat{f} = (n, f)\) 2. 空间变换矩阵 \({}^AX_B\) 的构造与链式组合 3. 空间惯量矩阵 \(I_s\) 的 6x6 表示与平行轴定理 4. RNEA 递推:前向扫描(速度/加速度传播) + 反向扫描(力传播) 5. CRBA:复合刚体算法计算关节空间质量矩阵 \(M(q)\) 6. ABA:关节空间正动力学 \(\ddot{q} = M^{-1}(\tau - h)\) 的 O(n) 算法 7. 质心动力学与质心动量矩阵 \(A_G\):\(h_G = A_G \dot{q}\) 8. 浮动基座动力学方程:欠驱动约束 \(S\) 矩阵的含义 9. CCRBA(Composite Centroidal Rigid-Body Algorithm):O(N) 计算质心动量矩阵 \(A_G\)
前沿连接: - SRBD(单刚体动力学) 是质心动力学的最简化版本——足式/70_腿足简化模型理论 将详细推导 - WBC 的 QP 直接以此方程为等式约束——足式/90_WBC分层优化与TSID 核心
练习:
1. 手推 2-link 浮动基座臂的 \(M, h\) 并与 Pinocchio 数值对比
2. 实现一个最简 RNEA(不用 Pinocchio),验证与 pinocchio::rnea() 结果一致
预估时间:2 周
足式/60_QP_NLP建模 QP/NLP 建模(1784 行)⭐ [工业必修]
掌握凸 QP 与非线性 NLP 的建模范式和求解器工程,为 WBC/MPC 提供优化基础设施。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 主线 11(Eigen 稀疏), 主线 24(优化基础) |
| 标记 | [工业必修] |
科研脉络: - Goldfarb & Idnani (1983):活跃集 QP 算法(qpOASES 基础) - Stellato et al. (2020):OSQP 算子分裂算法 - Bambade et al. (2022):ProxQP 近端算子+信赖域
教学目标: - 能手动组装 \(\min \frac{1}{2}x^THx + g^Tx\) s.t. \(Ax \leq b\) 并调用三大求解器 - 能为 WBC 的力分配组装完整 QP - 能用 Ipopt 求解轨迹优化 NLP
核心知识点: 1. QP 标准形式与 KKT 条件 2. 三大 QP 求解器对比:qpOASES(活跃集) / OSQP(ADMM) / ProxQP(近端+信赖域) 3. 稀疏矩阵工程:Eigen::SparseMatrix + CSC 格式 4. 热启动(warm-start) 策略与 MPC 循环中的应用 5. NLP 求解器 Ipopt:内点法、障碍参数、收敛准则 6. NLP 建模工具:CasADi 符号化建模 + Ipopt/SNOPT 后端 7. 二阶锥约束(SOCP):摩擦锥的精确锥表示 8. 求解器选型决策树:问题规模 × 稀疏性 × 实时性 9. acados:嵌入式 MPC 专用 SQP/RTI 框架,C 代码生成 + 结构化 QP(HPIPM),适合 Jetson 部署
前沿连接: - ProxQP 是 Pinocchio 生态推荐的 WBC QP 后端 - HPIPM 是 OCS2 的 MPC QP 后端 - acados 是嵌入式 MPC 的首选工具链(区别于通用 NLP 求解器 Ipopt)
练习: 1. 组装一个四足站立的力分配 QP(12 个接触力变量 + 摩擦锥约束),用三大求解器分别求解并对比耗时 2. 用 CasADi + Ipopt 求解一个简化的 2D 跳跃轨迹优化
预估时间:1.5 周
Part II:腿足控制核心(第 55-64 周,~10 周)
完成本 Part 后你能做什么:理解 LIPM/SRBD 简化模型理论,掌握摩擦锥/互补约束接触力学,能组装 WBC QP 和 OCS2 MPC,理解步态管理与接触序列调度。这是足式控制的数学核心。
足式/70_腿足简化模型理论 腿足简化模型理论(1717 行)⭐ [工业必修]
从 LIPM 到 SLIP 到质心动力学,建立足式机器人的简化建模体系。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/50_空间向量与浮动基座动力学(浮动基座动力学), 足式/60_QP_NLP建模(QP 基础) |
| 标记 | [工业必修] |
科研脉络: - Kajita et al. (2001):LIPM + ZMP 双足行走 - Blickhan (1989):SLIP 弹簧-质量模型 - Di Carlo et al. (2018):MIT Cheetah 凸 MPC(SRBD 的工业化里程碑)
教学目标: - 理解 LIPM/DCM/SRBD/SLIP 四种简化模型的数学推导与适用场景 - 能推导 SRBD 的线性化状态空间方程 - 理解简化模型与全身模型的精度-速度权衡
核心知识点: 1. LIPM(线性倒立摆模型):恒定 CoM 高度假设 → \(\ddot{x} = \omega^2(x - p)\) 2. DCM(发散质心运动):\(\xi = x + \dot{x}/\omega\),捕获点概念 3. ZMP/CoP:零力矩点与支撑多边形稳定性判据 4. SRBD(单刚体动力学):忽略腿部惯性 → 12 维状态空间 5. SRBD 线性化与离散化:MPC 凸化的数学基础 6. SLIP(弹簧加载倒立摆):腿部弹性建模,跑步/跳跃 7. Centroidal Dynamics:质心动量矩阵 \(A_G\) 与角动量守恒 8. 四种模型的精度-速度对比表 9. RoMoCo 统一简化模型工具箱 (arXiv: 2509.19545):C++ 实现 LIP/ALIP/HLIP/MLIP/DCM 统一框架,用于模型对比研究
前沿连接: - SRBD 是 MIT Cheetah 凸 MPC 的核心假设 - 全身 MPC(Aligator/OCS2)不再做 SRBD 假设,但计算量更大
练习: 1. 推导 SRBD 的连续时间状态空间方程 \(\dot{x} = Ax + Bu\),写出 \(A, B\) 矩阵 2. 对比 LIPM 和 SRBD 在四足 trot 步态下的质心轨迹预测误差
预估时间:1.5 周
足式/80_接触力学与约束优化 接触力学与约束优化(1826 行)⭐⭐ [研究必修]
从 Coulomb 摩擦到互补约束,建立接触力学的完整数学框架。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/60_QP_NLP建模(QP/NLP), 足式/70_腿足简化模型理论(简化模型) |
| 标记 | [研究必修] |
科研脉络: - Coulomb (1785):库仑摩擦定律 - Stewart & Trinkle (1996):LCP 接触模型 - Pang et al. (2023):接触的准动态平滑化
教学目标: - 理解 Signorini 互补条件与 Coulomb 摩擦锥 - 能将接触约束建模为 LCP/NCP - 理解接触不连续性对优化/学习的挑战
核心知识点: 1. Signorini 互补条件:\(\phi \geq 0, \lambda \geq 0, \phi \cdot \lambda = 0\) 2. Coulomb 摩擦锥:\(\sqrt{f_x^2 + f_y^2} \leq \mu f_z\) 3. 摩擦锥线性化:多面体近似(4面/8面/16面)与 SOC 精确锥 4. LCP(线性互补问题):\(w = Mz + q, w \geq 0, z \geq 0, w^Tz = 0\) 5. 接触模式枚举:\(n\) 个接触点 → \(3^n\) 种模式(分离/滑动/粘着) 6. 松弛与平滑化:Fischer-Burmeister 函数、对数障碍、增广拉格朗日变体 (arXiv: 2502.16898) 7. 事件驱动 vs 时间步进仿真 8. MuJoCo 的软接触模型 vs Drake 的 Hydroelastic 模型 9. ComFree-Sim:无互补性闭式求解,GPU 线性扩展,吞吐比 MuJoCo Warp 高 2-3x (arXiv: 2603.12185) 10. 无互补性方法 (Jin et al., RSS 2025):封闭形式时间步进,灵巧手 96.5% 成功率 (arXiv: 2408.07855) 11. DiffMJX CFD (Contacts From Distance):未接触也有梯度信号 (arXiv: 2506.14186) 12. 光滑接触流形 (arXiv: 2602.20304):接触动力学的微分几何统一框架 13. 主流趋势:解析光滑模型正在形成对传统互补性方法的替代路线
前沿连接: - 接触隐式轨迹优化(足式/150_优化驱动落脚与接触规划 核心)→ 足式/265_Contact-Implicit_MPC 的实时化 - 可微仿真中接触梯度的病态性处理 → 足式/275_可微分仿真用于控制 详细展开 - ComFree-Sim / 无互补性方法是未来接触模型的演进方向
练习: 1. 手推 2D 点接触的 LCP 公式并用 Lemke 算法求解 2. 对比 4 面/8 面摩擦锥近似在四足站立 QP 中的力分配差异
预估时间:1.5 周
足式/90_WBC分层优化与TSID WBC 分层优化与 TSID(1660 行)⭐ [工业必修]
掌握全身控制器(WBC) 的分层 QP 架构与 TSID 框架,实现多任务优先级控制。
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | 足式/50_空间向量与浮动基座动力学(浮动基座动力学), 足式/60_QP_NLP建模(QP), 足式/80_接触力学与约束优化(接触力学) |
| 标记 | [工业必修] |
科研脉络: - Sentis & Khatib (2005):分层任务框架 - Del Prete et al. (2015):浮动基座 TSID - Kim et al. (2019):MIT Cheetah WBIC
教学目标: - 能组装浮动基座 WBC 的完整 QP(决策变量: \(\ddot{q}, \tau, \lambda\)) - 理解严格优先级(null-space) vs 软优先级(weighted QP) 的数学区别 - 能用 TSID 框架配置任务栈
核心知识点: 1. WBC 标准 QP:\(\min \|J\ddot{q} + \dot{J}\dot{q} - \ddot{x}_d\|^2\) s.t. 动力学 + 接触 2. 决策变量选择:\((\ddot{q}, \tau, \lambda)\) 三元组 3. 等式约束:\(M\dot{v} + h = S^T\tau + J_c^T\lambda\)(浮动基座动力学) 4. 不等式约束:摩擦锥 + 关节限位 + CoP 约束 5. 严格优先级:零空间投影级联求解 6. 软优先级:加权代价 QP 一次求解 7. TSID 框架 API:任务定义、约束注册、求解器配置 8. MIT Cheetah WBIC 的简化版实现(legged_control HierarchicalWbc) 9. QP 求解器 benchmark (arXiv: 2510.21773):WBC 推荐 ProxQP,MPC 推荐 HPIPM,Jetson Orin NX 最优能效比 10. 高 DoF 人形 WBC:30+ DoF 时 QP 求解耗时显著增加,结构化利用成为关键 11. VWBC(值函数嵌入 WBC):将 MPC 值函数作为 QP 代价项,与 Cafe-MPC 的值函数 WBC 对比(详见 足式/270_全身MPC与采样控制)
前沿连接: - WBC 是 MPC 的下游执行器:MPC 给出参考轨迹/力,WBC 映射到关节力矩 - RL 范式中 WBC 被神经网络替代——足式/210_RL与MPC混合范式 讨论这一取舍 - 全身 MPC(足式/270_全身MPC与采样控制)在部分场景下可替代 WBC 层
练习: 1. 手动组装四足站立 WBC QP(躯体高度跟踪 + 摩擦锥 + 动力学约束),用 ProxQP 求解 2. 用 TSID 配置三优先级任务(平衡 > 躯体姿态 > 正则化),在仿真中验证
预估时间:2 周
足式/100_DDP家族与Crocoddyl DDP 家族与 Crocoddyl(1755 行)⭐⭐ [研究必修]
从 DDP/iLQR 理论到 Crocoddyl 3.2 实战,掌握基于射击法的轨迹优化。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/60_QP_NLP建模(NLP), 足式/90_WBC分层优化与TSID(WBC 概念) |
| 标记 | [研究必修] |
科研脉络: - Mayne (1966):DDP 原始算法 - Tassa et al. (2012):iLQR(DDP 的 Gauss-Newton 近似) - Mastalli et al. (2020):Crocoddyl FDDP(可行性驱动 DDP) - Jallet et al. (2025):Aligator/ProxDDP(T-RO 2025)
教学目标: - 能推导 DDP 的 Bellman 递推与 Riccati 因式分解 - 能用 Crocoddyl 3.2 API 构建腿足轨迹优化问题 - 理解 FDDP 与经典 DDP 在可行性处理上的差异
核心知识点: 1. DDP 数学:值函数二阶展开 → 反向 Riccati → 前向 rollout 2. iLQR:忽略 \(f_{xx}\) 项 → Gauss-Newton 近似 → 更鲁棒 3. FDDP:放松初始轨迹可行性 → 收敛域更大 4. Crocoddyl 3.2 API:ActionModel / CostModel / ShootingProblem / Solver 5. 约束处理:增广拉格朗日法 vs 罚函数法 6. Aligator/ProxDDP:近端 DDP + 并行 Riccati → 新项目推荐,Crocoddyl 之外的新一代约束 DDP 路线 (T-RO 2025) 7. 与 MPC 的关系:DDP 作为 MPC 的求解内核 8. 计算效率:7-DOF 臂 ~2ms/iter, 浮动基座 ~5ms/iter 9. GPU 加速 Primal-Dual iLQR:parallel associative scan,比 acados/Crocoddyl 快 60% (arXiv: 2506.07823) 10. WASP 导数加速:iLQG 加速 2x (arXiv: 2512.21109) 11. ParallelRiccati:parallel scan 加速 Riccati 回代
前沿连接: - OCS2 内部用 SQP(非 DDP)但数学思想类似 - 可微仿真 + DDP = 端到端可微 MPC → 足式/275_可微分仿真用于控制 - Aligator 与 Fatrop(足式/270_全身MPC与采样控制)共同构成新一代 MPC 求解器生态
练习: 1. 手推 1D 双积分器的 DDP 反向传播,写出 \(K, k\) 增益矩阵 2. 用 Crocoddyl 3.2 构建四足跳跃轨迹优化(简化模型),可视化质心轨迹
预估时间:1.5 周
足式/110_OCS2完整栈与双线程MPC OCS2 完整栈与双线程 MPC(2077 行)⭐ [工业必修]
精读 OCS2 的 SQP-RTI + HPIPM 实时 MPC 架构,掌握双线程异步 MPC 的工程实现。
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | 足式/100_DDP家族与Crocoddyl(DDP/轨迹优化), 足式/90_WBC分层优化与TSID(WBC) |
| 标记 | [工业必修] |
科研脉络: - Farshidian et al. (2017):OCS2 原始论文 - Sleiman et al. (2021):Unified MPC 四足+臂 - Grandia et al. (2023):Perceptive Locomotion 感知 MPC
教学目标: - 理解 SQP-RTI(实时迭代)的"一次 QP 近似"策略 - 能配置 OCS2 的腿足 MPC 完整管线 - 理解双线程 MPC 的 policy 插值机制
核心知识点: 1. SQP-RTI:将 NLP 分解为每步一个 QP → 实时可行 2. HPIPM:Riccati 递推求解结构化 QP → \(O(N \cdot n^3)\) 3. OCS2 架构:SystemDynamics / CostFunction / Constraint / RolloutBase 4. 双线程设计:后台线程求解 MPC → 前台线程插值执行 5. 代价函数设计:追踪代价 + 终端代价 + 正则化 6. 约束处理:摩擦锥 / 运动学极限 / 自碰撞 7. 步态调度接口:接触序列 → MPC 时域窗口 8. OCS2 legged_robot 示例配置详解 9. ADMM 并行 MPC:使用 ADMM-MPC (IROS 2024, arXiv: 2403.11742) 讲解全身动力学分解为可并行子系统的方法
前沿连接: - Perceptive MPC(足式/230_Perceptive_MPC)在 OCS2 基础上加入地形约束 - OCS2 进入维护模式——新项目迁移 Aligator 的路径 - 全身 MPPI (arXiv: 2409.10469) 和 MuJoCo iLQR (arXiv: 2503.04613) 正在形成对 OCS2 分层架构的替代路线 → 足式/270_全身MPC与采样控制 - ADMM 加速 MPC (arXiv: 2403.11742):全身动力学并行子系统分解 - CollisionFreeMPC (ICRA 2021, arXiv: 2103.13987):使用该论文讲解碰撞约束集成到 MPC 的方法 - OCS2 ROS2 移植版 (legubiao/ocs2_ros2) 可用于 ROS2 环境
练习: 1. 配置 OCS2 legged_robot 示例,在 MuJoCo 中跑 Go2 trot 步态 2. 修改 MPC 时域长度和 QP 迭代次数,分析对跟踪精度和计算延迟的影响
预估时间:2 周
足式/120_步态管理与接触序列 步态管理与接触序列(1710 行)⭐⭐ [进阶选修]
掌握步态图、接触序列调度与自动步态生成的理论与工程实现。
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | 足式/110_OCS2完整栈与双线程MPC(OCS2 MPC) |
| 标记 | [进阶选修] |
科研脉络: - Raibert (1986):经典步态分类(walk/trot/pace/bound/gallop) - Bellicoso et al. (2018):ANYmal 步态管理 - Villarreal et al. (2020):MPC 内自动接触序列优化
教学目标: - 理解步态图(gait graph) 的周期/占空比/相位偏移参数化 - 能实现 FSM 步态调度器 - 理解自动步态生成相对于手工步态的优劣
核心知识点:
1. 步态参数化:周期 \(T\)、占空比 \(D\)、相位偏移 \(\phi_i\)
2. 经典步态:walk(0.75) / trot(0.5) / pace(0.5) / bound(0.5) / gallop
3. 步态图(Gait Graph):时间-接触的矩阵表示
4. FSM 步态调度器:swing/stance 状态机 + 早触/晚触处理
5. OCS2 步态接口:ModeSchedule + TargetTrajectory
6. 自动步态生成:MIQP / GCS / RL 发现步态
7. 步态过渡:trot→walk 平滑切换策略
8. 人形步态的特殊性:单支撑/双支撑/重心偏移
前沿连接: - RL 可以完全绕过手工步态设计——足式/190_腿足RL训练栈 的替代路线 - 接触序列优化(足式/150_优化驱动落脚与接触规划)是自动步态生成的数学形式化
练习: 1. 实现一个四足步态管理器,支持 trot/walk/pace 三种步态切换 2. 在 OCS2 中修改步态周期和占空比,观察对 MPC 跟踪质量的影响
预估时间:1 周
Part II-B:前沿 MPC 与可微分方法(第 65-68 周,~4 周)[规划章节]
完成本 Part 后你能做什么:掌握接触隐式 MPC 的平滑互补建模与实时求解,理解全身 MPC/MPPI 作为分层 MPC+WBC 替代路线的新范式,能用可微分仿真做端到端策略优化。这是 2025-2026 最前沿的三个研究方向。
足式/265_Contact-Implicit_MPC Contact-Implicit MPC ⭐⭐⭐ [研究必修][规划章节,待创建]
将接触模式发现嵌入 MPC 优化循环,消除手工接触序列调度,实现自动接触规划与运动控制的统一求解。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/80_接触力学与约束优化(接触力学/互补约束), 足式/110_OCS2完整栈与双线程MPC(MPC 架构) |
| 标记 | [研究必修] |
科研脉络: - Posa et al. (2014):Contact-Implicit Trajectory Optimization 奠基 - Howell et al. (2022):CALIPSO 锥互补 NLP - Kim et al. (2024):CI-MPC 实机验证,45kg 四足 HOUND (arXiv: 2312.08961, IJRR 2024) - Manchester & Kuindersma (2024):IDTO 逆动力学接触隐式 (arXiv: 2309.01813, IJRR 2026)
教学目标: - 理解接触隐式优化如何将离散接触模式决策连续化 - 掌握平滑互补性建模(Fischer-Burmeister / 对数障碍 / 柔性接触松弛) - 理解 CI-MPC 与传统分层 MPC 在自动步态发现上的本质区别 - 能分析 CI-MPC 的计算瓶颈与实时化策略
核心知识点: 1. 接触隐式 vs 接触显式:\(3^n\) 模式枚举 → 连续优化的范式转变 2. 平滑互补约束:Coulomb 摩擦的 Fischer-Burmeister 平滑化 \(\phi(a,b) = a + b - \sqrt{a^2 + b^2 + \epsilon}\) 3. 柔性接触松弛:弹簧-阻尼模型近似 Signorini 条件,梯度连续 4. CI-MPC 求解架构:逐次凸化(SCvx) / iLQR + 接触力变量 / 内点法 5. IDTO(逆动力学接触隐式轨迹优化):接触力作为优化变量,20-DoF >100Hz (arXiv: 2309.01813) 6. ci-SCvx GPU 加速:连续时间逐次凸化 + 积分交叉互补性,JAX 实现,一个数量级加速 (arXiv: 2604.09993) 7. ACAL-iLQR:柔性接触增广拉格朗日 iLQR,四足步态自动生成 (Adv. Intell. Systems 2024) 8. 相分解轨迹优化:摆动/支撑持续时间显式优化 (arXiv: 2510.24069) 9. CI-MPC vs 分层 MPC 性能对比:计算成本 / 自动步态发现 / 鲁棒性 10. 实时化策略:GPU 并行化 / 导数稀疏性利用 / warm-start
前沿连接: - 足式/80_接触力学与约束优化 提供互补约束的数学基础 - 足式/150_优化驱动落脚与接触规划 的离线接触隐式优化是本章实时化的起点 - 足式/270_全身MPC与采样控制 全身 MPC 可使用接触隐式动力学
关键论文: 1. Posa et al. (2014) "A Direct Method for Trajectory Optimization of Rigid Bodies Through Contact" — CI-TO 奠基 2. Kim et al. (2024) "CI-MPC-KAIST" arXiv: 2312.08961 (IJRR 2024) — 首次 45kg 真机验证 3. Manchester & Kuindersma (2024) "Inverse Dynamics Trajectory Optimization" arXiv: 2309.01813 (IJRR 2026) — 逆动力学 CI 框架 4. ci-SCvx (2025) arXiv: 2604.09993 — GPU 加速接触隐式凸化
练习: 1. 用 CasADi + Ipopt 实现 2D 弹跳球的接触隐式轨迹优化(Fischer-Burmeister 平滑),对比不同 \(\epsilon\) 值对收敛性的影响 2. 分析 Le Cleac'h et al. (2024) 论文中 HOUND 四足的 CI-MPC 架构,画出求解器数据流图
预估时间:1.5 周
足式/270_全身MPC与采样控制 全身 MPC 与采样控制 ⭐⭐⭐ [研究必修][规划章节,待创建]
2025 最大范式转变:从简化模型 MPC + WBC 双层架构走向单层全身 MPC,直接优化关节力矩。掌握全身 iLQR/MPPI 在 MuJoCo 上的实现与真机部署。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/90_WBC分层优化与TSID(WBC 全身动力学), 足式/110_OCS2完整栈与双线程MPC(MPC 架构) |
| 标记 | [研究必修] |
科研脉络: - Williams et al. (2017):MPPI 采样控制算法 - Howell et al. (2022):MJPC (MuJoCo Predictive Control) 全身 MPC 框架 - Abudakka et al. (2025):Real-Time Whole-Body MPPI,首次真机四足 (arXiv: 2409.10469, ICRA 2025) - Ding et al. (2025):Whole-Body MPC with MuJoCo iLQR,H1 人形 (arXiv: 2503.04613)
教学目标: - 理解分层 MPC+WBC 与单层全身 MPC 的根本区别 - 掌握 MPPI(Model Predictive Path Integral) 采样控制的数学推导 - 能用 MJPC 或自写全身 iLQR 在 MuJoCo 中跑全身 MPC - 理解全身 MPC 的计算瓶颈与 GPU 加速策略
核心知识点:
1. 范式转变:简化模型 MPC + WBC(两层) → 全身 MPC(单层) 的动机与优劣
2. 全身 MPC 的决策变量:直接优化 \((\tau_1, ..., \tau_N)\) 关节力矩序列
3. MPPI 数学:路径积分控制 → 重要性采样 → 指数加权平均
4. MPPI 参数:采样数 K、噪声方差 \(\Sigma\)、温度 \(\lambda\)
5. MuJoCo 有限差分导数:利用 MuJoCo mjd_transitionFD 计算全身动力学导数
6. MJPC 架构:MuJoCo 原生零配置全身 MPC,支持 iLQR/MPPI/Gradient Descent
7. 全身 MPPI on GPU:并行 rollout + 并行导数计算 (arXiv: 2409.10469)
8. DIAL-MPC 扩散退火采样 MPC:使用 DIAL-MPC (arXiv: 2409.15610) 讲解扩散退火噪声调度
9. Cafe-MPC 级联保真度 MPC:使用 Cafe-MPC (T-RO 2025, arXiv: 2403.03995) 讲解级联保真度+值函数 WBC
10. Fatrop 全身逆动力学 MPC:结构化内点法直接优化关节力矩 80Hz (arXiv: 2511.19709)
11. 多频率 MPC:处理异构执行器的不同控制频率 (arXiv: 2505.16478, iRonCub)
12. RAPTOR:仅优化驱动关节 + 逆动力学重建被动关节,减少决策变量的人形 MPC 思路(与 Fatrop 全身优化对比)
13. 全身 MPC vs 分层 MPC 性能对比表
前沿连接: - 足式/90_WBC分层优化与TSID 的 WBC 在部分场景下可被全身 MPC 替代 - 足式/265_Contact-Implicit_MPC 的接触隐式方法可与全身 MPC 结合 - 足式/230_Perceptive_MPC 可扩展为 Perceptive Whole-Body MPC
关键论文: 1. Williams et al. (2017) "Information Theoretic MPC for Model-Based RL" — MPPI 原始论文 2. Abudakka et al. (2025) "Real-Time Whole-Body MPPI" arXiv: 2409.10469 (ICRA 2025) — 首次真机四足全身 MPPI 3. Ding et al. (2025) "Whole-Body MPC with MuJoCo" arXiv: 2503.04613 — iLQR+MuJoCo 有限差分导数,H1 人形 4. Fatrop Whole-Body MPC arXiv: 2511.19709 — 结构化 IP 求解器 80Hz 5. Xue et al. (2024) "DIAL-MPC" arXiv: 2409.15610 (CoRL 2024 WS) — 扩散退火全阶 MPPI,973★ 6. Li et al. (2025) "Cafe-MPC" arXiv: 2403.03995 (T-RO 2025) — 级联保真度 MPC + 值函数 WBC
练习: 1. 用 MJPC 在 MuJoCo 中跑 Go2 全身 MPC(iLQR 模式),对比 OCS2 分层 MPC+WBC 的跟踪精度 2. 实现简化版 MPPI(100 采样,2D 双积分器),理解温度参数 \(\lambda\) 对探索-利用的影响
预估时间:1.5 周
足式/275_可微分仿真用于控制 可微分仿真用于控制 ⭐⭐⭐ [研究必修][规划章节,待创建]
梯度穿透物理引擎:用可微分仿真直接优化控制策略,绕过 RL 的零阶采样低效问题。掌握 DiffSim2Real、AHAC、DiffMJX 等前沿工具。
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | 足式/80_接触力学与约束优化(接触力学/梯度病态性), 仿真方向 S04(可微分仿真基础) |
| 标记 | [研究必修] |
科研脉络: - de Avila Belbute-Peres et al. (2018):可微物理引擎先驱 - Xu et al. (2022):Brax 2.0 可微仿真 - He et al. (2024):DiffSim2Real 首次纯可微仿真到真机四足 (arXiv: 2411.02189) - Suh et al. (2024):AHAC 接触截断避免梯度爆炸 (arXiv: 2405.17784, ICML 2024)
教学目标: - 理解可微分仿真的核心思想:通过物理仿真反向传播梯度 - 理解接触不连续性导致的梯度病态问题及其解决方案 - 能用 MJX/Brax 做简单的可微仿真策略优化 - 理解可微仿真 vs RL 在足式控制中的互补性
核心知识点: 1. 可微分仿真原理:前向仿真 → 损失函数 → 反向传播穿透物理引擎 2. 接触梯度的病态性:Signorini 互补条件不可微 → 梯度爆炸/消失 3. 平滑化策略:柔性接触模型 / 随机平滑 / 截断梯度 4. AHAC(Analytic Handling of Contacts):接触截断避免梯度爆炸 (arXiv: 2405.17784) 5. DiffSim2Real:首次纯可微仿真 → 真机四足步态 (arXiv: 2411.02189) 6. DiffMJX CFD(Contacts From Distance):未接触也有梯度信号 (arXiv: 2506.14186) 7. D-REX:高斯溅射数字孪生 + 可微物理引擎 (arXiv: 2603.01151, ICLR 2026) 8. 可微 MPC 策略优化:混合一阶梯度 + 零阶更新 (arXiv: 2511.11308) 9. 在线可微仿真:Learning on the Fly,在线快速适应 (arXiv: 2508.21065) 10. KKT 隐式微分:通过 KKT 条件隐函数定理获取优化问题梯度,可微 MPC 的理论基础 11. 可微仿真 vs RL 对比:样本效率 / 梯度质量 / 接触处理 / 计算成本
前沿连接: - 足式/80_接触力学与约束优化 的接触模型理论是可微仿真的数学基础 - 足式/210_RL与MPC混合范式 中可微 MPC 是混合范式的前沿变体 - 足式/260_研究方向与博士导引 中"可微仿真+腿足"是核心研究方向之一
关键论文: 1. He et al. (2024) "DiffSim2Real" arXiv: 2411.02189 — 首次纯可微仿真到真机四足 2. Suh et al. (2024) "AHAC: Actor-Critic with Hallucinated Analytic Contact" arXiv: 2405.17784 (ICML 2024) — 接触截断 3. Tassa et al. (2025) "DiffMJX: Contacts From Distance" arXiv: 2506.14186 — 连续梯度 4. Lei et al. (2026) "D-REX" arXiv: 2603.01151 (ICLR 2026) — 高斯溅射 + 可微物理
练习: 1. 用 MJX 对一个简单 2-link 浮动基座系统做可微仿真,对比前向有限差分梯度与反向传播梯度的精度和速度 2. 精读 DiffSim2Real 论文,分析其 sim-to-real 迁移策略与 RL Domain Randomization 的异同
预估时间:1 周
Part III:状态估计与感知(第 69-73 周,~5 周)
完成本 Part 后你能做什么:实现腿足状态估计器(EKF/InEKF),掌握 Raibert 启发式落脚、优化驱动落脚与感知驱动落脚三种范式。这是连接控制与真实世界的桥梁。
足式/130_腿足状态估计 腿足状态估计(1581 行)⭐ [工业必修]
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 主线 25-26(VIO/滤波), 足式/50_空间向量与浮动基座动力学(浮动基座), 足式/80_接触力学与约束优化(接触力学) |
| 标记 | [工业必修] |
科研脉络: - Bloesch et al. (2013):四足 EKF 状态估计 - Hartley et al. (2020):InEKF 在腿足上的应用 - Wisth et al. (2021):VILENS 视觉-惯性-腿式因子图
教学目标: - 能实现基于运动学+IMU 的腿足 EKF - 理解 InEKF 相比 EKF 的优势(误差线性化在群上精确) - 理解接触状态对状态估计的影响
核心知识点: 1. 腿足状态估计的特殊性:浮动基座无绝对位置传感器 2. IMU + 腿部运动学融合:前向运动学提供"虚拟 GPS" 3. EKF 状态定义:\([p, v, R, b_a, b_g, p_{foot}]\) 4. InEKF:误差定义在 Lie 群上 → 误差传播精确线性化 5. 接触检测:力阈值 / 电流阈值 / 概率模型 6. 接触切换对滤波器的影响:协方差重置策略 7. 视觉-惯性-腿式融合(VILENS 架构) 8. legged_control 中 LinearKalmanFilter 的简化实现
前沿连接: - SLAM 背景学习者的独特优势:InEKF 与 VIO 方法同源 - 因子图状态估计是学术前沿方向 - 神经增强滤波:InNKF (arXiv: 2503.00344) 漂移比 InEKF 降 40%;Attention-Based NKF (arXiv: 2601.18569, ICRA 2025) 位置+50%/速度+53% - 自适应 InEKF (arXiv: 2510.16755):在线协方差估计 - 双层优化噪声标定 (arXiv: 2510.11539, ICRA 2026):上层优化噪声+运动学参数 - OCELOT (arXiv: 2605.21863):无力传感器接触检测+里程计,ROS2 开源 - DogLegs 多 IMU 融合 (arXiv: 2503.04580, IROS 2025):精度提升 37-88% - 自适应 MPC + KF 在线辨识 (arXiv: 2506.13432):卡尔曼滤波在线辨识质量/质心参数驱动 MPC 自适应
练习: 1. 在 legged_control 框架中跑 Go2 状态估计,分析漂移来源 2. 对比 EKF 和 InEKF 在快速步态下的估计精度
预估时间:1.5 周
足式/140_落脚点规划经典方法 落脚点规划经典方法(1703 行)⭐⭐ [进阶选修]
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | 足式/70_腿足简化模型理论(简化模型/DCM), 足式/120_步态管理与接触序列(步态管理) |
| 标记 | [进阶选修] |
科研脉络: - Raibert (1986):Raibert 启发式落脚公式 - Pratt et al. (2006):捕获点理论(DCM 驱动落脚) - Jenelten et al. (2020):基于 DCM 的鲁棒落脚
教学目标: - 能推导 Raibert 启发式公式及其物理直觉 - 理解捕获点/DCM 与落脚的关系 - 能实现基本的启发式落脚控制器
核心知识点: 1. Raibert 启发式:\(p_f = p_{hip} + \frac{v \cdot T_s}{2} + k(v - v_d)\) 2. 公式各项的物理意义:对称项 + 反馈修正项 3. 捕获点(Capture Point):使机器人能停下来的最小落脚位置 4. DCM 驱动落脚:\(\xi_{ref}\) → \(p_f\) 的映射 5. 地形约束:可行落脚区域的几何裁剪 6. 落脚时序:提前/延迟触地的处理策略 7. Raibert 的局限性:不考虑地形/不考虑多步前瞻
前沿连接: - 足式/150_优化驱动落脚与接触规划 用优化方法替代启发式 - 足式/160_感知驱动落脚规划 用感知方法学习落脚
练习: 1. 实现 Raibert 启发式落脚器,在平地 trot 步态中验证 2. 在有坡度地形上测试 Raibert 公式的失败模式
预估时间:1 周
足式/150_优化驱动落脚与接触规划 优化驱动的落脚与接触规划(1588 行)⭐⭐⭐ [研究必修]
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/110_OCS2完整栈与双线程MPC(OCS2 MPC), 足式/140_落脚点规划经典方法(经典落脚), 足式/80_接触力学与约束优化(接触力学) |
| 标记 | [研究必修] |
科研脉络: - Winkler et al. (2018):TOWR 离线轨迹+落脚联合优化 - Deits & Tedrake (2014):GCS(Graph of Convex Sets) 混合规划 - Posa et al. (2014):Contact-Implicit Trajectory Optimization
教学目标: - 理解落脚与轨迹联合优化的数学建模 - 理解 MIQP/接触隐式/GCS 三种处理离散接触模式的方法 - 能用 TOWR 做离线轨迹+落脚规划
核心知识点: 1. 轨迹+落脚联合优化:\(\min J\) s.t. 动力学+接触+运动学+地形 2. MIQP:整数变量编码接触模式 → 分支定界求解 3. 接触隐式(Contact-Implicit):互补约束松弛 → 连续优化 4. GCS(Graph of Convex Sets):将混合问题转化为图搜索+凸优化 5. TOWR 框架:样条参数化 + Ifopt 求解器 6. 计算复杂度分析:指数(MIQP) vs 多项式(CI) vs 图搜索(GCS) 7. 在线 vs 离线:实时性约束下的降阶策略
前沿连接: - 接触隐式 MPC 是 2024-2025 最活跃的研究方向之一 → 足式/265_Contact-Implicit_MPC 详细展开 - GCS 在 MIT Drake 生态中有完整实现 - IDTO 逆动力学 CI (arXiv: 2309.01813, IJRR 2026):接触力作为优化变量,20-DoF >100Hz - ci-SCvx GPU 加速 (arXiv: 2604.09993):连续时间逐次凸化,JAX 实现,一个数量级加速 - 相分解轨迹优化 (arXiv: 2510.24069):摆动/支撑持续时间显式优化
练习: 1. 用 TOWR 优化四足跨越台阶的轨迹,可视化落脚点序列 2. 对比固定步态(手工落脚) 和 TOWR(优化落脚) 在崎岖地形上的通过率
预估时间:1.5 周
足式/160_感知驱动落脚规划 感知驱动的落脚规划(1624 行)⭐⭐⭐ [研究必修]
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | 足式/140_落脚点规划经典方法(经典落脚), 足式/150_优化驱动落脚与接触规划(优化落脚) |
| 标记 | [研究必修] |
科研脉络: - Magana et al. (2019):高程图驱动的落脚评分 - Miki et al. (2022):ANYmal 感知 locomotion(RL + 高程图) - Agarwal et al. (2023):Learning Perceptive Locomotion
教学目标: - 理解高程图/costmap 作为落脚评分输入的管线 - 理解 CNN/RL 学习落脚策略的优势与局限 - 理解感知延迟/噪声对落脚质量的影响
核心知识点: 1. 高程图(Elevation Map):2.5D 地形表示 → 落脚可行性评分 2. 落脚评分函数:平坦度 + 可达性 + 运动学约束 3. CNN 落脚网络:输入高程图 patch → 输出落脚评分图 4. RL 端到端落脚:观测包含高程图扫描 → 策略直接输出足端目标 5. Miki et al. (2022) 架构:teacher-student + 特权信息 6. 感知延迟补偿:预测当前地形 vs 延迟补偿 7. 不确定性处理:地形高度不确定性对落脚安全的影响
前沿连接: - Perceptive MPC(足式/230_Perceptive_MPC)将地形感知融入 MPC 约束 - 感知数据结构(足式/220_腿足感知数据结构)是本章的工程基础 - 凸分解落脚 (arXiv: 2307.14775):NN 安全区域 + 凸分解 - 变时序 MIQP (arXiv: 2603.07400):DCM 动力学 + 凸可踩区域 → MIQP - 混合整数落脚 (arXiv: 2501.19391):欠驱动双足粗糙地形
练习: 1. 用 grid_map 库构建简单高程图,实现基于平坦度的落脚评分 2. 分析 Miki et al. (2022) 的 teacher-student 架构设计动机
预估时间:1 周
Part IV:实时工程与硬件(第 74-76 周,~3 周)
完成本 Part 后你能做什么:掌握 1kHz 硬实时 C++ 编程的完整禁区清单,理解四足硬件栈(电机/传感器/通信/驱动器)。这是从仿真到真机的必经之路。
足式/170_实时CPP工程 实时 C++ 工程(1967 行)⭐ [工业必修]
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 主线 17-20(并发), 主线 35(pmr 内存) |
| 标记 | [工业必修] |
科研脉络: - Linux 6.12 PREEMPT_RT 主线合并(2024.11) - ROS2 Real-time 设计文档
教学目标: - 掌握 RT 安全 C++ 禁区清单:禁堆分配/禁异常/禁 IO - 能配置 SCHED_FIFO + mlockall + EIGEN_RUNTIME_NO_MALLOC 三件套 - 能用 cyclictest 验证实时性
核心知识点: 1. PREEMPT_RT 主线化:Linux 6.12 正式合并 2. RT 安全禁区清单:禁 new/delete/malloc/throw/catch/cout/线程创建 3. 标准三件套:SCHED_FIFO + mlockall + EIGEN_RUNTIME_NO_MALLOC 4. realtime_tools:RealtimeBuffer / RealtimePublisher / lock-free queue 工具 5. 无锁并发:std::atomic 内存序 / x86 TSO vs ARM 弱序 6. 优先级反转与 PTHREAD_PRIO_INHERIT 7. cyclictest 验证:RT 内核 <50us vs 非 RT >700us 8. 从 SLAM 10Hz 到控制 1kHz 的认知跨越
前沿连接: - OCS2 双线程 MPC(足式/110_OCS2完整栈与双线程MPC)的 RT 安全通信直接复用本章知识 - RL 部署(足式/200_RL的CPP部署)的推理热路径也需要 RT 安全
练习: 1. cyclictest 对比 RT vs 非 RT 内核延迟 2. 故意触发 EIGEN_RUNTIME_NO_MALLOC 审计,修复后验证
预估时间:1.5 周
足式/180_腿足硬件栈 腿足硬件栈(1859 行)⭐ [工业必修]
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/170_实时CPP工程(实时 C++) |
| 标记 | [工业必修] |
科研脉络: - Seok et al. (2015):MIT Cheetah 准直驱电机设计 - Unitree Go2/G1 技术文档
教学目标: - 理解准直驱电机的高带宽/低惯量/可反驱优势 - 掌握 Unitree Go2 SDK 的通信与控制接口 - 理解 IMU/编码器/力传感器的数据融合管线
核心知识点: 1. 电机驱动方式演进:液压 → 高减速比 → 准直驱 2. 准直驱电机特性:低减速比(9:1) + 高力矩密度 + 可反驱 3. 电机控制模式:位置/速度/力矩/混合模式 4. Unitree Go2 SDK:UDP 通信 + 低层/高层控制接口 5. EtherCAT 通信:工业级实时总线协议 6. IMU 选型与标定:MEMS 特性/噪声模型/温度补偿 7. 关节编码器:绝对/增量编码器选型与校准 8. 安全机制:过流保护/过温保护/软件限位/硬件限位
前沿连接: - 人形机器人硬件栈(G1/H1)是四足的超集,异构执行器管理成为新挑战 - RL 部署(足式/200_RL的CPP部署)需要理解硬件延迟对 sim-to-real gap 的影响 - Jetson Orin NX 是 QP 求解器 benchmark (arXiv: 2510.21773) 中最优能效比平台 - 多频率 MPC (arXiv: 2505.16478) 处理异构执行器的不同控制频率
练习: 1. 用 Unitree Go2 SDK(仿真模式)实现单腿 PD 站立 2. 分析 Go2 通信延迟:测量 UDP 往返时间的分布
预估时间:1.5 周
Part V:RL 与混合范式(第 77-81 周,~5 周)
完成本 Part 后你能做什么:在 IsaacLab/MuJoCo Playground 训练四足 RL locomotion policy,导出为 C++ 推理模块,理解 RL+MPC 混合范式的设计权衡。
足式/190_腿足RL训练栈 腿足 RL 训练栈(1861 行)⭐⭐ [进阶选修 / RL 方向必修]
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | PPO/SAC 基础(自学), 主线 45-46(CUDA/Docker) |
| 标记 | [进阶选修 / RL 方向必修] |
科研脉络: - Hwangbo et al. (2019):ANYmal RL locomotion 里程碑 - Rudin et al. (2022):legged_gym + rsl_rl 开源训练框架 - Miki et al. (2022):感知 RL locomotion
教学目标: - 能在 IsaacLab 中训练四足 locomotion policy - 理解 reward shaping / curriculum learning / domain randomization 的设计原则 - 能分析训练曲线并调试常见问题
核心知识点: 1. IsaacLab + legged_gym + rsl_rl 训练管线 2. MuJoCo Playground (RSS 2025 Outstanding Demo):JAX vmap 并行训练管线,与 IsaacLab 对比(JAX 生态 vs NVIDIA 生态) 3. 观测空间设计:本体感知(关节角/速度/IMU) + 特权信息(地形高度) 3. 动作空间设计:关节位置偏移 vs 力矩 vs PD 目标 4. Reward shaping:追踪奖励 + 正则化(能量/平滑度/空气时间) 5. Curriculum learning:地形难度渐进 + 速度命令渐进 6. Domain Randomization:质量/摩擦/延迟/电机强度 7. Teacher-Student / Privileged Learning:教师有特权信息,学生仅用本体感知 8. 训练调试:reward 不涨/策略抖动/sim-to-real gap 的排查
前沿连接: - MuJoCo Playground 提供了替代 IsaacLab 的 JAX 生态训练方案 - 足式/210_RL与MPC混合范式 的混合范式将 RL 与 MPC 结合
练习: 1. 在 IsaacLab 训练 Go2 trot locomotion,记录训练曲线并分析各 reward 分项 2. 对比有/无 domain randomization 的 sim-to-real 性能差异
预估时间:2 周
足式/200_RL的CPP部署 RL 的 C++ 部署(1601 行)⭐ [工业必修]
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/190_腿足RL训练栈(RL 训练), 足式/170_实时CPP工程(实时 C++) |
| 标记 | [工业必修] |
科研脉络: - PyTorch TorchScript / LibTorch 部署管线 - ONNX Runtime 跨框架推理 - rl_sar 腿足 RL 部署框架
教学目标: - 能将 PyTorch 策略导出为 TorchScript 并用 LibTorch C++ 推理 - 能用 ONNX Runtime 实现跨平台部署 - 理解高频控制(1kHz) + 低频策略(50Hz) 的异步架构
核心知识点: 1. 导出管线:PyTorch → TorchScript (.pt) → LibTorch C++ 加载 2. 导出管线:PyTorch → ONNX (.onnx) → ONNX Runtime / TensorRT 3. 推理延迟:CPU vs GPU / 批量 vs 单步 / 量化 4. 高频-低频异步架构:1kHz PD 内环 + 50Hz RL 外环 5. 观测预处理:归一化/历史堆叠/特权信息剥离 6. 动作后处理:限幅/平滑滤波/安全约束 7. rl_sar 框架:ROS2 + LibTorch + 部署模板 8. Jetson Orin 部署:ARM 编译 + TensorRT 加速
前沿连接: - 足式/210_RL与MPC混合范式 混合范式中 RL policy 作为 residual controller - 足式/250_Mini-Legged综合实战 综合实战中 RL 部署是全栈的一部分
练习: 1. 将训练好的 Go2 policy 导出为 TorchScript,用 LibTorch 在 C++ 中推理并测量延迟 2. 用 ONNX Runtime 做同样的推理,对比 LibTorch 的延迟和便捷性
预估时间:1.5 周
足式/210_RL与MPC混合范式 RL 与 MPC 混合范式(1561 行)⭐⭐⭐ [研究必修]
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/110_OCS2完整栈与双线程MPC(OCS2 MPC), 足式/190_腿足RL训练栈(RL 训练) |
| 标记 | [研究必修] |
科研脉络: - Silver et al. (2018):Residual Policy Learning - Lee et al. (2020):Teacher-Student for Locomotion - Gangapurwala et al. (2022):RL + MPC 协同
教学目标: - 理解纯 RL / 纯 MPC / 混合范式的优劣权衡 - 掌握 Teacher-Student / Residual Policy / RL 初始化 MPC 三种混合架构 - 能分析哪种范式适合哪种场景
核心知识点: 1. 纯 MPC 的优势与局限:物理保证 vs 模型精度 vs 计算量 2. 纯 RL 的优势与局限:泛化性 vs 安全性 vs 可解释性 3. Teacher-Student / MPC 蒸馏:教师用特权信息(MPC/全知) → 学生仅用本体感知;使用 DTC (Science Robotics 2024, arXiv: 2309.15462) 讲解 TO→RL 蒸馏范式;E2E from NMPC (arXiv: 2505.08574) 4. Residual Policy:\(u = u_{MPC} + \pi_{RL}(s)\),RL 补偿 MPC 的模型误差;使用 RAMBO (RA-L 2025, arXiv: 2504.06662) 讲解 QP 前馈+RL 残差;Residual MPC (MIT, arXiv: 2510.12717) 5. RL 初始化/Warm-Start MPC:用 RL 提供 MPC 的初始猜测 → 求解加速 21.6% (arXiv: 2408.03394) 6. 安全约束:CBF(Control Barrier Function) + RL 的安全层;使用 ABS (RSS 2024, arXiv: 2401.17583) 讲解 reach-avoid 值网络策略切换;CBF-MPC (arXiv: 2603.19170) 7. 三层安全控制架构:CBF-NMPC 10Hz + MPC 60Hz + WBC 500Hz 多频率安全分层 (arXiv: 2509.22815) 8. 混合范式选型决策树:安全性要求 × 模型精度 × 计算预算 × 泛化需求 8. 2024-2025 趋势:端到端 RL 在平地场景占优,混合范式在复杂地形/安全关键场景不可替代 9. 五类架构分类学:RL 高层+MPC 底层 (arXiv: 2603.10878) / RL Warm-Start / MPC Teacher 蒸馏 / 残差混合 / Neural MPC (arXiv: 2601.12169) 10. 性能对比:纯 MPC 10-50ms 强约束 / 纯 RL 50-200us 弱约束 / 分层 RL+MPC 1-5ms+10ms 强约束强鲁棒 / 残差混合 100us+10ms 最强鲁棒 / Neural MPC 0.5-2ms 中约束
前沿连接: - 足式/230_Perceptive_MPC Perceptive MPC 是混合范式的前沿实例 - 足式/260_研究方向与博士导引 博士导引中混合范式是核心研究方向之一 - 足式/270_全身MPC与采样控制 的全身 MPPI 可作为混合范式中的 MPC 底层 - 足式/275_可微分仿真用于控制 的可微 MPC 是 Neural MPC 的数学基础
练习: 1. 在仿真中实现 Residual Policy:MPC baseline + RL 补偿,对比纯 MPC 在扰动下的鲁棒性 2. 分析一篇 2024-2025 的混合范式论文,总结其架构设计动机
预估时间:1.5 周
Part VI:感知控制综合与实战(第 82-88 周,~7 周)
完成本 Part 后你能做什么:掌握高程图/costmap 感知数据结构,理解 Perceptive MPC 的地形约束融入,精读 legged_control 完整代码栈,从零搭建四足全栈控制器,定位博士研究方向。
足式/220_腿足感知数据结构 腿足感知数据结构(1640 行)⭐⭐ [进阶选修]
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | 主线 27-28(PCL/OpenCV), 足式/130_腿足状态估计(状态估计) |
| 标记 | [进阶选修] |
科研脉络: - Fankhauser et al. (2014):Robot-Centric Elevation Mapping - Miki et al. (2022):学习型高程图应用
教学目标: - 能用 grid_map 库维护机器人中心的高程图 - 理解点云 → 高程图 → costmap 的处理管线 - 理解感知数据在 MPC/RL 中的接口设计
核心知识点: 1. 高程图(Elevation Map):2.5D 网格 + 方差估计 2. grid_map 库:多层地图 + ROS2 集成 3. 点云到高程图:投影 + 滤波 + 插值 4. Costmap:从高程图派生(坡度/粗糙度/台阶检测) 5. 体素地图:3D 占据率表示(OctoMap/Voxblox) 6. GPU 加速感知:nvblox + CUDA ESDF 生成 7. 感知-控制接口:高程图如何输入 MPC/RL 的观测空间
前沿连接: - 足式/230_Perceptive_MPC Perceptive MPC 直接使用高程图作为约束 - 足式/160_感知驱动落脚规划 感知驱动落脚使用 costmap 评分
练习: 1. 用 grid_map 从点云构建高程图并可视化 2. 实现坡度 costmap 层,标注不可通行区域
预估时间:1 周
足式/230_Perceptive_MPC Perceptive MPC(1577 行)⭐⭐⭐ [研究必修]
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | 足式/110_OCS2完整栈与双线程MPC(OCS2 MPC), 足式/160_感知驱动落脚规划(感知驱动落脚), 足式/220_腿足感知数据结构(感知数据结构) |
| 标记 | [研究必修] |
科研脉络: - Grandia et al. (2023):Perceptive Locomotion through Nonlinear MPC - Jenelten et al. (2024):DTC (Digital Twin Control) - Agarwal et al. (2023):Learning Perceptive Locomotion
教学目标: - 理解如何将地形信息融入 MPC 约束和代价函数 - 理解 Grandia 2023 T-RO 的运动学可行性约束设计 - 能在 OCS2 中添加地形约束
核心知识点: 1. 地形约束的形式化:落脚点高度 = 高程图(x, y) 2. 运动学可行性约束:足端可达范围与地形的交集 3. 地形代价:引导落脚到平坦区域 4. 滚动地平线中地形预测的延迟处理 5. Signed Distance Field 在 MPC 碰撞约束中的应用 6. MPC + 高程图的计算管线:感知线程 → 地图更新 → MPC 线程读取 7. DTC(Digital Twin Control):仿真器内嵌 MPC 的新范式 8. 多频率感知-MPC 层级架构:感知 1Hz → 面选择 5Hz → MPC 50Hz → WBC 500Hz,使用 WB-MPC-OptRegion (arXiv: 2305.08926) 讲解
前沿连接: - 与 RL 感知 locomotion 的竞争/互补关系 - 足式/260_研究方向与博士导引 博士导引中 Perceptive Control 是核心研究方向 - WB-MPC + Region Selection (arXiv: 2305.08926):凸分割 1Hz → 面选择 5Hz → MPC 50Hz - PolygMap (arXiv: 2510.12346):有界多面体地形表示 → 人形楼梯 - CAFE-MPC:级联保真度 MPC,详见 足式/270_全身MPC与采样控制 (T-RO 2025, arXiv: 2403.03995) - 全身 MPPI 感知:足式/270_全身MPC与采样控制 的全身 MPC 可直接融入地形约束
练习: 1. 在 OCS2 legged_robot 中添加简化地形约束(台阶场景),验证 MPC 能自适应调整步高 2. 精读 Grandia 2023 T-RO 论文,总结其运动学可行性约束的数学推导
预估时间:1.5 周
足式/240_legged_control精读 legged_control 精读(2028 行)⭐ [工业必修]
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | 足式/110_OCS2完整栈与双线程MPC(OCS2), 足式/90_WBC分层优化与TSID(WBC), 足式/130_腿足状态估计(状态估计), 足式/170_实时CPP工程(实时 C++) |
| 标记 | [工业必修] |
科研脉络: - ETH RSL legged_control 开源栈(基于 ROS1 ros_control 框架,非 ros2_control) - OCS2 + HierarchicalWbc + LinearKalmanFilter 三模块集成
教学目标: - 精读 legged_control 的完整代码结构 - 理解 MPC → WBC → 硬件驱动 的数据流 - 能在此基础上修改/扩展控制器 - 注意:legged_control 使用 ROS1 (ros_control) 框架,迁移到 ROS2 需适配 ros2_control 接口
核心知识点: 1. 代码架构:legged_controllers / legged_estimation / legged_wbc 2. MPC 模块:OCS2 legged_robot 封装 + ROS1 接口(非 ros2_control) 3. WBC 模块:HierarchicalWbc(~300 行,教学友好) 4. 状态估计模块:LinearKalmanFilter 5. FSM(有限状态机):站立 / 行走 / 恢复 6. ROS1 ros_control 架构:hardware_interface / controller_manager / ControllerBase 生命周期 7. 实时安全:控制循环中的无堆分配实践 8. 调试技巧:PlotJuggler + ROS 话题监控 9. ROS1→ROS2 迁移要点:ros_control → ros2_control 接口差异、lifecycle node、OCS2 ROS2 移植版(legubiao/ocs2_ros2)
前沿连接: - legged_control 是理解足式全栈的最佳入口 - 足式/250_Mini-Legged综合实战 Mini-Legged 在此基础上从零重建
练习: 1. 精读 HierarchicalWbc 源码,标注 QP 组装的每一行对应 足式/90_WBC分层优化与TSID 的哪个知识点 2. 修改 WBC 的任务权重,观察对 trot 步态质量的影响
预估时间:1 周
足式/250_Mini-Legged综合实战 Mini-Legged 综合实战(2568 行)⭐⭐ [进阶选修]
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | 完成 Part I-V 全部章节 |
| 标记 | [进阶选修] |
科研脉络: - 全栈集成工程实践
教学目标: - 从零搭建四足全栈控制器(不依赖 legged_control 的现成代码) - 能独立完成 Pinocchio → WBC → MPC → 状态估计 → 步态管理 → 硬件驱动 的全链路
核心知识点: 1. 系统架构设计:模块划分 + 接口定义 + 通信拓扑 2. Pinocchio 动力学后端:URDF 加载 + FK/ID/碰撞 3. WBC 模块:简化版 TSID QP 组装 4. MPC 模块:简化版 SRBD MPC(可选 OCS2 或自写凸 MPC) 5. 状态估计模块:IMU + 运动学 EKF 6. 步态管理模块:trot/walk FSM 7. 仿真环境:MuJoCo + ROS2 桥接 8. 性能度量:控制频率 / 跟踪精度 / 稳定裕度
前沿连接: - 这是博士研究的实验平台基础 - 可扩展为 RL+MPC 混合系统
练习: 1. 按模块顺序逐步搭建,每完成一个模块写单元测试 2. 最终交付:GitHub 仓库 + 技术报告 + 仿真视频
预估时间:2 周
足式/260_研究方向与博士导引 研究方向与博士导引(1600 行)⭐⭐⭐ [研究必修]
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | Part I-VI 至少完成 80% |
| 标记 | [研究必修] |
科研脉络: - 2024-2026 腿足机器人研究前沿综述
教学目标: - 理解足式控制领域的开放问题 - 能定位自己的研究兴趣在知识图谱中的位置 - 能撰写博士研究计划的初步框架
核心知识点: 1. 开放问题一览:接触隐式 MPC 实时化 / sim-to-real gap / 安全保证 / 全身灵巧操作 2. 研究方向 A:Perceptive Control(感知+控制联合优化) 3. 研究方向 B:RL+MPC 混合范式(安全 + 泛化) 4. 研究方向 C:SLAM + Legged 紧耦合(你的独特赛道) 5. 研究方向 D:可微仿真 + 腿足(梯度穿透物理)→ 足式/275_可微分仿真用于控制 详细展开 6. 研究方向 E:Foundation Models + Locomotion(VLA 延伸) 7. 研究方向 F:全身 MPC / Contact-Implicit MPC(2025 最大范式转变)→ 足式/265_Contact-Implicit_MPC / 足式/270_全身MPC与采样控制 8. 研究方向 G:GPU 加速求解器与实时优化(Primal-Dual iLQR / Fatrop / ci-SCvx) 9. 顶会/期刊定位:ICRA / IROS / RSS / CoRL / T-RO / RA-L 10. 博士申请策略:导师选择 / 研究计划撰写 / 背景差异化
前沿连接: - 与 足式/20_序章下篇_前沿与学习路径 序章下篇的前沿讨论互补 - 复合方向(复合/10_复合机器人全景-100)是足式的自然延伸
练习: 1. 选择一个研究方向,精读 3 篇 2024-2025 年的代表论文,撰写 1 页研究构想 2. 画出你的知识图谱:标注已掌握/待补充/感兴趣的节点
预估时间:1 周
学习路径建议
按背景分
| 背景 | 建议路径 | 预估时间 | 重点章节 |
|---|---|---|---|
| 本科生(有 C++ 基础) | 先补 02_C++基础 → 路径 A | 10+16 = 26 周 | 足式/30/50/60/90/110/240/270(规划) |
| SLAM 硕士/工程师 | 直接路径 B | 39 周 | 全部;足式/130_腿足状态估计 是你的独特优势 |
| RL 研究者 | 路径 C → 按需补 MPC/275 | 13+8 = 21 周 | 足式/190-210 为起点,回补 足式/90_WBC分层优化与TSID + 足式/275_可微分仿真用于控制 |
| 机械臂工程师 | 跳过 Part I(Pinocchio 已熟)→ 路径 A | 12 周 | 足式/70/90/110/240/270 |
| 博士生(足式方向) | 路径 B + 足式/260_研究方向与博士导引 深入 | 39+ 周 | 全部 + 论文精读(特别关注 265/270/275 前沿三章) |
按目标分
| 目标 | 必修章节 | 可跳过 | 特别重视 |
|---|---|---|---|
| 工业部署 | 足式/30-50/60/90/110/170/180/200/240 + 270(规划) | 足式/40/80/100/150/160/220/260/265/275 | legged_control 精读(足式/240) + 全身MPC(足式/270, 规划) |
| 博士预备 | 现有 24 章 + 规划 3 章 | 无 | 足式/265/270/275 规划三章 + 足式/210/260 + 论文精读 |
| RL 专攻 | 足式/30/70/90/190/200/210/250 + 270(规划) + 275(规划) | 足式/40/100/120/140/150/160/265 | IsaacLab 训练(足式/190) + 全身MPPI(足式/270, 规划) + 可微仿真(足式/275, 规划) |
| 感知+控制 | 足式/30/50/90/110/130/150/160/220/230 + 270(规划) | 足式/40/120/190/200 | Perceptive MPC(足式/230) + 全身MPC(足式/270, 规划) |
与其他子方向交叉引用地图
足式 <-> 机械臂
| 足式章节 | 机械臂章节 | 关联内容 |
|---|---|---|
| 足式/30_Pinocchio深度精读 Pinocchio 浮动基座 | M01 Pinocchio 固定基座 | 同一库,浮动基座是固定基座的超集 |
| 足式/50_空间向量与浮动基座动力学 空间向量代数 | M02 动力学库对比 | Featherstone 算法是两者共同的理论基础 |
| 足式/90_WBC分层优化与TSID WBC/TSID | F02-F04 操作空间动力学/力控 | 零空间投影框架共享,WBC 是 OSC 在浮动基座的推广 |
| 足式/110_OCS2完整栈与双线程MPC OCS2 MPC | M08 轨迹优化规划器 | OCS2 框架可跑机械臂也可跑腿足 |
| 足式/170_实时CPP工程 实时 C++ | M11 实时 C++ | 同一章节内容共享,应用场景不同 |
| 足式/200_RL的CPP部署 RL C++ 部署 | M12 ros2_control + RL | LibTorch/ONNX 部署管线共享 |
足式 <-> 复合
| 足式章节 | 复合章节 | 关联内容 |
|---|---|---|
| 足式/90_WBC分层优化与TSID WBC | 复合/170_qm_control精读 qm_control/Deep WBC/Visual WBC | WBC 扩展到腿+臂多接触 |
| 足式/110_OCS2完整栈与双线程MPC OCS2 MPC | 复合/30_多模态MPC 多模态 MPC / 复合/70_轮足混合MPC 轮足 MPC | OCS2 统一框架跨本体复用 |
| 足式/190_腿足RL训练栈 RL 训练 | 复合/40_RL全身控制基础 RL 全身控制 / 复合/80_Wheel_Legged_Gym_RL 轮足 RL | PPO/SAC 训练管线共享 |
| 足式/210_RL与MPC混合范式 RL+MPC 混合 | 复合/210_RAMBO混合MPC_RL RAMBO 混合 MPC/RL | 混合范式设计模式共享 |
足式 <-> SLAM
| 足式章节 | SLAM v8 章节 | 关联内容 |
|---|---|---|
| 足式/130_腿足状态估计 腿足状态估计 | Ch25-26 VIO/滤波 | InEKF 与 VIO 滤波方法同源 |
| 足式/220_腿足感知数据结构 感知数据结构 | Ch33 点云处理 | 高程图/costmap 与点云处理共享数据结构 |
| 足式/230_Perceptive_MPC Perceptive MPC | Ch38-40 建图 | 地形感知 MPC 需要局部地图输入 |
足式 <-> 数学
| 足式章节 | 数学章节 | 关联内容 |
|---|---|---|
| 足式/50_空间向量与浮动基座动力学 空间向量代数 | 李群/李代数 | SE(3) 运算是所有算法的数学基础 |
| 足式/60_QP_NLP建模 QP/NLP | 凸优化 | WBC/MPC 的 QP 求解依赖凸优化理论 |
| 足式/100_DDP家族与Crocoddyl DDP/Crocoddyl | 最优控制 | Bellman 方程/Pontryagin 原理是 DDP 理论根基 |
足式 <-> 仿真
| 足式章节 | 仿真章节 | 关联内容 |
|---|---|---|
| 足式/190_腿足RL训练栈 RL 训练栈 | S03 GPU 生态 | IsaacLab/MuJoCo Playground 是 RL 训练的仿真后端 |
| 足式/80_接触力学与约束优化 接触力学 | S01 MuJoCo 核心引擎 | MuJoCo 接触模型是 足式/80_接触力学与约束优化 理论的工程实现 |
| 足式/210_RL与MPC混合范式 RL+MPC 混合 | S05 可微分 MPC | 可微仿真 + MPC 是混合范式的前沿 |
| 足式/275_可微分仿真用于控制 可微分仿真 | S04 可微分仿真 / S05 可微分 MPC | DiffSim2Real/AHAC/DiffMJX 是 S04 理论在足式控制的应用 |
| 足式/270_全身MPC与采样控制 全身 MPC | S01 MuJoCo 核心引擎 | MJPC/全身 iLQR 直接使用 MuJoCo 有限差分导数 |
附录
附录 A:已知缺失话题与未来扩展点
| 话题 | 缺失原因 | 扩展建议 |
|---|---|---|
| 人形全身 MPC | 属于复合方向(复合/220_经典人形全身控制) | 足式完成后进入复合方向 |
| VLA + Locomotion | 2025+ 新兴方向,尚不成熟 | 足式/260_研究方向与博士导引 中作为前沿方向讨论 |
| GPU 加速 MPC 求解器 | 足式/100 和 足式/270 提及但无专章 | 可合并入 足式/100 附录或 足式/270 扩展 |
| 多足协作 | 超出单体控制范围 | 复合方向 复合/280_多机协作LocoMani 覆盖 |
| 腿足 SLAM 紧耦合 | 需要 SLAM + 足式双背景 | 博士研究的独特赛道 |
| 液压驱动足式 | 工业小众 | 补充材料可扩展 |
| 柔性关节建模 | 足式/50_空间向量与浮动基座动力学 简略提及 | 可扩展为独立节 |
附录 B:推荐论文精读清单
经典必读(按时间排序)
| 序号 | 论文 | 年份 | 关联章节 | 难度 |
|---|---|---|---|---|
| 1 | Featherstone, "Rigid Body Dynamics Algorithms" | 2008 | 足式/50_空间向量与浮动基座动力学 | ⭐⭐ |
| 2 | Raibert, "Legged Robots That Balance" | 1986 | 足式/70/140 | ⭐ |
| 3 | Kajita et al., "LIPM + ZMP Biped Walking" | 2001 | 足式/70_腿足简化模型理论 | ⭐⭐ |
| 4 | Pratt et al., "Capture Point" | 2006 | 足式/70/140 | ⭐⭐ |
| 5 | Sentis & Khatib, "Whole-Body Behaviors" | 2005 | 足式/90_WBC分层优化与TSID | ⭐⭐⭐ |
| 6 | Carpentier et al., "The Pinocchio C++ Library" | 2019 | 足式/30_Pinocchio深度精读 | ⭐⭐ |
当代核心(2018-2023)
| 序号 | 论文 | 年份 | 关联章节 | 难度 |
|---|---|---|---|---|
| 7 | Di Carlo et al., "MIT Cheetah Convex MPC" | 2018 | 足式/70/110 | ⭐⭐ |
| 8 | Kim et al., "Highly Dynamic Quadruped via WBIC" | 2019 | 足式/90_WBC分层优化与TSID | ⭐⭐⭐ |
| 9 | Hwangbo et al., "ANYmal RL Locomotion" | 2019 | 足式/190_腿足RL训练栈 | ⭐⭐ |
| 10 | Mastalli et al., "Crocoddyl: DDP for Multi-Contact" | 2020 | 足式/100_DDP家族与Crocoddyl | ⭐⭐⭐ |
| 11 | Hartley et al., "InEKF for Legged Robots" | 2020 | 足式/130_腿足状态估计 | ⭐⭐⭐ |
| 12 | Rudin et al., "legged_gym + rsl_rl" | 2022 | 足式/190_腿足RL训练栈 | ⭐⭐ |
| 13 | Miki et al., "Perceptive RL Locomotion" | 2022 | 足式/160_感知驱动落脚规划 | ⭐⭐⭐ |
| 14 | Grandia et al., "Perceptive Locomotion NL-MPC" (T-RO 2023) | 2023 | 足式/230_Perceptive_MPC | ⭐⭐⭐⭐ |
前沿追踪(2024-2026,按推荐阅读顺序)
筛选标准:T-RO/IJRR/RSS/Science Robotics 级别期刊优先,高引用优先,Best Paper 标★。 截至 2026-05 调研记录,录用状态以正式出版信息为准。
| 序号 | 论文 | 录用 | 关联章节 | 难度 |
|---|---|---|---|---|
| 15 | Grandia et al., "Perceptive NMPC" | T-RO 2023 | 足式/230_Perceptive_MPC | ⭐⭐⭐⭐ |
| 16 | Jenelten et al., "DTC" | Science Robotics 2024 | 足式/210/230 | ⭐⭐⭐⭐ |
| 17 | Le Cleac'h et al., "FastCI-MPC" arXiv: 2107.05616 | T-RO 2024 | 足式/265 | ⭐⭐⭐⭐ |
| 18 | He et al., "ABS" arXiv: 2401.17583 | RSS 2024 | 足式/210 | ⭐⭐⭐ |
| 19 | Li et al., "Cafe-MPC" arXiv: 2403.03995 | T-RO 2025 | 足式/270 | ⭐⭐⭐⭐ |
| 20 | Le Lidec et al., "ContactSurvey" arXiv: 2304.06372 | T-RO 2024 | 足式/80 | ⭐⭐⭐ |
| 21 | Aydinoglu et al., "C3" arXiv: 2304.11259 | T-RO 2024 | 足式/265 | ⭐⭐⭐⭐ |
| 22 | Jallet et al., "ProxDDP" | T-RO 2025 | 足式/100 | ⭐⭐⭐⭐ |
| 23 | ★ Pang et al., "GlobalSmooth" arXiv: 2206.10787 | T-RO 2023 Best Paper HM | 足式/80 | ⭐⭐⭐⭐ |
| 24 | ★ Suh et al., "CTR" arXiv: 2505.02291 | IJRR 2025 Best Paper | 足式/265 | ⭐⭐⭐⭐ |
| 25 | Jin et al., "CompFree" arXiv: 2408.07855 | RSS 2025 | 足式/80 | ⭐⭐⭐ |
| 26 | Kim et al., "CI-MPC-KAIST" arXiv: 2312.08961 | IJRR 2024 | 足式/265 | ⭐⭐⭐⭐ |
| 27 | Manchester & Kuindersma, "IDTO" arXiv: 2309.01813 | IJRR 2026 | 足式/265 | ⭐⭐⭐⭐ |
| 28 | Xue et al., "DIAL-MPC" arXiv: 2409.15610 | CoRL 2024 WS | 足式/270 | ⭐⭐⭐ |
| 29 | Alvarez-Padilla et al., "WB-MPPI" arXiv: 2409.10469 | ICRA 2025 | 足式/270 | ⭐⭐⭐ |
| 30 | Gaertner et al., "CollisionFreeMPC" arXiv: 2103.13987 | ICRA 2021 | 足式/110/230 | ⭐⭐⭐ |
| 31 | Amatucci et al., "PD-iLQR-GPU" arXiv: 2506.07823 | RA-L 2026 | 足式/100 | ⭐⭐⭐ |
| 32 | Cheng et al., "RAMBO" arXiv: 2504.06662 | RA-L 2025 | 足式/210 | ⭐⭐⭐ |
| 33 | Zhang et al., "STOCS" arXiv: 2407.16976 | T-RO 2025 | 足式/265 | ⭐⭐⭐⭐ |
| 34 | Dong et al., "MARG" arXiv: 2509.20036 | T-RO 2025 | 足式/230 | ⭐⭐⭐ |
附录 C:开源项目索引
| 项目 | 组织 | 语言 | 主要用途 | 关联章节 |
|---|---|---|---|---|
| pinocchio | stack-of-tasks (INRIA) | C++/Python | 刚体动力学 | 足式/30_Pinocchio深度精读 全栈 |
| OCS2 | ETH RSL | C++ | MPC 框架 | 足式/110_OCS2完整栈与双线程MPC |
| Crocoddyl | LAAS-CNRS | C++/Python | DDP/iLQR 轨迹优化 | 足式/100_DDP家族与Crocoddyl |
| Aligator | LAAS-CNRS | C++/Python | ProxDDP 新一代轨迹优化 | 足式/100_DDP家族与Crocoddyl |
| TSID | Pinocchio 生态 | C++/Python | 全身控制 | 足式/90_WBC分层优化与TSID |
| ProxQP/ProxSuite | Simple-Robotics | C++ | QP 求解器 | 足式/60_QP_NLP建模 |
| OSQP | -- | C | QP 求解器 | 足式/60_QP_NLP建模 |
| Ipopt | COIN-OR | C++ | NLP 求解器 | 足式/60_QP_NLP建模 |
| HPIPM | Gianluca Frison | C | 结构化 QP | 足式/110_OCS2完整栈与双线程MPC |
| CasADi | -- | C++/Python | 符号化 NLP 建模 | 足式/60_QP_NLP建模 |
| acados | -- | C/Python | 嵌入式 MPC SQP/RTI | 足式/60_QP_NLP建模 |
| IsaacLab | NVIDIA | Python | GPU RL 训练平台 | 足式/190_腿足RL训练栈 |
| MuJoCo | Google DeepMind | C | 物理仿真器 | 足式/190_腿足RL训练栈 |
| MuJoCo Playground | Google DeepMind | Python(JAX) | GPU RL 训练 | 足式/190_腿足RL训练栈 |
| rsl_rl | ETH RSL | Python | RL 训练库 | 足式/190_腿足RL训练栈 |
| legged_gym | ETH RSL | Python | RL 训练环境 | 足式/190_腿足RL训练栈 |
| legged_control | ETH RSL | C++ | 四足全栈控制 | 足式/240_legged_control精读 |
| rl_sar | 社区 | C++/Python | RL sim-to-real 部署 | 足式/200_RL的CPP部署 |
| TOWR | ETH RSL | C++ | 离线轨迹+落脚优化 | 足式/150_优化驱动落脚与接触规划 |
| grid_map | ANYbotics | C++ | 高程图库 | 足式/220_腿足感知数据结构 |
| CppAD | -- | C++ | 自动微分 | 足式/40_CppAD与代码生成 |
| MJPC | Google DeepMind | C++ | 全身 MPC 框架 | 足式/270_全身MPC与采样控制 |
| Fatrop | KU Leuven | C++ | 结构化 IP 全身 MPC | 足式/270_全身MPC与采样控制 |
| RoMoCo | -- | C++ | 统一简化模型工具箱 | 足式/70_腿足简化模型理论 |
| RTWholeBodyMPPI | -- | Python | 全身 MPPI | 足式/270_全身MPC与采样控制 |
| DIAL-MPC | LeCAR-Lab | Python(JAX) | 扩散退火全阶 MPC | 足式/270_全身MPC与采样控制 |
| RAPTOR | CMU | C++ | 人形 MPC(驱动关节优化) | 足式/270_全身MPC与采样控制 |
| IDTO | TRI | C++ | 逆动力学接触隐式 TO | 足式/265_Contact-Implicit_MPC |
| MJX/Brax | Google DeepMind | JAX | 可微分仿真 | 足式/275_可微分仿真用于控制 |
| OCELOT | -- | C++/ROS2 | 无力传感器状态估计 | 足式/130_腿足状态估计 |
累积项目:Mini-Legged 全栈控制器
贯穿 Part I-VI 的持续项目,每完成一个 Part 新增一个模块:
| Part | 新增模块 | 累积能力 |
|---|---|---|
| Part I | Pinocchio 后端 + QP 求解器 | 加载 URDF,计算动力学,组装/求解 QP |
| Part II | WBC + 简化模型 MPC + 步态 FSM | 仿真中四足站立→行走 |
| Part II-B | CI-MPC + 全身 MPC + 可微仿真 | 对比分层 vs 单层 MPC,掌握前沿方法 |
| Part III | 状态估计器 + 落脚规划 | 闭环运行不依赖真值 |
| Part IV | 实时化 + 硬件接口 | 可部署到真机 |
| Part V | RL policy 集成 | 可选 RL 替代/辅助 MPC |
| Part VI | 感知管线 + 全栈调试 | 完整系统 + 可展示 |
最终交付:GitHub 仓库 + 技术报告 + 仿真/真机视频
本大纲是导航工具,不是教学内容。 每章的完整教学内容在对应的
XX_*.md文件中(如30_Pinocchio深度精读.md)。 足式/10_序章上篇_全景与四分法/足式/20_序章下篇_前沿与学习路径 提供"为什么学足式",本大纲提供"怎么学、学什么、依赖什么"。