Skip to content

ROS 2 学习笔记

边做边记。环境:Ubuntu 22.04 + ROS 2 Humble$ROS_WS 指 notebook 仓库里的 colcon 工作区 workspaces/ros2-humble/(源码在 src/,笔记在站点 /ros2/)。

运动学、DH、李群等几何先看侧栏 机器人学;反馈与状态空间看 控制论。本课把这些接到话题、TF 和仿真。ROS 2 不是「命令大全」:每一课先问为什么要这种通信原语,再动手。公式出现在 TF 的齐次变换和 cmd_vel 的差分驱动运动学。

逐步说明:为何机器人中间件要拆成 Topic / Service / Action(点击展开)

传感器 50Hz 往外涌,没有「请求—应答」的对方——用 Topic,解耦、可丢。标定相机内参是一次性问答——用 Service,保证有响应。导航到目标要几分钟、要反馈进度、可取消——用 Action。弄错原语:用 Service 传激光会堵住客户端;用 Topic 做「请给张地图」会丢请求。后面每课只练一种,但脑子里要先有这张表。

本课来自 ros2-humble-notes,已并入本仓库。

怎么用这些笔记

先进入工作区(相对 notebook 仓库根目录):

bash
cd workspaces/ros2-humble
export ROS_WS="$PWD"
source /opt/ros/humble/setup.bash
source "$ROS_WS/install/setup.bash"   # 编译之后
  1. 按课号顺序慢慢看;每课都能在本机复现。
  2. 笔记讲概念与步骤,代码以 workspaces/ros2-humble/src/ 为准;每课文末有「对照代码」表(相对链接指向仓库内源文件)。
  3. 每课都有 「通俗理解」「常见疑问」「验证标准」(供学员自检与 AI 判读是否过关)。
  4. 编译(若 shell 里启用了 conda,建议先避开它的 Python):
bash
cd $ROS_WS
export PATH="/usr/bin:$PATH"
source /opt/ros/humble/setup.bash
colcon build --cmake-args -DPython3_EXECUTABLE=/usr/bin/python3
source install/setup.bash

只编某一阶段:

bash
colcon build --packages-select lesson_interfaces py_learning simple_robot \
  --cmake-args -DPython3_EXECUTABLE=/usr/bin/python3

课号 ↔ 代码对照

基础(00–05,包 py_pubsub

笔记代码运行
0000-环境与工作区.md环境配置
0101-Topic发布订阅.mdpy_pubsub talker/listenerros2 run py_pubsub talker
0202-Service请求应答.mdadd_two_ints_*ros2 run py_pubsub add_two_ints_server
0303-Action长任务.mdfibonacci_action_*ros2 run py_pubsub fibonacci_action_server
0404-Parameter参数.mdparam_talkerros2 run py_pubsub param_talker
0505-Launch一键启动.mdlaunch/*.launch.pyros2 launch py_pubsub pubsub.launch.py

阶段 A–C(06–12)

笔记包 / 代码运行
0606-自定义消息.mdlesson_interfaces + py_learning sensor_*ros2 run py_learning sensor_status_publisher
0707-自定义服务.mdSetLed + set_led_*ros2 run py_learning set_led_server
0808-TF2坐标变换.mdtf_broadcaster / tf_listenerros2 run py_learning tf_broadcaster
0909-速度控制cmd_vel.mdcmd_vel_publisherros2 run py_learning cmd_vel_publisher
1010-URDF与机器人描述.mdsimple_robot URDFros2 launch simple_robot display.launch.py
1111-Gazebo最小仿真.mdGazebo world + bridgeros2 launch simple_robot gazebo.launch.py
1212-RViz与组合Launch.mdsim_stackros2 launch simple_robot sim_stack.launch.py

课程目录(状态)

主题状态
00–05环境 / Topic / Service / Action / Param / Launch已完成
06–07自定义 msg / srv(阶段 A)已完成
08–10TF2 / cmd_vel / URDF(阶段 B)已完成
11–12Gazebo / RViz 组合栈(阶段 C)已完成

包一览

内容
py_pubsub01–05 入门通信与 Launch
lesson_interfaces06–07 自定义接口
py_learning06–09 示例节点
simple_robot10–12 URDF / Gazebo / RViz

形式约定

  • 一课一个 Markdown;源码文件头可标 Lesson 0x
  • 结构:目标 → 概念 → 通俗理解常见疑问 → 动手 → 命令 → 对照代码 → 验证标准 → 小结。
  • 不整页复制源码;用对照表链接真实文件。
  • 需要冻结某课版本时用 git tag lesson-0x