面向已有 Linux、软件架构、DevOps 与 AI 工程基础的学习者
建议周期:44 周(约 10–12 个月);建议投入:8–12 小时/周
推荐主环境:Ubuntu 24.04 + ROS 2 Jazzy LTS + Gazebo Harmonic + C++20/Python 3
文档资料核对日期:2026-08-05
1. 学习目标与路线原则
这条路线不是“把 ROS API 学一遍”,而是建立一套能迁移到移动机器人、机械臂、移动操作机器人和智能家电机器人上的完整能力:
- 机器人基础理论:坐标变换、运动学、动力学、状态估计、反馈控制、运动规划。
- ROS 2 系统能力:节点、通信、QoS、TF、URDF、Launch、Lifecycle、Composition、诊断与可观测性。
- 机器人运控能力:从执行器接口、控制循环、轨迹控制,到 ros2_control、MoveIt 2、Nav2 与实时系统。
- 点云感知能力:传感器模型、标定、滤波、法向、分割、聚类、特征、配准、3D 检测/分割与 LiDAR SLAM。
- 系统工程能力:仿真、数据回放、测试、CI/CD、容器、性能分析、故障降级与部署。
1.1 最重要的学习原则
- 理论与工程双线并行:每个理论模块都要有可运行代码和可量化实验。
- 先经典几何,再深度学习:点云任务中,坐标系、标定、滤波和配准错误,不能靠神经网络补救。
- 先仿真,再 rosbag,最后真机:同一算法应能在三种数据源之间切换。
- 以时间戳与坐标系为第一公民:机器人系统的大量“算法问题”实际是 TF、时钟或同步问题。
- 以闭环验收代替“看完教程”:每阶段都定义输入、输出、指标、故障注入和复现实验。
2. 总体 Roadmap
flowchart LR
A[阶段0 数学与工具基线] --> B[阶段1 ROS 2系统基础]
B --> C[阶段2 建模·运动学·控制]
C --> D[阶段3 ros2_control与实时硬件]
D --> E[阶段4 MoveIt 2机械臂运控]
C --> F[阶段5 Nav2·定位·移动控制]
B --> G[阶段6 点云经典处理]
G --> H[阶段7 配准·3D SLAM·深度感知]
E --> I[阶段8 感知-规划-控制集成]
F --> I
H --> I
| 阶段 | 周期 | 核心主题 | 阶段作品 |
|---|---|---|---|
| 0. 基线准备 | 2 周 | 数学诊断、开发环境、现代 C++ | 可复用 ROS 2 工作区模板 |
| 1. ROS 2 系统基础 | 5 周 | 通信、QoS、TF、URDF、Launch、rosbag | 多节点传感处理系统 |
| 2. 机器人建模与控制 | 7 周 | SE(3)、运动学、动力学、PID/LQR/轨迹 | 二连杆/差速底盘控制实验 |
| 3. ros2_control 与实时 | 5 周 | Hardware Interface、Controller、实时线程 | 自定义硬件插件与控制器 |
| 4. MoveIt 2 操作规划 | 5 周 | 碰撞、IK、OMPL、轨迹执行、抓取 | 仿真机械臂抓取系统 |
| 5. Nav2 与移动机器人 | 5 周 | 状态估计、SLAM、代价地图、BT、局部控制 | 自主导航与故障恢复 |
| 6. 点云经典感知 | 6 周 | 滤波、法向、RANSAC、聚类、特征、ICP | 桌面/室内点云处理流水线 |
| 7. 3D SLAM 与深度点云 | 5 周 | LiDAR 里程计、图优化、PointNet 系 | 定位或语义分割基准 |
| 8. 系统集成 Capstone | 4 周 | 感知—规划—控制闭环、部署、评测 | 可演示、可回放、可 CI 的系统 |
如果主攻机械臂,阶段 4 提前并扩展到 8–10 周;如果主攻移动机器人/家电机器人,阶段 5、6、7 应合计投入至少 18–22 周。
3. 推荐技术基线
3.1 ROS 2 版本选择
建议主线使用 ROS 2 Jazzy Jalisco:它是 2024 年 5 月发布的 LTS,支持至 2029 年 5 月,Tier 1 平台包含 Ubuntu 24.04。虽然 ROS 2 已有更新发行版,但 Jazzy 更适合作为稳定学习和产品原型基线。[S1]
3.2 工具栈
| 层级 | 建议工具 | 学习目的 |
|---|---|---|
| OS | Ubuntu 24.04、PREEMPT_RT(后期) | 实时性、驱动、部署 |
| 构建 | colcon、CMake、ament_cmake、rosdep | ROS 2 包与依赖管理 |
| 语言 | C++20 为主、Python 为辅 | 控制/点云性能与原型效率 |
| ROS 2 | Jazzy、rclcpp、tf2、robot_state_publisher | 机器人软件骨架 |
| 仿真 | Gazebo Harmonic、gz_ros2_control | 传感器与动力学闭环仿真 |
| 控制 | ros2_control、ros2_controllers、MoveIt 2 | 执行器、轨迹和操作规划 |
| 导航 | Nav2、SLAM Toolbox、robot_localization | 移动机器人定位导航 |
| 点云 | PCL、Open3D、pcl_conversions | C++生产管线与Python研究原型 |
| 优化 | Eigen、Ceres/g2o/GTSAM(择一深入) | 最小二乘、图优化、SLAM |
| 数据 | rosbag2、MCAP、Foxglove/RViz | 记录、回放、可视化与调试 |
| AI | PyTorch、Open3D-ML/MinkowskiEngine(进阶) | 点云分类、检测、语义分割 |
| 工程 | Docker、GitHub Actions、clang-tidy、ASan/TSan | 可复现构建与质量门禁 |
3.3 建议仓库结构
robotics-learning/
├── src/
│ ├── robot_description/ # URDF/Xacro、mesh、ros2_control标签
│ ├── robot_bringup/ # launch、参数、生命周期编排
│ ├── robot_hardware/ # System/Actuator/Sensor接口
│ ├── robot_controllers/ # 自定义控制器
│ ├── robot_navigation/ # Nav2参数、BT、costmap插件
│ ├── pointcloud_pipeline/ # ROS点云节点与组件
│ └── perception_benchmarks/ # 离线评测脚本
├── config/
├── bags/
├── datasets/
├── notebooks/ # 仅研究和可视化,不承载生产逻辑
├── tests/
├── docker/
└── .github/workflows/
4. 阶段 0:数学、编程与环境基线(第 1–2 周)
4.1 必备数学
按“会推导、会实现、会检查数值稳定性”掌握:
- 线性代数:向量空间、矩阵分解、特征值、SVD、最小二乘、伪逆。
- 微积分:多元微分、Jacobian、Hessian、链式法则。
- 概率:高斯分布、协方差、条件概率、Bayes、最大似然/MAP。
- 几何:SO(2)/SO(3)、SE(2)/SE(3)、旋转矩阵、四元数、指数/对数映射。
- 优化:无约束/约束最优化、Gauss–Newton、Levenberg–Marquardt。
- 控制基础:传递函数、状态空间、稳定性、可控性、可观性。
4.2 编程检查单
- C++:RAII、智能指针、模板、移动语义、并发、无锁/少锁思维、Eigen 对齐。
- Python:NumPy、SciPy、Matplotlib、Open3D、PyTorch。
- 工程:CMake target-based 写法、单元测试、基准测试、静态分析、性能采样。
4.3 实践任务
- 不调用现成几何库,实现
SO3 exp/log、四元数与旋转矩阵互转。 - 用 SVD 实现刚体点集对齐(已知对应关系)。
- 建立 ROS 2 工作区模板,包含:构建、测试、lint、Docker、GitHub Actions 缓存。
验收标准:随机生成 1000 组旋转,R -> log -> exp 平均误差可解释;CI 能在干净环境完成 build/test。
5. 阶段 1:ROS 2 系统基础(第 3–7 周)
ROS 2 Jazzy 官方教程从 CLI、客户端库逐步进入 Action、Composition、Launch、tf2、测试、URDF、RViz,再延伸至 QoS、Lifecycle、实时编程与 tracing;官方明确建议按顺序学习。[S2]
第 3 周:通信模型
- Node、Topic、Service、Action、Parameter。
- Interface 定义:
msg/srv/action。 - DDS/RMW 基本概念、发现机制、Domain ID。
- QoS:reliability、durability、history、depth、deadline、lifespan、liveliness。
实验:构造 30 Hz 激光数据发布器与消费者,分别设置 Reliable/Best Effort,注入网络抖动,记录延迟、丢包和队列堆积。
第 4 周:执行模型与并发
- Executor、Callback Group、Single/MultiThreadedExecutor。
- 定时器、回调竞争、锁粒度、线程优先级。
- Intra-process communication 与 Composition。
实验:把“接收—滤波—发布”拆为三节点,再改成 composable components,比较 CPU、内存与端到端延迟。
第 5 周:TF2、时间与机器人模型
- TF tree、静态/动态变换、
map/odom/base_link/sensor_link。 - ROS time、system time、steady time;仿真时钟。
- URDF/Xacro、joint、link、inertial、collision、visual。
robot_state_publisher、joint_state_publisher、RViz。
实验:制作差速底盘或 6-DOF 机械臂模型,加入 LiDAR/深度相机坐标系;写自动测试检查 TF tree 无环、关键变换存在且时间不过期。
第 6 周:Launch、配置与生命周期
- Python Launch、参数文件、namespace、remapping。
- Managed/Lifecycle Node。
- 参数校验、动态参数与配置分层。
- 日志、diagnostics、ros2doctor。
第 7 周:数据与测试
- rosbag2/MCAP、录制过滤、回放速率、时钟。
launch_testing、gtest/pytest、集成测试。- tracing、topic statistics、系统性能基线。
阶段项目:完成一个可组合的“传感器发布—坐标变换—滤波—状态监控—录包”系统。
验收标准:
- 可一条命令启动;参数可覆盖;节点支持生命周期。
- 可回放同一 bag 得到确定性结果。
- 有 QoS 设计说明、TF 图、时序图和至少 5 个自动测试。
6. 阶段 2:机器人建模、运动学与控制(第 8–14 周)
第 8–9 周:刚体运动与运动学
- 配置空间、自由度、约束。
- POE(Product of Exponentials)、DH 参数法。
- 正运动学、空间/本体 Jacobian。
- 逆运动学:解析法、Jacobian 伪逆、阻尼最小二乘。
- 奇异性、可操作度、零空间投影。
第 10–11 周:动力学
- 质量矩阵、Coriolis/离心项、重力项。
- Euler–Lagrange 与 Newton–Euler。
- 正/逆动力学。
- 摩擦、齿隙、饱和、执行器带宽与模型误差。
第 12–13 周:反馈控制
按难度递进:
- 单关节 P/PI/PD/PID,抗积分饱和、导数滤波。
- 关节空间轨迹控制、前馈 + 反馈。
- Computed Torque / inverse dynamics control。
- 笛卡尔空间控制、阻抗/导纳控制。
- 状态空间、LQR;理解 MPC 的问题形式与适用边界。
第 14 周:轨迹生成与约束
- 梯形速度、S 曲线、三次/五次多项式。
- 时间参数化、速度/加速度/jerk 约束。
- 跟踪误差、超调、整定时间、稳态误差与控制能量。
阶段项目 A:二连杆机械臂
- 推导并实现 FK、IK、Jacobian、动力学和轨迹控制。
- 比较 PID、重力补偿 PID 与 computed torque。
阶段项目 B:差速底盘
- 实现里程计、速度闭环和路径跟踪(Pure Pursuit 或 Stanley,再理解 DWB/MPPI)。
验收标准:不同负载、噪声、延迟和摩擦条件下给出误差曲线;不能只展示“能动”。
7. 阶段 3:ros2_control 与实时硬件(第 15–19 周)
ros2_control 是 ROS 2 的实时机器人控制框架,核心包括 Controller Manager、Hardware Interface、控制器、realtime_tools,并提供 Gazebo、MuJoCo 等集成。[S3]
第 15 周:架构
- Resource Manager、Controller Manager、Controller Interface。
SystemInterface、ActuatorInterface、SensorInterface。- command/state interfaces、claiming、controller switching。
- URDF 中的
<ros2_control>配置。
第 16 周:标准控制器
joint_state_broadcaster。joint_trajectory_controller。diff_drive_controller。- effort/velocity/position controller 的差异。
第 17 周:自定义硬件插件
实现一个模拟硬件或串口/CAN 抽象:
- lifecycle:configure/activate/deactivate/cleanup。
read()/write()的职责与错误传播。- 通信超时、编码器跳变、命令饱和、急停。
第 18 周:自定义控制器
- 实时安全的数据交换。
- 避免控制环内动态内存分配、阻塞 I/O、日志风暴和不可控锁竞争。
- 参数更新与非实时线程/实时线程边界。
第 19 周:实时 Linux 与性能
- PREEMPT_RT、调度策略、优先级反转、内存锁定、CPU affinity。
- 周期抖动、deadline miss、WCET 的基本测量。
- 容器中的 capability 与实时限制。
阶段项目:自定义 SystemInterface + 自定义控制器 + Gazebo/假硬件双后端。
验收标准:
- 1 kHz 或目标频率下统计 p50/p95/p99/max 周期抖动。
- 断开硬件通信后进入明确安全态。
- 控制器可热切换,资源冲突有可预期错误。
8. 阶段 4:MoveIt 2 与机械臂操作(第 20–24 周)
MoveIt 2 官方教程覆盖 RViz 快速入门、首个 C++ 项目、场景可视化、绕障规划以及 MoveIt Task Constructor 抓取放置。[S4]
学习内容
- SRDF、Planning Group、End Effector、虚拟关节。
- Planning Scene、碰撞对象、Allowed Collision Matrix。
- IK 插件、碰撞检测、约束采样。
- OMPL 中的 RRT/PRM 家族;理解概率完备性与最优性。
- 轨迹平滑、时间参数化、执行监控。
- MoveIt Servo:在线笛卡尔/关节增量控制。
- MoveIt Task Constructor:将抓取拆成可组合阶段。
推荐顺序
- Quickstart in RViz。
- Your First C++ MoveIt Project。
- Planning Around Objects。
- Setup Assistant:为自有模型生成配置。
- ros2_control 联调。
- Pick and Place with MoveIt Task Constructor。
阶段项目:机械臂从点云中检测桌面和目标物,生成碰撞场景,执行 pick-and-place。
验收标准:至少 50 次随机目标位姿测试;统计规划成功率、规划时间、执行误差和碰撞检查结果。
9. 阶段 5:Nav2、状态估计与移动控制(第 25–29 周)
Nav2 采用插件化的 Planner、Controller、Smoother、Behavior 等服务器,以 Lifecycle 管理确定性启动,并用 Behavior Tree 编排导航任务;环境主要由分层 Costmap 表示。[S5]
第 25 周:坐标与状态估计
- REP-105:
map -> odom -> base_link。 - 轮速里程计、IMU、视觉/LiDAR 里程计。
- EKF/UKF 基本原理;
robot_localization配置。 - 可观性、偏置、时间同步与外参误差。
第 26 周:2D SLAM 与定位
- Occupancy Grid、scan matching、pose graph。
- SLAM Toolbox:在线/离线建图与定位。
- AMCL:运动模型、传感器模型、粒子退化与重采样。
第 27 周:全局规划与局部控制
- A*、Dijkstra、Hybrid-A*、Smac Planner。
- Pure Pursuit、DWB、TEB 思想、MPPI。
- 运动学约束、足迹、速度/加速度限制。
第 28 周:Costmap 与传感器融合
- Static、Obstacle、Voxel、Inflation layer。
- LaserScan/PointCloud2 observation source。
- 清障、膨胀半径、未知空间、动态障碍。
第 29 周:行为树与恢复
- NavigateToPose BT、Recovery、Clear Costmap、Spin/BackUp。
- Keepout/Speed Filter、Collision Monitor。
- Docking、waypoint、任务取消和抢占。
阶段项目:仿真移动机器人完成建图、重定位、动态避障和故障恢复。
验收标准:在 20 个随机起终点、传感器短时丢失和局部路径阻塞条件下统计成功率与到达时间。
10. 阶段 6:点云经典感知(第 30–35 周)
10.1 先建立点云数据模型
必须理解:
- 点的字段:XYZ、intensity、RGB、ring、timestamp、normal、label。
- Organized 与 unorganized point cloud。
- 稠密深度点云与旋转 LiDAR 点云的采样差异。
sensor_msgs/msg/PointCloud2的二进制布局、fields、point_step、row_step、endianness。- 传感器噪声、盲区、多径、运动畸变、rolling shutter、反射率影响。
- 内参、外参、时间偏移和运动补偿。
10.2 PCL 与 Open3D 如何分工
- PCL:C++ 生态成熟,适合 ROS 2 在线流水线、传统几何算法和生产部署。官方教程覆盖 I/O、滤波、法向、特征、分割、注册、表面重建、KdTree/Octree 和 GPU 等模块。[S6]
- Open3D:Python/C++ API 统一,适合快速实验、可视化、配准、重建和深度学习前处理。官方点云教程直接覆盖下采样、法向、DBSCAN、RANSAC 平面分割等操作。[S7]
推荐:用 Open3D 验证算法,用 PCL/ROS 2 Component 落地实时节点。
第 30 周:I/O、可视化和坐标变换
- PCD/PLY/LAS/rosbag 数据读取。
- RViz、Open3D、PCLVisualizer。
pcl::fromROSMsg/toROSMsg与零拷贝边界。- 对 PointCloud2 做 tf2 变换;处理 transform availability 和时间戳。
实验:录制 LiDAR/深度相机 bag,离线导出 PCD;显示原始坐标系、base_link 和 map 下的点云差异。
第 31 周:滤波与空间索引
- PassThrough/CropBox。
- VoxelGrid;体素大小对精度、速度和内存的影响。
- Statistical/Radius Outlier Removal。
- KdTree、Octree、近邻与半径搜索。
实验:对不同 voxel size 绘制点数、处理时间、平面拟合残差和 ICP 误差曲线。
第 32 周:法向、曲率与几何特征
- PCA 法向估计;邻域半径与 k 的选择。
- 法向方向一致性。
- PFH/FPFH、VFH、SHOT 的目标与差异。
- 局部参考系、旋转不变性、描述子匹配。
第 33 周:模型拟合与分割
- RANSAC:模型、最小样本、内点阈值、迭代次数。
- 平面/圆柱/球模型。
- 欧式聚类、DBSCAN、区域生长。
- 地面分割:平面假设、坡度、渐进形态学或 range image 思路。
实验:桌面场景中分离平面与物体,输出 3D bounding box、质心、主轴和置信度。
第 34 周:点云配准
学习顺序:
- 已知对应点的 SVD 刚体变换。
- ICP point-to-point。
- ICP point-to-plane。
- 鲁棒核、对应点拒绝、trimmed ICP。
- GICP、NDT。
- FPFH + RANSAC/FGR 粗配准,再用 ICP 精配准。
必须能解释 ICP 的失败条件:初值差、重叠不足、几何退化、动态物体、尺度不一致和错误对应。
第 35 周:流水线工程化
- Component、intra-process、线程池。
- 处理频率与输入频率解耦。
- bounded queue、背压和丢帧策略。
- 参数动态更新、指标、诊断和回放测试。
阶段项目:经典点云流水线
PointCloud2
-> 时间/TF校验
-> ROI裁剪
-> 体素降采样
-> 去噪
-> 地面/桌面RANSAC
-> 聚类
-> 特征/包围盒
-> 目标位姿或障碍物输出
验收标准:
- 给出每阶段 p50/p95 延迟与点数变化。
- 同一 bag 重放结果可复现。
- 对 voxel、RANSAC threshold、cluster tolerance 做参数敏感性分析。
- 处理 TF 缺失、空点云、NaN、时间倒退和超大帧。
11. 阶段 7:LiDAR SLAM 与深度点云学习(第 36–40 周)
第 36 周:LiDAR 里程计
- Scan-to-scan 与 scan-to-map。
- 去畸变、运动补偿、关键帧、局部地图。
- 退化检测与协方差/置信度。
- LOAM:将高频里程计和低频精细建图分离,实现实时低漂移建图。[P8]
- KISS-ICP:理解“简单 ICP + 合理阈值与运动模型”为什么仍有竞争力。[P10]
第 37 周:图优化 SLAM
- Pose graph:节点、里程计边、回环边。
- 非线性最小二乘、Jacobian、信息矩阵、鲁棒核。
- 回环检测、错误回环、全局一致性。
- 先读 Grisetti 等人的 graph-based SLAM tutorial,再使用 GTSAM/g2o/Ceres 实现简化版。[P7]
第 38 周:点云深度学习基础
理解三类表示:
- Point-based:PointNet、PointNet++、DGCNN。
- Voxel/Sparse convolution:VoxelNet、SECOND、SparseConv/Minkowski。
- Projection/Range-view:将 LiDAR 投影为 range image 后做 2D 网络。
学习任务:分类、部件分割、语义分割、3D 检测、实例分割、姿态估计、场景流。
第 39 周:实现一个基准
建议二选一:
- 室内语义分割:PointNet++/DGCNN,在 S3DIS 或小型自采数据上训练。
- LiDAR 3D 检测:使用 OpenPCDet/MMDetection3D 跑通 KITTI 或 nuScenes 小规模实验。
重点不是刷榜,而是理解:数据坐标系、标签定义、增强、类别不平衡、mIoU/mAP、推理延迟和域偏移。
第 40 周:部署与 ROS 2 集成
- PyTorch -> ONNX -> TensorRT(按硬件选择)。
- 固定/动态 shape、点数采样、批处理策略。
- ROS 2 推理节点、异步执行、GPU/CPU 数据拷贝。
- 输出不确定度、置信度阈值、超时与经典算法回退。
阶段项目:
- 路线 A:KISS-ICP/LOAM 类里程计 + 轨迹评测。
- 路线 B:点云语义分割节点 + ROS bag 离线与在线评测。
验收标准:不能只报告 FPS;至少同时报告准确度、端到端延迟、显存/内存、失败案例和输入分布变化。
12. 阶段 8:Capstone 系统集成(第 41–44 周)
12.1 推荐题目一:移动家居机器人
目标:在仿真家庭环境中,机器人利用 2D LiDAR/3D 深度点云完成定位、动态障碍检测、语义目标识别和 Nav2 导航。
模块:
- robot_description + Gazebo。
- ros2_control 差速底盘。
- EKF 融合 wheel odom + IMU。
- SLAM Toolbox/AMCL。
- 点云地面去除、聚类或语义分割。
- PointCloud2 -> Nav2 costmap/Collision Monitor。
- Behavior Tree:导航、等待、重规划、恢复、回充模拟。
12.2 推荐题目二:点云引导机械臂抓取
目标:RGB-D/点云检测桌面目标,估计抓取位姿,写入 Planning Scene,调用 MoveIt 2 执行抓取。
模块:
- 手眼标定与 TF。
- 点云裁剪、平面分割、聚类、姿态估计。
- 抓取候选生成与碰撞检查。
- MoveIt Task Constructor。
- ros2_control 轨迹执行。
12.3 推荐题目三:3D LiDAR 巡检机器人
目标:实现点云里程计、局部地图、变化检测和自主巡检。
模块:
- LiDAR 去畸变。
- ICP/GICP/KISS-ICP 里程计。
- Pose graph 或地图拼接。
- 点云变化检测。
- Nav2 路点巡检与异常上报。
12.4 Capstone 交付物
- 架构图、TF tree、消息与 Action 接口说明。
- 一键启动脚本、Docker 镜像和参数模板。
- 至少 2 个 rosbag:正常场景与故障场景。
- 自动化测试、CI、benchmark 报告。
- 3–5 分钟演示视频。
- 失败案例清单与下一步优化计划。
13. 经典书籍:阅读顺序与用途
A 级:主线精读
| 书籍 | 建议章节/用途 | 阅读方式 |
|---|---|---|
| Lynch & Park, Modern Robotics: Mechanics, Planning, and Control | SE(3)、运动学、动力学、规划、控制;有公开视频与代码 | 贯穿阶段 0–4,做课后题和数值实现 [B1] |
| Siciliano et al., Robotics: Modelling, Planning and Control | 更传统、完整的建模与控制体系 | 与 Modern Robotics 对照阅读 [B2] |
| Thrun, Burgard & Fox, Probabilistic Robotics | Bayes filter、KF、粒子滤波、定位、SLAM | 阶段 5–7,重视概率模型 [B3] |
| Barfoot, State Estimation for Robotics, 2nd ed. | Lie group 上的估计、最小二乘、批量/递推估计 | 阶段 5–7 深读 [B4] |
| LaValle, Planning Algorithms | 配置空间、搜索、采样规划、动力学规划 | 阶段 4–5;官方提供电子版 [B5] |
B 级:按方向深入
| 书籍 | 适用方向 |
|---|---|
| Spong, Hutchinson & Vidyasagar, Robot Modeling and Control | 机械臂动力学与控制 |
| Craig, Introduction to Robotics: Mechanics and Control | 传统 DH、机械臂入门与习题 |
| Siciliano & Khatib (eds.), Springer Handbook of Robotics | 作为百科式参考,不建议线性通读 |
| Siegwart, Nourbakhsh & Scaramuzza, Introduction to Autonomous Mobile Robots | 移动机器人、定位、规划、导航 |
| Corke, Robotics, Vision and Control | MATLAB/Python 实践、视觉与控制连接 |
| Szeliski, Computer Vision: Algorithms and Applications | 视觉、几何、特征和优化基础 |
| Pomerleau et al. / 相关综述资料 | 点云配准算法谱系与实验设计 |
C 级:控制进阶
- Slotine & Li, Applied Nonlinear Control:非线性、Lyapunov、自适应控制。
- Rawlings, Mayne & Diehl, Model Predictive Control:MPC 理论。
- Tedrake, Underactuated Robotics 在线讲义:LQR、轨迹优化、MPC、接触和学习控制。[C2]
14. 必读论文与阅读目的
不要追求数量。每篇论文至少回答:问题是什么、状态/观测/目标函数如何定义、假设是什么、计算复杂度如何、在哪些场景会失败、如何复现。
14.1 运动规划与 SLAM
- Kavraki et al. (1996), “Probabilistic Roadmaps for Path Planning in High-Dimensional Configuration Spaces.”
阅读目的:PRM 的学习/查询双阶段结构和高维配置空间规划。[P5] - LaValle & Kuffner (2001), “Randomized Kinodynamic Planning.”
阅读目的:RRT 与动力学约束规划。[P6] - Grisetti et al. (2010), “A Tutorial on Graph-Based SLAM.”
阅读目的:Pose graph、误差项、最小二乘与稀疏结构。[P7] - Zhang & Singh (2014), “LOAM: Lidar Odometry and Mapping in Real-time.”
阅读目的:实时 LiDAR 里程计/建图任务分解;DOI: 10.15607/RSS.2014.X.007。[P8]
14.2 点云几何与配准
- Besl & McKay (1992), “A Method for Registration of 3-D Shapes.”
阅读目的:ICP 的交替对应—位姿优化框架、收敛与初值依赖。[P1] - Segal, Haehnel & Thrun (2009), “Generalized-ICP.”
阅读目的:点到点/点到面统一的概率几何解释。[P2] - Rusu, Blodow & Beetz (2009), “Fast Point Feature Histograms (FPFH) for 3D Registration.”
阅读目的:局部几何描述子与粗配准。[P3] - Magnusson (2009), The Three-Dimensional Normal-Distributions Transform.
阅读目的:NDT 表示、注册、表面分析和回环检测。[P4] - Vizzo et al. (2023), “KISS-ICP: In Defense of Point-to-Point ICP.”
阅读目的:自适应阈值、运动补偿和简洁系统设计。[P10]
14.3 点云深度学习
- Qi et al. (2017), “PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation.”
阅读目的:对无序点集的置换不变表示、对称聚合函数。[P9] - Qi et al. (2017), “PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space.”
阅读目的:分层采样、邻域和局部特征。[P11] - Wang et al. (2019), “Dynamic Graph CNN for Learning on Point Clouds.”
阅读目的:EdgeConv 与动态邻接图。[P12] - Zhou & Tuzel (2018), “VoxelNet.”
阅读目的:从点到体素特征,再到 3D 检测。 - Yan, Mao & Li (2018), “SECOND.”
阅读目的:稀疏卷积带来的 3D 检测效率。 - Lang et al. (2019), “PointPillars.”
阅读目的:pillar 表示与实时检测权衡。 - Thomas et al. (2019), “KPConv.”
阅读目的:点云上的可学习核点卷积。
14.4 建议论文笔记模板
# 论文标题
- 问题定义:
- 输入/输出:
- 核心假设:
- 状态变量与坐标系:
- 目标函数:
- 算法步骤:
- 复杂度/实时性:
- 数据集与指标:
- 最强基线:
- 失败条件:
- 可复现实验:
- 可用于我的系统的模块:
15. 高质量教程与课程清单
ROS 2 与工具链
- ROS 2 Jazzy 官方 Tutorials:按 CLI -> Client Libraries -> Intermediate -> Advanced 学习。[S2]
- ros2_control 官方 Getting Started 与 demos,尤其是 6-DOF 完整示例。[S3]
- MoveIt 2 官方 Tutorials:Quickstart、C++、Planning Scene、MTC。[S4]
- Nav2 官方 Getting Started、Concepts 与 First-Time Robot Setup Guide。[S5]
- Gazebo 官方 ROS 2 integration 与
ros_gz_project_template。[S8]
数学、控制与规划
- Northwestern Modern Robotics 视频课程与免费预印本。[B1]
- MIT Underactuated Robotics 在线讲义与课程。[C2]
- MIT Robotic Manipulation:感知、规划和控制一体化课程。[C1]
- ETH Zurich Robot Dynamics:运动学、动力学与典型机器人控制。[C3]
- LaValle Planning Algorithms 在线书。[B5]
点云与 3D 感知
- PCL 官方 Tutorials:按 I/O -> filtering -> normals -> segmentation -> registration -> recognition 学习。[S6]
- Open3D 官方 Point Cloud 与 Registration 教程。[S7]
- KITTI、nuScenes、SemanticKITTI 官方 benchmark/开发工具。
- OpenPCDet 或 MMDetection3D:用于理解现代 3D 检测工程管线。
- KISS-ICP 官方代码:适合研究“简洁、可复现、强基线”的 LiDAR 里程计。
16. 90 天启动计划
如果希望先快速形成闭环,再进入全年路线,可按以下执行。
第 1–30 天:ROS 2 基础闭环
- 第 1 周:安装 Jazzy;完成 CLI、topic/service/action、workspace/package。
- 第 2 周:rclcpp 发布订阅、参数、Launch、测试。
- 第 3 周:TF2、URDF/Xacro、RViz、robot_state_publisher。
- 第 4 周:Gazebo + rosbag2;做一个传感器处理 component。
30 天成果:一个可仿真、可录包、可回放、可测试的 ROS 2 机器人骨架。
第 31–60 天:控制闭环
- 第 5 周:Modern Robotics 的 SE(3)、FK/IK。
- 第 6 周:Jacobian、轨迹、PID。
- 第 7 周:ros2_control 架构与标准控制器。
- 第 8 周:自定义 Hardware Interface;Gazebo 与假硬件切换。
60 天成果:底盘或机械臂在 ros2_control 下完成轨迹跟踪,并输出误差/抖动报告。
第 61–90 天:点云闭环
- 第 9 周:PointCloud2、TF、PCL/Open3D、voxel/downsample。
- 第 10 周:法向、RANSAC 平面、聚类。
- 第 11 周:ICP 与粗—精配准。
- 第 12 周:ROS 2 component 化、bag benchmark、性能优化。
90 天成果:实时点云流水线 + 回放数据集 + benchmark + CI。
17. 每周学习节奏
以每周 10 小时为例:
| 时间 | 活动 | 输出 |
|---|---|---|
| 2 小时 | 教材/论文 | 一页结构化笔记 |
| 2 小时 | 官方教程 | 可运行最小例程 |
| 4 小时 | 阶段项目 | 可提交代码与实验 |
| 1 小时 | 测试/benchmark | 指标与图表 |
| 1 小时 | 复盘 | 错误清单、下周计划 |
建议采用“三遍学习法”:
- 第一遍:建立地图——快速阅读目录、定义、输入输出。
- 第二遍:从零实现——只实现最小算法,不追求框架完整。
- 第三遍:系统集成——加入时间戳、TF、异常处理、性能和测试。
18. 工程化与 DevOps 建议
你的 DevOps 背景可以直接转化为机器人研发优势。
18.1 CI 分层
L0: format / lint / license
L1: unit tests(数学、滤波、控制器)
L2: package build + launch tests
L3: rosbag replay regression
L4: headless simulation integration
L5: hardware-in-the-loop(自托管 runner)
18.2 建议质量门禁
colcon test全通过;禁止静默忽略失败。- clang-format、clang-tidy、cpplint/ament_lint。
- ASan/UBSan;并发模块增加 TSan 专项任务。
- 固定 rosbag 回归集;输出轨迹误差、点云数量、延迟、CPU/内存。
- 参数和模型文件做 schema/语义检查。
- Docker 镜像固定 ROS 发行版与 apt 依赖;记录 Git SHA 和参数快照。
18.3 可观测性
至少暴露:
- 输入/输出频率、消息年龄、队列长度、丢帧数。
- TF 查询失败次数。
- 算法耗时 p50/p95/p99/max。
- 控制周期 jitter 与 deadline miss。
- 点云输入点数、输出点数、NaN 比例、聚类数。
- 定位质量、协方差、重定位次数。
19. 常见误区与纠偏
误区 1:先学 ROS,再学机器人理论
问题:会调用接口但无法判断参数、坐标系和算法是否正确。
纠偏:ROS 2 与 Modern Robotics/概率机器人同步推进。
误区 2:点云一上来就做 PointNet/检测网络
问题:忽略标定、时间同步、运动畸变和数据分布。
纠偏:先完成滤波—法向—分割—配准的经典流水线,再进入学习方法。
误区 3:RViz 看起来对就是对
问题:视觉上无法可靠暴露毫米级误差、时间延迟和坐标漂移。
纠偏:所有核心模块必须有数值指标和 bag 回归。
误区 4:仿真成功即可上真机
问题:真机包含摩擦、饱和、延迟、丢包、温漂和急停。
纠偏:使用故障注入、速度/力矩限幅、watchdog、安全状态机和 HIL。
误区 5:把实时等同于“平均很快”
问题:实时系统关心最坏时延和 deadline,而不是平均 FPS。
纠偏:统计 jitter、p99/max、deadline miss;控制环中避免阻塞和动态分配。
误区 6:一个“大节点”解决全部问题
问题:耦合严重、无法测试、无法复用;但过度拆分又带来通信开销。
纠偏:按生命周期、实时边界、故障域和部署单元拆分;高带宽流水线优先 Components/intra-process。
20. 学习完成度自测
ROS 2
- 能解释 Topic/Service/Action 的语义边界。
- 能针对传感器、命令和地图选择 QoS。
- 能设计无环、语义正确的 TF tree。
- 能定位 callback starvation、消息积压与时间戳问题。
- 能使用 lifecycle、composition、rosbag 和 tracing。
运控
- 能推导一个串联机械臂的 FK、Jacobian 和基本动力学。
- 能解释 PID、computed torque、阻抗和 MPC 的适用场景。
- 能写 ros2_control Hardware Interface 与 Controller。
- 能测量控制周期 jitter,并设计通信失败安全态。
- 能通过 MoveIt 2 或 Nav2 完成规划—执行闭环。
点云
- 能解释 PointCloud2 内存布局和坐标变换。
- 能针对噪声选择 voxel、SOR/ROR 和 ROI。
- 能解释法向、RANSAC、聚类和 FPFH 参数。
- 能实现 ICP,并诊断退化和错误对应。
- 能完成 LiDAR 里程计或语义分割基准。
- 能将输出接入 Planning Scene、Nav2 Costmap 或控制安全模块。
系统工程
- 能用 bag 和仿真做确定性回归。
- 能以 CI 自动构建、测试和评测。
- 能报告准确率、延迟、资源、鲁棒性和失败案例。
- 能从传感器时序一直追踪到执行器命令。
21. 推荐的主线与支线选择
主线 A:移动机器人/智能家居 Agent
优先级:ROS 2 -> ros2_control 底盘 -> 状态估计 -> Nav2 -> 点云障碍物 -> 语义感知 -> 任务 Agent。
关键原则:LLM Agent 不直接替代实时控制和安全层。推荐分层:
LLM/任务规划层
-> 行为树/任务执行层
-> Nav2/MoveIt技能层
-> 安全监督与约束层
-> ros2_control实时控制层
-> 硬件
LLM 负责高层意图解释、任务分解和异常解释;确定性 Action、Behavior Tree、安全控制器负责执行。
主线 B:机械臂与移动操作
优先级:SE(3) -> 运动学/动力学 -> ros2_control -> MoveIt 2 -> RGB-D/点云 -> 抓取 -> 阻抗/力控。
主线 C:3D LiDAR 感知与 SLAM
优先级:PointCloud2/PCL -> 配准 -> 状态估计 -> LiDAR 里程计 -> 图优化 -> 语义点云 -> 嵌入式部署。
22. 资料索引与引用
官方文档与课程
- [S1] ROS REP-2000, ROS 2 Releases and Target Platforms: https://www.ros.org/reps/rep-2000.html
- [S2] ROS 2 Jazzy Tutorials: https://docs.ros.org/en/jazzy/Tutorials.html
- [S3] ros2_control Jazzy Documentation: https://control.ros.org/jazzy/index.html
- [S4] MoveIt 2 Tutorials: https://moveit.picknik.ai/main/doc/tutorials/tutorials.html
- [S5] Nav2 Concepts: https://docs.nav2.org/concepts/index.html
- [S6] PCL Tutorials: https://pointclouds.org/documentation/tutorials/
- [S7] Open3D Point Cloud Tutorial: https://www.open3d.org/docs/latest/tutorial/geometry/pointcloud.html
- [S8] Gazebo ROS 2 Integration: https://gazebosim.org/docs/latest/ros2_integration/
- [C1] MIT Robotic Manipulation: http://manipulation.csail.mit.edu/
- [C2] MIT Underactuated Robotics: https://underactuated.csail.mit.edu/
- [C3] ETH Zurich Robot Dynamics: https://rsl.ethz.ch/education-students/lectures/robotdynamics.html
书籍
- [B1] Kevin M. Lynch & Frank C. Park, Modern Robotics: Mechanics, Planning, and Control. Cambridge University Press. https://modernrobotics.northwestern.edu/
- [B2] Bruno Siciliano et al., Robotics: Modelling, Planning and Control. Springer, 2009. https://link.springer.com/book/10.1007/978-1-84628-642-1
- [B3] Sebastian Thrun, Wolfram Burgard & Dieter Fox, Probabilistic Robotics. MIT Press, 2005. https://mitpress.mit.edu/9780262201629/probabilistic-robotics/
- [B4] Timothy D. Barfoot, State Estimation for Robotics, 2nd ed. Cambridge University Press. https://www.cambridge.org/core/books/state-estimation-for-robotics/00E53274A2F1E6CC1A55CA5C3D1C9718
- [B5] Steven M. LaValle, Planning Algorithms. Cambridge University Press. https://lavalle.pl/planning/
论文
- [P1] P. J. Besl & N. D. McKay, “A Method for Registration of 3-D Shapes,” IEEE TPAMI, 1992. DOI: 10.1109/34.121791.
- [P2] A. Segal, D. Haehnel & S. Thrun, “Generalized-ICP,” Robotics: Science and Systems, 2009.
- [P3] R. B. Rusu, N. Blodow & M. Beetz, “Fast Point Feature Histograms (FPFH) for 3D Registration,” ICRA, 2009.
- [P4] M. Magnusson, The Three-Dimensional Normal-Distributions Transform, PhD thesis, Örebro University, 2009.
- [P5] L. E. Kavraki et al., “Probabilistic Roadmaps for Path Planning in High-Dimensional Configuration Spaces,” IEEE Transactions on Robotics and Automation, 1996. https://ieeexplore.ieee.org/document/508439
- [P6] S. M. LaValle & J. J. Kuffner Jr., “Randomized Kinodynamic Planning,” IJRR, 2001. https://doi.org/10.1177/02783640122067453
- [P7] G. Grisetti et al., “A Tutorial on Graph-Based SLAM,” IEEE Intelligent Transportation Systems Magazine, 2010. https://ieeexplore.ieee.org/document/5681215/
- [P8] J. Zhang & S. Singh, “LOAM: Lidar Odometry and Mapping in Real-time,” RSS, 2014. https://doi.org/10.15607/RSS.2014.X.007
- [P9] C. R. Qi et al., “PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation,” CVPR, 2017. https://openaccess.thecvf.com/content_cvpr_2017/html/Qi_PointNet_Deep_Learning_CVPR_2017_paper.html
- [P10] I. Vizzo et al., “KISS-ICP: In Defense of Point-to-Point ICP,” IEEE Robotics and Automation Letters, 2023. https://ieeexplore.ieee.org/document/10015694
- [P11] C. R. Qi et al., “PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space,” NeurIPS, 2017. https://proceedings.neurips.cc/paper_files/paper/2017/hash/d8bf84be3800d12f74d8b05e9b89836f-Abstract.html
- [P12] Y. Wang et al., “Dynamic Graph CNN for Learning on Point Clouds,” ACM TOG, 2019. https://doi.org/10.1145/3326362
23. 最终建议
如果只保留一条最稳妥的学习主线:
Modern Robotics 理论 + ROS 2 Jazzy 官方教程 + ros2_control + Nav2/MoveIt 2(二选一先深入)+ PCL/Open3D 经典点云 + 一个可回放、可评测、可 CI 的 Capstone。
前 90 天不要同时追逐机械臂、移动机器人、SLAM、3D 检测和 LLM Agent。先以一个机器人形态形成闭环;当坐标、时间、状态估计、控制和测试体系稳定后,再接入深度点云模型与高层 Agent,学习效率会明显更高。