Skip to main content

基础通信

ROS2的基础通信

通信模式作用特点应用场景
话题:发布-订阅 (Publish-Subscribe)单向、异步数据流高效、解耦,适用于传感器数据流、状态更新传感器数据流(如相机图像、激光雷达数据)、机器人状态更新(如位置、速度)
服务:服务端-客户端 (Service-Client)同步、请求-响应阻塞式通信,用于需要明确结果的任务触发特定动作(如抓取物体)、查询物体 ID
动作 (Actions)长时任务处理异步、支持进度反馈和取消移动机器人到指定位置、机械臂执行复杂任务
参数 (Parameters)动态配置节点行为非实时通信,用于启动时或运行时的配置调整调整 PID 控制器增益、修改传感器发布频率

话题

  • 运行话题的发布者节点 : ros2 run learning_topic topic_helloworld_pub
  • 运行话题的订阅者节点 : ros2 run learning_topic topic_helloworld_sub

可以看到发布者循环发布“Hello World”字符串消息,订阅者也以几乎同样的频率收到该话题的消息数据。

服务

  • 运行服务的服务端节点 : ros2 run learning_service service_adder_server
  • 运行服务的客户端节点 : ros2 run learning_service service_adder_client 2 3

动作

  • 运行动作的服务端节点 : ros2 run learning_action action_move_server
  • 运行动作的客户端节点 : ros2 run learning_action action_move_client

参数

等价于机器学习中的超参数即:在开始训练前设置的参数,例如:学习率、隐藏层大小、迭代次数等等。

ROS机器人系统中的参数是全局字典,可以运行多个节点中共享数据。
  • 运行节点 :ros2 run learning_parameter param_declare
  • 在另外终端设置参数 :ros2 param set param_declare robot_name turtle