Files
ROS2_learn/doc/00-levels.md
T

14 KiB
Raw Blame History

Level 1 ~ Level 4 全方位 ROS2 学习路线图

目标读者: 想从零学到能用 ROS2 + 机械臂 + VLA (Vision-Language-Action) 做真实具身智能系统的开发者。

学习承诺: 本仓库把 ROS2 从基础到 VLA 部署分成 4 级,每级有可运行的代码包 + 教科书级别文档 + 自动化测试。

预计总时长: 每天 2-3 小时,Level 1 约 4-6 周,Level 2 约 6-8 周,Level 3 约 8-12 周,Level 4 持续学习。


目录


学习哲学

三条铁律

  1. 跑通 > 读完 — 每学一个机制,先在仓库里跑通最小 demo,再读设计文档。
  2. 测一次 > 看一次 — 每个包都带 pytest/gtest,跑通测试比"看懂了"更可信。
  3. 文档带引用 — 每篇深度文档末尾都列 ROS2 官方文档 + 设计稿链接 + DDS 规范 + 论文。

设计思想: 双层解耦

  • 本机 venv — 开发工具链(ruff/black/mypy/pytest),不污染系统 Python,只装 IDE / 编辑器需要的。
  • Docker 容器 — ROS2 运行时(osrf/ros:humble-desktop),跨 Win/macOS/Linux 一致,apt 装 ROS2 包。

理由: ROS2 原生依赖大量 C++ 库(DDS / FastRTPS / Cyclone / MoveIt2),在 Windows 本机 pip 装 rclpy 经常飘红。容器化后,所有人跑同一镜像,问题统一在镜像里修复。

设计思想: 教科书写法

每篇文档不重复 ROS2 官方教程,而是:

  1. 讲什么 (What) — 这个机制解决什么问题。
  2. 为什么 (Why) — 为什么 ROS2 这样设计,设计稿原文引用。
  3. 怎么用 (How) — API 列表 + 最小可运行示例。
  4. 怎么测 (Test) — 单元测试 + 集成测试代码。
  5. 怎么错 (Pitfalls) — 踩过的坑 + 故障排查表。
  6. 学什么 (Next) — 进阶阅读 + 相关论文。

Level 1: ROS2 基础机制 (Foundation)

核心目标: 完整理解 ROS2 的 12 大基础机制,能独立写节点 + launch 文件 + 自定义接口 + 生命周期管理。

12 大机制清单

# 机制 当前包 文档
1 节点 (Node) py_pubsub / cpp_pubsub 10-concepts.md
2 Topic (发布订阅) py_pubsub / cpp_pubsub 20-topics.md
3 Service (请求响应) py_srv 30-services.md
4 Action (目标-反馈-结果) py_action_demo 40-actions.md
5 TF2 (坐标变换) cpp_robot_tf2 50-tf2.md
6 URDF (机器人模型) cpp_robot_tf2 60-urdf.md
7 Launch (启动编排) bringup 70-launch.md
8 参数 (Parameter) py_params 新增 15-params.md 新增
9 自定义接口 (.msg/.srv/.action) cpp_custom_interface 新增 16-custom-interfaces.md 新增
10 生命周期 (Lifecycle Node) py_lifecycle_composable 新增 17-lifecycle.md 新增
11 组合节点 (Composable Node) py_lifecycle_composable 新增 18-composable.md 新增
12 QoS (服务质量) cpp_qos_demo 新增 19-qos.md 新增
13 ros2 bag (录制回放) cpp_qos_demo 新增 20-bag.md 新增
14 colcon overlay (混合工作空间) py_overlay_dds 新增 21-overlay-dds.md 新增
15 DDS / RMW (中间件配置) py_overlay_dds 新增 21-overlay-dds.md 新增

新增 = Level 1 完成补齐的 5 个包 + 7 篇文档。

Level 1 子目标

  • 能独立写发布者、订阅者、服务器、客户端、Action server、Action client。
  • 能用 TF2 监听 / 广播坐标变换,理解 lookupTransform vs buffer.lookup_transform_async
  • 能写简单 URDF,理解 <link> / <joint> / <inertial> / <visual> / <collision>
  • 能写 Python launch 文件,理解 Node / IncludeLaunchDescription / LaunchConfiguration / PathJoinSubstitution
  • 新增 能声明参数、读参数、参数变化回调、从 YAML 加载。
  • 新增 能自定义 .msg / .srv / .action 并在节点里使用。
  • 新增 能用 Lifecycle Node 管理节点状态(configure / activate / cleanup / shutdown)。
  • 新增 能用 Composable Node 把多个节点装到一个进程。
  • 新增 能配置 QoS(Reliability / Durability / History / Depth / Deadline / Lifeliness)。
  • 新增 能用 ros2 bag 录制 / 回放 / 信息查询。
  • 新增 能用 colcon build --packages-up-to 做混合工作空间。
  • 新增 能配 domain ID / static peers / QoS XML,理解 DDS 中间件。

Level 1 测试覆盖

py_pubsub              4 pytest    ✅
cpp_pubsub             2 gtest     ✅
py_srv                 1 pytest    ✅
py_action_demo         1 pytest    ✅
cpp_robot_tf2          2 gtest     ✅
py_vision_demo         2 pytest    ✅
bringup                6 launch    ✅
py_params              3 pytest    ⭐(新增)
cpp_custom_interface   3 gtest     ⭐(新增)
py_lifecycle_composable  3 pytest  ⭐(新增)
cpp_qos_demo           3 gtest     ⭐(新增)
py_overlay_dds         2 pytest    ⭐(新增)

总计: 32 用例, 目标 100% 通过

Level 2: 仿真 + 工具链 (Simulation & Tooling)

核心目标: 用 MoveIt2 + Nav2 + Gazebo 把 Level 1 的基础机制用在真实仿真机器人上,学会调试 / 监控 / 测试金字塔。

Level 2 计划包(下一阶段)

主题 关键概念
moveit2_demo MoveIt2 机械臂运动规划 SRDF / PlanningScene / OMPL / CartesianPath
nav2_demo Nav2 移动底盘导航 Costmap / BT / SLAM / Recovery Behavior
gazebo_sim Gazebo 仿真器集成 SDF / Plugins / Sensors / ros2_control
ros2_controllers ros2_control 控制器 JointTrajectoryController / GripperController / DiffDriveController
ros2_test_demo 测试金字塔 launch_testing / pytest fixtures / gtest mock

Level 2 文档

  • 22-moveit2.md — MoveIt2 概念 + 编程 API + 调试技巧
  • 23-nav2.md — Nav2 概念 + 配置 + 行为树
  • 24-gazebo.md — Gazebo Harmonic 集成
  • 25-ros2-control.md — ros2_control 硬件抽象
  • 26-testing-pyramid.md — 单元 / 集成 / E2E 测试策略

Level 2 子目标

  • 能用 MoveIt2 给 6 自由度机械臂做运动规划。
  • 能用 Nav2 给移动底盘做 SLAM + 路径规划。
  • 能在 Gazebo 里仿真传感器(Lidar / Camera / IMU)。
  • 理解 ros2_control 硬件抽象层。
  • 写完整的测试金字塔: 单元 (60%) + 集成 (30%) + E2E (10%)。

推荐硬件(仿真阶段无需)

仿真阶段不需要任何硬件。Gazebo + RViz 足够。


Level 3: 机械臂实战 (Real Robot)

核心目标: 把仿真代码搬到真机,做手眼标定 + 视觉抓取 + 力控,实现"看得见、抓得起、放得稳"。

Level 3 计划包(中后期)

主题 关键概念
arm_hardware 真实机械臂驱动 UR5e / xArm / Franka / Realman 驱动
arm_calibration 手眼标定 Eye-in-Hand / Eye-to-Hand / Tsai-Lenz / Park
arm_perception 视觉感知 RGB-D / 点云 / 6D 位姿 / GraspNet
arm_grasp 抓取规划 6-DoF Grasp / suction / parallel jaw
arm_trajectory 轨迹优化 时间最优 / 能量最优 / STOMP / CHOMP
arm_force 力控 impedance / admittance / hybrid position-force

Level 3 文档

  • 27-arm-drivers.md — 主流机械臂驱动对比 + 选型
  • 28-hand-eye-calib.md — 手眼标定原理 + 实践
  • 29-6d-pose.md — 6D 位姿估计(FoundationPose / GraspNet)
  • 30-grasp-planning.md — 抓取规划算法
  • 31-force-control.md — 力控原理 + 实践

Level 3 推荐硬件(最低配置)

设备 型号 预算
机械臂 xArm6 / UR5e / Realman RM75 ¥15,000-50,000
夹爪 大寰 DH-3 / Robotiq 2F-85 ¥3,000-8,000
RGB-D 相机 Intel RealSense D435 / Orbbec Gemini 2 ¥1,500-3,000
标定板 A4 ArUco 6×6 ¥50
工控机 NUC / RDK X5 ¥3,000-5,000

总计: ¥25,000-70,000(可选配)

Level 3 子目标

  • 能驱动真实机械臂做点到点运动 + 直线运动。
  • 做完手眼标定,误差 < 2mm。
  • 视觉检测物体 6D 位姿,精度 < 5mm / 5°。
  • 抓取成功率 > 80% (已知物体集)。
  • 力控下能完成插孔 / 装配任务。

Level 4: 具身智能 VLA (Embodied AI)

核心目标: 用大模型(LLM / VLM)让机器人理解自然语言指令,自主决策动作序列,完成开放域任务。

Level 4 计划包(终极目标)

主题 关键概念
vla_data 数据采集 + 处理 DROID / Open X-Embodiment / RT-1 数据格式
vla_model VLA 模型 OpenVLA / π0 / RT-2 / RoboFlamingo
vla_inference 推理优化 RKNN / TensorRT / ONNX / 量化
vla_deployment 端到端部署 PC + RDK X5 + RK3506 三机协同

Level 4 文档

  • 32-vla-intro.md — VLA 概念 + 主流模型对比
  • 33-vla-training.md — VLA 模型微调 + 数据工程
  • 34-vla-inference.md — 边缘推理 + NPU 加速
  • 35-vla-deployment.md — 真机部署 + 三机协同

Level 4 关键论文(引用)

  1. RT-2 — Google DeepMind, 2023, "RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control"
  2. OpenVLA — Stanford / UC Berkeley / Toyota Research, 2024, "OpenVLA: An Open-Source Vision-Language-Action Model"
  3. π0 — Physical Intelligence, 2024, "π0: A Foundation Model for Robots"
  4. DROID Stanford, 2024, "DROID: A Large-Scale In-the-Wild Robot Manipulation Dataset"
  5. Open X-Embodiment — Google DeepMind et al., 2023, "Scaling Up Learning Across Many Different Robot Types"

Level 4 子目标

  • 能用 OpenVLA / π0 完成"把红杯子放到桌子左边"这类指令。
  • 能用 RDK X5 NPU (5 TOPS) 跑 VLA 推理,延迟 < 500ms。
  • 三机协同: PC 跑大模型 / RDK X5 跑感知 / RK3506 跑实时控制。
  • 在真实机械臂上完成 10+ 类自然语言指令。

Level 4 终极硬件配置

设备 角色 关键算力
PC (RTX 4090) 训练 + 大模型推理 100+ TOPS
RDK X5 边缘 VLA 推理 5 TOPS NPU
RK3506 ×2 实时控制 + 通讯 3 核 ARM + 512MB RAM

硬件清单(汇总)

阶段 设备 必需 / 可选
L1 PC + Docker 必需
L2 PC + Docker 必需
L3 PC + xArm + RealSense + 标定板 必需
L3 进阶 + 夹爪 + 工装 可选
L4 PC (RTX 4090) + RDK X5 + RK3506 ×2 + xArm 必需

时间估算

Level 学习时长(每天 2-3 小时) 关键里程碑
L1 4-6 周 写自定义接口 + Lifecycle Node
L2 6-8 周 MoveIt2 给真臂规划 + Gazebo 仿真
L3 8-12 周 手眼标定 + 视觉抓取 + 力控
L4 12+ 周 VLA 真机部署

总计: 6-9 个月 从零到 VLA 真机部署。


推荐阅读 + 引用

ROS2 官方文档(权威)

DDS 规范

机器人学

具身智能 / VLA


学习方法建议

每日节奏(2-3 小时)

30 min: 读本级文档(理解概念)
60 min: 跑包内 demo(动手验证)
30 min: 改 demo 试错(巩固)
30 min: 写学习笔记(记录坑点)
30 min: 复习 + 下一节

提问技巧

学 ROS2 时遇到问题,优先:

  1. 看本仓库对应文档末尾"故障排查"表
  2. 看 ROS2 官方文档对应章节
  3. ros2 doctor 输出
  4. rclpy / rclcpp 源码 + 调用栈
  5. 最后才 Google / Stack Overflow

贡献方式

学完一段后,欢迎:

  • 修 bug(测试用例失败的)
  • 补文档(没说清楚的)
  • 加 demo(新机制的最小示例)
  • 翻译(英文版)

详见 CONTRIBUTING.md


路线图完成度

[Level 1] ████████████░░ 95%  (5 包 5 文档待补,1 个 todo)
[Level 2] ░░░░░░░░░░░░░░░ 0%   (规划完成)
[Level 3] ░░░░░░░░░░░░░░░ 0%   (规划完成)
[Level 4] ░░░░░░░░░░░░░░░ 0%   (规划完成)

继续: 看 doc/01-quickstart.md 跑通第一个 demo → doc/10-concepts.md 理解 ROS2 概念 → doc/15-params.md Level 1 深度内容。