本文档属于 Robotics Tutorial 项目,作者:Pengfei Guo,达妙科技。采用 CC BY 4.0 协议,转载请注明出处。
足式方向综合教学大纲¶
版本: v1.0 | 日期: 2026-05-07 定位: 面向完成 C++ 主线 v8 的 SLAM/机器人工程师,系统掌握足式机器人运动控制全栈 数据基础: 27 个教学文件(序章 2 + 正文 24 + 大纲 1),约 42,000 行;覆盖动力学基础设施→腿足控制核心→状态估计与感知→RL 与混合范式→综合实战 总投入: 序章 2 章(通读)+ 正文 24 章 ~29 周;可按 Part 独立选修
快速路径(Quick-Start Tracks)¶
不是每个人都需要 29 周完整课程。以下三条路径面向最常见的职业目标:
路径 A:工业工程师路径(~14 周)¶
目标:在 MuJoCo/IsaacLab 中部署四足 MPC+WBC 控制器,训练并导出 RL locomotion policy。
Ch47(Pinocchio浮动基座, 1.5周) → Ch49(空间向量代数, 2周) → Ch50(QP/NLP, 1.5周)
→ Ch51(简化模型, 1.5周) → Ch53(WBC/TSID, 2周) → Ch55(OCS2 MPC, 2周)
→ Ch63(RL训练栈, 1.5周) → Ch68(legged_control精读, 1.5周)
总计 ~14 周
里程碑: - 第 5 周:能用 Pinocchio 加载四足 URDF 并计算浮动基座正/逆动力学 - 第 9 周:能组装 WBC QP 并在仿真中实现四足站立平衡 - 第 12 周:能部署 OCS2 MPC + WBC 实现 trot 步态 - 第 14 周:能训练 RL policy 并用 legged_control 架构跑通全栈
路径 B:全栈博士路径(~29 周)¶
目标:完整掌握优化/学习/感知三大范式,具备博士研究入门能力。
全部 24 章按顺序学习。
Part I (3周) → Part II (8周) → Part III (5周) → Part IV (3周)
→ Part V (5周) → Part VI (5周)
总计 ~29 周
里程碑: - 第 3 周:Pinocchio + QP 基础设施就绪 - 第 11 周:MPC + WBC + 步态管理全链路打通 - 第 16 周:状态估计 + 落脚点规划闭环 - 第 19 周:实时工程 + 硬件栈认知完成 - 第 24 周:RL 训练/部署/混合范式掌握 - 第 29 周:Mini-Legged 综合实战 + 研究方向选定
路径 C:RL 特化路径(~12 周)¶
目标:专攻端到端 RL locomotion,快速具备 sim-to-real 能力。
Ch47(Pinocchio基础, 1周) → Ch51(简化模型速览, 1周) → Ch53(WBC概念, 1周)
→ Ch63(RL训练栈, 2周) → Ch64(RL C++部署, 1.5周) → Ch65(RL+MPC混合, 1.5周)
→ Ch66(感知数据结构, 1周) → Ch62(硬件栈, 1周) → Ch69(综合实战, 2周)
总计 ~12 周
里程碑: - 第 3 周:理解简化模型与 WBC 概念,知道 RL 要替代什么 - 第 6 周:能在 IsaacLab 训练四足 locomotion policy - 第 9 周:能将 RL policy 导出为 C++ 推理并理解混合范式 - 第 12 周:能在仿真中完成感知驱动的 locomotion 全栈
计算与硬件需求表¶
| 章节范围 | GPU | 真机 | 最低配置 | 推荐配置 | 备注 |
|---|---|---|---|---|---|
| Part I Ch47-50 | 不需要 | 不需要 | 8GB RAM, 4核 | 16GB RAM | Pinocchio+Eigen 纯 CPU |
| Part II Ch51-52 | 不需要 | 不需要 | 8GB RAM | 16GB RAM | 理论推导+仿真验证 |
| Part II Ch53-55 | 不需要 | 推荐四足 | 16GB RAM | 32GB + Go2 | OCS2 实时 MPC 推荐真机 |
| Part II Ch56 | 不需要 | 推荐 | 16GB RAM | 32GB + Go2 | 步态在真机验证最直观 |
| Part III Ch57-58 | 不需要 | 推荐 | 16GB RAM | 32GB + Go2 | 状态估计需真机传感器 |
| Part III Ch59-60 | 推荐 | 推荐 | RTX 3060 | RTX 4090 + Go2 | CNN 落脚需 GPU |
| Part IV Ch61-62 | 不需要 | 强烈推荐 | PREEMPT_RT 内核 | Go2 + Jetson Orin | 实时+硬件章节 |
| Part V Ch63-65 | 需要(GPU 并行) | 不需要 | RTX 3060 | RTX 4090 | IsaacLab/MJX 训练 |
| Part VI Ch66-67 | 推荐 | 推荐 | RTX 3060 | RTX 4090 + Go2 | 高程图+Perceptive MPC |
| Part VI Ch68-69 | 推荐 | 强烈推荐 | RTX 3060 | RTX 4090 + Go2 | 全栈部署 |
| Part VI Ch70 | 不需要 | 不需要 | -- | -- | 研究方向导引 |
最低可行配置(覆盖全部仿真训练):RTX 4090 24GB + 32GB 系统内存 + Ubuntu 22.04 PREEMPT_RT
工业级配置(含真机部署):上述 + Unitree Go2 四足 + Jetson Orin(部署端)
工业 vs 研究标记¶
| 标记 | 含义 | 代表章节 |
|---|---|---|
| [工业必修] | 工程落地核心能力 | Ch47, Ch49, Ch50, Ch53, Ch55, Ch61, Ch62, Ch64, Ch68 |
| [研究必修] | 博士/研究方向核心 | Ch52, Ch54, Ch59, Ch60, Ch65, Ch67, Ch70 |
| [进阶选修] | 按需深入 | Ch48, Ch56, Ch58, Ch63, Ch66, Ch69 |
标记使用说明: - 工业导向学习者可跳过所有 [研究必修] 章节,节约约 35% 时间 - 博士预备者应全部完成,特别重视 [研究必修] 章节的论文精读部分 - [进阶选修] 章节中 Ch63(RL 训练栈)对 RL 方向学习者为必修
总览路线图¶
v8 主线完成(Ch1-46, 第 1-48 周)
│ C++17 · Eigen · 并发 · SLAM 优化 · ROS2 · CMake/CUDA
▼
┌─────────────────────────────────────────────────────────────────┐
│ 序章: 全景导论 (C00-C01, 2章, 通读性质) │
│ C00 全景与四分法 — 规控本体四分法+基础设施共享+腿足定位 │
│ C01 前沿与学习路径 — 自驾特殊地位+VLA/DiffSim/WorldModel+路径 │
└─────────────────────────┬───────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ Part I: 动力学基础设施 (Ch47-50, 4章 ~3周) │
│ Ch47 Pinocchio深度精读 [工业必修] │
│ Ch48 CppAD与CppADCodeGen [进阶选修] │
│ Ch49 空间向量代数与浮动基座动力学 [工业必修] │
│ Ch50 QP/NLP建模 [工业必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part II: 腿足控制核心 (Ch51-56, 6章 ~8周) │
│ Ch51 腿足简化模型理论 [工业必修] │
│ Ch52 接触力学与约束优化 [研究必修] │
│ Ch53 WBC分层优化与TSID [工业必修] │
│ Ch54 DDP家族与Crocoddyl [研究必修] │
│ Ch55 OCS2完整栈与双线程MPC [工业必修] │
│ Ch56 步态管理与接触序列 [进阶选修] │
├─────────────────────────────────────────────────────────────────┤
│ Part III: 状态估计与感知 (Ch57-60, 4章 ~5周) │
│ Ch57 腿足状态估计 [工业必修] │
│ Ch58 落脚点规划经典方法 [进阶选修] │
│ Ch59 优化驱动的落脚与接触规划 [研究必修] │
│ Ch60 感知驱动的落脚规划 [研究必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part IV: 实时工程与硬件 (Ch61-62, 2章 ~3周) │
│ Ch61 实时C++工程 [工业必修] │
│ Ch62 腿足硬件栈 [工业必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part V: RL与混合范式 (Ch63-65, 3章 ~5周) │
│ Ch63 腿足RL训练栈 [进阶选修/RL方向必修] │
│ Ch64 RL的C++部署 [工业必修] │
│ Ch65 RL与MPC混合范式 [研究必修] │
├─────────────────────────────────────────────────────────────────┤
│ Part VI: 感知控制综合与实战 (Ch66-70, 5章 ~5周) │
│ Ch66 腿足感知数据结构 [进阶选修] │
│ Ch67 Perceptive MPC [研究必修] │
│ Ch68 legged_control精读 [工业必修] │
│ Ch69 Mini-Legged综合实战 [进阶选修] │
│ Ch70 研究方向与博士导引 [研究必修] │
└─────────────────────────────────────────────────────────────────┘
章节依赖关系图¶
C00/C01 (序章, 可随时回看)
│
▼
Ch47 Pinocchio ──→ Ch48 CppAD [可延迟]
│ │
▼ ▼
Ch49 空间向量 ←────── Ch48 (AD导数验证)
│
▼
Ch50 QP/NLP
│
├──────────────────┬──────────────────┐
▼ ▼ ▼
Ch51 简化模型 Ch52 接触力学 Ch53 WBC/TSID
│ │ │
│ ▼ │
│ Ch54 DDP/Crocoddyl ←───┘
│ │
▼ ▼
Ch56 步态管理 ←── Ch55 OCS2 MPC ←── Ch54
│ │
▼ ▼
Ch58 落脚点经典 Ch57 状态估计
│ │
▼ │
Ch59 优化落脚 ←────────┘
│
▼
Ch60 感知驱动落脚
│
├──────────────────┐
▼ ▼
Ch61 实时C++ Ch62 硬件栈
│ │
▼ ▼
Ch63 RL训练栈 Ch66 感知数据结构
│ │
▼ ▼
Ch64 RL C++部署 Ch67 Perceptive MPC
│ │
▼ │
Ch65 RL+MPC混合 ───────┤
│ │
▼ ▼
Ch68 legged_control精读
│
▼
Ch69 Mini-Legged综合实战
│
▼
Ch70 研究方向与博士导引
前置知识依赖矩阵¶
| 本大纲章节 | 依赖 v8 章节 | 关键知识点 |
|---|---|---|
| Ch47 Pinocchio | v8 Ch11(Eigen 高级), Ch14(CRTP), Ch23(李群 manif) | Eigen Map/Block, CRTP 静态多态, SE(3) 流形运算 |
| Ch48 CppAD | v8 Ch24(Ceres 自动微分), Ch14(CRTP) | 前向/反向 AD, Jet 类型, 表达式模板 |
| Ch49 空间向量 | v8 Ch11(Eigen), Ch23(李群) | 旋转/变换矩阵, Plucker 坐标, 递归算法 |
| Ch50 QP/NLP | v8 Ch11(Eigen), Ch24(Ceres) | 凸优化基础, KKT 条件, 稀疏矩阵 |
| Ch51-52 简化模型/接触力学 | v8 Ch23(李群), Ch11(Eigen) | 质心动力学, 摩擦锥, LCP/NCP |
| Ch53 WBC | Ch49, Ch50 | RNEA/ABA, QP 求解, 零空间投影 |
| Ch54-55 DDP/OCS2 | Ch50, Ch53 | 最优控制, Riccati 递推, SQP |
| Ch57 状态估计 | v8 Ch25-26(VIO/滤波), Ch23(李群) | EKF/ESKF, InEKF, 因子图 |
| Ch61 实时 C++ | v8 Ch17-20(并发), Ch35(pmr 内存) | SCHED_FIFO, mlockall, 无堆分配 |
| Ch63-64 RL | v8 Ch45-46(CUDA/Docker), PPO/SAC 基础(自学) | GPU 训练, LibTorch/ONNX, sim-to-real |
最小前置:未完成 v8 者至少补 Ch11(Eigen)、Ch14(CRTP)、Ch17(锁)、Ch19-20(并发)、Ch23(李群)、Ch24(自动微分)、Ch35(pmr 内存) 共 7 章。
生态速览(2026-05 更新)¶
| 工具/框架 | 当前版本 | 状态 | 在本大纲中的位置 |
|---|---|---|---|
| Pinocchio | 3.9.0 | 活跃开发 | Ch47 核心精读,贯穿全部章节 |
| OCS2 | v1.0 | 维护模式(ETH RSL 不再积极开发) | Ch55 核心精读,Ch68 架构参考 |
| Crocoddyl | 3.2 | 活跃(重大 API 重构,不向后兼容) | Ch54 核心精读 |
| Aligator/ProxDDP | T-RO 2025 | 新项目推荐(Crocoddyl 后继) | Ch54 延伸,新项目应迁移 |
| TSID | Pinocchio 生态 | 活跃 | Ch53 核心 |
| ProxQP | ProxSuite | 活跃 | Ch50 推荐 QP 后端 |
| OSQP | 0.6.x | 稳定 | Ch50 备选 QP |
| Ipopt | 3.14+ | 稳定 | Ch50 NLP 核心 |
| IsaacLab | 3.0 (Newton) | 活跃(Newton 后端 = MuJoCo Warp) | Ch63 RL 训练主平台 |
| MuJoCo | 3.7.0 | 活跃(MJX GPU 成熟) | Ch63 仿真后端 |
| MuJoCo Playground | v0.2.0 | RSS 2025 Outstanding Demo | Ch63 RL 训练参考平台 |
| rsl_rl | ETH RSL | 活跃 | Ch63 RL 训练库 |
| legged_control | ETH RSL | 维护模式 | Ch68 精读,架构参考 |
| rl_sar | 社区 | 活跃 | Ch64 RL 部署参考 |
| CppAD | 20240000+ | 稳定 | Ch48 精读 |
| CppADCodeGen | -- | 稳定 | Ch48 精读 |
关键生态事件(2025-2026): - OCS2 进入维护模式:存量代码巨大,教学价值不减,但新项目应考虑 Aligator - Crocoddyl 3.2 重大 API 重构:Ch54 以 3.2 API 为准 - IsaacLab 3.0 Newton 后端实质运行 MuJoCo Warp:打破 IsaacLab=PhysX 的绑定 - MuJoCo Playground 获 RSS 2025 Outstanding Demo:MuJoCo GPU RL 训练栈生产就绪
Per-Part 章节详情¶
Part I:动力学基础设施(第 49-51 周,~3 周)¶
完成本 Part 后你能做什么:用 Pinocchio 加载任意浮动基座 URDF,计算 FK/ID/FD 及其解析导数;用 CppAD 做自动微分验证;用 ProxQP/Ipopt 组装和求解 QP/NLP。这是后续所有章节的计算基础。
Ch47 Pinocchio 深度精读(1038 行)⭐ [工业必修]¶
精读 Pinocchio 3.x 在浮动基座场景下的架构与算法,掌握 CRTP 访问者模式、标量参数化与 Lie 群抽象。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | v8 Ch11(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 周
Ch48 CppAD 与 CppADCodeGen(1443 行)⭐⭐ [进阶选修,可延迟]¶
掌握 CppAD 前向/反向模式 AD 与 CppADCodeGen 的编译期代码生成,为 MPC/优化提供高效梯度。
| 属性 | 值 |
|---|---|
| 周数 | 1 周(可延迟至 Ch54/55 前补) |
| 前置依赖 | Ch47, v8 Ch24(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 周
Ch49 空间向量代数与浮动基座动力学(1984 行)⭐ [工业必修]¶
从 Featherstone 空间向量代数出发,完整推导浮动基座多体动力学方程,掌握 RNEA/ABA/CRBA 的 O(n) 递推算法。
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | Ch47, v8 Ch23(李群) |
| 标记 | [工业必修] |
科研脉络: - 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\) 矩阵的含义
前沿连接: - SRBD(单刚体动力学) 是质心动力学的最简化版本——Ch51 将详细推导 - WBC 的 QP 直接以此方程为等式约束——Ch53 核心
练习:
1. 手推 2-link 浮动基座臂的 \(M, h\) 并与 Pinocchio 数值对比
2. 实现一个最简 RNEA(不用 Pinocchio),验证与 pinocchio::rnea() 结果一致
预估时间:2 周
Ch50 QP/NLP 建模(1727 行)⭐ [工业必修]¶
掌握凸 QP 与非线性 NLP 的建模范式和求解器工程,为 WBC/MPC 提供优化基础设施。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | v8 Ch11(Eigen 稀疏), v8 Ch24(优化基础) |
| 标记 | [工业必修] |
科研脉络: - 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. 求解器选型决策树:问题规模 × 稀疏性 × 实时性
前沿连接: - ProxQP 是 Pinocchio 生态推荐的 WBC QP 后端 - HPIPM 是 OCS2 的 MPC QP 后端
练习: 1. 组装一个四足站立的力分配 QP(12 个接触力变量 + 摩擦锥约束),用三大求解器分别求解并对比耗时 2. 用 CasADi + Ipopt 求解一个简化的 2D 跳跃轨迹优化
预估时间:1.5 周
Part II:腿足控制核心(第 52-59 周,~8 周)¶
完成本 Part 后你能做什么:理解 LIPM/SRBD 简化模型理论,掌握摩擦锥/互补约束接触力学,能组装 WBC QP 和 OCS2 MPC,理解步态管理与接触序列调度。这是足式控制的数学核心。
Ch51 腿足简化模型理论(1602 行)⭐ [工业必修]¶
从 LIPM 到 SLIP 到质心动力学,建立足式机器人的简化建模体系。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch49(浮动基座动力学), Ch50(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. 四种模型的精度-速度对比表
前沿连接: - SRBD 是 MIT Cheetah 凸 MPC 的核心假设 - 全身 MPC(Aligator/OCS2)不再做 SRBD 假设,但计算量更大
练习: 1. 推导 SRBD 的连续时间状态空间方程 \(\dot{x} = Ax + Bu\),写出 \(A, B\) 矩阵 2. 对比 LIPM 和 SRBD 在四足 trot 步态下的质心轨迹预测误差
预估时间:1.5 周
Ch52 接触力学与约束优化(1756 行)⭐⭐ [研究必修]¶
从 Coulomb 摩擦到互补约束,建立接触力学的完整数学框架。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch50(QP/NLP), Ch51(简化模型) |
| 标记 | [研究必修] |
科研脉络: - 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 函数、对数障碍 7. 事件驱动 vs 时间步进仿真 8. MuJoCo 的软接触模型 vs Drake 的 Hydroelastic 模型
前沿连接: - 接触隐式轨迹优化(Ch59 核心) - 可微仿真中接触梯度的病态性处理
练习: 1. 手推 2D 点接触的 LCP 公式并用 Lemke 算法求解 2. 对比 4 面/8 面摩擦锥近似在四足站立 QP 中的力分配差异
预估时间:1.5 周
Ch53 WBC 分层优化与 TSID(1534 行)⭐ [工业必修]¶
掌握全身控制器(WBC) 的分层 QP 架构与 TSID 框架,实现多任务优先级控制。
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | Ch49(浮动基座动力学), Ch50(QP), Ch52(接触力学) |
| 标记 | [工业必修] |
科研脉络: - 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)
前沿连接: - WBC 是 MPC 的下游执行器:MPC 给出参考轨迹/力,WBC 映射到关节力矩 - RL 范式中 WBC 被神经网络替代——Ch65 讨论这一取舍
练习: 1. 手动组装四足站立 WBC QP(躯体高度跟踪 + 摩擦锥 + 动力学约束),用 ProxQP 求解 2. 用 TSID 配置三优先级任务(平衡 > 躯体姿态 > 正则化),在仿真中验证
预估时间:2 周
Ch54 DDP 家族与 Crocoddyl(1677 行)⭐⭐ [研究必修]¶
从 DDP/iLQR 理论到 Crocoddyl 3.2 实战,掌握基于射击法的轨迹优化。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch50(NLP), Ch53(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 → 新项目推荐 7. 与 MPC 的关系:DDP 作为 MPC 的求解内核 8. 计算效率:7-DOF 臂 ~2ms/iter, 浮动基座 ~5ms/iter
前沿连接: - OCS2 内部用 SQP(非 DDP)但数学思想类似 - 可微仿真 + DDP = 端到端可微 MPC
练习: 1. 手推 1D 双积分器的 DDP 反向传播,写出 \(K, k\) 增益矩阵 2. 用 Crocoddyl 3.2 构建四足跳跃轨迹优化(简化模型),可视化质心轨迹
预估时间:1.5 周
Ch55 OCS2 完整栈与双线程 MPC(1963 行)⭐ [工业必修]¶
精读 OCS2 的 SQP-RTI + HPIPM 实时 MPC 架构,掌握双线程异步 MPC 的工程实现。
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | Ch54(DDP/轨迹优化), Ch53(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 示例配置详解
前沿连接: - Perceptive MPC(Ch67)在 OCS2 基础上加入地形约束 - OCS2 进入维护模式——新项目迁移 Aligator 的路径
练习: 1. 配置 OCS2 legged_robot 示例,在 MuJoCo 中跑 Go2 trot 步态 2. 修改 MPC 时域长度和 QP 迭代次数,分析对跟踪精度和计算延迟的影响
预估时间:2 周
Ch56 步态管理与接触序列(1592 行)⭐⭐ [进阶选修]¶
掌握步态图、接触序列调度与自动步态生成的理论与工程实现。
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | Ch55(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 可以完全绕过手工步态设计——Ch63/65 的替代路线 - 接触序列优化(Ch59)是自动步态生成的数学形式化
练习: 1. 实现一个四足步态管理器,支持 trot/walk/pace 三种步态切换 2. 在 OCS2 中修改步态周期和占空比,观察对 MPC 跟踪质量的影响
预估时间:1 周
Part III:状态估计与感知(第 60-64 周,~5 周)¶
完成本 Part 后你能做什么:实现腿足状态估计器(EKF/InEKF),掌握 Raibert 启发式落脚、优化驱动落脚与感知驱动落脚三种范式。这是连接控制与真实世界的桥梁。
Ch57 腿足状态估计(1446 行)⭐ [工业必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | v8 Ch25-26(VIO/滤波), Ch49(浮动基座), Ch52(接触力学) |
| 标记 | [工业必修] |
科研脉络: - 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 方法同源 - 因子图状态估计是学术前沿方向
练习: 1. 在 legged_control 框架中跑 Go2 状态估计,分析漂移来源 2. 对比 EKF 和 InEKF 在快速步态下的估计精度
预估时间:1.5 周
Ch58 落脚点规划经典方法(1585 行)⭐⭐ [进阶选修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | Ch51(简化模型/DCM), Ch56(步态管理) |
| 标记 | [进阶选修] |
科研脉络: - 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 的局限性:不考虑地形/不考虑多步前瞻
前沿连接: - Ch59 用优化方法替代启发式 - Ch60 用感知方法学习落脚
练习: 1. 实现 Raibert 启发式落脚器,在平地 trot 步态中验证 2. 在有坡度地形上测试 Raibert 公式的失败模式
预估时间:1 周
Ch59 优化驱动的落脚与接触规划(1527 行)⭐⭐⭐ [研究必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch55(OCS2 MPC), Ch58(经典落脚), Ch52(接触力学) |
| 标记 | [研究必修] |
科研脉络: - 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 最活跃的研究方向之一 - GCS 在 MIT Drake 生态中有完整实现
练习: 1. 用 TOWR 优化四足跨越台阶的轨迹,可视化落脚点序列 2. 对比固定步态(手工落脚) 和 TOWR(优化落脚) 在崎岖地形上的通过率
预估时间:1.5 周
Ch60 感知驱动的落脚规划(1529 行)⭐⭐⭐ [研究必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | Ch58(经典落脚), Ch59(优化落脚) |
| 标记 | [研究必修] |
科研脉络: - 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(Ch67)将地形感知融入 MPC 约束 - 感知数据结构(Ch66)是本章的工程基础
练习: 1. 用 grid_map 库构建简单高程图,实现基于平坦度的落脚评分 2. 分析 Miki et al. (2022) 的 teacher-student 架构设计动机
预估时间:1 周
Part IV:实时工程与硬件(第 65-67 周,~3 周)¶
完成本 Part 后你能做什么:掌握 1kHz 硬实时 C++ 编程的完整禁区清单,理解四足硬件栈(电机/传感器/通信/驱动器)。这是从仿真到真机的必经之路。
Ch61 实时 C++ 工程(1876 行)⭐ [工业必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | v8 Ch17-20(并发), v8 Ch35(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 / LockFreeQueue 5. 无锁并发:std::atomic 内存序 / x86 TSO vs ARM 弱序 6. 优先级反转与 PTHREAD_PRIO_INHERIT 7. cyclictest 验证:RT 内核 <50us vs 非 RT >700us 8. 从 SLAM 10Hz 到控制 1kHz 的认知跨越
前沿连接: - OCS2 双线程 MPC(Ch55)的 RT 安全通信直接复用本章知识 - RL 部署(Ch64)的推理热路径也需要 RT 安全
练习: 1. cyclictest 对比 RT vs 非 RT 内核延迟 2. 故意触发 EIGEN_RUNTIME_NO_MALLOC 审计,修复后验证
预估时间:1.5 周
Ch62 腿足硬件栈(1733 行)⭐ [工业必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch61(实时 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 部署(Ch64)需要理解硬件延迟对 sim-to-real gap 的影响
练习: 1. 用 Unitree Go2 SDK(仿真模式)实现单腿 PD 站立 2. 分析 Go2 通信延迟:测量 UDP 往返时间的分布
预估时间:1.5 周
Part V:RL 与混合范式(第 68-72 周,~5 周)¶
完成本 Part 后你能做什么:在 IsaacLab/MuJoCo Playground 训练四足 RL locomotion policy,导出为 C++ 推理模块,理解 RL+MPC 混合范式的设计权衡。
Ch63 腿足 RL 训练栈(1473 行)⭐⭐ [进阶选修 / RL 方向必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | PPO/SAC 基础(自学), v8 Ch45-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. 观测空间设计:本体感知(关节角/速度/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 生态训练方案 - Ch65 的混合范式将 RL 与 MPC 结合
练习: 1. 在 IsaacLab 训练 Go2 trot locomotion,记录训练曲线并分析各 reward 分项 2. 对比有/无 domain randomization 的 sim-to-real 性能差异
预估时间:2 周
Ch64 RL 的 C++ 部署(1315 行)⭐ [工业必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch63(RL 训练), Ch61(实时 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 加速
前沿连接: - Ch65 混合范式中 RL policy 作为 residual controller - Ch69 综合实战中 RL 部署是全栈的一部分
练习: 1. 将训练好的 Go2 policy 导出为 TorchScript,用 LibTorch 在 C++ 中推理并测量延迟 2. 用 ONNX Runtime 做同样的推理,对比 LibTorch 的延迟和便捷性
预估时间:1.5 周
Ch65 RL 与 MPC 混合范式(1224 行)⭐⭐⭐ [研究必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch55(OCS2 MPC), Ch63(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/全知) → 学生仅用本体感知 4. Residual Policy:\(u = u_{MPC} + \pi_{RL}(s)\),RL 补偿 MPC 的模型误差 5. RL 初始化 MPC:用 RL 提供 MPC 的初始猜测/参考轨迹 6. 安全约束:CBF(Control Barrier Function) + RL 的安全层 7. 混合范式选型决策树:安全性要求 × 模型精度 × 计算预算 × 泛化需求 8. 2024-2025 趋势:端到端 RL 在平地场景占优,混合范式在复杂地形/安全关键场景不可替代
前沿连接: - Ch67 Perceptive MPC 是混合范式的前沿实例 - Ch70 博士导引中混合范式是核心研究方向之一
练习: 1. 在仿真中实现 Residual Policy:MPC baseline + RL 补偿,对比纯 MPC 在扰动下的鲁棒性 2. 分析一篇 2024-2025 的混合范式论文,总结其架构设计动机
预估时间:1.5 周
Part VI:感知控制综合与实战(第 73-77 周,~5 周)¶
完成本 Part 后你能做什么:掌握高程图/costmap 感知数据结构,理解 Perceptive MPC 的地形约束融入,精读 legged_control 完整代码栈,从零搭建四足全栈控制器,定位博士研究方向。
Ch66 腿足感知数据结构(1271 行)⭐⭐ [进阶选修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | v8 Ch27-28(PCL/OpenCV), Ch57(状态估计) |
| 标记 | [进阶选修] |
科研脉络: - 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 的观测空间
前沿连接: - Ch67 Perceptive MPC 直接使用高程图作为约束 - Ch60 感知驱动落脚使用 costmap 评分
练习: 1. 用 grid_map 从点云构建高程图并可视化 2. 实现坡度 costmap 层,标注不可通行区域
预估时间:1 周
Ch67 Perceptive MPC(1457 行)⭐⭐⭐ [研究必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | Ch55(OCS2 MPC), Ch60(感知驱动落脚), Ch66(感知数据结构) |
| 标记 | [研究必修] |
科研脉络: - Grandia et al. (2022):Perceptive Locomotion through Nonlinear MPC - Jenelten et al. (2024):DTC (Digital Twin Control) - Agarwal et al. (2023):Learning Perceptive Locomotion
教学目标: - 理解如何将地形信息融入 MPC 约束和代价函数 - 理解 Grandia 2022 的运动学可行性约束设计 - 能在 OCS2 中添加地形约束
核心知识点: 1. 地形约束的形式化:落脚点高度 = 高程图(x, y) 2. 运动学可行性约束:足端可达范围与地形的交集 3. 地形代价:引导落脚到平坦区域 4. 滚动地平线中地形预测的延迟处理 5. Signed Distance Field 在 MPC 碰撞约束中的应用 6. MPC + 高程图的计算管线:感知线程 → 地图更新 → MPC 线程读取 7. DTC(Digital Twin Control):仿真器内嵌 MPC 的新范式
前沿连接: - 与 RL 感知 locomotion 的竞争/互补关系 - Ch70 博士导引中 Perceptive Control 是核心研究方向
练习: 1. 在 OCS2 legged_robot 中添加简化地形约束(台阶场景),验证 MPC 能自适应调整步高 2. 精读 Grandia 2022 论文,总结其运动学可行性约束的数学推导
预估时间:1.5 周
Ch68 legged_control 精读(1713 行)⭐ [工业必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | Ch55(OCS2), Ch53(WBC), Ch57(状态估计), Ch61(实时 C++) |
| 标记 | [工业必修] |
科研脉络: - ETH RSL legged_control 开源栈 - OCS2 + HierarchicalWbc + LinearKalmanFilter 三模块集成
教学目标: - 精读 legged_control 的完整代码结构 - 理解 MPC → WBC → 硬件驱动 的数据流 - 能在此基础上修改/扩展控制器
核心知识点: 1. 代码架构:legged_controllers / legged_estimation / legged_wbc 2. MPC 模块:OCS2 legged_robot 封装 + ROS2 接口 3. WBC 模块:HierarchicalWbc(~300 行,教学友好) 4. 状态估计模块:LinearKalmanFilter 5. FSM(有限状态机):站立 / 行走 / 恢复 6. 参数管理:YAML 配置 + 动态参数 7. 实时安全:控制循环中的无堆分配实践 8. 调试技巧:PlotJuggler + ROS2 话题监控
前沿连接: - legged_control 是理解足式全栈的最佳入口 - Ch69 Mini-Legged 在此基础上从零重建
练习: 1. 精读 HierarchicalWbc 源码,标注 QP 组装的每一行对应 Ch53 的哪个知识点 2. 修改 WBC 的任务权重,观察对 trot 步态质量的影响
预估时间:1 周
Ch69 Mini-Legged 综合实战(2049 行)⭐⭐ [进阶选修]¶
| 属性 | 值 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | 全部 Ch47-68 |
| 标记 | [进阶选修] |
科研脉络: - 全栈集成工程实践
教学目标: - 从零搭建四足全栈控制器(不依赖 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 周
Ch70 研究方向与博士导引(1301 行)⭐⭐⭐ [研究必修]¶
| 属性 | 值 |
|---|---|
| 周数 | 1 周 |
| 前置依赖 | 全部 Ch47-69(至少完成 80%) |
| 标记 | [研究必修] |
科研脉络: - 2024-2026 腿足机器人研究前沿综述
教学目标: - 理解足式控制领域的开放问题 - 能定位自己的研究兴趣在知识图谱中的位置 - 能撰写博士研究计划的初步框架
核心知识点: 1. 开放问题一览:接触隐式 MPC 实时化 / sim-to-real gap / 安全保证 / 全身灵巧操作 2. 研究方向 A:Perceptive Control(感知+控制联合优化) 3. 研究方向 B:RL+MPC 混合范式(安全 + 泛化) 4. 研究方向 C:SLAM + Legged 紧耦合(你的独特赛道) 5. 研究方向 D:可微仿真 + 腿足(梯度穿透物理) 6. 研究方向 E:Foundation Models + Locomotion(VLA 延伸) 7. 顶会/期刊定位:ICRA / IROS / RSS / CoRL / T-RO / RA-L 8. 博士申请策略:导师选择 / 研究计划撰写 / 背景差异化
前沿连接: - 与 C01 序章下篇的前沿讨论互补 - 复合方向(Ch71-100)是足式的自然延伸
练习: 1. 选择一个研究方向,精读 3 篇 2024-2025 年的代表论文,撰写 1 页研究构想 2. 画出你的知识图谱:标注已掌握/待补充/感兴趣的节点
预估时间:1 周
学习路径建议¶
按背景分¶
| 背景 | 建议路径 | 预估时间 | 重点章节 |
|---|---|---|---|
| 本科生(有 C++ 基础) | 先补 v8 Ch1-20 → 路径 A | 10+14 = 24 周 | Ch47/49/53/55/63/68 |
| SLAM 硕士/工程师 | 直接路径 B | 29 周 | 全部;Ch57 是你的独特优势 |
| RL 研究者 | 路径 C → 按需补 MPC | 12+6 = 18 周 | Ch63/64/65 为起点,回补 Ch53/55 |
| 机械臂工程师 | 跳过 Part I(Pinocchio 已熟)→ 路径 A | 10 周 | Ch51/53/55/61/68 |
| 博士生(足式方向) | 路径 B + Ch70 深入 | 29+ 周 | 全部 + 论文精读 |
按目标分¶
| 目标 | 必修章节 | 可跳过 | 特别重视 |
|---|---|---|---|
| 工业部署 | Ch47/49/50/53/55/61/62/64/68 | Ch48/52/54/59/60/67/70 | legged_control 精读(Ch68) |
| 博士预备 | 全部 | 无 | Ch65/67/70 + 论文精读 |
| RL 专攻 | Ch47/51/53/63/64/65/69 | Ch48/52/54/56/58/59 | IsaacLab 训练(Ch63) |
| 感知+控制 | Ch47/49/53/55/57/60/66/67 | Ch48/56/63/64 | Perceptive MPC(Ch67) |
与其他子方向交叉引用地图¶
足式 <-> 机械臂¶
| 足式章节 | 机械臂章节 | 关联内容 |
|---|---|---|
| Ch47 Pinocchio 浮动基座 | M01 Pinocchio 固定基座 | 同一库,浮动基座是固定基座的超集 |
| Ch49 空间向量代数 | M02 动力学库对比 | Featherstone 算法是两者共同的理论基础 |
| Ch53 WBC/TSID | M08 操作空间控制 | 零空间投影框架共享,WBC 是 OSC 在浮动基座的推广 |
| Ch55 OCS2 MPC | M05 轨迹优化 | OCS2 框架可跑机械臂也可跑腿足 |
| Ch61 实时 C++ | M11 实时 C++ | 同一章节内容共享,应用场景不同 |
| Ch64 RL C++ 部署 | M12 ros2_control + RL | LibTorch/ONNX 部署管线共享 |
足式 <-> 复合¶
| 足式章节 | 复合章节 | 关联内容 |
|---|---|---|
| Ch53 WBC | Ch87-89 qm_control/Deep WBC/Visual WBC | WBC 扩展到腿+臂多接触 |
| Ch55 OCS2 MPC | Ch73 多模态 MPC / Ch77 轮足 MPC | OCS2 统一框架跨本体复用 |
| Ch63 RL 训练 | Ch74 RL 全身控制 / Ch78 轮足 RL | PPO/SAC 训练管线共享 |
| Ch65 RL+MPC 混合 | Ch91 RAMBO 混合 MPC/RL | 混合范式设计模式共享 |
足式 <-> SLAM¶
| 足式章节 | SLAM v8 章节 | 关联内容 |
|---|---|---|
| Ch57 腿足状态估计 | Ch25-26 VIO/滤波 | InEKF 与 VIO 滤波方法同源 |
| Ch66 感知数据结构 | Ch33 点云处理 | 高程图/costmap 与点云处理共享数据结构 |
| Ch67 Perceptive MPC | Ch38-40 建图 | 地形感知 MPC 需要局部地图输入 |
足式 <-> 数学¶
| 足式章节 | 数学章节 | 关联内容 |
|---|---|---|
| Ch49 空间向量代数 | 李群/李代数 | SE(3) 运算是所有算法的数学基础 |
| Ch50 QP/NLP | 凸优化 | WBC/MPC 的 QP 求解依赖凸优化理论 |
| Ch54 DDP/Crocoddyl | 最优控制 | Bellman 方程/Pontryagin 原理是 DDP 理论根基 |
足式 <-> 仿真¶
| 足式章节 | 仿真章节 | 关联内容 |
|---|---|---|
| Ch63 RL 训练栈 | S03 GPU 生态 | IsaacLab/MuJoCo Playground 是 RL 训练的仿真后端 |
| Ch52 接触力学 | S01 MuJoCo 核心引擎 | MuJoCo 接触模型是 Ch52 理论的工程实现 |
| Ch65 RL+MPC 混合 | S05 可微分 MPC | 可微仿真 + MPC 是混合范式的前沿 |
附录¶
附录 A:已知缺失话题与未来扩展点¶
| 话题 | 缺失原因 | 扩展建议 |
|---|---|---|
| 人形 WBC 全身控制 | 属于复合方向(Ch92-95) | 足式完成后进入复合方向 |
| 可微仿真 + 腿足 | 仿真方向(S04-S05) 覆盖 | 博士研究可深入 |
| VLA + Locomotion | 2025+ 新兴方向,尚不成熟 | Ch70 中作为前沿方向讨论 |
| 多足协作 | 超出单体控制范围 | 复合方向 Ch98 覆盖 |
| 腿足 SLAM 紧耦合 | 需要 SLAM + 足式双背景 | 博士研究的独特赛道 |
| 液压驱动足式 | 工业小众 | 补充材料可扩展 |
| 柔性关节建模 | Ch49 简略提及 | 可扩展为独立节 |
附录 B:推荐论文精读清单¶
经典必读(按时间排序)¶
| 序号 | 论文 | 年份 | 关联章节 | 难度 |
|---|---|---|---|---|
| 1 | Featherstone, "Rigid Body Dynamics Algorithms" | 2008 | Ch49 | ⭐⭐ |
| 2 | Raibert, "Legged Robots That Balance" | 1986 | Ch51/58 | ⭐ |
| 3 | Kajita et al., "LIPM + ZMP Biped Walking" | 2001 | Ch51 | ⭐⭐ |
| 4 | Pratt et al., "Capture Point" | 2006 | Ch51/58 | ⭐⭐ |
| 5 | Sentis & Khatib, "Whole-Body Behaviors" | 2005 | Ch53 | ⭐⭐⭐ |
| 6 | Carpentier et al., "The Pinocchio C++ Library" | 2019 | Ch47 | ⭐⭐ |
当代核心(2018-2023)¶
| 序号 | 论文 | 年份 | 关联章节 | 难度 |
|---|---|---|---|---|
| 7 | Di Carlo et al., "MIT Cheetah Convex MPC" | 2018 | Ch51/55 | ⭐⭐ |
| 8 | Kim et al., "Highly Dynamic Quadruped via WBIC" | 2019 | Ch53 | ⭐⭐⭐ |
| 9 | Hwangbo et al., "ANYmal RL Locomotion" | 2019 | Ch63 | ⭐⭐ |
| 10 | Mastalli et al., "Crocoddyl: DDP for Multi-Contact" | 2020 | Ch54 | ⭐⭐⭐ |
| 11 | Hartley et al., "InEKF for Legged Robots" | 2020 | Ch57 | ⭐⭐⭐ |
| 12 | Rudin et al., "legged_gym + rsl_rl" | 2022 | Ch63 | ⭐⭐ |
| 13 | Miki et al., "Perceptive RL Locomotion" | 2022 | Ch60/63 | ⭐⭐⭐ |
| 14 | Grandia et al., "Perceptive Locomotion NL-MPC" | 2022 | Ch67 | ⭐⭐⭐⭐ |
前沿追踪(2024-2026)¶
| 序号 | 论文 | 年份 | 关联章节 | 难度 |
|---|---|---|---|---|
| 15 | Jallet et al., "Aligator/ProxDDP" | T-RO 2025 | Ch54 | ⭐⭐⭐⭐ |
| 16 | Pang et al., "Contact Smoothing" | 2023 | Ch52/59 | ⭐⭐⭐⭐ |
| 17 | Jenelten et al., "DTC Digital Twin Control" | 2024 | Ch67 | ⭐⭐⭐⭐ |
| 18 | MuJoCo Playground | RSS 2025 | Ch63 | ⭐⭐ |
附录 C:开源项目索引¶
| 项目 | 组织 | 语言 | 主要用途 | 关联章节 |
|---|---|---|---|---|
| pinocchio | stack-of-tasks (INRIA) | C++/Python | 刚体动力学 | Ch47/49 全栈 |
| OCS2 | ETH RSL | C++ | MPC 框架 | Ch55/67/68 |
| Crocoddyl | LAAS-CNRS | C++/Python | DDP/iLQR 轨迹优化 | Ch54 |
| Aligator | LAAS-CNRS | C++/Python | ProxDDP 新一代轨迹优化 | Ch54 |
| TSID | Pinocchio 生态 | C++/Python | 全身控制 | Ch53 |
| ProxQP/ProxSuite | Simple-Robotics | C++ | QP 求解器 | Ch50/53 |
| OSQP | -- | C | QP 求解器 | Ch50 |
| Ipopt | COIN-OR | C++ | NLP 求解器 | Ch50 |
| HPIPM | Gianluca Frison | C | 结构化 QP | Ch55 |
| CasADi | -- | C++/Python | 符号化 NLP 建模 | Ch50/54 |
| IsaacLab | NVIDIA | Python | GPU RL 训练平台 | Ch63 |
| MuJoCo | Google DeepMind | C | 物理仿真器 | Ch63 |
| MuJoCo Playground | Google DeepMind | Python(JAX) | GPU RL 训练 | Ch63 |
| rsl_rl | ETH RSL | Python | RL 训练库 | Ch63 |
| legged_gym | ETH RSL | Python | RL 训练环境 | Ch63 |
| legged_control | ETH RSL | C++ | 四足全栈控制 | Ch68 |
| rl_sar | 社区 | C++/Python | RL sim-to-real 部署 | Ch64 |
| TOWR | ETH RSL | C++ | 离线轨迹+落脚优化 | Ch59 |
| grid_map | ANYbotics | C++ | 高程图库 | Ch66 |
| CppAD | -- | C++ | 自动微分 | Ch48 |
累积项目:Mini-Legged 全栈控制器¶
贯穿 Part I-VI 的持续项目,每完成一个 Part 新增一个模块:
| Part | 新增模块 | 累积能力 |
|---|---|---|
| Part I | Pinocchio 后端 + QP 求解器 | 加载 URDF,计算动力学,组装/求解 QP |
| Part II | WBC + 简化模型 MPC + 步态 FSM | 仿真中四足站立→行走 |
| Part III | 状态估计器 + 落脚规划 | 闭环运行不依赖真值 |
| Part IV | 实时化 + 硬件接口 | 可部署到真机 |
| Part V | RL policy 集成 | 可选 RL 替代/辅助 MPC |
| Part VI | 感知管线 + 全栈调试 | 完整系统 + 可展示 |
最终交付:GitHub 仓库 + 技术报告 + 仿真/真机视频
本大纲是导航工具,不是教学内容。 每章的完整教学内容在对应的
ChXX_*.md文件中。 C00/C01 提供"为什么学足式",本大纲提供"怎么学、学什么、依赖什么"。