本文档属于 Robotics Tutorial 项目,作者:Pengfei Guo,达妙科技。采用 CC BY 4.0 协议,转载请注明出处。
机械臂方向综合教学大纲¶
版本: v1.2 | 日期: 2026-05-04
定位: 面向完成 C++ 主线 v8(46 章 48 周)的 SLAM 工程师,系统切入机械臂规控方向。 数据基础: 100+ 机械臂开源项目源码级分析;课程主线按 2026-05 前后版本锁定 Pinocchio 3.9.0 / Drake v1.52 / MoveIt2 Kilted,具体 API 与版本特性以各项目当前官方文档和 release notes 为准。 总投入: 已完成第一篇 P/M 系列 17 章(P01-P02 + M01-M15)~24 周 + 第二篇 F 系列 10 章 ~28 周 + 第三篇 D 系列 10 章 ~24 周,合计 37 章 ~76 周;另有第四篇前沿规划草案 5 章 ~12-16 周,尚未拆分独立文件,可按篇独立选修。
快速路径(Quick-Start Track, ~16-17 周)¶
不是每个人都需要完整 76 周核心课程(若加前沿规划专题约 88-92 周)。以下最小路径让你获得**端到端 pick-and-place** 能力:
P01(URDF, 1周) → M01(Pinocchio, 1.5周) → M03(IK, 1.5周) → M04(碰撞检测, 1.5周)
→ M05(约束优化压缩先修, 0.75周) → M07(OMPL规划, 1.5周)
→ M08(轨迹优化压缩先修, 0.75周) → M11(实时C++压缩先修, 0.75周)
→ M10(时间参数化, 1周) → M12(ros2_control, 1.5周)
→ M13(BT.CPP压缩先修, 0.75周) → M14(MoveIt2/MTC, 2周)
→ M15(演示版综合实战, 2周)
总计 ~16.5 周
这是**演示捷径 + 必补压缩先修**:M05/M08/M11/M13 只补 pick-and-place 必需子集,用于闭合 M10、M12 和 M15 的依赖。此路径中的 M15 前置依赖放宽为"完成 pick-and-place 所需子集",不等同于完整 M15;完整 M15 仍要求系统学完 M01-M14。后续按需补 P02、M02、M06、M09、力控(F系列)、双臂(D系列)和第四篇规划草案。
计算与硬件需求¶
| 章节 | GPU | 真机 | 备注 |
|---|---|---|---|
| P01-M03, M05-M08, M10 | ❌ | ❌ 纯仿真 | MuJoCo / Gazebo |
| M04, M09 (碰撞/GPU规划) | ⚠️ cuRobo需 | ❌ 仿真优先 | RTX 3060+ 推荐 |
| M11-M12 (实时/硬件) | ❌ | ⚠️ 推荐真机 | Franka / UR5e |
| F01-F05 (力控基础) | ❌ | ⚠️ 力传感器 | MuJoCo可替代 |
| F09-F10 (学习型力控) | ✅ 训练需 | ⚠️ | Isaac Lab |
| D04, 规划草案 D12 (学习/VLA) | ✅ A100/4090 | ❌ | 大模型微调 |
| 规划草案 M16 (灵巧手) | ✅ RL训练 | ⚠️ LEAP Hand | Isaac Gym |
工业 vs 研究标记¶
| 标记 | 含义 | 代表章节 |
|---|---|---|
| 🏭 | 工业落地核心 | M12(ros2_control), M14(MoveIt2), F04(libfranka阻抗), F05(导纳控制) |
| 🔬 | 研究前沿 | 规划草案 F12(可微仿真), D06(波变量), 规划草案 D12(VLA), 规划草案 M16(灵巧手) |
| 🏭🔬 | 工业+研究兼有 | M09(GPU规划), F09(学习型力控), D08(遥操作数据采集) |
总览路线图¶
主线 v8 完成(Ch1-46, 第 1-48 周)
│ C++17 · Eigen · 并发 · SLAM 优化 · ROS2 · CMake/CUDA
▼
┌──────────────────────────────────────────────────────────────────┐
│ 第一篇: 机械臂核心 (P01-P02 + M01-M15, ~24 周) │
│ Part 0 跨方向共享基础 (P01-P02, 2.5 周) │
│ Part 1 动力学与运动学 (M01-M03, 4 周) │
│ Part 2 碰撞与优化建模 (M04-M06, 4 周) │
│ Part 3 运动规划 (M07-M10, 5.5 周) │
│ Part 4 实时控制与硬件 (M11-M12, 3 周) │
│ Part 5 任务编排与系统集成 (M13-M14, 3 周) │
│ Part 6 综合实战 (M15, 2 周) │
└──────────────────────────────────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────────────────┐
│ 第二篇: 力控与柔顺控制 (F系列, F01-F10, ~28 周) │
│ Part 1 力控基础 (F01-F05, 8 周) │
│ Part 2 高级力控 (F06-F08, 10 周) │
│ Part 3 学习型力控 (F09-F10, 10 周) │
└──────────────────────────────────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────────────────┐
│ 第三篇: 双臂协调与遥操作 (D系列, D01-D10, ~24 周) │
│ Part 1 双臂协同理论与规划 (D01-D04, 8 周) │
│ Part 2 遥操作理论与数据采集 (D05-D08, 8 周) │
│ Part 3 系统集成与综合实战 (D09-D10, 8 周) │
└──────────────────────────────────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────────────────┐
│ 第四篇: 前沿专题规划草案 (F11/F12/D11/D12/M16, 12-16 周, 尚未拆分独立文件) │
└──────────────────────────────────────────────────────────────────┘
前置知识依赖矩阵¶
| 本大纲章节 | 依赖 v8 章节 | 关键知识点 |
|---|---|---|
| P01 URDF/Xacro | v8 Ch31(ROS2 高级) | Launch 文件、参数服务器、TF2 |
| P02 sim-to-real | v8 Ch45-46(CUDA 基础) | GPU 纹理管线、Docker 多阶段构建 |
| M01 Pinocchio | v8 Ch14/29(CRTP与设计模式)、Ch11(Eigen) | Sophus CRTP、模板元编程、Eigen Map/Block |
| M02 动力学库 | v8 Ch6(继承多态) | 虚函数表、override/final、RTTI |
| M03 IK | v8 Ch19-20(并发) | std::thread/std::atomic(TRAC-IK 并行) |
| M11 实时 C++ | v8 Ch19-20(并发)、Ch35(pmr 内存)、Ch3(RAII) | SCHED_FIFO、mlockall、无堆分配 |
| M13 BT.CPP | v8 Ch29(设计模式)、Ch6(多态)、Ch31(ROS2 Action) | Composite/Strategy 模式、pluginlib |
v8 前置三层口径: - 最低可启动:Ch11、Ch14、Ch17、Ch19-20、Ch29、Ch31。可支撑 Quick Start 演示,但只覆盖 pick-and-place 所需子集。 - 推荐补齐:Ch3、Ch6、Ch11、Ch14、Ch17、Ch19-20、Ch29、Ch31、Ch35。适合完整学习 M01-M15 并进入实时控制/硬件章节。 - 完整前置:完成 v8 Ch1-Ch46;未完成者按子课程一附录 C 的章节索引补齐与机械臂直接相关章节。
三大学派生态速览(截至 2026-05-04 查询)¶
| 学派 | 核心栈 | 最新动态 |
|---|---|---|
| INRIA 学派 | Pinocchio 3.9 + Coal + ProxQP + Aligator | v3.4-3.9: 闭环链 MJCF 解析、mimic joint 全 Lie 群算法支持、Delassus 算子约束动力学、NumPy 2 兼容 |
| TRI 学派 | Drake v1.52 | 2025-26: 月度发布节奏 (v1.43-v1.52)、LBM Eval 49-task 基准、MIT 操作课全栈 pipeline |
| SwRI 工程派 | MoveIt2 Kilted + ros2_control | 2025-26: MoveIt2/MTC 与 ros2_control 随 ROS 2 发行版持续演进;重点关注 MoveGroup/MoveItCpp、PlanningScene、MTC、ros2_control 异步硬件组件与控制器链,具体能力以官方 release notes 为准 |
第一篇:机械臂核心 (P01-P02 + M01-M15, 17章 ~24周)¶
完成本篇后你能做什么:独立搭建从 URDF 建模到 MoveIt2 pick-and-place 的完整机械臂系统,掌握运动学/动力学/碰撞/规划/控制/行为树全栈,可在仿真和真机上运行。
Part 0: 跨方向共享基础(第 49-51 周)¶
P01 URDF / Xacro 机器人建模 ⭐¶
从零用 URDF+Xacro 构建 7-DOF 臂描述文件,掌握 link/joint/transmission 全语义。
| 属性 | 值 |
|---|---|
| 周数 | 1.0 周 |
| 前置依赖 | v8 Ch31(ROS2 Launch + TF2) |
| 共享标记 | ✅ 全方向共享 |
核心知识点:
1. URDF XML schema: <link> 的 visual/collision/inertial 三子树语义
2. <joint> 六种类型 (revolute/continuous/prismatic/fixed/floating/planar) 与 limit 属性
3. <transmission> 与 ros2_control <hardware> 标签的绑定关系
4. Xacro 宏系统: xacro:macro、xacro:property、xacro:include、条件分支
5. 惯性参数计算: CAD 导出 vs. meshlab 估算 vs. SysId 标定
6. Mesh 文件管理: STL(碰撞) vs. DAE/OBJ(可视化) 的 LOD 策略
7. robot_state_publisher 与 joint_state_publisher_gui 验证流程
8. URDF → SDF → MJCF 多格式转换工具链 (gz sdf, mujoco compile)
9. Xacro 参数化设计模式: 同一 macro 生成 6/7-DOF 变体
10. 常见坑: 惯性张量不对称导致仿真爆炸、mesh 尺度单位 m vs. mm
关键项目:
1. ros/urdf — URDF 解析器参考实现 (C++/Python)
2. ros/xacro — Xacro 预处理器源码
3. moveit/moveit_resources — Panda/UR URDF 标准范例
4. google-deepmind/mujoco_menagerie — 高质量 MJCF 模型库 (含 Franka/UR/Kuka)
关键论文: 1. Corke (2017) "A Robotics Toolbox for MATLAB" — DH 参数与 URDF 映射的经典参考 2. Tola et al. (2024) "Mastering URDF and Xacro for Robot Modeling in ROS 2"
练习:
1. A 型: 用 Xacro 为 Franka Panda 写参数化 URDF,支持通过 launch 参数切换 7-DOF / 含手爪 / 双臂三种配置
2. B 型: 将 URDF 同时转换为 SDF 和 MJCF,在 Gazebo 和 MuJoCo 中各跑 10s 自由落体,对比关节位置误差
3. 思考题: 为什么 URDF 不支持闭链? MJCF 的 <equality><connect> 如何绕过这一限制?
P02 sim-to-real 资产管道与多目标部署 ⭐¶
建立从 CAD 到仿真到真机的资产管线,掌握 Docker + CI 跨平台部署。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | P01; v8 Ch45(Docker/CI 基础) |
| 共享标记 | ✅ 全方向共享 |
核心知识点:
1. 资产管线架构: CAD → mesh 简化 → URDF/MJCF → 仿真验证 → 真机部署
2. Mesh 处理: MeshLab/Blender 减面、凸分解 (V-HACD / CoACD)、碰撞包络生成
3. 物理属性标定: 惯性 SysId (Swevers 法)、摩擦系数、接触刚度
4. sim-to-real gap 三大来源: 物理参数、传感器噪声、执行器延迟
5. Domain Randomization: 质量/摩擦/延迟随机化策略与范围选择
6. Docker 多阶段构建: 开发镜像 (含 GUI) vs. 部署镜像 (仅 runtime)
7. CI/CD 管线: GitHub Actions → colcon build → 单元测试 → 仿真回归测试
8. 跨平台编译: x86 开发 → ARM (Jetson/Pi) 交叉编译工具链
9. ROS2 Launch 参数化: use_sim_time、robot_description 条件加载
10. 版本管理: robot description 包的语义化版本控制策略
关键项目:
1. gazebosim/gz-sim — Gazebo Ionic 仿真器 (SDF 原生)
2. google-deepmind/mujoco — MuJoCo 3.x 物理引擎
5. Genesis-Embodied-AI/Genesis — 新一代生成式物理引擎 (2024, CMU+Stanford+MIT), 43M FPS, 统一刚体/MPM/SPH/FEM求解器
6. MuJoCo MJX (JAX GPU后端) — 已生产就绪, 支持NVIDIA/AMD/Apple Silicon/TPU; MuJoCo Playground (RSS 2025 Outstanding Demo)
3. nvidia-isaac/isaac_sim — NVIDIA Isaac Sim (USD 管线)
4. SarahWeiii/CoACD — 学习增强凸分解,生成高质量碰撞 mesh
关键论文: 1. Tobin et al. (2017) "Domain Randomization for Transferring DNNs from Simulation to Real World" 2. Muratore et al. (2022) "Robot Learning from Randomized Simulations: A Review"
练习: 1. A 型: 搭建 Dockerfile 多阶段构建,同一仓库编译出 Gazebo 仿真镜像和 Jetson 部署镜像 2. B 型: 对 Panda URDF 做 Domain Randomization (质量+-20%, 摩擦+-50%),统计 100 次仿真抓取成功率分布 3. 思考题: 为什么 Isaac Sim 选择 USD 而非 URDF 作为原生格式? USD 的 composition arcs 解决了什么问题?
Part 1: 机械臂动力学与运动学(第 52-55 周)¶
M01 Pinocchio 深度精读——CRTP + 模板标量类型 ⭐¶
精读 Pinocchio 3.x 核心架构,掌握 CRTP 访问者模式与标量参数化的工程实现。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | P01; v8 Ch14/29(CRTP与设计模式)、Ch11(Eigen 高级) |
| 共享标记 | ✅ 全方向共享 |
核心知识点:
1. Pinocchio 3.x 架构总览: Model/Data 分离 + Algorithm 无状态函数式设计
2. CRTP 访问者模式: JointModelBase<Derived> 的静态多态 dispatch
3. 标量参数化: ModelTpl<Scalar> 支持 double/AutoDiffXd/casadi::SX 无改代码切换
4. Lie 群抽象: LieGroupBase 层级与 SE(3)/SO(3) 的 integrate/difference/interpolate
5. 正向运动学 (FK): forwardKinematics() 的递归 Newton-Euler 实现
6. 正/逆动力学: rnea() (RNEA) 与 aba() (ABA) 算法的模板展开路径
7. 解析导数: computeABADerivatives() 的高效实现,相比有限差分的精度/速度优势
8. 约束动力学 (v3.x 新增): ConstraintModelTpl 族 + Delassus 算子 API
9. Pinocchio + Coal (hpp-fcl 3.x) 碰撞接口: computeCollisions()/computeDistances()
10. Mimic joint 支持 (v3.3+): 同步关节在所有 Lie 群算法中的正确传播
11. Python bindings (eigenpy): C++ ↔ NumPy 零拷贝与 NumPy 2 兼容性
12. 性能基准: 7-DOF RNEA ~1.2us, ABA ~2.5us (单核 x86)
关键项目:
1. stack-of-tasks/pinocchio (v3.9.0) — 核心库,重点精读 src/algorithm/ 和 src/multibody/
2. Simple-Robotics/proxsuite — ProxQP 求解器,Pinocchio 约束动力学的推荐 QP 后端
3. loco-3d/crocoddyl — 基于 Pinocchio 的 DDP/iLQR 最优控制框架
4. Simple-Robotics/aligator — 新一代轨迹优化,替代 Crocoddyl 的后继项目
关键论文: 1. Carpentier et al. (2019) "The Pinocchio C++ Library" — 架构设计与性能基准 2. Carpentier & Mansard (2018) "Analytical Derivatives of Rigid Body Dynamics Algorithms"
练习:
1. A 型: 用 Pinocchio 加载 Panda URDF,分别用 double 和 CppAD::AD<double> 实例化,计算 RNEA 并验证解析导数与 AD 导数一致性 (误差 < 1e-10)
2. B 型: 精读 JointModelRevoluteTpl 的 CRTP 继承链,画出从 JointModelBase 到具体关节的完整静态 dispatch 调用图
3. 思考题: Pinocchio 为什么选择 CRTP 而非虚函数? 在 1kHz 控制循环中两种方案的延迟差异量级是多少?
M02 动力学库对比——RBDL / DART / KDL / Drake ⭐¶
横向对比四大动力学库的架构、API 风格与性能,理解设计权衡。
| 属性 | 值 |
|---|---|
| 周数 | 1.0 周 |
| 前置依赖 | M01; v8 Ch6(继承多态) |
| 共享标记 | ✅ 全方向共享 |
核心知识点:
1. RBDL: 纯 C++ 头文件级轻量实现,Featherstone 算法教科书级代码
2. KDL (Orocos): Chain/Segment/Joint 经典 OOP 设计,SLAM 工程师最熟悉的风格
3. DART: Skeleton/BodyNode 场景图 + LCP 接触求解,同时做仿真与规划
4. Drake: MultibodyPlant<T> 标量参数化 (double/AutoDiffXd/symbolic::Expression)
5. Drake v1.52 (2026-04): 月度发布节奏,LBM Eval 49-task 基准,MIT 操作课全栈集成
6. 架构对比: 编译期多态 (Pinocchio) vs. 运行期多态 (DART/KDL) vs. 标量模板 (Drake)
7. 构建系统对比: CMake (Pinocchio/RBDL/KDL) vs. Bazel (Drake) 的工程影响
8. 性能基准: 7-DOF FK/ID/FD 各库延迟对比 (Pinocchio >> RBDL > DART > KDL)
9. Python 生态: Pinocchio (eigenpy) vs. Drake (pydrake) vs. DART (dartpy) 成熟度
10. 许可证影响: BSD-2/3 (Pinocchio/Drake/RBDL) vs. LGPL (KDL) 对商业项目的约束
关键项目:
1. rbdl/rbdl — 重点阅读 Model.h 和 Dynamics.cc
2. dartsim/dart — 重点阅读 dynamics/Skeleton.hpp
3. RobotLocomotion/drake — 重点阅读 multibody/plant/
4. orocos/orocos_kinematics_dynamics — KDL 源码
关键论文: 1. Featherstone (2008) "Rigid Body Dynamics Algorithms" — 所有库的算法理论基础 2. Tedrake (2023) "Robotic Manipulation" — Drake 生态配套教材 (MIT 6.4210/6.4212) 3. Lee et al. (2018) "DART: Dynamic Animation and Robotics Toolkit"
练习:
1. A 型: 对同一 Panda URDF,分别用 Pinocchio/RBDL/Drake 计算逆动力学,记录 10000 次平均耗时并绘制柱状图
2. B 型: 在 Drake 中用 AutoDiffXd 和 symbolic::Expression 分别计算 mass matrix,对比两种标量类型的 API 差异
3. 思考题: Drake 为什么用 Bazel 而非 CMake? Bazel 的 hermetic build 在大型机器人项目中解决了什么痛点?
M03 IK 求解器——KDL / TRAC-IK / IKFast / ik_geo / pick-ik ⭐¶
全景掌握逆运动学求解器生态,从解析解到数值迭代到优化式 IK。
| 属性 | 值 |
|---|---|
| 周数 | 1.5 周 |
| 前置依赖 | M01, M02; v8 Ch19-20(并发) |
| 共享标记 | ❌ 纯机械臂 |
核心知识点:
1. IK 问题形式化: 给定 SE(3) 目标位姿,求关节角 q 满足 FK(q) = T_target
2. 解析解 vs. 数值解: 6-DOF 工业臂可闭式求解 (Pieper 条件);通用 7-DOF 通常依赖数值/优化,特殊几何可参数化闭式或固定冗余参数闭式
3. KDL IK: ChainIkSolverPos_NR (Newton-Raphson) 的 Jacobian 伪逆迭代
4. TRAC-IK: KDL + SQP 双线程并行竞速策略,std::thread + std::atomic<bool> 停止信号
5. IKFast (OpenRAVE): 符号化消元生成 C++ 闭式求解代码,编译期固化关节结构
6. ik_geo: Riemannian 几何方法,subproblem decomposition 求解 6-DOF 闭式解
7. pick-ik: 基于 Pinocchio FK + 非线性优化 (L-BFGS) 的 MoveIt2 IK 插件
8. BioIK: 进化算法多目标 IK,支持多约束 (位置+朝向+关节偏好+避障)
9. opw_kinematics: 6-DOF 工业臂 (UR/ABB/Kuka) 参数化闭式解,亚微秒级
10. 冗余分解: 7-DOF 臂的 null-space 投影与次任务优化 (关节中心化/避障)
11. MoveIt2 IK 插件机制: kinematics_base 接口 + pluginlib 动态加载
12. 性能光谱: opw (~0.1us) < IKFast (~1us) < ik_geo (~5us) < pick-ik (~50us) < TRAC-IK (~500us) < KDL (~2ms)
关键项目:
1. traclabs/trac_ik / aprotyas/trac_ik (ROS2) — 精读双线程竞速逻辑
2. rdiankov/openrave — IKFast 生成器,精读符号消元管线
3. rpiRobotics/ik-geo — ik_geo 几何 IK,精读 subproblem 分解
4. PickNikRobotics/pick_ik — 优化式 IK,精读 Pinocchio 集成
5. Jmeyer1292/opw_kinematics — OPW 闭式解,精读参数化模板
关键论文: 1. Beeson & Ames (2015) "TRAC-IK: An Open-Source Library for Improved Solving of Generic IK" — Humanoids 2015 2. Diankov (2010) "Automated Construction of Robotic Manipulation Programs" — IKFast 原理 3. Elias & Wen (2022/2025) "IK-Geo: Unified Robot Inverse Kinematics Using Subproblem Decomposition" — arXiv 2022, Mechanism and Machine Theory 2025
练习: 1. A 型: 对 Panda (7-DOF) 和 UR5 (6-DOF) 各生成 1000 个随机目标位姿,用 KDL/TRAC-IK/pick-ik 求解,统计成功率和平均耗时 2. B 型: 用 IKFast 为 UR5 生成闭式求解 C++ 代码,阅读生成的代码结构,分析其如何处理多解选择 3. 思考题: 为什么通用 7-DOF 臂通常不直接使用固定结构的闭式 IK? 哪些特殊几何或固定冗余参数设置可以得到参数化闭式解? 冗余自由度在实际应用中如何利用 (避障、人体工学、奇异性规避)?
Part 2: 碰撞与优化(第 56-59 周)¶
M04 碰撞检测与距离计算 ⭐¶
从几何体表征到 GPU 并行碰撞查询,构建运动规划的安全基座。
- 周数: 1.5(内容密度高: GJK算法+SDF+CCD+SIMD+GPU碰撞,建议预留充足时间)
- 前置依赖: M01(Pinocchio 运动学/动力学), M03(IK 求解器)
- 核心知识点:
- 凸包表征: GJK/EPA 算法原理与最近距离计算
- 球体/胶囊体/OBB 层次包围盒(BVH)加速结构
- 签名距离场(SDF): 欧氏SDF与GPU-ESDF生成(cuRobo方案, 比传统CPU快10x)
- 连续碰撞检测(CCD): 扫掠体积(swept volume)碰撞项保证轨迹全程无碰撞
- 自碰撞检测: 球体近似模型与关节对剪枝策略
- FCL / HPP-FCL 库: 宽相(broad-phase)与窄相(narrow-phase)管线
- 点云/深度图直接碰撞: nvblox + cuRobo ESDF 感知管线
- SIMD 加速碰撞检查: VAMP 向量化方案实现微秒级碰撞查询
- 碰撞梯度计算: 可微碰撞距离用于轨迹优化反向传播
- 安全裕度(clearance)与激活距离(activation distance)平滑设计
- 关键项目:
- 用 FCL 构建 6-DOF 机械臂自碰撞+环境碰撞检测管线
- 实现基于球体近似的 GPU 批量碰撞检查(PyTorch/Warp)
- 从深度图生成 ESDF 并可视化安全距离场
- 关键论文:
- Pan et al., "FCL: A General Purpose Library for Collision and Proximity Queries," ICRA 2012
- Sundaralingam et al., "cuRobo: Parallelized Collision-Free Minimum-Jerk Robot Motion Generation," ICRA 2023
- Gilbert et al., "A Fast Procedure for Computing the Distance Between Complex Objects in Three-Dimensional Space," IEEE J-RA 1988
- 练习:
- 手写 GJK 算法核心循环, 对两个凸多面体求最近距离
- 对比 FCL broad-phase(SAP vs DynamicAABBTree)在 1000 障碍物场景下的查询耗时
- 使用 VAMP collision checker 对比 CPU 串行 vs SIMD 加速的吞吐量
- 共享标记:
[碰撞检测-SDF]→ M08 轨迹优化, M09 GPU规划, 移动机器人导航模块
M05 QP / NLP 建模工程 ⭐¶
从 SLAM 的无约束最小二乘跨入规控的硬约束优化: 关节限位、碰撞、力矩饱和和接触约束都必须进入求解器模型。
- 周数: 2.0
- 前置依赖: M01(Pinocchio 动力学/雅可比), M03(IK 求解器), v8 Ch17(Ceres/GTSAM)
- 核心知识点:
- 规控优化问题标准形式: 变量、目标、等式约束、不等式约束、边界约束
- QP 建模: Hessian、gradient、约束矩阵、上下界与稀疏结构
- NLP 建模: 非线性约束、KKT 条件、SQP / interior-point 的工程含义
- OSQP / ProxQP / qpOASES / HPIPM 的算法差异与实时性权衡
- Ipopt / CasADi / acados 在机械臂轨迹优化和 MPC 中的角色
- IK-QP: 任务误差、阻尼、关节限位、速度限幅、零空间目标
- 碰撞约束建模: distance activation、soft constraint 与 hard constraint 的边界
- 力矩/速度/加速度约束如何进入规划、时间参数化和控制问题
- 数值尺度与条件数: 单位归一化、权重调参、warm start 与失败诊断
- 从"惩罚函数调到能跑"到"约束模型可解释"的工程迁移
- 关键项目:
- 用 OSQP / ProxQP 实现带关节限位和零空间目标的 IK-QP
- 用 Ipopt 或 CasADi 建模一个 7-DOF 机械臂避障轨迹优化问题
- 对比硬约束、松弛变量和纯 penalty 在接近关节极限时的行为
- 关键论文/资料:
- Stellato et al., "OSQP: An Operator Splitting Solver for Quadratic Programs," MPC 2020
- Wächter & Biegler, "On the Implementation of an Interior-Point Filter Line-Search Algorithm for Large-Scale Nonlinear Programming," 2006
- Ferreau et al., "qpOASES: A Parametric Active-Set Algorithm for Quadratic Programming," 2014
- 练习:
- 将 DLS-IK 改写成 QP, 加入关节速度上下界并比较奇异点附近表现
- 对同一个避障问题分别用 penalty 和 inequality constraint 建模, 分析失败模式
- 编写求解器选型表: 维度、稀疏性、约束类型、实时频率、warm-start 支持
- 共享标记:
[QP/NLP-约束优化]→ M08 轨迹优化, M10 时间参数化, F07 WBC/QP, 腿足 MPC
M06 自动微分与代码生成 ⭐¶
把 Pinocchio 动力学、碰撞距离和轨迹代价接入优化器: 用 CppAD / CppADCodeGen / CasADi 生成可复用、可验证、可部署的导数代码。
- 周数: 1.0
- 前置依赖: M01(Pinocchio 标量参数化), M05(QP/NLP 建模), v8 Ch17(Ceres Jet)
- 核心知识点:
- 前向模式、反向模式、表达式图和 tape 的差异
- CppAD 的 tape 录制、独立变量、复用与动态参数
- CppADCodeGen 的代码生成、编译、动态加载和性能基准
- CasADi 的符号图、代码生成与 acados/Ipopt 集成路径
- Pinocchio
ModelTpl<Scalar>如何支持 double / AD scalar / codegen scalar - 碰撞距离和最近点导数的可微性边界: 最近特征切换时只分段光滑
- tape 中条件分支的正确写法:
CondExp/ smooth approximation, 避免录制期固化分支 - 有限差分、解析导数、AD 导数的精度和延迟对比
- MPC / trajectory optimization 中 Jacobian、Hessian 和 sparsity 的使用方式
- 代码生成的工程风险: 编译耗时、ABI、版本锁定、测试基准
- 关键项目:
- 为 7-DOF 机械臂 FK / Jacobian / RNEA 生成 CppADCodeGen 动态库
- 用 CasADi 建模一个简化机械臂 MPC 并导出 C 代码
- 对同一个碰撞代价比较有限差分、CppAD tape 和手写梯度
- 关键论文/资料:
- Bell, "CppAD: A Package for C++ Algorithmic Differentiation"
- Andersson et al., "CasADi: A Software Framework for Nonlinear Optimization and Optimal Control," MPC 2019
- Giftthaler et al., "Automatic Differentiation of Rigid Body Dynamics for Optimal Control and Estimation"
- 练习:
- 录制一个包含 FK 和关节限位 penalty 的 CppAD tape, 验证 Jacobian 与有限差分一致
- 将
if形式的激活距离代价改写为CondExp或 smooth hinge, 比较梯度连续性 - 为同一函数生成
.so, 测量 double、AD tape、codegen 三种路径的平均耗时 - 共享标记:
[AD-codegen]→ M08 轨迹优化, M12 控制器部署, 腿足 OCS2/Crocoddyl
Part 3: 运动规划(第 60-65 周)¶
M07 OMPL 采样规划 ⭐¶
从构型空间、碰撞回调到 MoveIt2 OMPL pipeline: 先得到一条可行几何路径,再交给后续优化和平滑。
- 周数: 1.5
- 前置依赖: M03(IK 求解器), M04(碰撞检测), v8 Ch6/Ch29(多态与设计模式)
- 核心知识点:
- 构型空间 \(\mathcal{C}\)、工作空间 \(\mathcal{W}\) 与 FK 映射
- 概率完备性、渐近最优性和机械臂规划中的实际含义
- PRM / Lazy-PRM / PRM*: 路线图构建、连接半径和查询阶段
- RRT / RRT-Connect / RRT*: 双树扩展、goal bias 和步长调参
- Informed-RRT* / BIT* / AIT*: 椭球采样、批处理搜索和 anytime 改进
- OMPL 三层抽象:
StateSpace、SpaceInformation、Planner - 碰撞检测回调如何接入 FCL / Coal / MoveIt2 PlanningScene
- 约束规划: TSR、投影采样、
ConstrainedStateSpace - 规划器 Benchmark: 成功率、路径长度、规划时间、平滑后质量
- MoveIt2 中 OMPL 参数如何影响窄通道、高维冗余臂和夹持姿态
- 关键项目:
- 用 OMPL C++ API 为 7-DOF Panda 搭建 RRT-Connect 规划 demo
- 在同一场景下比较 RRT-Connect、PRM*、BIT* 的成功率和路径质量
- 把 MoveIt2 的 PlanningScene 碰撞回调替换为自定义检测器并做性能分析
- 关键论文:
- Sucan et al., "The Open Motion Planning Library," IEEE RAM 2012
- Kuffner & LaValle, "RRT-Connect: An Efficient Approach to Single-Query Path Planning," ICRA 2000
- Gammell et al., "Batch Informed Trees (BIT*): Informed Asymptotically Optimal Anytime Search," IJRR 2020
- 练习:
- 实现 RRT-Connect 的核心扩展逻辑, 可视化双树生长与路径提取
- 给同一机械臂场景分别设置开放空间、窄通道和冗余避障任务, 量化不同规划器表现
- 在 MoveIt2 中修改 OMPL planner config, 记录参数变化对规划结果的影响
- 共享标记:
[OMPL-采样规划]→ M08 轨迹优化, M14 MoveIt2, 双臂 D02 约束规划
M08 轨迹优化规划器 ⭐¶
采样规划负责"找得到",轨迹优化负责"走得好": 用 CHOMP / TrajOpt / STOMP / KOMO 把可行路径变成平滑、避障、满足约束的几何轨迹。
- 周数: 1.5
- 前置依赖: M04(碰撞/SDF), M05(QP/NLP), M06(AD), M07(OMPL)
- 核心知识点:
- 路径、轨迹和时间参数化的分层: 本章先只优化几何轨迹
- 平滑性代价、障碍物代价、关节限位代价和任务约束代价
- CHOMP: 协变梯度、障碍物代价场、SDF 梯度
- TrajOpt: 序列凸优化、信赖域、碰撞约束凸化
- STOMP: 噪声采样、无梯度更新和局部极小规避
- GPMP2: 高斯过程先验、因子图形式和稀疏优化
- KOMO / Drake trajectory optimization 的数学建模方式
- OMPL → 轨迹优化的 warm start, 以及失败时回退策略
- 碰撞距离分段光滑对优化器收敛的影响
- MoveIt2 中链式 planning pipeline 的概念与配置风险
- 关键项目:
- 实现 CHOMP: 从 SDF 计算梯度, 优化 Panda 避障路径
- 用 TrajOpt 风格的 SQP 处理直线抓取任务中的碰撞约束
- 配置 MoveIt2 OMPL → STOMP/CHOMP 后处理, 比较路径平滑度和耗时
- 关键论文:
- Zucker et al., "CHOMP: Covariant Hamiltonian Optimization for Motion Planning," IJRR 2013
- Schulman et al., "Motion Planning with Sequential Convex Optimization and Convex Collision Checking," IJRR 2014
- Kalakrishnan et al., "STOMP: Stochastic Trajectory Optimization for Motion Planning," ICRA 2011
- 练习:
- 推导 CHOMP 的平滑项和障碍物项梯度, 写出更新公式
- 对同一个 OMPL 初始路径分别做 shortcut、CHOMP 和 STOMP 后处理
- 分析一例轨迹优化失败: 初值、碰撞梯度、权重尺度、信赖域哪个环节出了问题
- 共享标记:
[轨迹优化]→ M09 cuRobo, M10 时间参数化, M14 MoveIt2, 移动操作规划
M09 GPU / SIMD 加速规划 ⭐¶
当规划瓶颈集中在碰撞检测和多种子优化时,CPU 标量实现很快到达上限;本章讲 cuRobo / cuMotion / VAMP 如何把运动规划推到实时级。
- 周数: 1.5
- 前置依赖: M04(碰撞检测), M07(采样规划), M08(轨迹优化), v8 Ch45-46(CUDA 基础, 可选)
- 核心知识点:
- 运动规划耗时拆解: FK、碰撞检测、图搜索、轨迹优化、后处理
- 球体近似、ESDF、mesh collision 在 GPU 上的不同数据结构
- cuRobo MotionGen: 多种子 IK、图搜索、L-BFGS 轨迹优化和批量碰撞
- cuMotion: cuRobo 与 MoveIt2 的规划插件集成路径
- VAMP: 手写 SIMD、structure-of-arrays、批量 FK / collision checking
- CPU SIMD vs GPU CUDA 的选型: 延迟、吞吐、启动开销、硬件依赖
- 动态场景更新: nvblox / ESDF 更新频率与规划器缓存一致性
- 多臂与高维规划的批处理策略
- 许可证、平台依赖和部署边界: 开源库、NVIDIA 运行时、机器人模型资产分开审查
- 性能报告如何写: 不只报平均耗时,还要报失败率、尾延迟和轨迹质量
- 关键项目:
- 用 cuRobo MotionGen 在桌面抓取场景中生成无碰撞轨迹
- VAMP vs OMPL 标准碰撞回调: 对比单核 SIMD 与普通 CPU 路径
- 用 cuMotion + MoveIt2 搭建 GPU 规划-执行管线并记录端到端延迟
- 关键论文:
- Sundaralingam et al., "cuRobo: Parallelized Collision-Free Minimum-Jerk Robot Motion Generation," ICRA 2023
- Thomason et al., "Motions in Microseconds via Vectorized Sampling-Based Planning," ICRA 2024
- Pan et al., "GPU-based Parallel Collision Detection for Real-Time Motion Planning," 相关 GPU collision 文献
- 练习:
- 把同一场景拆成 FK、collision、optimizer 三段计时, 找出真实瓶颈
- 分析 cuRobo 与 VAMP 在低延迟单次查询和高吞吐批量查询下的差异
- 为一个项目写 GPU 规划部署清单: 驱动/CUDA、模型资产、许可证、fallback planner
- 共享标记:
[GPU-SIMD规划]→ M14 MoveIt2/cuMotion, 双臂 D02, 复合机器人规划
M10 时间参数化 ⭐¶
OMPL 和 TrajOpt 输出的是几何路径;控制器需要带时间戳的位置、速度、加速度甚至 jerk。时间参数化是从"能走"到"能执行"的最后一公里。
- 周数: 1.0
- 前置依赖: M07(采样规划), M08(轨迹优化), M05(QP/NLP), M11(实时 C++ 部分)
- 核心知识点:
- 几何路径 \(\sigma(s)\) 与时间轨迹 \(q(t)\) 的区别
- 速度、加速度、jerk、力矩约束在路径参数化中的角色
- TOTG: MoveIt2 常用时间参数化后处理的思路和局限
- Ruckig: jerk-limited 在线轨迹生成、固定维度模板和 RT-safe 约束
- TOPP / TOPP-RA: 相平面、可达性分析和离线时间最优路径参数化
- Retiming 与 replanning 的区别: 改速度曲线不等于重新找路径
- 轨迹拼接、停机恢复、速度缩放和安全限幅
- MoveIt2 request/response adapter 中时间参数化的实际位置
- 时间参数化失败的常见原因: 路径点太稀、曲率尖峰、约束不一致
- 控制器接口:
JointTrajectory的 position/velocity/acceleration/time_from_start 语义 - 关键项目:
- 对同一路径分别用 TOTG、Ruckig、TOPP-RA 做参数化并比较时长和 jerk
- 将几何路径中的尖角平滑后再参数化, 分析执行电流和速度峰值
- 在 ROS2 控制器中发送
JointTrajectory, 验证时间戳和速度约束是否被执行 - 关键论文/资料:
- Pham & Pham, "A New Approach to Time-Optimal Path Parameterization Based on Reachability Analysis," IEEE T-RO 2018
- Berscheid & Kroeger, "Jerk-limited Real-time Trajectory Generation with Arbitrary Target States," RSS 2021
- MoveIt2 trajectory processing / request adapter 文档
- 练习:
- 给一条固定关节路径手写速度、加速度约束下的简单 retiming
- 用 Ruckig 生成从任意速度/加速度初值到目标状态的在线轨迹
- 分析一条执行抖动的轨迹: 是几何路径问题、时间参数化问题还是控制器跟踪问题
- 共享标记:
[时间参数化]→ M12 ros2_control, M14 MoveIt2, 工业机械臂执行层
Part 4: 实时控制与硬件(第 66-68 周)¶
规划算法输出关节序列,要让机械臂真正动起来还需:1) 满足 1 kHz 硬实时 (M11);2) 通过 ros2_control 送指令到电机 (M12)。
M11 实时 C++ 工程——PREEMPT_RT + 无堆分配 + realtime_tools ⭐¶
一句话: 从 SLAM 10 Hz 软实时跨越到机械臂 1 kHz 硬实时,掌握 RT 安全 C++ 编程的完整禁区清单与工程三件套。
- 周数: 1.5 周 (第 66 周)
- 前置依赖: v8 Ch17-20 (并发基础), v8 Ch35 (pmr 内存), v8 Ch4 (RAII)
- 共享标记: ✅ 规控方向共享——机械臂 1 kHz 伺服、四足 500 Hz WBC、人形 WBC 全部需要
核心知识点:
1. PREEMPT_RT 主线化里程碑——Linux 6.12 (2024.11) 正式合并,不再需自定义补丁;CONFIG_PREEMPT_RT 启用;与 Xenomai 双内核方案的适用场景对比
2. RT 安全 C++ 禁区清单——禁止 new/delete/malloc、throw/catch、std::vector::push_back、std::mutex、printf/cout、线程创建;允许 std::array/std::span/固定 Eigen/std::atomic/预分配内存读写
3. 标准三件套——SCHED_FIFO 实时调度 + mlockall(MCL_CURRENT|MCL_FUTURE) 内存预锁 + EIGEN_RUNTIME_NO_MALLOC 堆分配审计
4. realtime_tools 三大组件——RealtimeBuffer<T> RT 端非阻塞读取、RealtimePublisher<T> 非阻塞发布 (trylock+unlockAndPublish)、LockFreeSPSCQueue/LockFreeMPMCQueue
5. 无锁并发原语深度——std::atomic 内存序 (relaxed/acquire/release/seq_cst);x86 TSO vs ARM 弱序平台差异陷阱 (Jetson 踩雷);三缓冲 (Triple Buffer) 传感器数据解耦
6. 优先级反转与优先级继承——PTHREAD_PRIO_INHERIT mutex;为什么标准 std::mutex 在 RT 线程中致命
7. cyclictest 实时性验证——RT 内核 <50 µs vs 非 RT 压力下 >700 µs;CPU governor performance + isolcpus 隔离
8. libfranka 1 kHz 实时控制案例——callback 风格 (franka::Robot::control)、只允许 std::array<double,7> 固定类型;直连以太网要求
9. cactus-rt 框架参考——集成 Quill 无分配异步日志、SPSC 无锁队列;现代 RT C++ 应用参考架构
10. 从 SLAM 到实时的认知跨越——"丢一帧 vs 失控"的后果差异;std::cout 调试习惯为何在 1 kHz 循环中是禁忌
关键项目:
1. ros-controls/realtime_tools (~175★)——精读 realtime_buffer.h 的 atomic pointer swap 实现
2. frankarobotics/libfranka——src/robot.cpp UDP 实时通信 + examples/generate_joint_velocity_motion.cpp
3. controller_manager/src/ros2_control_node.cpp——RT 主循环: configure_sched_fifo + nanosleep + read→update→write
4. cactusdynamics/cactus-rt——现代 RT C++ 框架,集成无锁日志
关键论文: 1. Linux 6.12 PREEMPT_RT 主线合并——LWN.net 系列报道 (2024) 2. Shuhaowu, "Real-time programming with Linux" 博客系列 (2022)——RT 应用开发四部曲 3. ROS2 Design Article: "Introduction to Real-time Systems"
练习:
1. [A型] cyclictest RT vs 非RT 内核延迟对比;用 stress 加压观察最坏延迟
2. [A型] EIGEN_RUNTIME_NO_MALLOC 审计——故意触发 MatrixXd 动态分配观察 abort,改固定大小通过
3. [B型] 精读 realtime_buffer.h (~100行),画时序图解释 atomic pointer swap 零拷贝机制
M12 ros2_control + 硬件驱动 + RL 部署 ⭐¶
一句话: 掌握 ros2_control 四大核心组件与三种硬件接口,打通从 MoveIt2 规划到真机执行的最后一公里,并学会通过 ForwardCommandController 部署 RL policy。
- 周数: 1.5 周 (第 67-68 周)
- 前置依赖: M11 (实时 C++), P01 (URDF
<ros2_control>标签), v8 Ch31(ROS2 Lifecycle / pluginlib) - 共享标记: ⚪ 部分共享——框架本身全方向通用,机械臂驱动 (libfranka/ur_robot_driver) 和 RL 部署为本章重点
核心知识点:
1. ros2_control 架构四组件——Controller Manager / Resource Manager / Hardware Interface / Controller;read→update→write 500-1000 Hz RT 主循环
2. 三种硬件组件类型——SystemInterface (多DOF共享总线,最常用) / ActuatorInterface (单执行器) / SensorInterface (只读);URDF <ros2_control> 标签自动解析
3. 自定义 SystemInterface 编写——on_init 预分配 / on_configure 打开总线 / on_activate 使能电机 / read+write RT 热路径无 malloc;PLUGINLIB_EXPORT_CLASS 注册
4. command interface 独占 vs state interface 共享——防止多控制器冲突;运行时原子切换 ros2 control switch_controllers
5. 异步硬件组件 (Jazzy/Kilted)——is_async 参数支持独立线程;fully fledged async components 已合并主线;适用于高延迟通信设备
6. 控制器链 (Chained Controllers)——级联控制+实时状态估计器;export_state_interfaces+export_reference_interfaces;side-load 异步控制器避免主循环 jitter
7. 五大机械臂常用控制器——JointTrajectoryController / ForwardCommandController (RL首选) / AdmittanceController / JointStateBroadcaster / PidController
8. 机械臂参考驱动精读——libfranka PIMPL + Active Control API + Pinocchio 集成;ur_robot_driver TCP+URScript 双通道 (gold standard)
9. RL Policy 部署 CRISP 架构——高频 C++ 控制 (1kHz) + 低频 GPU policy (5-10Hz);LibTorch (.pt) vs ONNX Runtime (.onnx) 两条栈
10. generate_parameter_library + Joint Limiters——类型安全参数生成;硬件层内置关节限位器 (Jazzy/Kilted 新增安全特性)
关键项目:
1. ros-controls/ros2_control + ros2_controllers——框架核心+标准控制器集
2. frankarobotics/franka_ros2 (~210★)——franka_hardware SystemInterface + 示例控制器
3. UniversalRobots/Universal_Robots_ROS2_Driver (~735★)——生产级驱动 gold standard
4. ros-controls/ros2_control_demos——含 chained controller 示例
关键论文: 1. Bischoff et al., "ros2_control: A real-time robot control framework for ROS 2" (ROSCon 2022) 2. PickNik, "MoveIt Pro: Low-level C++ and Python APIs" (2025)
练习: 1. [A型] 为 3-DOF 虚拟臂写 SystemInterface + JointTrajectoryController 在 RViz 中可视化 2. [A型] 运行时从 JointTrajectoryController 原子切换到 ForwardCommandController,验证无抖动 3. [B型] 精读 ur_robot_driver SystemInterface,标注 lifecycle 各阶段通信初始化逻辑
Part 5: 任务编排与系统集成(第 69-71 周)¶
真实操作任务需要多步编排: 感知→规划→移动→抓取→放置→错误处理。M13 讲通用行为树,M14 讲 MoveIt2 工业集成。
M13 BehaviorTree.CPP 深度 ⭐¶
一句话: 掌握 BT.CPP v4 的异步 ticking 三态语义、Blackboard 类型安全数据流与 Groot2 可视化调试,用行为树替代 FSM 编排复杂机械臂任务。
- 周数: 1 周 (第 69 周)
- 前置依赖: v8 Ch29 (Composite/Strategy 模式), v8 Ch6 (继承多态), v8 Ch31 (ROS2 Action/Service)
- 共享标记: ✅ 规控方向共享——Nav2、MoveIt2/MTC 周边项目和工业机器人任务编排常用 BT.CPP
核心知识点:
1. 行为树 vs FSM——FSM 状态数指数爆炸 (5动作x3恢复x2条件=30+状态);BT 树状结构+异步 tick 实现模块化可维护编排
2. 异步 ticking 三态语义——SUCCESS/FAILURE/RUNNING;业务循环通常调用 tickOnce() 或 tickWhileRunning() 以 10-50 Hz 推进整棵树;每次 tick 自顶向下重新评估实现反应性
3. 四大控制节点——Sequence / Fallback / Parallel / ReactiveSequence (每次从头评估——"电池低则中断")
4. XML DSL + pluginlib——行为与实现分离;BehaviorTreeFactory 三合一: 静态注册+动态插件+XML 驱动
5. Blackboard + Port 类型安全数据流——InputPort<T>/OutputPort<T> + std::any 萃取;v4 Stamped API (时间戳+序列号) + SkipUnlessUpdated 装饰器
6. Global Blackboard (v4.7+)——子树隔离 + "@" 前缀访问全局,免去手动 remapping
7. Groot2 可视化 + 日志回放——FileLogger/SqliteLogger/MinitraceLogger;内建可观测性
8. BT.CPP 与 ROS2 Action 关系——BT Action 内创建 ActionClient;RUNNING 对应 feedback;超时处理
9. v4.8+ 工程改进——ASAN/TSAN 修复、线程安全、C++17 支持、tinyxml 11.0;Sanitizer CI 集成
10. 工业 manipulation 中的 BT 扩展案例——关注轨迹拼接、遥操作、Scan-and-Plan 等任务编排模式;具体产品能力和版本以官方 release notes 为准
关键项目:
1. BehaviorTree/BehaviorTree.CPP v4.9——精读 tree_node.h/bt_factory.h/blackboard.h
2. BehaviorTree/BehaviorTree.ROS2 (2026.01)——ROS2 Action/Service 节点封装
3. BehaviorTree/Groot——BT 可视化编辑器+日志回放
4. Nav2 BT 应用——navigation.ros.org/behavior_trees/
关键论文: 1. Colledanchise & Ogren, "Behavior Trees in Robotics and AI" (2018) 2. Faconti, "BehaviorTree.CPP: A C++ library for Behavior Trees" (JOSS 2021) 3. PickNik / MoveIt Pro 官方 release notes 与 newsletter (2025-2026)——BT 在工业 manipulation 落地案例
练习: 1. [A型] ReactiveSequence 实现"检测到人靠近则暂停机械臂"——条件检查距离,动作执行 MoveIt plan 2. [A型] DetectObject→PlanMotion→ExecuteMotion 三节点 BT,通过 Blackboard 传递 pose 和 trajectory 3. [B型] 精读 BehaviorTreeFactory 三个注册/创建方法,分析静态注册+动态插件+XML 驱动如何协作
M14 MoveIt2 + MTC 工业集成 ⭐¶
一句话: 掌握 MoveIt2 pluginlib 三层工厂架构与 MTC 多阶段操作规划,独立配置 Franka Panda 完整 pick-and-place。
- 周数: 2 周 (第 70-71 周)
- 前置依赖: M07 (采样规划/OMPL), M10 (时间参数化), M03 (IK), M04 (碰撞检测), M12 (ros2_control), P01 (URDF+SRDF), v8 Ch29 (设计模式)
- 共享标记: ❌ 纯机械臂——MoveIt2+MTC 是机械臂工业落地核心栈
核心知识点:
1. MoveIt2 四层架构——用户 API (MoveGroupInterface/MoveItCpp) → PlanningPipeline → 插件层 (规划器/运动学/碰撞/时间参数化全部 pluginlib) → 执行层 (ros2_control)
2. pluginlib 三层工厂——工厂模式+动态链接+抽象接口;PLUGINLIB_EXPORT_CLASS 导出;YAML 动态加载不重编核心
3. MoveGroupInterface vs MoveItCpp——前者 ROS Action 封装 (简单有延迟);后者进程内直调 (适合 visual servoing 高频规划)
4. PlanningScene diff-based 同步——Observer+增量更新;PlanningSceneMonitor 应用 diff 重建场景
5. MTC 多阶段操作规划——Stage 基类 + SerialContainer/Alternatives/Merger (Composite Pattern);Generator/Propagator/Connector 三种类型
6. 链式与并行规划管线——OMPL→STOMP 采样作优化初始解;多规划器竞争选最优;pipeline_configs.yaml
7. MTC vs BT.CPP 定位——MTC 规划层多阶段编排;BT.CPP 执行层任务编排;典型组合: BT→MTC→ros2_control
8. MoveIt2/MoveIt Pro 版本动态阅读——关注官方 release notes 中公开列出的 MTC/BT 集成、底层 C++/Python API、仿真与遥操作支持;具体功能名称、发布时间和可用版本以官方 release notes 为准
9. cuMotion GPU 规划器插件——NVIDIA cuRobo 集成 MoveIt2;与 M09 呼应
10. Tesseract 对比——Command Language IR + Task Composer DAG vs MoveIt2+MTC 设计哲学
关键项目:
1. moveit/moveit2——精读 planning_pipeline.cpp pluginlib 加载链
2. moveit/moveit_task_constructor (~247★)——demo/src/pick_place_task.cpp
3. moveit/moveit2_tutorials——官方 pick-and-place 全流程
4. tesseract-robotics/tesseract——对比参考
5. PickNik MoveIt Pro 文档 (docs.picknik.ai)
关键论文: 1. Coleman et al., "Reducing the Barrier to Entry of Complex Robotic Software: a MoveIt! Case Study" (2014) 2. Gorner et al., "MoveIt Task Constructor for Task-Level Motion Planning" (ICRA 2019) 3. PickNik, "MoveIt Pro 9.x Release Notes" (2025-2026)
练习:
1. [A型] MTC 实现 Franka Panda 桌面 pick-and-place: CollisionObject + 8阶段 Stage + Gazebo 执行
2. [A型] 配置 OMPL→STOMP 链式管线,对比纯 OMPL 的路径质量和平滑度
3. [B型] 精读 planning_pipeline.cpp,画出 YAML→ClassLoader→dlopen→工厂→虚函数调用链
Part 6: 综合实战(第 72-73 周)¶
M01-M14 全部技能端到端贯通: URDF→Pinocchio→IK→碰撞→OMPL→Ruckig→ros2_control→BT.CPP→MoveIt2+MTC。
M15 Mini-Manip 综合项目——Franka Panda 从零 pick-and-place ⭐¶
一句话: 将 M01-M14 全部技能贯通为可展示 GitHub 仓库: Gazebo Harmonic 完整 pick-and-place + BT.CPP 错误恢复 + sim-to-real swap。
- 周数: 2 周 (第 72-73 周)
- 前置依赖: 完整版要求全部 M01-M14;Quick Start 演示版只要求完成 pick-and-place 所需子集(P01、M01、M03、M04、M05/M08/M11/M13 压缩先修、M07、M10、M12、M14)
- 共享标记: ⚪ 部分共享——项目模板可改编为腿足/移动操作实战
核心知识点:
1. 端到端系统架构——BT.CPP (10Hz) → MoveIt2+MTC → ros2_control (500Hz) → 硬件层 (Gazebo/mock/真机 Xacro swap)
2. 五阶段开发流程——环境搭建 (2天) → MTC pick-and-place (3天) → BT.CPP 编排+错误恢复 (2天) → 优化对比 (2天) → sim-to-real (1天)
3. MTC 八阶段流水线——CurrentState→OpenGripper→MoveToPreGrasp→Approach→Grasp→Lift→MoveToPlace→Retreat
4. BT.CPP 错误恢复——Fallback: 规划失败→RetryPlan (3次)→重新检测→ReturnHome
5. Groot2 调试——SqliteLogger 记录 + 回放定位失败节点
6. sim-to-real swap——launch 参数切换: sim_ignition / use_mock_hardware / 真机
7. 组件对比实验——IK (KDL→TRAC-IK→pick-ik) / 规划器 (RRT-Connect→BIT*) / 管线 (OMPL→STOMP) / 时间参数化 (TOTG→Ruckig)
8. 性能度量——端到端时间、规划时间、执行时间、成功率、关节电流平滑度
关键项目:
1. 本项目 GitHub 仓库——完整 ROS2 workspace + launch/config/BT XML/MTC task
2. franka_description + MoveIt Setup Assistant——URDF/SRDF 生成
3. moveit/moveit2_tutorials pick-and-place demo——起步参考
关键论文: 1. Gorner et al., "MoveIt Task Constructor" (ICRA 2019) 2. Colledanchise & Ogren, "Behavior Trees in Robotics and AI" (2018)
练习: 1. [综合] 按五阶段开发流程完成整个项目——本章即为一个大练习 2. [对比] IK/规划器/时间参数化量化对比报告,含表格数据和选型结论 3. [交付] GitHub 仓库: README (架构图+视频GIF) + 技术报告 (1-2页) + Groot2 日志
| 评估维度 | 及格 | 优秀 |
|---|---|---|
| 功能 | pick 1 个物体 | pick 3 个全部成功 |
| 错误恢复 | ReturnHome | Fallback 自动重试+重新检测 |
| sim-to-real | Gazebo+mock | +真机或详细部署指南 |
| 代码质量 | 能运行 | clang-format+clang-tidy+gtest |
| 性能对比 | 默认配置 | 量化对比报告 |
第二篇:力控与柔顺控制 (F系列, 28周)¶
完成本篇后你能做什么:实现工业级阻抗/导纳控制、变阻抗策略、全身力跟踪(WBC),掌握从经典力控到学习型力控的完整能力栈,能在Franka/UR上部署1kHz力控闭环。
从"位置控制的世界"跨入"力的世界"——阻抗控制、导纳控制、操作空间动力学、全身力跟踪(WBC)直至学习型力控,建立完整的力控能力栈。
Part 1: 力控基础 (8周)¶
F01 力控导论——阻抗/导纳二分法与力控哲学 ⭐¶
一句话:建立"位置控制→力控"的认知跨越,掌握阻抗/导纳二分法及力控四十年学术脉络。
- 周数:1 周
- 前置依赖:M01(Pinocchio 刚体动力学)、M05(QP/NLP 建模)、M11(实时 C++)
- 核心知识点:
- 力控三大认知跨越:几何精度→能量交换、开环执行→闭环交互、单体控制→接触物理
- 阻抗控制(impedance control)与导纳控制(admittance control)的对偶关系
- Hogan 1985 阻抗控制原始论文核心思想:不控力也不控位,控"关系"
- 因果性(causality)与端口行为:力因果 vs 速度因果
- 力传感器类型:关节力矩传感器 vs 六维腕力传感器 vs 皮肤触觉
- 阻抗方程 F = M_d x'' + D_d x' + K_d x_e 各参数物理含义
- 接触稳定性直觉:环境刚度 K_e 与期望阻抗 (M_d, D_d, K_d) 的耦合
- 力控历史脉络:Whitney 1977 → Hogan 1985 → Khatib 1987 → Chiaverini 1999
- 工业力控传感方案:Franka Emika / KUKA iiwa / UR 的力感知架构对比
- 关键项目:libfranka (DLR/Franka)、KUKA Sunrise.OS FRI、ros2_controllers force_torque_sensor_broadcaster
- 关键论文:Hogan 1985 "Impedance Control: An Approach to Manipulation"、Villani & De Schutter 2016 "Force Control" (Springer Handbook Ch.9)
- 练习:(A) 在 MuJoCo 中搭建弹簧-阻尼-质量单自由度系统,扫描 K_d/D_d 观察接触稳定性边界;(B) 阅读 libfranka joint_impedance_control 示例,标注控制律中每一行对应阻抗方程的哪一项
- 共享标记:⚪ 部分共享(导论概念可复用于腿足方向)
F02 数学基础——操作空间动力学、无源性与接触模型 ⭐¶
一句话:掌握力控的三大数学支柱——操作空间动力学(Lambda, mu, p)、端口无源性理论、接触力学(Hertz/Coulomb)。
- 周数:2 周
- 前置依赖:F01、M01(Pinocchio RNEA/ABA/Jacobian)、线性代数(特征值/SVD)
- 核心知识点:
- 操作空间惯量矩阵 Lambda = (J M^-1 J^T)^-1 推导与 Pinocchio 计算
- 操作空间科氏力 mu 与重力 p 的投影公式
- 动力学一致广义逆 J_bar = M^-1 J^T Lambda 及其与伪逆 J+ 的区别
- 零空间投影 N = I - J_bar J 及任务优先级框架
- 端口哈密顿系统与无源性(passivity):存储函数 V(x),供给率 s = y^T u
- 无源性定理在力控稳定性证明中的应用
- 接触模型:Hertz 弹性接触、Hunt-Crossley 阻尼、Coulomb 摩擦锥
- 接触冲击能量 1/2 Lambda v^2 与刚度选择的工程约束
- 奇异性处理:阻尼最小二乘(DLS) J+ 与任务空间缩减
- 对偶空间:力椭球与速度椭球的互补关系
- 关键项目:Pinocchio (INRIA/LAAS)、spatial_v2 (Featherstone MATLAB)、Drake (MIT/TRI)
- 关键论文:Khatib 1987 "A Unified Approach for Motion and Force Control"、Featherstone 2008 "Rigid Body Dynamics Algorithms" Ch.9
- 练习:(A) 用 Pinocchio 计算 7-DOF Panda 的 Lambda/mu/p 并验证 Lambda 在奇异位形附近的条件数爆炸;(B) 手推 2-DOF 平面臂的零空间投影矩阵 N,验证 N J_bar = 0
- 共享标记:✅ 全方向共享(操作空间动力学是所有力控方向的数学基础)
F03 经典力控算法——从 Whitney 到 Chiaverini ⭐¶
一句话:实现四大经典力控架构——直接力控、阻抗控制、并行力位混合控制、外环/内环结构,理解各自适用场景。
- 周数:2 周
- 前置依赖:F02、M12(ros2_control 概念)
- 核心知识点:
- 直接力控(explicit force control):PI 力环 + 力传感器反馈
- 关节空间阻抗控制:tau = M(q)x''_d + C(q,q')q'_d + g(q) - K_d(q-q_d) - D_d(q'-q'_d)
- 笛卡尔空间阻抗控制:tau = J^T(Lambda x''_d + mu + p - K_d e_x - D_d e'_x)
- Raibert-Craig 并行力位混合控制:选择矩阵 S 与约束帧概念
- Chiaverini 1999 外环力/内环运动的级联结构
- 阻抗控制 vs 导纳控制在有/无关节力矩传感器时的选择
- 重力补偿模式作为最简阻抗控制(K_d=0, D_d=0)
- 力控带宽分析:力环采样率、传感器噪声、执行器带宽的耦合
- 稳定性分析:接触/非接触切换时的能量注入问题
- 关键项目:libfranka cartesian_impedance_control 示例、mc_rtc (LAAS/JRL)、OROCOS KDL
- 关键论文:Raibert & Craig 1981 "Hybrid Position/Force Control"、Chiaverini et al. 1999 "Survey of Force Control"
- 练习:(A) 在 MuJoCo Panda 上实现关节空间阻抗并对比笛卡尔空间阻抗的擦拭任务表现;(B) 实现并行力位混合控制,z 轴力控/xy 平面位控完成打磨仿真
- 共享标记:⚪ 部分共享(经典算法在腿足/移动操作中变体复用)
F04 笛卡尔阻抗控制工程——libfranka / franka_ros2 / CRISP ⭐¶
一句话:在 Franka Panda 上实现工业级 1kHz 笛卡尔阻抗闭环,掌握 libfranka 回调与 CRISP 框架。
- 周数:2 周
- 前置依赖:F03、M11(PREEMPT_RT)、M12(ros2_control)
- 核心知识点:
- libfranka 实时回调架构:Robot::control(callback, ControllerMode)
- 笛卡尔阻抗控制律 C++ 实现:Eigen Map/Block 零拷贝热路径
- franka_ros2 与 ros2_control 集成:FrankaHardwareInterface 生命周期
- CRISP 框架架构与控制律模板化
- 实时安全编程:禁止堆分配、RealtimeBuffer、lock-free 通信
- 力矩限幅与安全监控:力矩/力/功率/速度多维度安全边界
- 姿态阻抗:e_R = 1/2 vee(R_d^T R - R^T R_d) 的 SO(3) 误差
- 零空间行为:零空间阻尼/零空间姿态保持的工程实现
- 关键项目:libfranka (Franka Emika)、franka_ros2、CRISP (Stanford ASL)、cartesian_controllers (FZI)
- 关键论文:Gaz et al. 2019 "Dynamic Identification of the Franka Emika Panda"、Leidner et al. 2023 "CRISP"
- 练习:(A) 基于 libfranka 回调实现笛卡尔阻抗控制器,令 Panda 接触桌面柔顺下压 5N;(B) 在 CRISP 中添加自定义擦拭技能,法向力维持 3+/-0.5N
- 共享标记:❌ 纯力控(Franka 专属工程)
F05 导纳控制与 ROS2 工程——ros2_controllers / FZI FDCC ⭐¶
一句话:掌握导纳控制(外环力->内环位置)工程实现,适用于无关节力矩传感器的工业机器人(UR/ABB)。
- 周数:1 周
- 前置依赖:F03、M12(ros2_control)
- 核心知识点:
- 导纳控制原理:Delta_x = (M_d s^2 + D_d s + K_d)^-1 F_ext -> 位置增量
- 导纳控制 vs 阻抗控制:因果性对偶、适用传感器、带宽差异
- ros2_controllers admittance_controller 源码架构与参数配置
- FZI cartesian_compliance_controller 实现
- 力传感器标定:零偏/灵敏度/交叉耦合补偿
- 重力补偿算法:末端工具重力辨识与在线补偿
- 导纳控制离散化与采样周期对稳定性的影响
- 多坐标系管理:传感器帧/合规帧/控制帧/世界帧变换链
- 工业部署:UR force_mode vs 导纳控制器对比
- 关键项目:ros2_controllers admittance_controller、FZI cartesian_controllers、UR ROS2 Driver
- 关键论文:Schindlbeck & Haddadin 2015 "Unified Passivity-Based Cartesian Force/Impedance Control"、Keemink et al. 2018 "Admittance Control for Physical HRI"
- 练习:(A) 配置 admittance_controller 驱动 UR5e 仿真完成力引导示教;(B) 对比阻抗与导纳控制在擦拭任务的力跟踪精度与带宽
- 共享标记:⚪ 部分共享(导纳控制在移动机器人力交互中广泛使用)
Part 2: 高级力控 (10周)¶
F06 变阻抗控制、无源性保证与碰撞安全 ⭐¶
一句话:掌握变阻抗(VIC)、能量罐/KB 条件无源性保证、动量观测器碰撞检测与 ISO 15066 安全。
- 周数:3 周
- 前置依赖:F04 或 F05、F02(无源性理论)
- 核心知识点:
- 变阻抗动机:任务自适应刚度(接近→柔软,接触→刚硬)
- 能量罐(energy tank)方法:虚拟能量存储保证无源性
- Kronander-Billard(KB)条件:K'_d 与 D_d 的耦合约束
- 广义动量观测器:r = K_I integral(tau - tau_model) dt
- 碰撞检测/隔离/分类/反应四阶段流程
- ISO 15066:2016 力/压强限值表与工程计算; ISO 10218-1/2:2011 工业机器人安全要求; 风险评估方法论 (ISO 12100)
- 安全额定监控功能(SRS/SLS/STO)在力控中的集成
- DA-VIL:RL + QP 变阻抗双臂操作(2024)
- 无源性保证的变阻抗学习(passivity-guaranteed VIC + RL, 2025)
- 生物力学自适应变阻抗:Bayesian 优化人机耦合(Zahedi 2025)
- 关键项目:libfranka collision detection、mc_rtc safety constraints、OpenLoong safety monitor
- 关键论文:Kronander & Billard 2016 "Stability Considerations for VIC"、Haddadin et al. 2017 "Robot Collisions: Detection, Isolation, Identification"
- 练习:(A) 实现能量罐方法,验证变阻抗切换中无源性不被破坏;(B) 实现动量观测器碰撞检测,碰撞后 <50ms 触发安全停止
- 共享标记:⚪ 部分共享(碰撞安全在所有人机协作场景通用)
F07 浮动基座全身控制(WBC)——TSID / mc_rtc / Pinocchio ⭐¶
一句话:从固定基座跨入浮动基座,掌握 TSID 和多任务优先级 QP 全身控制框架。
- 周数:4 周
- 前置依赖:F02(零空间投影)、F03、M05(QP 求解器)
- 核心知识点:
- 浮动基座动力学:虚拟 6-DOF 根关节、欠驱动约束
- 接触约束:摩擦锥线性化(多面体近似)、CoP/ZMP 约束
- TSID:min ||Jq'' + J'q' - x''_des||^2 s.t. 动力学 + 接触约束
- 任务优先级:严格优先级(null-space) vs 软优先级(weighted QP)
- mc_rtc 框架:FSM + QP 任务/约束 DSL、多机器人支持
- TSID (Pinocchio) 框架:Python/C++ API、任务定义、求解器接口
- 接触力分配(contact wrench distribution)
- QP 求解器实时性:qpOASES / OSQP / ProxQP 对比
- OpenLoong 人形 MPC+WBC 开源框架(2024)
- MuJoCo iLQR 全身 MPC 实时部署(2025)
- 关键项目:TSID (Pinocchio/LAAS)、mc_rtc (LAAS/JRL)、OpenLoong-Dyn-Control (中科院)、Drake (MIT/TRI)
- 关键论文:Del Prete et al. 2015 "Torque Control with High-Ratio Gear Boxes"、Bouyarmane et al. 2019 "QP for Multi-Contact WBC"
- 练习:(A) 用 TSID 实现 Talos 双足站立下手臂末端力跟踪;(B) 在 mc_rtc 中配置三优先级任务(平衡>手部位姿>正则化)并验证切换
- 共享标记:✅ 全方向共享(WBC 是腿足/人形/移动操作核心框架)
F08 腿足 MPC+WBC 联合力控——OCS2 / WBIC / legged_control ⭐¶
一句话:掌握腿足 MPC(轨迹优化) + WBC(力分配)联合框架,从四足到人形的力控部署。
- 周数:3 周
- 前置依赖:F07、M05(MPC/NLP)
- 核心知识点:
- 质心动力学(centroidal dynamics):SRBD 简化模型 vs 全身模型
- MPC 层:OCS2/Crocoddyl/acados 凸 MPC 生成接触力参考
- WBC 层:WBIC(MIT Cheetah)全身逆运动学+逆动力学 QP
- legged_control 框架:OCS2 + ros2_control 集成
- 步态调度(gait scheduler):接触序列与 MPC 时域窗口
- 地形自适应:足端力反馈 + 地面接触估计
- Whole-Body MPPI:采样式全身 MPC(2025)真实四足部署
- 人形全身力控:OpenLoong MPC+WBC 架构
- 力控与状态估计耦合:接触切换对 EKF 的影响
- 关键项目:legged_control (OCS2+WBC+ros2)、MIT Cheetah Software、OpenLoong-Dyn-Control、Whole-Body MPPI
- 关键论文:Kim et al. 2019 "Highly Dynamic Quadruped Locomotion via WBC"、Dantec et al. 2022 "WB-MPC for Biped Locomotion"
- 练习:(A) 在 legged_control 部署 Unitree A1 trot 步态,分析 MPC→WBC 力矩映射;(B) 修改步态从 trot 到 pace,观察 WBC 力分配变化
- 共享标记:✅ 全方向共享(腿足力控是具身智能基础能力)
Part 3: 学习型力控 (10周)¶
F09 学习型力控——RL+阻抗 / Diffusion Policy / SERL ⭐¶
一句话:将 RL/模仿学习与阻抗控制结合——变阻抗 RL、Diffusion Policy、SERL/HIL-SERL 接触丰富操作。
- 周数:5 周
- 前置依赖:F06(变阻抗)、RL 基础(PPO/SAC)、Isaac Lab 经验
- 核心知识点:
- 阻抗参数作为 RL 动作空间:(K_d, D_d) 替代直接力矩输出
- 变阻抗 RL 优势:安全底层柔顺 + 高层策略探索
- Diffusion Policy:条件去噪扩散生成动作序列、receding horizon
- 3D Diffusion Policy (DP3):点云观测 + 扩散策略
- Reactive Diffusion Policy(2025):慢-快视觉-触觉接触丰富操作
- DPPO (ICLR 2025):扩散策略的在线 RL 微调
- SERL 框架:sample-efficient RL + 自动重置 + 视觉奖励
- HIL-SERL (2024):人在环路 RL,显著提升双臂精密操作成功率(具体数值依任务与平台而定)
- RL-100 (2025):真实世界百万步 RL 训练工程实践
- 无源性保证变阻抗学习:RL 策略 + passivity 约束联合优化(2025)
- 关键项目:SERL (Berkeley RAIL)、Diffusion Policy (Columbia/Toyota)、Isaac Lab (NVIDIA)、DPPO
- 关键论文:Chi et al. 2023 "Diffusion Policy: Visuomotor Policy Learning via Action Diffusion"、Luo et al. 2024 "HIL-SERL: Precise Robotic Manipulation via Human-in-the-Loop RL"
- 练习:(A) 在 Isaac Lab 训练变阻抗 PPO 完成 peg-in-hole,对比固定 vs 学习阻抗成功率;(B) 复现 Diffusion Policy PushT 训练,分析扩散步数对动作平滑度影响
- 共享标记:⚪ 部分共享(RL 框架与腿足共享,力控动作空间设计为专属)
F10 综合实战——Mini-ForceControl 从零搭建 ⭐¶
一句话:从零搭建完整力控系统栈(Mini-ForceControl),整合 F01-F09 全部能力,仿真→实机闭环。
- 周数:5 周
- 前置依赖:F01-F09 全部
- 核心知识点:
- 系统架构:Pinocchio 动力学 + ros2_control 插件 + MuJoCo 仿真后端
- 控制器插件工厂:阻抗/导纳/力位混合三模式运行时切换
- 安全层:力矩限幅 + 动量观测器碰撞检测 + 能量罐无源性
- 变阻抗模块:固定参数/在线调参/RL 策略三种模式
- 力传感器抽象:F/T 标定 + 重力补偿 + 低通滤波流水线
- 任务定义 DSL:YAML 配置任务空间目标/约束帧/阻抗参数
- Sim2Real 迁移:MuJoCo → libfranka/UR 参数映射与 gap 处理
- 性能基准:1kHz 热路径延迟分析、力跟踪带宽测量
- 综合演示:擦拭(恒力)、装配(peg-in-hole)、力引导示教、碰撞安全停止
- 关键项目:本课程自建 Mini-ForceControl、libfranka examples、cartesian_controllers (FZI)、mc_rtc tutorials
- 关键论文:Siciliano & Villani 1999 "Robot Force Control"、Khatib et al. 2004 "Whole-Body Dynamic Behavior and Control"
- 练习:(A) 完成 Mini-ForceControl 全栈搭建,MuJoCo 中演示四个综合场景;(B) 撰写技术报告,对比自建系统与 mc_rtc/CRISP 架构差异
- 共享标记:❌ 纯力控(综合实战为本方向 capstone 项目)
F01-F10 总计 28 周 | Part 1 力控基础 8周 · Part 2 高级力控 10周 · Part 3 学习型力控 10周
第三篇:双臂协调与遥操作 (D系列, 24周)¶
完成本篇后你能做什么:设计并部署双臂协调操作系统,掌握遥操作理论(波变量/TDPA)与现代数据采集管线(ALOHA/UMI/LeRobot),能从零搭建双臂遥操作→模仿学习→自主执行的端到端闭环。
Part 1: 双臂协同理论与规划 (8周)¶
D01:双臂任务分类与协调运动学 ⭐¶
摘要:建立双臂协调的数学语言——从任务分类(Leader-Follower/Tightly-Coupled/Loosely-Coupled)到Augmented Jacobian、Relative Jacobian、Object-level运动学。
- 周数:2周
- 前置依赖:M01-M03(Pinocchio运动学/动力学/IK)、F01(阻抗控制概念)
- 核心知识点:
- 双臂任务分类学:Loose/Tight/Grasping三类及典型场景
- Augmented Jacobian J_aug(12×14):两臂独立拼接
- Relative Jacobian J_rel:描述两末端相对运动
- Object-level运动学:物体位姿与两臂末端的约束映射
- Uchiyama-Dauchez 绝对/相对坐标系(1988)
- 闭链运动学约束 h(q)=0 与约束Jacobian J_h
- 冗余分解:零空间投影 P = I - J_h⁺J_h
- 双臂工作空间分析与可操作度椭球
- Pinocchio双臂模型构建(URDF拼接/MultiBody)
- 双臂正/逆运动学求解器实现
- 关键项目:Pinocchio dual-arm model、MoveIt2 dual-arm SRDF配置、robosuite TwoArm环境
- 关键论文:Uchiyama & Dauchez 1988 (Symmetric kinematic formulation)、Caccavale et al. 2008 (Six-DOF impedance cooperative)
- 练习:A型——用Pinocchio搭建14-DOF双臂模型并计算J_aug/J_rel;B型——实现Object-level IK求解器
- 共享标记:⚪ 部分共享(运动学基础全方向通用,闭链约束为双臂专属)
D02:双臂协调规划——闭链约束与TAMP ⭐¶
摘要:在约束流形上做采样规划——从OMPL ConstrainedStateSpace到CBiRRT、Atlas-RRT,再到TAMP的双臂扩展。
- 周数:2周
- 前置依赖:D01、M07(采样规划/OMPL)、M14(MoveIt2)
- 核心知识点:
- 约束流形(Constraint Manifold)与切空间采样
- OMPL ConstrainedStateSpace:ProjectedStateSpace vs AtlasStateSpace vs TangentBundleStateSpace
- CBiRRT(Constrained Bi-directional RRT)算法原理
- Atlas-RRT:chart拼接与流形覆盖
- TSR(Task Space Region)约束表示
- 双臂协调路径规划:同步 vs 优先级 vs 协商
- 重规划与在线约束更新策略
- TAMP双臂扩展:PDDLStream + 双臂action primitives
- MoveIt2 dual-arm planning group配置与约束规划API
- 规划质量评估:路径长度/平滑度/约束违反度
- 关键项目:OMPL ConstrainedPlanningKinematicChain demo、MoveIt2 dual_arm_planning、Kingston OMPL tutorials
- 关键论文:Berenson et al. 2011 (CBiRRT/TSR)、Kingston et al. 2019 (Exploring implicit spaces for constrained sampling)
- 练习:A型——在OMPL中实现双臂闭链约束并用Atlas-RRT规划;B型——MoveIt2双臂搬运箱子的约束规划demo
- 共享标记:⚪ 部分共享(约束规划框架通用,闭链实例为双臂专属)
D03:双臂协调力控——Grasp Matrix与内力控制 ⭐¶
摘要:双臂共持物体时的力学核心——Grasp Matrix G、运动力/内力分解、协调阻抗控制与Object Impedance。
- 周数:2周
- 前置依赖:D01、F01-F04(力控导论/操作空间动力学/经典力控/阻抗工程)
- 核心知识点:
- Grasp Matrix G 定义与物理含义(接触wrench到物体wrench的映射)
- 运动力/内力分解:f_c = G⁺w_o + (I-G⁺G)f_int
- 内力(Internal Force)独立控制回路设计
- 协调阻抗控制:绝对阻抗(物体层) + 相对阻抗(内力层)
- Object Impedance Control:M_o ẍ_o + D_o ẋ_o + K_o x̃_o = f_ext
- 自适应混合阻抗控制处理物体不确定性
- 双臂QP-WBC:在已有WBC框架中加Grasp Matrix约束行
- 内力优化:防止挤压脆性工件/防止滑脱
- DA-VIL框架:RL+变阻抗的双臂自适应操作
- 双臂力/力矩传感器标定与信号融合
- 关键项目:Caccavale cooperative impedance实现、robosuite TwoArmHandover/TwoArmPegInHole、mc_rtc dual-arm WBC
- 关键论文:Uchiyama & Dauchez 1988 (Master-slave协调力控)、Wimboeck et al. 2012 (Biomimetic object impedance)
- 练习:A型——实现Grasp Matrix计算与f_int分解验证(2D平面双臂);B型——双臂协调阻抗控制仿真(MuJoCo搬运)
- 共享标记:❌ 纯双臂专属
D04:双臂学习——ACT/ALOHA底层分析与Bimanual RL ⭐¶
摘要:从ACT到RDT-1B,剖析双臂模仿学习与强化学习的底层控制接口与数据流。
- 周数:2周
- 前置依赖:D01-D03、续篇VLA概念(ACT/Diffusion Policy基础)
- 核心知识点:
- ACT架构剖析:CVAE + Transformer、action chunking机制
- ALOHA 2硬件改进:低摩擦导轨、重力补偿、MuJoCo系统辨识模型
- ALOHA Unleashed/DemoStart:复杂双臂任务的数据+策略升级
- RDT-1B(1.2B参数):最大双臂Diffusion Foundation Model,128维统一action
- 双臂模仿学习数据采集要点:示教质量/一致性/多视角
- Bimanual RL环境:robosuite TwoArm、Isaac Lab双臂、Bi-DexHands
- 双臂RL奖励设计:协调奖励 vs 独立奖励 vs 物体级奖励
- 策略层与底层控制的接口:关节位置/末端位姿/阻抗参数
- Sim-to-Real在双臂场景的特殊挑战(接触动力学gap)
- Mobile ALOHA:移动底盘+双臂全身遥操作与学习
- 关键项目:ACT(tonyzhaozh/aloha)、RDT-1B(thu-ml/RoboticsDiffusionTransformer)、robosuite双臂环境
- 关键论文:Zhao et al. 2023 (Learning Fine-Grained Bimanual Manipulation / ACT)、Liu et al. 2024 (RDT-1B)
- 练习:A型——在robosuite TwoArmLift训练ACT并分析chunk长度影响;B型——RDT-1B zero-shot双臂迁移实验
- 共享标记:⚪ 部分共享(ACT/Diffusion通用,双臂action space为专属)
Part 2: 遥操作理论与数据采集 (8周)¶
D05:遥操作导论——二端口网络与透明度 ⭐¶
摘要:从单端口力控跨入双端口网络——二端口阻抗/导纳矩阵、透明度定义、四通道架构与Llewellyn稳定准则。
- 周数:2周
- 前置依赖:F01-F03(阻抗/导纳基础)、F02(无源性理论)
- 核心知识点:
- 遥操作系统架构:操作者-主端-通信-从端-环境
- 二端口网络模型:阻抗矩阵Z、导纳矩阵Y、混合矩阵H
- 透明度(Transparency):Z_transmitted = Z_environment的理想目标
- 四通道架构:位置-位置/力-位置/力-力/四通道对比
- Llewellyn绝对稳定准则与无条件稳定
- 透明度-稳定性Trade-off的本质原因
- Lawrence 1993透明度优化框架
- 操作者模型(Human Operator Model)与环境建模
- 性能指标:位置跟踪误差/力跟踪误差/Z-width
- ROS2遥操作通信架构基础(DDS延迟分析)
- 关键项目:dVRK(da Vinci Research Kit)遥操作框架、OpenTeleVision
- 关键论文:Lawrence 1993 (Stability and transparency)、Hannaford 1989 (Design framework for teleoperators)
- 练习:A型——推导四通道H矩阵并验证Llewellyn准则;B型——1-DOF主从遥操作仿真分析透明度-稳定性trade-off
- 共享标记:❌ 纯遥操作专属
D06:无源通信理论——散射变量与波变量 ⭐¶
摘要:时延通道上的无源性保证——传输线类比、散射/波变量变换,理解"为什么时延不再破坏稳定性"。
- 周数:2周
- 前置依赖:D05、F02(无源性/端口Hamilton)
- 核心知识点:
- 时延对稳定性的破坏:能量生成与不稳定机制
- 传输线类比:无损传输线的物理直觉
- 散射变量:Niemeyer & Slotine 1991
- 波变量变换:力/速度 → 入射波/反射波
- 特征阻抗b的选择(响应速度 vs 稳定裕度)
- 常时延 vs 变时延:波变量在变时延下的能量泄漏
- 波变量补偿器:2025年三通道最新设计
- 位置漂移(Position Drift)问题与补偿
- 多自由度波变量扩展(6-DOF力/速度)
- C++实现:波变量编码/解码器与网络传输模块
- 关键项目:MIT NML wave variable实现、DLR Telepresence wave-based controller
- 关键论文:Niemeyer & Slotine 1991 (Stable adaptive teleoperation)、Anderson & Spong 1989 (Bilateral control with time delay)
- 练习:A型——1-DOF波变量遥操作注入不同时延验证稳定性;B型——对比有/无波变量的能量观测与系统响应
- 共享标记:❌ 纯遥操作专属
D07:TDPA与工程实现——能量观测器与可变阻尼 ⭐¶
摘要:Time Domain Passivity Approach——时域实时监测能量、按需注入阻尼,无需已知时延上界。
- 周数:2周
- 前置依赖:D05-D06
- 核心知识点:
- TDPA核心思想:能量观测 → 被动性违反检测 → 可变阻尼注入
- 能量观测器(Passivity Observer)离散实现
- 可变阻尼器(Passivity Controller)设计
- TDPA vs 波变量:自适应 vs 确定性、平滑度 vs 鲁棒性
- 四通道TDPA架构(Artigas et al.)
- TDPA在变时延、丢包场景下的鲁棒性
- 混合方法:波变量+TDPA结合(2024-2025最新)
- ROS2/ros2_control集成:1kHz力控+通信时延处理
- 工程实践:网络QoS、UDP vs TCP、DDS延迟测量
- 力反馈手术机器人案例:dVRK无源性保证
- 关键项目:dVRK TDPA controller、Ryu & Hannaford TDPA参考实现
- 关键论文:Ryu et al. 2004 (Time domain passivity control)、Artigas et al. 2016 (Bilateral control with TDPA)
- 练习:A型——实现离散能量观测器在1-DOF遥操作中验证TDPA;B型——ROS2双节点遥操作demo对比波变量/TDPA
- 共享标记:❌ 纯遥操作专属
D08:运动映射与遥操作数据采集——Retargeting/ALOHA/GELLO/UMI ⭐¶
摘要:现代遥操作范式转变——从力反馈透明度到数据采集效率,覆盖ALOHA/GELLO/UMI/Bunny-VisionPro/AnyTeleop。
- 周数:2周
- 前置依赖:D05(遥操作基础)、D04(双臂学习概念)
- 核心知识点:
- 运动映射(Motion Retargeting):关节空间/任务空间/混合映射
- 手部姿态重定向:人手 → 灵巧手/夹爪的实时retargeting
- ALOHA/ALOHA 2数据采集管线:同构主从 + action/observation recording
- GELLO:<$300同构遥操作设备,30min组装,直觉式关节映射
- UMI:手持夹爪+GoPro,无机器人示教;UMI on Legs零样本跨具身部署
- Bunny-VisionPro:Vision Pro追踪+力触觉反馈+双臂灵巧手(IROS 2025)
- AnyTeleop:统一视觉遥操作框架,支持多臂/多手/仿真/实物
- 数据质量控制:示教一致性评估、异常轨迹检测、数据增强
- 遥操作系统选型决策树:任务复杂度 × 成本 × 力反馈需求
- 从遥操作到自主:人在环(HitL)渐进退出策略
- 关键项目:tonyzhaozh/aloha、wuphilipp/gello_software、real-stanford/universal_manipulation_interface、Dingry/BunnyVisionPro
- 关键论文:Chi et al. 2024 (Universal Manipulation Interface)、Qin et al. 2023 (AnyTeleop)
- 练习:A型——搭建GELLO采集50条双臂抓取数据训练ACT baseline;B型——对比ALOHA vs UMI采集管线的数据效率
- 共享标记:⚪ 部分共享(retargeting/数据采集与具身智能方向共享)
Part 3: 系统集成与综合实战 (8周)¶
D09:双臂MoveIt2/ros2_control系统集成 ⭐¶
摘要:将D01-D08理论落地为可部署ROS2双臂系统——SRDF双臂组、双controller同步、遥操作通信栈集成。
- 周数:4周
- 前置依赖:D01-D08全部、M14(MoveIt2基础)
- 核心知识点:
- 双臂URDF/SRDF设计:planning group拆分(左/右/双臂组)
- ros2_control双臂硬件接口:两个HardwareInterface同步调度
- 双Controller Manager:JointTrajectoryController×2 + 协调层
- MoveIt2 dual-arm planning pipeline:约束规划+同步执行
- 自碰撞矩阵(ACM)配置与实时更新
- 遥操作通信栈:ROS2 DDS QoS + 时延补偿节点
- 实时性保证:RT-Linux + priority调度 + 1kHz控制环
- 双臂状态机(BehaviorTree.CPP):任务级协调逻辑
- 多传感器融合:力传感器×2 + 相机×3 + 触觉
- 调试工具链:rqt + PlotJuggler + Foxglove双臂可视化
- 关键项目:MoveIt2 dual-arm examples、ros2_control双臂模板、BehaviorTree.CPP dual-arm FSM
- 关键论文:Coleman et al. 2014 (MoveIt!)、Chitta et al. 2017 (ros_control framework)
- 练习:A型——配置完整双臂MoveIt2 pipeline实现约束规划demo;B型——ros2_control双臂同步力控节点
- 共享标记:⚪ 部分共享(MoveIt2/ros2_control通用,双臂配置专属)
D10:综合实战——Mini-DualArm从零搭建 ⭐¶
摘要:全D系列知识整合——从硬件选型到遥操作采集到策略训练到自主执行的端到端闭环。
- 周数:4周
- 前置依赖:D01-D09全部
- 核心知识点:
- 硬件选型与预算:双臂平台(ALOHA 2/双UR5/双xArm)对比
- 遥操作设备选型:GELLO / ALOHA leader / VR手柄
- ROS2系统架构设计:节点图/通信拓扑/QoS策略
- 双臂标定:手眼标定×2 + 基座相对位姿标定
- 协调规划模块:D02闭链约束规划集成MoveIt2
- 协调力控模块:D03 Object Impedance集成ros2_control
- 遥操作数据采集模块:D08管线 + 数据质量自动评估
- 策略训练:ACT/Diffusion Policy + 双臂action空间处理
- 端到端集成测试:感知→规划→控制→学习联调
- 性能基准:成功率/完成时间/内力精度/遥操作透明度
- 关键项目:Mini-DualArm完整系统(课程产出)、ALOHA 2开源硬件复现、LeRobot双臂训练
- 关键论文:Zhao et al. 2024 (ALOHA 2)、Ha et al. 2024 (UMI on Legs)
- 练习:A型——完成Mini-DualArm搭建并演示3个双臂协调任务;B型——技术报告对比自建系统与ALOHA 2性能
- 共享标记:❌ 纯双臂/遥操作专属(系统集成方法论通用)
第四篇:前沿专题规划草案 (12-16 周)¶
本篇聚焦 2023-2026 年机械臂操作领域最活跃的研究方向,每章可独立选修。 当前 F11/F12/D11/D12/M16 均为第四篇规划草案,尚未拆分独立文件;建议至少完成第一至三篇核心内容后再进入。
F11 触觉感知与力控融合(规划草案,尚未拆分独立文件) ⭐⭐⭐⭐¶
一句话 — 从"盲抓"到"有感觉的手":视觉-触觉多模态闭环操作。
| 属性 | 说明 |
|---|---|
| 周数 | 2-3 周 |
| 前置依赖 | F01 (力控导论)、F04 (笛卡尔阻抗工程)、D08 (数据采集) |
核心知识点
- 触觉传感原理:光学凝胶型 (GelSight)、电容阵列型、压电薄膜型
- GelSight Mini 硬件架构:弹性体 + LED + 鱼眼相机,2D/3D 触觉图重建
- DIGIT / Digit 360 传感器:Meta AI 小型化设计,18+ 感知特征通道
- AllSight 全向触觉传感器:透明壳体 + 内部相机阵列
- 触觉图像预处理:光度立体法 (Photometric Stereo)、法线场重建、接触面积分割
- 触觉-视觉融合网络:双流编码器 + Cross-Attention 融合策略
- 滑动检测与抓力自适应:光流估计 → 切向力推断 → 闭环力调节
- 触觉伺服 (Tactile Servoing):基于触觉误差的雅可比估计与控制
- 触觉基础模型:大规模触觉预训练 (Tactile Foundation Models, 2025)
- 触觉 Sim-to-Real:TACTO / Taxim 触觉仿真器,域随机化策略
- 触觉在精密装配中的应用:Peg-in-Hole、柔性物体操作
关键项目
| 项目 | 难度 |
|---|---|
| 用 GelSight Mini 采集触觉数据集并训练接触分类器 | ⭐⭐ |
| 基于 DIGIT 的滑动检测 → 自适应抓力闭环控制 | ⭐⭐⭐ |
| 视觉-触觉融合抓取:双流网络 + 力控策略 | ⭐⭐⭐⭐ |
| 触觉引导的 Peg-in-Hole 精密装配 (仿真 + 实物) | ⭐⭐⭐⭐ |
关键论文
- Lambeta et al., "DIGIT: A Novel Design for a Low-Cost Compact High-Resolution Tactile Sensor" (2020)
- Wang et al., "GelSight Wedge: Measuring High-Resolution 3D Contact Geometry" (2021)
- Higuera et al., "Tactile Foundation Models" (2025)
- Yang et al., "Digit 360: Fingertip-Shaped Tactile Sensor with 18+ Sensing Features" (2024)
练习
- 在 TACTO 仿真器中渲染不同纹理的触觉图像,训练 CNN 分类器区分材质
- 用 GelSight Mini (或仿真替代) 实现一个滑动检测节点,发布 ROS2 话题
- 设计视觉-触觉联合策略,在仿真中完成易碎物体 (鸡蛋) 的拾放任务
F12 接触隐式优化与可微仿真(规划草案,尚未拆分独立文件) ⭐⭐⭐⭐¶
一句话 — 让优化器"穿透"接触不连续性:可微物理引擎驱动的轨迹优化与策略学习。
| 属性 | 说明 |
|---|---|
| 周数 | 2-3 周 |
| 前置依赖 | M08 (轨迹优化)、M05 (QP/NLP 建模)、M01 (Pinocchio 动力学)、F07 (WBC/QP 基础) |
核心知识点
- 接触力学基础回顾:Signorini 条件、Coulomb 摩擦锥、互补约束 (LCP/NCP)
- 接触隐式轨迹优化 (Contact-Implicit TO):将接触模式作为优化变量而非预设
- 互补约束松弛方法:Fischer-Burmeister 函数、对数障碍松弛
- Drake Hydroelastic 接触模型:连续可微的压力场接触,适合梯度优化
- 可微仿真引擎对比:MuJoCo (隐式微分)、Dojo、DiffTaichi、Warp
- 逆动力学轨迹优化 (IDTO):Drake 中 contact-implicit MPC 的高效实现
- 通过接触的梯度传播:隐函数定理 vs. 随机平滑 vs. 解析条件
- 可微仿真用于系统辨识:从真实轨迹反推摩擦系数、刚度参数
- 可微仿真用于策略优化:短视界可微展开 + 长视界 RL 混合
- 接触隐式 MPC 实时化:ACAL-iLQR、GPU 并行化策略
- 多接触运动发现:无预定义接触序列的四足/双足步态生成
关键项目
| 项目 | 难度 |
|---|---|
| 在 Drake 中实现 Hydroelastic 接触下的球-平面弹跳轨迹优化 | ⭐⭐ |
| 用 MuJoCo 可微模式做简单推物任务的系统辨识 | ⭐⭐⭐ |
| Contact-Implicit TO 规划机械臂抓取-放置全流程 | ⭐⭐⭐⭐ |
| 可微仿真 + PPO 混合训练:学习接触丰富的操作策略 | ⭐⭐⭐⭐ |
| 接触隐式 MPC 实时控制仿真四足行走 | ⭐⭐⭐⭐⭐ |
关键论文
- Posa et al., "A Direct Method for Trajectory Optimization Through Contact" (IJRR 2014)
- Howell et al., "Dojo: A Differentiable Physics Engine for Robotics" (2022)
- Kurtz et al., "Inverse Dynamics Trajectory Optimization for Contact-Implicit MPC" (IJRR 2025)
- Kim et al., "Contact-Implicit Model Predictive Control for Quadruped" (IJRR 2025)
练习
- 在 Drake 中复现一个简单的 contact-implicit 优化示例 (如砖块翻转)
- 比较 MuJoCo 与 Drake 在同一推物场景下的梯度精度与求解速度
- 将可微仿真集成到 PyTorch 训练循环,端到端学习一个拨物策略
D11 现代遥操作数据管线(规划草案,尚未拆分独立文件) ⭐⭐⭐¶
一句话 — 从手柄到 VR 到手势:构建高效、可扩展的机器人示教数据工厂。
| 属性 | 说明 |
|---|---|
| 周数 | 2 周 |
| 前置依赖 | D08 (遥操作数据采集)、F04 (笛卡尔阻抗/标定) |
核心知识点
- 遥操作设备谱系:SpaceMouse → 双臂主从 → VR 手柄 (Quest) → 手套/手势
- DROID 数据集架构:Franka Panda + 双 Zed2 + 腕部 Zed Mini + Quest 2 遥操
- ALOHA / Mobile ALOHA 系统:低成本双臂主从遥操作,全身移动操作
- LeRobot 数据管线:Parquet + MP4 标准格式、Hugging Face Hub 托管与流式加载
- LeRobotDataset v3.0:支持 OXE / DROID 大规模数据集的高效读写
- 数据质量控制:异常轨迹检测、自动标注成功/失败、人工审核流程
- 数据增强与扩展:DemoGen 自动生成示教、视角随机化、动作噪声注入
- Open X-Embodiment (OXE):跨具身统一数据格式,RT-X 数据联盟
- 多模态数据对齐:时间戳同步、相机-力-关节数据融合
- 数据集规模与策略性能的 Scaling Law:从 50 条到 100k 条的效果变化
关键项目
| 项目 | 难度 |
|---|---|
| 搭建 LeRobot 本地开发环境,加载 droid_100 数据集并可视化 | ⭐⭐ |
| 用 Quest 2 + ROS2 构建单臂遥操作系统并采集 50 条轨迹 | ⭐⭐⭐ |
| 将自采数据转为 LeRobotDataset v3 格式并上传 Hub | ⭐⭐⭐ |
| 实现自动质量筛选脚本:成功率标注 + 异常轨迹过滤 | ⭐⭐⭐ |
关键论文
- Khazatsky et al., "DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset" (RSS 2024)
- Zhao et al., "Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware" (RSS 2023)
- Open X-Embodiment Collaboration, "Open X-Embodiment: Robotic Learning Datasets and RT-X Models" (2024)
练习
- 用 LeRobot CLI 下载一个子集,编写 DataLoader 并用 matplotlib 可视化动作分布
- 对比不同数据量 (10/50/200 条) 下训练 ACT 策略的成功率变化
- 为自己的机械臂设计一套最小遥操作方案 (成本 < 5000 元),撰写硬件 BOM
D12 基础模型与操作策略(规划草案,尚未拆分独立文件) ⭐⭐⭐⭐¶
一句话 — VLA + Diffusion Policy:用预训练大模型 + 扩散生成驱动通用操作能力。
| 属性 | 说明 |
|---|---|
| 周数 | 3-4 周 |
| 前置依赖 | D04 (双臂学习/ACT)、F09 (学习型力控/Diffusion Policy)、规划草案 D11 (数据管线) |
核心知识点
- VLA 范式总览:Vision-Language-Action 模型 = VLM 骨干 + 动作解码头
- RT-2 / RT-2-X:PaLM-E 驱动的 VLA,将动作离散化为语言 token
- Octo:开源通用策略,基于 Transformer 的多任务多具身模型
- OpenVLA (7B):Llama2 + DINOv2 + SigLIP,970k 真实示教,开源可微调
- OpenVLA-OFT:25-50x 推理加速,支持多视角输入与双臂控制
- pi0 / pi0.5 (Physical Intelligence):Flow Matching 连续动作输出,50Hz 控制
- Gemini Robotics:Gemini 2.0 VLM 扩展到物理世界,折纸级灵巧操作 8b. pi0.5 (Physical Intelligence, 2025):开放世界泛化, 异构多机器人协同训练, 厨房/卧室长horizon任务 8c. SpatialVLA (RSS 2025):3D自我中心位置编码 + 自适应空间动作网格, 1.1M真实episode训练 8d. 3DS-VLA (CoRL 2025):3D空间感知VLA, 多任务操作泛化
- Diffusion Policy:条件去噪扩散过程生成动作序列,比 SOTA 平均提升 46.9%
- 3D Diffusion Policy (DP3):点云 3D 表征 + 扩散策略,10 条示教即可泛化
- Improved DP3 / FP3:人形操作泛化 + 3D 基础策略
- VLA 微调实践:LoRA / QLoRA 在单 GPU 上微调 OpenVLA 到目标任务
- 策略蒸馏与部署:大模型 → 小模型蒸馏、On-Device Diffusion Transformer
关键项目
| 项目 | 难度 |
|---|---|
| 在 LeRobot 中加载预训练 Diffusion Policy 并在仿真任务上评估 | ⭐⭐ |
| 用 OpenVLA 在自定义任务上做 LoRA 微调 (单 GPU) | ⭐⭐⭐ |
| 复现 3D Diffusion Policy (DP3):点云输入 + 仿真操作 | ⭐⭐⭐⭐ |
| 部署 pi0 风格 Flow Matching 策略到真实机械臂 | ⭐⭐⭐⭐ |
| 多模型对比实验:ACT vs. Diffusion Policy vs. OpenVLA | ⭐⭐⭐⭐ |
关键论文
- Chi et al., "Diffusion Policy: Visuomotor Policy Learning via Action Diffusion" (RSS 2023)
- Ze et al., "3D Diffusion Policy: Generalizable Visuomotor Policy Learning" (RSS 2024)
- Kim et al., "OpenVLA: An Open-Source Vision-Language-Action Model" (2024)
- Black et al., "pi0: A Vision-Language-Action Flow Model" (Physical Intelligence, 2024)
- Google DeepMind, "Gemini Robotics: Bringing AI into the Physical World" (2025)
练习
- 阅读 OpenVLA 代码,画出从图像输入到动作输出的完整数据流图
- 在 SIMPLER 基准上对比 RT-2-X、Octo、OpenVLA 的 zero-shot 成功率
- 用 Diffusion Policy 训练 Push-T 任务,可视化去噪过程中动作轨迹的演变
M16 灵巧操作与多指手(规划草案,尚未拆分独立文件) ⭐⭐⭐⭐¶
一句话 — 从平行夹爪到五指手:高自由度灵巧抓取与操内手操作。
| 属性 | 说明 |
|---|---|
| 周数 | 3-4 周 |
| 前置依赖 | M01 (Pinocchio 动力学)、F09 (学习型力控/RL)、规划草案 F11 (触觉, 推荐) |
核心知识点
- 多指手硬件谱系:Shadow Hand → Allegro → LEAP Hand (v1/v2) → 软体手
- LEAP Hand 设计哲学:低成本 (~$2k-3k)、高灵巧、3D 打印 + 直驱电机
- 灵巧手运动学:多指正/逆运动学、接触雅可比、力闭合 (Force Closure)
- 抓取规划基础:DexGraspNet 大规模抓取标注、GraspNet 基准
- DexGraspNet 2.0:杂乱场景灵巧抓取,427M 标签,90.7% 真实成功率
- UniDexGrasp++:几何感知课程学习 + 通才-专家迭代,78.2% 新物体泛化
- Sim-to-Real 灵巧操作:大规模并行 RL (Isaac Gym) + 域随机化
- 操内手操作 (In-Hand Manipulation):手内物体旋转、重定位、工具使用
- 人手动作重定向 (Retargeting):从人手视觉/Mocap 到机器人手的映射
- 触觉在灵巧操作中的作用:多指触觉反馈 → 稳定抓取与滑动补偿
- 语言引导灵巧抓取:Grasp-as-You-Say,自然语言指定抓取方式
关键项目
| 项目 | 难度 |
|---|---|
| 在 Isaac Gym 中加载 LEAP Hand 模型,实现基本关节控制 | ⭐⭐ |
| 用 DexGraspNet 数据训练抓取姿态生成网络 (CVAE) | ⭐⭐⭐ |
| Sim-to-Real 灵巧抓取:Isaac Gym 训练 → 真实 LEAP Hand 部署 | ⭐⭐⭐⭐ |
| 操内手旋转任务:PPO + 触觉奖励,仿真训练并迁移 | ⭐⭐⭐⭐⭐ |
关键论文
- Shaw et al., "LEAP Hand: Low-Cost, Efficient, and Anthropomorphic Hand" (RSS 2023)
- Wang et al., "DexGraspNet 2.0: Generative Dexterous Grasping in Cluttered Scenes" (CoRL 2024)
- Xu et al., "UniDexGrasp++: Improving Dexterous Grasping Policy Learning" (ICCV 2023)
- Wei et al., "Grasp as You Say: Language-guided Dexterous Grasp Generation" (NeurIPS 2024)
- DexCap (RSS 2024):便携式动捕→灵巧手策略, SLAM+EM追踪实现手部运动重定向
- AnyRotate (CoRL 2024):重力无关多轴操内手旋转, 稠密触觉策略sim-to-real, 首个手倒置旋转系统
- RotateIt (CoRL 2023):视触觉Transformer指尖多轴旋转
练习
- 对比 Allegro Hand 与 LEAP Hand 的运动学结构,计算各自的可操作度椭球
- 用 DexGraspNet 数据集可视化不同物体类别的抓取姿态分布
- 在 Isaac Gym 中实现 LEAP Hand PPO 训练,完成一个立方体旋转任务
附录¶
附录 A:核心项目总表¶
全书所有章节项目的统一索引,按难度分级。包含项目名称、所属章节、预计耗时、 所需硬件/软件、前置依赖,以及推荐完成顺序路线图。提供"最小路径"与"完整路径"。
附录 B:论文阅读路线图¶
按主题分组的论文阅读清单 (60-80 篇),分三层:必读经典、重要扩展、前沿追踪。 每篇标注阅读优先级、预计时间、对应章节及 1-2 句核心贡献摘要。
附录 C:硬件选型指南¶
面向不同预算的机械臂学习平台选型建议。涵盖机械臂、夹爪/灵巧手、相机、 触觉传感器、计算平台的型号对比、价格区间与适用场景矩阵。
附录 D:数学速查¶
核心数学工具速查卡:李群/李代数公式、四元数运算、雅可比推导模板、 最优控制推导 (LQR/iLQR)、扩散模型数学 (DDPM/Flow Matching)、KKT 条件。
附录 E:方向交叉地图¶
六大模块与相邻领域 (CV、NLP/LLM、RL、控制理论、机械设计) 的知识交叉关系图。 标注每个交叉点的推荐学习资源,帮助读者根据自身背景规划个性化学习路径。