ROS 2 的底层通信逻辑彻底一次系统级的大总结。

📅 2026/6/27 4:41:29
ROS 2 的底层通信逻辑彻底一次系统级的大总结。
一、 静态查字典与下发动作核心三步曲无论面对哪种通信机制Topic、Service、Action这套逻辑完全通用。1. 找端口名称 (List)指令ros2 topic/service/action list附加字段-t (或 --show-types)返回内容解析默认只列出当前网络中所有的“门牌号”如 /turtle1/cmd_vel。加 -t在门牌号后面直接附带“菜单名称”接口类型如 /turtle1/cmd_vel [geometry_msgs/msg/Twist]。2. 查协议内容 (Interface Show)指令ros2 interface show 接口类型返回内容解析Topic直接列出所有字段如 float32 x, float32 y。Service分为两段--- 上面是 Request请求下面是 Response响应。Action分为三段--- 上面是 Goal目标中间是 Result结果下面是 Feedback反馈。3. 手动下发指令 (Send/Call/Pub)指令格式ros2 topic/service/action pub/call/send_goal 端口名 接口类型 YAML数据附加字段与返回内容解析Topic (pub)附加字段-1 (或 --once) 表示只发一次-r 10 表示以 10Hz 频率持续发送。返回内容终端会不断打印 publishing: YAML数据表示数据正在被持续广播。Service (call)附加字段无。返回内容等待服务端处理后打印 response: 及其包含的响应数据。Action (send_goal)附加字段--feedback 实时打印任务执行进度。返回内容Goal accepted with ID: ...服务端接单生成 UUID 快递单号Feedback: ...如果加了 --feedback实时打印进度Result: ...任务结束打印最终结果二、 动态看现场Info 命令当你知道了门牌号和协议后想知道“此时此刻谁在用这个端口状态如何”就用 info。1. Topic Info指令ros2 topic info /turtle1/cmd_vel附加字段-v (或 --verbose) 显示更详细的 QoS 策略信息。返回内容解析Type: 使用的消息类型。Publisher count: 正在发送数据的节点数量。Subscription count: 正在接收数据的节点数量。2. Service Info指令ros2 service info /spawn返回内容解析Type: 使用的服务类型。Service count: 提供该服务的节点数量通常必须大于 0否则客户端会一直卡在 Waiting。Client count: 当前正在请求该服务的节点数量。3. Action Info指令ros2 action info /turtle1/rotate_absolute返回内容解析Action servers: 提供该动作的节点数量餐厅开没开门。Action clients: 正在使用该动作的节点数量有几个顾客在排队/点餐。 终极心法口诀查字典三步走list 找门牌 ➔ type 找菜单 ➔ interface show 查菜名。下指令三兄弟Topic 用 pubService 用 callAction 用 send_goal。看现场一把抓万物皆可 info查数量、查节点、查死活。填表全靠 YAML下发数据时严格按照 interface show 查出来的层级关系用 {} 嵌套填写。掌握了这套体系你已经具备了独立排查 ROS 2 任何通信 Bug 的“上帝视角”