20递进实验
48总学时
5知识篇章
⭐1~3难度跨度
CHAPTER 1
第 1 章 · ROS2 基础与开发环境
认识 ROS2 的设计哲学与命令体系,掌握工作空间与功能包两大工程骨架。
EXP-01⭐ · 2 学时
ROS2 简介
ROS 是什么、为什么机器人需要这层"中间件";ROS1 与 ROS2 架构对比(中心化 Master vs 去中心化 DDS),五层架构与设计特点、Humble 发行版选型,最后跑通 talker / listener 第一个 Hello World。
中间件DDSRMWtalker · listener
👆 点击小节标题或右侧标签直达对应章节
EXP-02⭐ · 2 学时
ROS2 常用命令工具
程序跑起来就变黑盒?ROS2 把"结构可见"做进了架构:与后端 / 前端 / 小程序 / 嵌入式横向对比后,看 ros2 六大命令族如何零侵入看清运行中的系统,并对比异步话题与同步服务两种通信模型。
CLIros2 runinfo / echo / hz
👆 点击小节标题或右侧标签直达对应章节
EXP-03⭐ · 2 学时
工作空间
以真实工程为案例:src / build / install / log 四层目录各管什么、colcon 构建的完整流程、Underlay 与 Overlay 的叠层覆盖规则,从源码到跑起来完整走一圈。
colconOverlaysource setup.bash
👆 点击小节标题或右侧标签直达对应章节
EXP-04⭐⭐ · 2 学时
功能包
ament_python 与 ament_cmake 两类功能包的差别;package.xml 三类依赖的阶段语义、setup.py 与 entry_points 入口注册,最后动手建包跑通话题闭环。
package.xmlCMakeListsentry_points
👆 点击小节标题或右侧标签直达对应章节
CHAPTER 2
第 2 章 · 通信机制精讲(节点 · 话题 · 服务 · 动作 · 接口 · 参数)
ROS2 应用开发的核心:搞清几种通信范式的原理差异与选型边界,并用真实传感器与执行器把它们跑起来。
EXP-05⭐ · 2 学时
节点
节点是 ROS2 的"一个岗位":一台机器人身上 20 多个程序怎么分工。以真实节点 gas_sensor_node 为标本,从构造 → spin → 销毁走完整生命周期,讲透"为什么要拆、spin 在转什么、节点怎么接上头"。
rclpyNode 类spin计算图
👆 点击小节标题或右侧标签直达对应章节
EXP-06⭐⭐ · 4 学时
话题通讯 · MQ5 传感器
发布 / 订阅模式全解析:消息从发布端走到回调里的四个环节、QoS 三要素如何决定"丢消息还是补消息";再把 MQ5 的电压读数经对数换算成 ppm,用阈值报警验证整条链路。
Publisher/SubQoSMQ5
👆 点击小节标题或右侧标签直达对应章节
EXP-07⭐⭐ · 4 学时
服务通讯 · 指纹传感器
同步请求 / 应答范式的四拍时序与"阻塞"代价;指纹模组 PS_* 串口协议,采图 → 生成特征 → 搜索比对三步验证封装成服务。
Client/ServersrvUART 指纹模组
👆 点击小节标题或右侧标签直达对应章节
EXP-08⭐⭐⭐ · 4 学时
动作通讯 · RFID 刷卡
Goal / Feedback / Result 三通道模型,以及藏在端点里的 5 条线;MFRC522 寻卡(REQA)→ 防冲突 → 读 UID 三步流程封装成动作服务器,带取消与进度反馈。
ActionGoal/FeedbackMFRC522
👆 点击小节标题或右侧标签直达对应章节
EXP-09⭐⭐ · 2 学时
自定义接口消息 · 温湿度传感器
从"数据串台"事故入手,讲清为什么要把一份数据打包成一条消息;.msg / .srv / .action 三种接口文件语法与 --- 分隔符,接口包的编译生成与跨语言复用。
.msg.srv接口包
👆 点击小节标题或右侧标签直达对应章节
EXP-10⭐⭐ · 2 学时
参数服务
参数是"从代码里拉出来的配置项":declare / get / set 三步生命周期,ParameterDescriptor 的两层约束,以及 set_parameters_callback 实现的动态调参闭环与参数持久化。
Parameter动态参数YAML
👆 点击小节标题或右侧标签直达对应章节
CHAPTER 3
第 3 章 · 时间体系 · 底层通信与分布式
先把"时间"这个隐性地基打牢,再拆开 DDS 黑盒:发现协议、QoS 匹配、域隔离与跨机通信,理解 ROS2 "去中心化"的底气从何而来。
EXP-11⭐⭐ · 2 学时
时间 API 与双时钟体系
Clock 只有一个出口、只有 use_sim_time 一个开关;系统时钟与 /clock 仿真时钟如何透明切换,create_timer 的真实行为与 Header.stamp 的盖章规范。
ClockTimerstamp
👆 点击小节标题或右侧标签直达对应章节
EXP-12⭐⭐ · 2 学时
DDS 通信中间件剖析
RMW → RTPS → DDS 分层解剖,Domain / Participant / Endpoint 域模型与 SPDP/SEDP 两阶段发现协议,并给出按数据特性选 QoS 的决策表。
RTPSRMW发现协议
👆 点击小节标题或右侧标签直达对应章节
EXP-13⭐⭐ · 2 学时
ROS2 分布式通讯
ROS_DOMAIN_ID 到底隔离了什么:组播地址与端口的物理映射、多机组网配置、两种发现模式的取舍,以及 SROS2 安全边界。
DOMAIN_ID多机组网域隔离
👆 点击小节标题或右侧标签直达对应章节
CHAPTER 4
第 4 章 · 可视化与调试工具链
rqt 与 rviz2 双可视化入口,rosbag2 数据闭环,Launch 系统与元功能包把单点实验串成系统工程。
EXP-14⭐ · 2 学时
Rqt 工具箱
Qt 插件体系一次加载多处复用;五大核心插件逐个拆——rqt_graph 看拓扑、rqt_plot 画波形、rqt_console 管日志、rqt_topic 查数据、rqt_bag 看录制。
rqt_graphrqt_plot插件
👆 点击小节标题或右侧标签直达对应章节
EXP-15⭐⭐ · 2 学时
Rviz2 三维可视化
OGRE 渲染引擎 + 插件面板体系;Fixed Frame 决定视角基准,TF 显示与七大 Display 类型的组合调试方法,以及黑屏问题的系统排查路径。
OGREFixed FrameDisplay
👆 点击小节标题或右侧标签直达对应章节
EXP-16⭐⭐ · 2 学时
录制与回放 rosbag2
bag 文件的 SQLite3 存储原理与 metadata.yaml 的关系,record / play 两大参数族,离线复现现场故障与数据集采集实战。
ros2 bagSQLite3数据回放
👆 点击小节标题或右侧标签直达对应章节
EXP-17⭐⭐ · 2 学时
Launch 启动系统
ROS2 为什么把启动语言换成 Python:解析、拉起、优雅退出的全过程,以及 remap 重映射、IfCondition 条件、OnProcessExit 事件三件套,最后做综合系统整合。
launch事件remap
👆 点击小节标题或右侧标签直达对应章节
EXP-18⭐ · 2 学时
元功能包
只声明依赖、不写代码的"打包胶水":讲清是什么、和普通包什么区别、什么场景该用(对照 bringup 包),按仓库场景四步自建一个,并进阶打成 apt 可装的 .deb。
metapackageexec_depend一键安装
👆 点击小节标题或右侧标签直达对应章节
CHAPTER 5
第 5 章 · 建模与坐标系统
TF2 坐标树让所有传感器"各归其位",URDF 让机器人在数字世界拥有身体。
EXP-19⭐⭐ · 2 学时
TF2 坐标变换
TF2 树为什么是一棵树:/tf 与 /tf_static 双通道与 QoS 差异、旋转为什么用四元数、查询一条变换链的全过程,并用三种手段验证坐标树。
TF2坐标树odom→base
👆 点击小节标题或右侧标签直达对应章节
EXP-20⭐⭐⭐ · 4 学时
URDF 机器人建模
link 三重属性(visual / collision / inertial)与 joint 六类型,惯性矩阵为什么不能拍脑袋;手写完整差分车模型,并用 Xacro 参数化把复用压到 80 行。
URDFlink/jointXacro
👆 点击小节标题或右侧标签直达对应章节
TECH STACK
技术栈与硬件平台
全课程围绕 ROS2 Humble + 真实外设展开,实验数据全部来自实物采集。
ROS2 Humble
DDS / RTPS
rclpy / rclcpp
colcon
rviz2
rqt
rosbag2
launch
TF2
URDF / Xacro
MQ5 · 指纹 · RFID
实验箱 B2 · 小车 C1
先懂原理,再敲命令
每个实验的"核心原理"章节建议在动手前通读——知道了"为什么",命令报错时才知道该去哪里排查。
通信机制是主轴
EXP-05~10 是全课程的脊梁:节点承载一切,话题 / 服务 / 动作 / 参数 / 自定义接口决定你的系统如何拆分与解耦。
善用交互动画
DDS 发现、QoS 匹配、TF2 坐标树这些抽象概念,先在交互沙盒里把参数调一遍,再去终端验证,印象会牢得多。
从单点到系统
EXP-17、18 两关通过后,试着把前面所有实验的节点串进一个 launch 文件、再用元包聚合起来——这就是完整机器人系统的雏形。