P1_方向分类与公共基础层设计方案
第一部分:方向分类与公共基础层设计方案
定位:本部分为整个"面向 SLAM 工程师的规控 C++ 进阶"教学体系的**顶层架构设计**,定义方向划分、公共基础层内容、方向间的复用关系、以及推荐的学习路径。
设计原则:按机器人形态划分方向(而非按算法类型),因为不同形态的动力学结构、约束类型、实时性要求根本不同,导致 C++ 技术栈差异巨大。同一个算法(如 MPC)在无人机和腿足上的工程实现完全不同,按算法分会导致大量重复和割裂。
一、方向划分:四大方向 + 一个交叉能力层
┌─────────────────────────────┐
│ 交叉能力层:RL + 规控混合 │
│ (sim-to-real、MPC+RL 混合、 │
│ VLA/具身智能、策略部署) │
└──────────────┬──────────────┘
│ 叠加在任意方向之上
┌───────────┬─────────────┼─────────────┬───────────┐
▼ ▼ ▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ 方向 A │ │ 方向 B │ │ 方向 C1 │ │ 方向 C2 │ │ 方向 D │
│ 无人机 │ │纯机械臂 │ │ 四足 │ │ 人形 │ │ 复合体 │
│ │ │ │ │ │ │ │ │(轮足/ │
│ │ │ │ │ │ │ │ │ 移动操作│
│ │ │ │ │ │ │ │ │ /足式 │
│ │ │ │ │ │ │ │ │ 操作) │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
▲ ▲ ▲ ▲ ▲
└───────────┴─────────────┴─────────────┴───────────┘
│
┌──────────────┴──────────────┐
│ Part 0:规控方向公共基础 │
│ (所有方向共享,学一次用五次) │
└──────────────┬──────────────┘
│
┌──────────────┴──────────────┐
│ 前置:v8 SLAM 主线(46 章) │
│ C++17 / Eigen / 并发 / Ceres │
│ / ROS2 / SLAM 项目精读 │
└─────────────────────────────┘
二、四大方向详解
方向 A:无人机规控
| 维度 |
说明 |
| 涵盖内容 |
多旋翼(四/六/八旋翼)、固定翼、集群、无人机竞速 |
| 核心 C++ 技术栈 |
MINCO/B-spline 轨迹优化、PX4 嵌入式 C++、SE(3) 几何控制、LBFGS-Lite/NLopt 小规模优化、ESDF 环境表示 |
| 代表项目 |
Fast-Planner、EGO-Planner-v2、GCOPTER、PX4 Autopilot、Agilicious、MADER |
| C++ 风格 |
Header-only、嵌入式优化(ARM Cortex)、C++11/14 为主、编译期固定维度 |
| 与 SLAM 的重叠 |
高——无人机规控与 VIO/LiDAR SLAM 强耦合(感知-规划一体) |
| 与其他方向共享 |
Eigen、Sophus、部分 ROS2 基础;与腿足/机械臂的规控技术栈**重叠极少** |
| 参考材料 |
v8 无人机案例 + 《无人机运动规划与控制开源 C++ 项目全景调研》(85+ 项目)+ 30 章扩展方案 |
方向 B:纯机械臂规控
| 维度 |
说明 |
| 涵盖内容 |
6/7-DOF 工业臂、协作臂、固定基座操作 |
| 核心 C++ 技术栈 |
Pinocchio、OMPL、MoveIt2、Tesseract+TrajOpt、BT.CPP、ros2_control、Ruckig、FCL/Coal、QP/NLP 求解器、cuRobo/VAMP |
| 代表项目 |
MoveIt2、Pinocchio、Drake、Tesseract、BT.CPP、Ruckig、OMPL、cuRobo、VAMP、libfranka |
| C++ 风格 |
重型框架、pluginlib 运行时多态、CRTP 模板元编程、C++17/20 为主 |
| 三大学派 |
法国 INRIA(Pinocchio 生态)、美国 TRI(Drake)、美国 SwRI(MoveIt2+Tesseract) |
| 与 SLAM 的重叠 |
中——共享 Eigen/ROS2/CMake,但规控核心(QP/NLP/OMPL/WBC)是全新技能 |
| 参考材料 |
《机械臂规控 C++ 项目全景调研》(38 项目)、《manipulator_cpp_research》(40 项目)、当前正在编写的机械臂方向 v0.1 大纲 |
方向 C:足式机器人规控(C1 四足 + C2 人形)
虽然四足和人形都是"足式",但 C++ 技术栈差异显著,建议内部分为 C1(四足)和 C2(人形):
C1:四足
| 维度 |
说明 |
| 涵盖内容 |
四足机器人(Go1/Go2/ANYmal/Spot/A1/Mini Cheetah) |
| 核心 C++ 技术栈 |
OCS2 SLQ/SQP MPC、Pinocchio、凸 MPC(单刚体模型)、WBIC/TSID WBC、HPIPM、CppADCodeGen、legged_control |
| 代表项目 |
OCS2、MIT Cheetah-Software、legged_control、Crocoddyl、TSID、Legged Gym + rl_sar(RL 部署) |
| C++ 风格 |
实时 MPC(50-100 Hz)+ 实时 WBC(500-1000 Hz)、PREEMPT_RT 硬实时、无堆分配 |
| 动力学维度 |
12-18 DOF(4 腿 × 3 关节 + 浮动基座 6 DOF) |
| RL 成熟度 |
非常成熟(Legged Gym → rl_sar → 真机部署,已有多篇 Science Robotics) |
| 参考材料 |
《机械臂腿足规控 C++ 项目全景调研(第二批)》(22 项目)、Research_Report.md 第二章 |
C2:人形
| 维度 |
说明 |
| 涵盖内容 |
双足人形(H1/Atlas/iCub/OpenLoong/Digit/Optimus) |
| 核心 C++ 技术栈 |
全身 NMPC、分层 QP(TSID/OpenSoT)、Pinocchio、iDynTree、bipedal_locomotion_framework、大规模 QP(30+ DOF) |
| 代表项目 |
bipedal_locomotion_framework(IIT/iCub)、OpenLoong、TSID、OpenSoT、HumanPlus(RL) |
| C++ 风格 |
与 C1 类似但 QP 规模大得多;步态规划是独立子问题;上半身操作与下半身行走的优先级管理 |
| 动力学维度 |
30-50+ DOF |
| RL 成熟度 |
快速发展但远未成熟——HumanPlus(CoRL 2024)、Humanoid Gym 等 |
| 参考材料 |
《轮足机器人与足式机械臂开源项目全景调研》中人形部分 |
C1 vs C2 的关键技术差异
| 维度 |
C1 四足 |
C2 人形 |
| DOF |
12-18 |
30-50+ |
| 主流控制栈 |
凸 MPC(单刚体) + WBC |
全身 NMPC 或分层 RL |
| QP 规模 |
小型(12 关节力 + 4×3 接触力) |
大型(30+ 关节 + 多接触) |
| WBC 复杂度 |
标准 WBIC(MIT Cheetah) |
分层 QP(TSID/OpenSoT)或端到端 RL |
| 步态规划 |
预定义步态表(trot/gallop) |
自由步态(脚步规划是独立子问题) |
| 上半身 |
无 |
需要操作能力(双臂控制、手部灵巧操作) |
| RL 范式 |
单策略控制全身(Legged Gym) |
分层(底层 locomotion + 顶层 manipulation) |
| 代表项目 |
legged_control、OCS2 legged_robot |
bipedal_locomotion_framework、OpenLoong |
方向 D:复合体(轮足 / 移动操作 / 足式操作)
方向 D 是 A/B/C 的交叉融合,按子方向分为三类:
| 子方向 |
代表平台 |
核心技术增量 |
代表项目 |
| D1 轮足(wheeled-legged) |
Go2-W、B2-W、Ascento、CENTAURO |
非完整滚动约束嵌入 MPC、模式切换(轮/足)、VMC(虚拟模型控制) |
Wheel-Legged-Gym、wb_mpc_centauro、robot_lab |
| D2 移动操作(mobile manipulation) |
Panda on Ridgeback、UR5 on Husky、Fetch |
底盘(SE2)+ 臂(关节空间)的统一运动学规划、OCS2 mobile_manipulator |
OCS2 mobile_manipulator、MoveIt2(移动底盘+臂) |
| D3 足式操作(loco-manipulation) |
Go2+Z1、ANYmal+DynaArm、H1+手 |
浮动基座+腿+臂统一全身动力学、WBC 优先级冲突(locomotion vs manipulation)、接触状态动态管理 |
qm_control、Deep WBC(CMU)、UMI on Legs(Stanford)、visual_wholebody |
D3 足式操作是最复杂的子方向,也是具身智能的最终形态之一——它需要同时掌握 B(机械臂)+ C(腿足)+ RL 的全部能力。
D1/D2/D3 的 C++ 技术栈差异
| 维度 |
D1 轮足 |
D2 移动操作 |
D3 足式操作 |
| 核心库 |
OCS2 + Pinocchio + IsaacGym |
OCS2 + MoveIt2 + Nav2 |
OCS2 + Pinocchio + TSID + IsaacGym |
| MPC 的新增约束 |
非完整滚动约束(等式) |
底盘运动学耦合(较简单) |
全身动力学 + 多接触力 + 任务优先级 |
| RL 部分 |
VMC RL(Wheel-Legged-Gym) |
较少 RL(传统规划为主) |
端到端 RL(Deep WBC)或分层 RL(UMI on Legs) |
| 关键难点 |
轮/足模式切换 |
底盘+臂联合规划 |
locomotion 与 manipulation 的优先级冲突 |
三、交叉能力层:RL + 规控混合
这不是一个"方向",而是叠加在任何方向之上的能力层。 对于 RL-based motion control 背景的工程师,这是你的**跨方向护城河**。
RL + 规控在各方向的体现
| 方向 |
RL + 规控的典型形态 |
代表项目/论文 |
| A 无人机 |
RL 竞速策略(端到端视觉→控制) |
Swift(Nature 2023) |
| B 纯机械臂 |
RL/VLA policy(5-10 Hz) + ros2_control 合规控制(1 kHz) |
CRISP 框架(TUM 2025)、Diffusion Policy、ACT/ALOHA |
| C1 四足 |
RL locomotion(PPO/Teacher-Student) + 可选 MPC 残差 |
Legged Gym、Walk These Ways、Extreme Parkour |
| C2 人形 |
分层 RL(底层运动 + 顶层操作) |
HumanPlus(Stanford)、Humanoid Shadowing |
| D1 轮足 |
RL + VMC(虚拟模型控制) |
Wheel-Legged-Gym |
| D3 足式操作 |
端到端 RL 或 MPC+RL 混合(RAMBO) |
Deep WBC(CMU)、UMI on Legs(Stanford)、RAMBO(ETH 2025) |
RL + 规控混合的 C++ 技术栈
| 技术 |
用途 |
代表项目 |
| LibTorch C++ 推理 |
RL policy 部署(.pt JIT 模型) |
rl_sar(~1.2k★) |
| ONNX Runtime C++ 推理 |
RL policy 部署(.onnx 模型) |
LimX tron1-rl-deploy |
| TensorRT |
Jetson 平台加速推理 |
ONNX Runtime 后端 |
| ros2_control ForwardCommandController |
直接传递 RL action 到关节(无轨迹插值) |
标准四足 RL 部署 |
| Domain Randomization |
运行时 API 扰动(不改 URDF) |
Isaac Lab events、MuJoCo runtime |
| Action filtering |
EMA 平滑(α = 0.2-0.5) |
rl_sar 标准做法 |
| CRISP 模式 |
高频 C++ 合规控制 + 低频 GPU policy 解耦 |
TUM CRISP 2025 |
2024-2025 趋势:MPC + RL 混合正在成为主流
| 架构 |
描述 |
代表 |
| 纯 RL |
端到端策略,无模型 |
Legged Gym、Walk These Ways |
| 纯 MPC |
模型预测控制,无学习 |
OCS2、Crocoddyl |
| MPC 为主 + RL 增强 |
MPC 前馈 + RL 反馈残差 |
RAMBO(ETH 2025)、rl-mpc-locomotion |
| RL 为主 + MPC 安全层 |
RL 决策 + MPC/CBF 约束投影 |
学术探索阶段 |
| RL 预测 MPC 参数 |
RL 输出 MPC 的权重/参考轨迹 |
rl-mpc-locomotion(447★) |
"model-based 为主、learning 增强"的范式**兼顾安全性和鲁棒性,是最有前景的方向——也是同时掌握规控(MPC/WBC)和学习(RL 部署)的工程师的**最大差异化竞争力。
四、Part 0:规控方向公共基础层
设计原则
- 学一次,用五次:放入 Part 0 的内容必须被至少 3 个方向共用
- 不重复 v8:v8 主线已覆盖的(Eigen 基础、并发基础、Ceres、ROS2 基础)不重复
- 可独立成章:每个主题可以独立教学,不依赖特定方向的上下文
- 预留接口:每个主题都在末尾标注"各方向如何扩展"
Part 0 内容总览(10 个主题)
Part 0:规控方向公共基础
│
├── P0.1 URDF / Xacro 机器人建模 ← 已在机械臂大纲中完整设计
├── P0.2 sim-to-real 资产管道与多目标部署 ← 已在机械臂大纲中完整设计
│
├── P0.3 Pinocchio 动力学核心 ← 机械臂大纲 M1(内容直接复用)
│ CRTP + 模板标量类型 + Model-Data 分离
│ ┌─ 机械臂:7-DOF 固定基座
│ ├─ 四足:12-DOF + FreeFlyer 浮动基座
│ ├─ 人形:30+ DOF + FreeFlyer
│ └─ 无人机:通常不用 Pinocchio(单刚体)
│
├── P0.4 QP / NLP 约束优化建模 ← 机械臂大纲 M5(内容直接复用)
│ OSQP / ProxQP / Ipopt / CasADi
│ ┌─ 机械臂:IK QP、力控 QP
│ ├─ 四足:凸 MPC QP、WBC QP
│ ├─ 人形:大规模分层 QP
│ ├─ 无人机:小规模 MPC QP(MPC-MPPI 用采样代替)
│ └─ 复合体:统一 QP(腿+臂+底盘)
│
├── P0.5 自动微分与代码生成 ← 机械臂大纲 M6(内容直接复用)
│ CppAD / CppADCodeGen / CasADi codegen / acados
│ ┌─ 所有需要 MPC 的方向共用
│ └─ 无人机方向用 CasADi 更多,腿足用 CppADCodeGen 更多
│
├── P0.6 实时 C++ 工程 ← 机械臂大纲 M11(内容直接复用)
│ PREEMPT_RT + SCHED_FIFO + 无堆分配 + realtime_tools
│ ┌─ 机械臂:1 kHz 关节伺服
│ ├─ 四足:500 Hz-1 kHz WBC
│ ├─ 人形:同四足但 QP 更大
│ ├─ 无人机:400 Hz 姿态控制(嵌入式 RTOS,不是 PREEMPT_RT)
│ └─ 注:无人机用 NuttX 硬实时,与 Linux PREEMPT_RT 不同
│
├── P0.7 BehaviorTree.CPP 任务编排 ← 机械臂大纲 M13(内容直接复用)
│ 异步 Ticking + XML DSL + Blackboard + Groot2
│ ┌─ 机械臂:MoveIt Pro 任务编排
│ ├─ 移动机器人:Nav2 顶层行为树
│ ├─ 足式操作:locomotion + manipulation 切换
│ └─ 无人机:PX4 commander 状态机(不用 BT,但 BT 正在渗透)
│
├── P0.8 ros2_control 硬件抽象 ← 机械臂大纲 M12(内容直接复用)
│ ControllerManager + SystemInterface + realtime_tools
│ ┌─ 机械臂:libfranka / ur_robot_driver 硬件接口
│ ├─ 四足:Unitree / Spot 硬件接口
│ ├─ 移动底盘:DiffDriveController
│ └─ 无人机:通常不用 ros2_control(用 PX4/MAVLink)
│
├── P0.9 环境表示基础(从 Nav2 中抽取) ← 新增概念性模块
│ costmap_2d 的 layer 架构 / OctoMap / ESDF / voxel 概念
│ ┌─ 不讲 Nav2 的具体配置
│ ├─ 只讲"机器人怎么表示周围环境"这个公共问题
│ ├─ 机械臂:PlanningScene 的 OctoMap 层
│ ├─ 无人机:ESDF(voxblox / nvblox)
│ ├─ 移动操作:costmap + OctoMap
│ └─ 腿足:高程图 + 可通行性分析
│
└── P0.10 MPC 直觉入门(从 Nav2 MPPI 中抽取) ← 新增概念性模块
用 Nav2 MPPI 控制器作为 2D 简化 MPC 教学案例
┌─ ~2000 条采样轨迹 + Critic 评分 + 软最大加权
├─ 建立 MPC 直觉:什么是"预测时域"、"代价函数"、"约束"
├─ 然后在 P0.4 跳到高维约束 QP——认知跨越更小
└─ 四足/人形方向跳到 OCS2 SLQ/SQP——结构类似但更复杂
Part 0 各主题的方向覆盖矩阵
| Part 0 主题 |
无人机 |
纯机械臂 |
四足 |
人形 |
复合体 |
| P0.1 URDF/Xacro |
✅ |
✅ |
✅ |
✅ |
✅ |
| P0.2 sim-to-real 资产管道 |
✅ |
✅ |
✅ |
✅ |
✅ |
| P0.3 Pinocchio 动力学 |
⚪ 少用 |
✅ |
✅ |
✅ |
✅ |
| P0.4 QP/NLP 约束优化 |
⚪ 小规模 |
✅ |
✅ |
✅ |
✅ |
| P0.5 自动微分+代码生成 |
✅ CasADi |
✅ |
✅ |
✅ |
✅ |
| P0.6 实时 C++ |
⚪ 嵌入式不同 |
✅ |
✅ |
✅ |
✅ |
| P0.7 BehaviorTree.CPP |
⚪ 渗透中 |
✅ |
✅ |
✅ |
✅ |
| P0.8 ros2_control |
❌ 用 PX4 |
✅ |
✅ |
✅ |
✅ |
| P0.9 环境表示基础 |
✅ ESDF |
✅ PlanningScene |
⚪ 高程图 |
⚪ |
✅ |
| P0.10 MPC 直觉入门 |
✅ |
✅ |
✅ |
✅ |
✅ |
"✅ 全用 / ⚪ 部分用 / ❌ 不用"——至少有 3 个 ✅ 的才放入 Part 0。P0.8 ros2_control 对无人机不适用(无人机用 PX4 MAVLink),但其余 4 个方向都用,满足条件。
Part 0 的预计规模
| 主题 |
预计周数 |
来源 |
| P0.1 URDF/Xacro |
1.5 周 |
已设计完成 |
| P0.2 sim-to-real |
1 周 |
已设计完成 |
| P0.3 Pinocchio |
2 周 |
= 机械臂 M1 |
| P0.4 QP/NLP |
2 周 |
= 机械臂 M5 |
| P0.5 AD + codegen |
1 周 |
= 机械臂 M6 |
| P0.6 实时 C++ |
1.5 周 |
= 机械臂 M11 |
| P0.7 BT.CPP |
1 周 |
= 机械臂 M13 |
| P0.8 ros2_control |
1.5 周 |
= 机械臂 M12 |
| P0.9 环境表示(概念) |
0.5 周 |
新增,轻量概念 |
| P0.10 MPC 直觉(概念) |
0.5 周 |
新增,轻量概念 |
| 合计 |
~13 周 |
|
注意:如果只做机械臂方向,Part 0 不需要独立成章——直接在机械臂大纲内用 M1/M5/M6/M11/M12/M13 覆盖,加上 Part 0 的 P0.1/P0.2 即可(当前大纲的做法)。Part 0 独立成章只在**做两个以上方向时**才有意义——避免重复编写。
五、各方向专有内容(不含 Part 0 的增量)
方向 B 纯机械臂(当前正在编写)
| 章节 |
内容 |
性质 |
| M3 IK 求解器 |
KDL/TRAC-IK/IKFast/ik_geo/pick-ik/BioIK |
❌ 纯机械臂 |
| M4 碰撞检测 |
FCL/Coal/BVH/GJK/EPA |
⚪ 部分共享 |
| M7 OMPL 采样规划 |
StateSpace 继承体系 + RRT/BIT* |
❌ 纯机械臂 |
| M8 轨迹优化规划器 |
TrajOpt/CHOMP/STOMP/GPMP2 |
❌ 纯机械臂 |
| M9 GPU/SIMD 规划 |
cuRobo + VAMP |
⚪ 部分共享 |
| M10 时间参数化 |
Ruckig/TOPP-RA/TOTG |
⚪ 部分共享 |
| M14 MoveIt2 + MTC |
pluginlib 生态 + MoveGroupInterface + Task Constructor |
❌ 纯机械臂 |
| M15 Mini-Manip 实战 |
Franka Panda pick-and-place 综合项目 |
❌ 纯机械臂 |
| 专有增量 |
约 11 周 |
|
方向 C1 四足(未来规划)
| 章节 |
内容 |
性质 |
| L1 凸 MPC(单刚体模型) |
Di Carlo MPC、MIT Cheetah 凸 QP、qpOASES 实战 |
❌ 纯四足 |
| L2 全身 NMPC(OCS2) |
OCS2 legged_robot 示例、SLQ/SQP 求解器 |
❌ 纯四足(人形也用但形式不同) |
| L3 全身控制 WBC |
WBIC(MIT Cheetah)、分层零空间 QP、TSID |
⚪ 四足为主、人形扩展 |
| L4 步态调度与状态机 |
trot/gallop/pace 步态表、SwitchedModelReferenceManager |
❌ 纯四足 |
| L5 状态估计(EKF/UKF) |
浮动基座状态估计、IMU+运动学融合 |
⚪ 四足为主、人形扩展 |
| L6 RL locomotion 部署 |
Legged Gym → rl_sar/ONNX → 真机、domain randomization |
⚪ 四足+人形共享 RL 方法论 |
| L7 Mini-Legged 实战 |
Go1/Go2 上跑通 MPC+WBC 或 RL 全流程 |
❌ 纯四足 |
| 专有增量 |
约 10 周 |
复用 Part 0 的 ~8 章 |
方向 D 复合体(未来规划)
| 章节 |
内容 |
性质 |
| D1 轮足约束建模 |
非完整滚动约束、OCS2 中的等式约束编码、VMC |
❌ 轮足 |
| D2 移动操作联合规划 |
OCS2 mobile_manipulator、MoveIt2 + Nav2 联合 |
⚪ |
| D3 足式操作全身控制 |
浮动基座+腿+臂统一 WBC、任务优先级冲突 |
❌ 足式操作 |
| D4 MPC+RL 混合架构 |
RAMBO(MPC 前馈 + RL 残差)、rl-mpc-locomotion |
⚪ |
| D5 Mini-Composite 实战 |
Go2+Z1 或 B2W 上跑通 loco-manipulation |
❌ |
| 专有增量 |
约 8 周 |
重度复用 B + C1 |
六、推荐学习路径
对于 SLAM + RL + C++ 背景的工程师(你的画像)
阶段 1:v8 SLAM 主线(46 章,48 周)
↓ 已完成
阶段 2:Part 0 + 方向 B 纯机械臂(17 章,~24 周) ← 当前正在做
↓ 完成后具备:Pinocchio + QP/NLP + OMPL + MoveIt2 + ros2_control
↓ Part 0 的 8 章自动为后续方向铺路
阶段 3:方向 C1 四足(~10 周增量)
↓ 复用 Part 0,只需补 MPC+WBC+步态+RL 部署
↓ 你的 RL 背景在这里直接变现(Legged Gym + rl_sar)
阶段 4:方向 D 复合体(~8 周增量,重度复用 B+C1)
↓ B + C1 的交叉,qm_control / Deep WBC 精读
↓ MPC+RL 混合是你的核心差异化方向
阶段 5(可选):方向 A 无人机(v8 已有基础,增量较小)
或 方向 C2 人形(如果行业需求驱动)
总时间线:阶段 2-4 约 42 周(全职)/ 20 个月(业余 15-20h/周)
对于纯规控背景(无 RL)的工程师
阶段 1:v8 SLAM 主线(选修:至少 Eigen基础/变参模板/线程管理/并行编程-实时约束/设计模式/ROS2高级集成 共 8 章)
阶段 2:Part 0(13 周)
阶段 3:选一个方向深入(B/C1/A 三选一)
阶段 4:RL 交叉层(如果需要)
对于 RL 背景(无 C++ 规控)的工程师
阶段 1:v8 C++ 基础子集(模板/并发/Eigen/ROS2,约 15 章)
阶段 2:Part 0(13 周,尤其 P0.3/P0.4/P0.6 是关键补课)
阶段 3:直接进入 C1 四足(RL 部署 L6 是你的强项)或 D 复合体
七、关于"自驾"和"Nav2 导航"的定位
自驾规控:降级为"了解级参考",不作为独立方向
理由:
1. 传感器栈不同:自驾以 LiDAR 点云 + 高精地图 + 摄像头融合为主,与机器人关节级控制不在同一层面
2. 规控栈简单得多:Autoware 的横纵向 MPC 本质是 2D 路径跟踪(自行车模型 + QP),远比全身动力学简单
3. C++ 生态零重叠:Autoware 与 Pinocchio/OMPL/MoveIt 生态**几乎零重叠**
4. 你的背景不匹配:SLAM + RL + 具身智能 → 自驾规控的技能迁移价值低
如果有学员群体有自驾需求,可以做一个**独立小专题**(~4 周:Autoware 横纵向 MPC + Lanelet2 + Planning Module),但不放在主分类里。
Nav2 移动机器人导航:从中抽取两个概念性模块放入 Part 0
不整体作为基础(Nav2 太大了),但从中抽取:
- P0.9 环境表示基础:costmap_2d 的 layer 架构概念——"机器人怎么表示周围环境"的公共问题
- P0.10 MPC 直觉入门:Nav2 MPPI 控制器作为 2D 简化 MPC 教学案例——建立 MPC 直觉后再跳到高维约束 QP
Nav2 的其他部分(AMCL 定位、A* 全局规划、DWB 局部规划、恢复行为)属于 Nav2 专有内容:
- AMCL/SLAM 定位:v8 主线已覆盖
- A*/Dijkstra 全局规划:2D 栅格规划与 7-DOF 配置空间规划是不同问题,技术迁移有限
- DWB/TEB 局部规划:2D 差速/全向模型的局部控制,腿足和机械臂完全不用
- 恢复行为/行为树:BT.CPP 本身已在 P0.7,具体 Nav2 行为树 XML 是 Nav2 专有应用
八、方向间的 C++ 库共享地图
Eigen (100% 共享)
│
┌──────────┴──────────┐
▼ ▼
Pinocchio Sophus/manif
(机械臂/四足/人形/复合) (SLAM/无人机)
│
┌─────────┼──────────┬────────────┐
▼ ▼ ▼ ▼
Coal ProxQP OSQP CppAD/CasADi
(碰撞检测) (QP) (QP) (自动微分)
│ │ │ │
└─────────┴──────┬───┴────────────┘
▼
OCS2 / Crocoddyl / TSID / Aligator
(MPC / 轨迹优化 / WBC 框架层)
│
┌───────────┼──────────┐
▼ ▼ ▼
机械臂专有 四足专有 复合体专有
MoveIt2 legged_ qm_control
OMPL control Deep WBC
Ruckig Cheetah-SW wb_mpc_centauro
Tesseract WBIC
cuRobo/VAMP
libfranka
无人机专有(独立生态)
PX4、GCOPTER、EGO-Planner、LBFGS-Lite
(与上述生态几乎零重叠)
这张图清晰展示了:无人机是一个独立生态(PX4 + 嵌入式 C++)与其他四个方向的交叉最少。其他四个方向(机械臂/四足/人形/复合体)共享 Pinocchio + QP 求解器 + AD 框架这条主干——这就是 Part 0 的价值所在。
九、总结
| 层次 |
内容 |
周数 |
| 前置 |
v8 SLAM 主线 |
48 周 |
| Part 0 |
规控公共基础(10 个主题) |
~13 周 |
| 方向 B |
纯机械臂专有增量 |
~11 周 |
| 方向 C1 |
四足专有增量 |
~10 周 |
| 方向 D |
复合体专有增量 |
~8 周 |
| 方向 A |
无人机专有增量(可选) |
~8 周 |
| 方向 C2 |
人形专有增量(可选) |
~8 周 |
| 交叉层 |
RL + 规控混合(贯穿各方向) |
各方向内嵌 |
当前工作焦点:完成方向 B(纯机械臂)的 v0.1 大纲——Part 0 已设计完成,M1-M10 已完整写入,M11-M15 + 附录待续。完成后即可开始方向 C1(四足),复用 Part 0 中 8 章内容,只需新写 ~10 周增量。