ROS 2
这里只做记录,Mac 上不需要安装 ROS 2:命令在机械臂工控机、Ubuntu 主机或 Docker 容器里执行。
示例以 ROS 2 Jazzy 的基础 CLI 为准;用前先在每个终端加载环境。未注明的节点、话题与坐标系名称均为示例,需按实际系统替换。
基础条目参考:ROS 2 官方话题教程源码、ROS 2 官方参数教程源码、ROS 2 官方录包教程源码。
环境与工作空间
source 环境脚本,用 colcon build 编译工作空间。
加载 ROS 2 环境
source /opt/ros/jazzy/setup.bash
- 助记:
ROS← Robot Operating System(机器人操作系统);setup 准备环境,source 让设置在当前 shell 生效。 - 作用:以 Ubuntu + bash + Jazzy 为例;发行版目录按安装情况替换,zsh 使用 setup.zsh。
编译并加载当前工作空间
colcon build --symlink-install
source install/setup.bash
- 助记:
colcon名称来自 collective construction(统一构建);build 编译,symlink-install 用符号链接安装部分产物。 - 作用:在含 src/ 的工作空间根目录执行,先加载 ROS 2 基础环境;编译成功后再 source。
节点与话题
查看节点和话题,打印话题内容,查看发布频率。
列出节点
ros2 node list
- 助记:
node= 节点,list= 列出;一个节点代表 ROS 图中的一个计算参与者。
列出话题及消息类型
ros2 topic list -t
- 助记:
topic= 话题,-t= show types(显示类型);话题名是通道名,消息类型决定字段结构。
打印话题消息
ros2 topic echo /chatter
- 助记:
echo= 回显;把订阅到的消息打印出来,通常持续运行直到 ctrl + c。 - 作用:需已有发布者;/chatter 是演示话题,实际替换为 topic list 的结果。
查看话题发布频率
ros2 topic hz /chatter
- 助记:
Hz= hertz(赫兹,每秒次数);命令统计收到的消息频率,不是消息大小。
服务、动作与参数
调用服务、发送动作目标,查看和修改参数。
查看服务和动作类型
ros2 service list -t
ros2 action list -t
- 助记:
service是请求/响应,action是有反馈且可取消的长任务;list 只查看接口,不调用动作。
查看节点的参数及参数值
ros2 param list /talker
ros2 param get /talker use_sim_time
- 助记:
param← parameter(参数);list 列名称,get 读取某个参数的值。 - 作用:节点名按实际替换;use_sim_time 是常见参数,若节点没有声明则无法读取。
查看消息或服务的字段定义
ros2 interface show std_msgs/msg/String
- 助记:
interface= 接口定义,show= 展示;msg 是 message(消息),srv 是 service(服务)。
启动
ros2 run 运行单个节点,ros2 launch 用启动文件一次运行多个节点。
运行演示发布节点
ros2 run demo_nodes_cpp talker
- 助记:
run= 运行可执行程序,后面先写 package(包)再写 executable(程序);talker 是演示发布者的名字。 - 作用:需要安装 demo_nodes_cpp;运行后可在另一个已加载环境的终端检查 /chatter。
数据包录制
ros2 bag 录制、回放和查看数据包。
录制一个话题
ros2 bag record -o chatter-demo /chatter
- 助记:
bag联想装消息的袋子;record = 录制,-o= output(输出目录)。 - 作用:输出目录应尚不存在;ctrl + c 停止录制并保存。
查看录包概要
ros2 bag info chatter-demo
- 助记:
info← information(信息);先看录包里的话题、时长和消息量,再决定如何回放。
回放录制的数据包
ros2 bag play chatter-demo
- 助记:
play= 播放;回放是重新发布消息,可能被订阅者当成新的实时数据。 - 作用:回放会重新发布话题;在隔离的调试环境中使用,避免触发连接的机器人控制节点。
TF 与可视化
查看坐标变换,用 RViz 显示机器人状态。
查看两坐标系之间的变换
ros2 run tf2_ros tf2_echo base_link tool0
- 助记:
TF可按 transform(坐标变换)记,tf2 是 ROS 的坐标变换库;echo 显示两个坐标系的关系。 - 作用:需要运行中的 TF 发布者;坐标系名称按机器人替换。
启动 RViz
rviz2
- 助记:
RViz可按 ROS visualization(ROS 可视化)记;Fixed Frame 是所有数据显示时使用的参考坐标系。 - 作用:需要 rviz2 和图形界面,启动后设置 Fixed Frame 并添加显示项。