附录_子课程一_机械臂基础
本文档属于 Robotics Tutorial 项目,作者:Pengfei Guo,达妙科技。采用 CC BY 4.0 协议,转载请注明出处。
子课程一附录(机械臂基础 P01-P02 + M01-M15)
【机械臂】附录 A:机械臂方向核心项目清单(按类别组织)
附录不维护独立 Stars 快照;核心 C++ 项目可参考调研报告主表,其他项目以项目主页为准(截至 2026 年 4 月),表内仅保留项目索引。
A.1 综合运动规划框架
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| MoveIt 2 |
moveit/moveit2 |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★★★ |
M14 |
| OMPL |
ompl/ompl |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★★★ |
M07 |
| VAMP |
KavrakiLab/vamp |
见调研报告/项目主页 |
C++20 |
Apache-2.0 |
★★★★☆ |
M09 |
| cuRobo |
NVlabs/curobo |
见调研报告/项目主页 |
C++/CUDA |
Apache-2.0(本体;资产另审) |
★★★★☆ |
M09 |
| Tesseract |
tesseract-robotics/tesseract |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★★ |
M08 |
| Tesseract Planning |
tesseract-robotics/tesseract_planning |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★☆ |
M08 |
| MoveIt Task Constructor |
moveit/moveit_task_constructor |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★★☆ |
M14 |
| OpenRAVE |
rdiankov/openrave |
见调研报告/项目主页 |
C++11 |
LGPL-3 |
★★★☆☆ |
M03(IKFast) |
A.2 动力学与运动学库
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| Pinocchio |
stack-of-tasks/pinocchio |
见调研报告/项目主页 |
C++17/20/23 |
BSD-2 |
★★★★★ |
M01 |
| Drake |
RobotLocomotion/drake |
见调研报告/项目主页 |
C++20 |
BSD-3 |
★★★★★ |
M02 |
| Crocoddyl |
loco-3d/crocoddyl |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★★★ |
M02(反例) |
| RBDL |
rbdl/rbdl |
见调研报告/项目主页 |
C++11 |
zlib |
★★★★☆ |
M02 |
| DART |
dartsim/dart |
见调研报告/项目主页 |
C++17 |
BSD-2 |
★★★★☆ |
M02 |
| KDL |
orocos/orocos_kinematics_dynamics |
见调研报告/项目主页 |
C++11 |
LGPL-2.1 |
★★★☆☆ |
M02, M03 |
| iDynTree |
robotology/idyntree |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★☆☆ |
M02 |
| OCS2 |
leggedrobotics/ocs2 |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★★★ |
M06(腿足预留) |
| Aligator |
Simple-Robotics/aligator |
见调研报告/项目主页 |
C++17 |
BSD-2 |
★★★★☆ |
M06(腿足预留) |
A.3 逆运动学求解器
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| TRAC-IK |
traclabs/trac_ik(Bitbucket),ROS2 aprotyas/trac_ik |
见调研报告/项目主页 |
C++14 |
BSD-3 |
★★★★☆ |
M03 |
| IKFast |
在 rdiankov/openrave 中 |
见调研报告/项目主页 |
C++11 |
LGPL-3 |
★★★★★ |
M03 |
| ik_geo |
Verdant-Robotics/ik_geo / rpiRobotics/ik-geo |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★☆ |
M03 |
| pick-ik |
PickNikRobotics/pick_ik |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★★☆ |
M03 |
| BioIK |
PickNikRobotics/bio_ik / TAMS-Group/bio_ik |
见调研报告/项目主页 |
C++14 |
BSD-3 |
★★★★☆ |
M03 |
| opw_kinematics |
Jmeyer1292/opw_kinematics |
见调研报告/项目主页 |
C++11 |
Apache-2.0 |
★★★★☆ |
M03 |
A.4 碰撞检测库
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| FCL |
flexible-collision-library/fcl |
见调研报告/项目主页 |
C++14 |
BSD-3 |
★★★★☆ |
M04 |
| HPP-FCL / Coal |
coal-library/coal |
见调研报告/项目主页 |
C++17 |
BSD-2 |
★★★★☆ |
M04 |
| Bullet |
bulletphysics/bullet3 |
见调研报告/项目主页 |
C++11 |
zlib |
★★★☆☆ |
M04, M08(TrajOpt CCD) |
| libccd |
danfis/libccd |
见调研报告/项目主页 |
C99 |
BSD |
★★★☆☆ |
M04(GJK 学习) |
A.5 优化求解器
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| OSQP |
osqp/osqp |
见调研报告/项目主页 |
C99 |
Apache-2.0 |
★★★★★ |
M05 |
| osqp-eigen |
robotology/osqp-eigen |
见调研报告/项目主页 |
C++14 |
BSD-3 |
★★★★★ |
M05 |
| ProxQP (ProxSuite) |
Simple-Robotics/proxsuite |
见调研报告/项目主页 |
C++17 |
BSD-2 |
★★★★★ |
M05 |
| qpOASES |
coin-or/qpOASES |
见调研报告/项目主页 |
C++11 |
LGPL-2.1 |
★★★★☆ |
M05(历史参考) |
| HPIPM |
giaf/hpipm |
见调研报告/项目主页 |
C |
BSD-2 |
★★★★☆ |
M05(via acados) |
| PIQP |
PREDICT-EPFL/piqp |
见调研报告/项目主页 |
C++14 |
BSD-2 |
★★★★☆ |
M05(header-only) |
| Ipopt |
coin-or/Ipopt |
见调研报告/项目主页 |
C++ |
EPL-2.0 |
★★★★★ |
M05 |
| ifopt |
ethz-adrl/ifopt |
见调研报告/项目主页 |
C++11 |
BSD-3 |
★★★★☆ |
M05(Ipopt Eigen 封装) |
| NLopt |
stevengj/nlopt |
见调研报告/项目主页 |
C/C++ |
LGPL |
★★★☆☆ |
M05(轻量替代) |
| CasADi |
casadi/casadi |
见调研报告/项目主页 |
C++11 |
LGPL-3.0 |
★★★★★ |
M05, M06 |
| acados |
acados/acados |
见调研报告/项目主页 |
C |
BSD-2 |
★★★★★ |
M06 |
A.6 自动微分与代码生成
| 项目 |
GitHub URL |
Stars 口径 |
License |
教学评分 |
对应章节 |
| CppAD |
coin-or/CppAD |
见调研报告/项目主页 |
EPL/GPL |
★★★★☆ |
M06 |
| CppADCodeGen |
joaoleal/CppADCodeGen |
见调研报告/项目主页 |
EPL |
★★★★★ |
M06 |
A.7 时间参数化与轨迹生成
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| Ruckig |
pantor/ruckig |
见调研报告/项目主页 |
C++17/20 |
MIT |
★★★★★ |
M10 |
| TOPP-RA |
hungpham2511/toppra |
见调研报告/项目主页 |
C++17 |
MIT |
★★★★☆ |
M10 |
| TOTG |
MoveIt2 内置 |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★☆☆ |
M10 |
A.8 任务编排
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| BehaviorTree.CPP |
BehaviorTree/BehaviorTree.CPP |
见调研报告/项目主页 |
C++17 |
MIT |
★★★★★ |
M13 |
| Groot2 |
BehaviorTree/Groot2 |
见调研报告/项目主页 |
C++17 |
— |
★★★★☆ |
M13(可视化工具) |
A.9 实时控制与硬件驱动
| 项目 |
GitHub URL |
Stars 口径 |
C++ 标准 |
License |
教学评分 |
对应章节 |
| ros2_control |
ros-controls/ros2_control |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★★ |
M12 |
| ros2_controllers |
ros-controls/ros2_controllers |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★★ |
M12 |
| realtime_tools |
ros-controls/realtime_tools |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★★★ |
M11 |
| gz_ros2_control |
ros-controls/gz_ros2_control |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★☆ |
M12, P01 |
| libfranka |
frankaemika/libfranka |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★☆ |
M12 |
| franka_ros2 |
frankaemika/franka_ros2 |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★☆ |
M12 |
| UR ROS2 Driver |
UniversalRobots/Universal_Robots_ROS2_Driver |
见调研报告/项目主页 |
C++17 |
Apache-2.0 |
★★★★☆ |
M12 |
| ros2_kortex |
Kinovarobotics/ros2_kortex |
见调研报告/项目主页 |
C++17 |
BSD-3 |
★★★☆☆ |
M12(Kinova) |
A.10 URDF / 机器人描述
| 项目 |
GitHub URL |
Stars 口径 |
License |
教学评分 |
对应章节 |
| UR ROS2 Description |
UniversalRobots/Universal_Robots_ROS2_Description |
见调研报告/项目主页 |
BSD-3 |
★★★★★ |
P01 |
| Franka Description |
frankarobotics/franka_description |
见调研报告/项目主页 |
Apache-2.0 |
★★★★☆ |
P01 |
| robot_descriptions.py |
robot-descriptions/robot_descriptions.py |
见调研报告/项目主页 |
Apache-2.0 |
★★★★★ |
P01 |
| Awesome Robot Descriptions |
robot-descriptions/awesome-robot-descriptions |
见调研报告/项目主页 |
— |
★★★★★ |
P01 |
| ros2_control_demos |
ros-controls/ros2_control_demos |
见调研报告/项目主页 |
Apache-2.0 |
★★★★★ |
P01, M12 |
| onshape-to-robot |
Rhoban/onshape-to-robot |
见调研报告/项目主页 |
MIT |
★★★★☆ |
P01(CAD→URDF) |
| SolidWorks URDF Exporter |
ros/solidworks_urdf_exporter |
见调研报告/项目主页 |
BSD |
★★★☆☆ |
P01 |
A.11 RL 部署与 sim-to-real
| 项目 |
GitHub URL |
Stars 口径 |
License |
教学评分 |
对应章节 |
| rl_sar |
fan-ziqi/rl_sar |
见调研报告/项目主页 |
BSD-3 |
★★★★★ |
P02, M12 |
| unitree_rl_lab |
unitreerobotics/unitree_rl_lab |
见调研报告/项目主页 |
BSD-3 |
★★★★☆ |
P02 |
| Isaac Lab |
isaac-sim/IsaacLab |
见调研报告/项目主页 |
NVIDIA |
★★★★★ |
P02 |
| MuJoCo |
google-deepmind/mujoco |
见调研报告/项目主页 |
Apache-2.0 |
★★★★★ |
P02 |
| MuJoCo MPC |
google-deepmind/mujoco_mpc |
见调研报告/项目主页 |
Apache-2.0 |
★★★★☆ |
M05(参考) |
A.12 轨迹优化(采样/优化规划器)
| 项目 |
GitHub URL |
Stars 口径 |
License |
教学评分 |
对应章节 |
| TrajOpt |
tesseract-robotics/trajopt |
见调研报告/项目主页 |
Apache-2.0 |
★★★★★ |
M08 |
| GPMP2 |
gtrll/gpmp2 |
见调研报告/项目主页 |
BSD |
★★★★☆ |
M08 |
| KOMO/RAI |
MarcToussaint/rai |
见调研报告/项目主页 |
MIT |
★★★☆☆ |
M08 |
| STOMP |
ros-industrial/stomp / MoveIt2 内置 |
见调研报告/项目主页 |
BSD-3 |
★★★☆☆ |
M08 |
| CHOMP |
MoveIt2 内置 |
见调研报告/项目主页 |
BSD-3 |
★★★★☆ |
M08 |
A.13 足式/复合方向预留参考(Part 0 ✅ 章节会用到)
| 项目 |
GitHub URL |
Stars 口径 |
定位 |
对应章节 |
| OCS2 |
leggedrobotics/ocs2 |
见调研报告/项目主页 |
腿足 MPC 框架 |
M06(CppADCodeGen 范式) |
| TSID |
stack-of-tasks/tsid |
见调研报告/项目主页 |
分层 QP WBC |
M05(QP 建模参考) |
| legged_control |
qiayuanl/legged_control |
见调研报告/项目主页 |
四足 MPC+WBC 完整栈 |
腿足专题 |
| qm_control |
skywoodsz/qm_control |
见调研报告/项目主页 |
四足臂 MPC+WBC |
复合体专题 |
| Wheel-Legged-Gym |
clearlab-sustech/Wheel-Legged-Gym |
见调研报告/项目主页 |
轮足 RL 训练 |
复合体专题 |
| Cheetah-Software |
mit-biomimetics/Cheetah-Software |
见调研报告/项目主页 |
四足自包含经典 |
腿足专题 |
【机械臂】附录 B:SLAM → 机械臂技能迁移表
B.1 可直接复用的技能(~40%)
| 技能 |
SLAM 中的用途 |
机械臂中的用途 |
迁移难度 |
| Eigen 矩阵运算 |
Ceres 参数块、BA |
雅可比、惯量矩阵、QP Hessian |
零迁移 |
| Sophus / manif 李群 |
SE(3) 位姿链 |
Pinocchio 的 SE3Tpl(内部表示不同但概念同) |
低 |
| CMake / colcon |
ROS2 包管理 |
完全一样 |
零迁移 |
| pybind11 / nanobind |
Python 绑定 |
完全一样,机械臂侧更普及 nanobind |
零迁移 |
| C++17 现代特性 |
auto/move/lambda/STL |
完全一样,机械臂更早用 C++20 |
低 |
| ROS2 基础 |
节点/消息/服务 |
同样,但机械臂对 Lifecycle + Component 依赖更深 |
低 |
| GoogleTest / Sanitizers |
SLAM 库测试 |
同样,但机械臂测试更严格 |
零迁移 |
B.2 需要扩展的技能(~30%)
| 技能 |
SLAM 的基础 |
机械臂的扩展 |
迁移难度 |
| CRTP |
Sophus SO3Base<Derived> |
Pinocchio JointModelBase<Derived> 大规模 + variant 组合 |
中 |
| 模板化标量 |
Ceres Jet<T,N> |
Pinocchio Scalar / Drake System<T> 更系统化 |
中 |
| Eigen 高级 |
稀疏矩阵、SimplicialLDLT |
密集矩阵(惯量矩阵)、EIGEN_RUNTIME_NO_MALLOC |
中 |
| ROS2 高级 |
基础节点 |
Lifecycle + Component + pluginlib + QoS |
中 |
B.3 需要全新学习的技能(~30%)
| 技能 |
对应章节 |
迁移难度 |
| 约束优化建模(QP/NLP) |
M05 |
高——Ceres 无约束 NLS 到 OSQP/Ipopt 是范式跨越 |
| pluginlib 运行时插件 |
M14 |
高——SLAM 里几乎不用 dlopen + 工厂 |
| 1 kHz 硬实时编程 |
M11 |
高——SLAM 的"实时"是 10Hz 软实时 |
| 无锁队列 / RealtimeBuffer |
M11 |
高 |
| SIMD 手动向量化 |
M09 |
高——习惯依赖 Eigen 自动向量化 |
| 空间向量代数 / Featherstone |
M01 |
中——数学不难但概念全新 |
| 运动规划(OMPL 采样) |
M07 |
中——配置空间概念与 SLAM 路径规划不同 |
| IK 求解 |
M03 |
中 |
| 碰撞检测(GJK/EPA/BVH) |
M04 |
中 |
| BT 异步 ticking |
M13 |
中——SLAM 不做任务编排 |
【机械臂】附录 C: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,尤其是 M11/M12 实时控制与硬件章节。
- 完整前置:完成 v8 Ch1-Ch46。若暂未完成全量 v8,至少按下表补齐与机械臂直接相关的章节。
| v8 章节 |
内容 |
被哪些机械臂章节依赖 |
必需度 |
| Ch1 |
类型系统与值类别 |
M01(模板类型推导) |
★★★★★ |
| Ch3 |
RAII 与智能指针 |
M07(ScopedState)、M14(unique_ptr) |
★★★★★ |
| Ch6 |
继承与多态 |
M02(虚函数)、M07(OMPL)、M13(BT.CPP) |
★★★★★ |
| Ch11 |
Eigen 深度 |
M01(Pinocchio)、M05(QP Hessian) |
★★★★★ |
| Ch12-14 |
模板基础 + CRTP + 变参 |
M01(核心依赖)、M10(Ruckig 模板) |
★★★★★ |
| Ch17-18 |
Ceres / GTSAM |
M05(从 NLS 到 QP/NLP)、M06(AD)、M08(GPMP2) |
★★★★★ |
| Ch19-20 |
并发基础 |
M03(TRAC-IK)、M11(RT C++) |
★★★★★ |
| Ch29 |
设计模式 |
M07(策略)、M13(Composite)、M14(pluginlib) |
★★★★★ |
| Ch31 |
ROS2 高级 |
M12(Lifecycle)、M14(pluginlib) |
★★★★☆ |
| Ch35 |
pmr 内存资源 |
M11(分配语义理解) |
★★★☆☆ |
| Ch16/36 |
SIMD / CUDA |
M09(cuRobo/VAMP) |
★★★☆☆ |
推荐补齐集合:Ch3、Ch6、Ch11、Ch14、Ch17、Ch19-20、Ch29、Ch31、Ch35。
完整前置参考集合:Ch1、Ch3、Ch6、Ch11、Ch12-14、Ch17-18、Ch19-20、Ch29、Ch31、Ch35、Ch16/36;更稳妥的完整前置仍是 v8 全部 46 章。
【机械臂】附录 D:论文脉络(按章节映射)
D.1 机械臂运动规划经典论文(M07/M08 对应)
| 论文 |
Venue/年份 |
~引用 |
对应章节 |
| Kavraki et al. – PRM |
T-RA 1996 |
7,500 |
M07 |
| LaValle – RRT |
TR 1998 |
5,850 |
M07 |
| Kuffner & LaValle – RRT-Connect |
ICRA 2000 |
5,500 |
M07 |
| Karaman & Frazzoli – RRT*/PRM* |
IJRR 2011 |
7,500 |
M07 |
| Gammell et al. – BIT* |
ICRA 2015 |
700 |
M07 |
| Şucan et al. – OMPL |
RAM 2012 |
1,900 |
M07 |
| Ratliff et al. – CHOMP |
ICRA 2009 |
1,200 |
M08 |
| Zucker et al. – CHOMP (IJRR) |
IJRR 2013 |
1,000 |
M08 |
| Kalakrishnan et al. – STOMP |
ICRA 2011 |
1,000 |
M08 |
| Schulman et al. – TrajOpt |
RSS 2013 |
1,200 |
M08 |
| Mukadam et al. – GPMP2 |
IJRR 2018 |
350 |
M08 |
D.2 动力学与运动学(M01/M02/M03 对应)
| 论文 |
Venue/年份 |
~引用 |
对应章节 |
| Featherstone – RBDA |
Book 2008 |
5,500 |
M01 |
| Carpentier et al. – Pinocchio |
SII 2019 |
400 |
M01 |
| Beeson & Ames – TRAC-IK |
Humanoids 2015 |
350 |
M03 |
| Diankov – IKFast/OpenRAVE |
PhD 2010 |
700 |
M03 |
| Elias & Wen – ik_geo |
ASME 2022 |
— |
M03 |
D.3 控制与实时(M10/M11/M12 对应)
| 论文 |
Venue/年份 |
~引用 |
对应章节 |
| Khatib – Operational Space |
IJRA 1987 |
5,500 |
M05(理论基础) |
| Berscheid & Kröger – Ruckig |
RSS 2021 |
150 |
M10 |
| Pham & Pham – TOPP-RA |
T-RO 2018 |
— |
M10 |
D.4 GPU/SIMD 加速(M09 对应)
| 论文 |
Venue/年份 |
~引用 |
对应章节 |
| Sundaralingam et al. – cuRobo |
ICRA 2023 |
200 |
M09 |
| Thomason et al. – VAMP |
RSS 2024 |
40 |
M09 |
D.5 系统集成(M13/M14 对应)
| 论文 |
Venue/年份 |
~引用 |
对应章节 |
| Coleman et al. – MoveIt |
JOSER 2014 |
600 |
M14 |
| Faconti – BT.CPP |
— |
— |
M13 |
D.6 学习型操作(交叉层参考)
| 论文 |
Venue/年份 |
~引用 |
对应章节 |
| Levine et al. – Visuomotor |
JMLR 2016 |
3,500 |
交叉层 |
| Chi et al. – Diffusion Policy |
RSS 2023 |
— |
交叉层 |
| Zhao et al. – ACT/ALOHA |
RSS 2023 |
— |
交叉层 |
| Mahler et al. – Dex-Net 2.0 |
RSS 2017 |
900 |
交叉层 |
【机械臂】附录 E:学习里程碑(3 / 6 / 12 月成就标记)
E.1 第 3 个月里程碑(Part 0 + Part 1 完成,约第 55 周)
你应该能做到:
- ✅ 从零写一个完整的 URDF/Xacro 机器人,在 RViz / Gazebo / Isaac Lab 三目标切换
- ✅ 用 Pinocchio 加载 URDF,做正运动学 + 雅可比计算 + RNEA 逆动力学
- ✅ 说清楚 Pinocchio 的 CRTP 设计为什么比虚函数快(能画出 variant + CRTP 的调度图)
- ✅ 用 TRAC-IK 和 IKFast 为 7-DOF 和 6-DOF 机械臂求解 IK,知道什么场景选哪个
- ✅ 在 Pinocchio + ProxQP 上实现一个 24 μs 量级的实时 IK QP
- ✅ 理解 Drake System<T> 的设计哲学,能做选型决策
你应该开始能:
- ⚪ 阅读 Pinocchio 的模板化源码而不头疼
- ⚪ 理解"从 Ceres 到 QP/NLP"的认知跨越
E.2 第 6 个月里程碑(Part 2 + Part 3 完成,约第 65 周)
你应该能做到:
- ✅ 用 OMPL 为 7-DOF 机械臂做完整运动规划(含碰撞检测)
- ✅ 对比 RRT-Connect / BIT* / TrajOpt / CHOMP / STOMP 五种规划器的性能
- ✅ 用 CasADi 建模一个简单的 MPC 问题,用 Ipopt 求解
- ✅ 用 CppADCodeGen 为 Pinocchio 动力学生成优化 C 代码(.so),理解 OCS2 范式
- ✅ 用 Ruckig 做在线 jerk-limited 轨迹生成
- ✅ 理解 cuRobo(GPU)和 VAMP(SIMD)两条加速路线的适用边界
- ✅ 用 FCL/Coal 实现自碰撞检测,理解 GJK/EPA 算法
你应该开始能:
- ⚪ 独立设计一个机械臂规控 C++ 项目的技术栈选型
- ⚪ 阅读 TrajOpt SQP 求解器源码
E.3 第 12 个月里程碑(全部 17 章完成,约第 73 周)
你应该能做到:
- ✅ 在 Gazebo 中运行完整的 Franka Panda pick-and-place(MTC + BT.CPP + ros2_control)
- ✅ 在 1 kHz RT 循环中运行控制代码(零 malloc,cyclictest 验证 < 50 μs 最大延迟)
- ✅ 用 BT.CPP 编排多步操作任务,含错误恢复
- ✅ 用 MoveIt2 配置规划管线(链式 OMPL→STOMP,并行多规划器)
- ✅ 用 LibTorch 或 ONNX Runtime 在 ros2_control 上部署 RL policy
- ✅ 在 MoveIt2 中切换不同 IK/规划器/碰撞检测/时间参数化插件
- ✅ 理解 MoveIt2 的完整 pluginlib 架构并能写自定义插件
你应该开始能:
- ⚪ 独立承担机械臂方向的 C++ 规控研发工作
- ⚪ 开始切入腿足方向(复用 Part 0 的 8 章,补 MPC+WBC)
- ⚪ 尝试 MPC+RL 混合架构的研究(你的 RL 背景 + 本大纲的规控基础)
E.4 技能自检清单
每个里程碑完成时,用以下清单自检:
基础层:
- [ ] 能独立写 URDF/Xacro 并通过 check_urdf
- [ ] 能用 Pinocchio 完成正运动学、雅可比、RNEA
- [ ] 能用至少两种 QP 求解器(OSQP + ProxQP)求解 IK QP
- [ ] 能解释 CRTP vs 虚函数的性能权衡
中间层:
- [ ] 能用 OMPL 做 7-DOF 配置空间规划
- [ ] 能配置 MoveIt2 并切换规划器
- [ ] 能用 CasADi 建模简单 NLP 并用 Ipopt 求解
- [ ] 能用 Ruckig 做在线轨迹生成
- [ ] 能用 BT.CPP 编排多步任务
高级层:
- [ ] 能在 PREEMPT_RT 内核上配置 1 kHz 实时控制
- [ ] 能写 ros2_control 自定义 SystemInterface
- [ ] 能用 MTC 编排完整 pick-and-place
- [ ] 能部署 RL policy(LibTorch 或 ONNX)
- [ ] 能完成 Mini-Manip 综合项目
子课程一至此完整。 全文覆盖 17 章(P01-P02 + M01-M15)+ 5 个附录,预计 24 周,基于 100+ 个机械臂相关开源项目的源码级分析。所有 ✅ 标注章节可直接复用到后续腿足/无人机/RL 专题。
版本:v0.1 初版 · 2026 年 4 月
下一步:收集反馈后迭代为 v0.2;开始足式方向(C1 四足)的增量大纲设计,复用本大纲的 Part 0 + M01/M05/M06/M11/M12/M13 共 8 章。