跳转至

本文档属于 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,分别用 doubleAD<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 提供"为什么学足式",本大纲提供"怎么学、学什么、依赖什么"。