跳转至

附录_子课程一_机械臂基础

本文档属于 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 章。