当前位置: 首页 > article >正文

ros2-4.1 服务通信介绍

服务是ROS图中节点之间的另一种通信方法。服务分为客户端和服务端,客户端发送请求给服务端,服务端可以根据客户端的请求做一些处理,然后返回结果给客户端。也称为为请求-响应模型。

服务和话题的不同之处,话题是没有返回的,适用于单向或大量的数据传递。而服务是双向的,客户端发送请求,服务端响应请求。放一下官方文档的图理解下

4.1.1 服务通信介绍

还是沿用海龟模拟器。启动模拟器节点,查看服务列表

ros2 service list
bohu@bohu-TM1701:~$ ros2 service list -t
/clear [std_srvs/srv/Empty]
/kill [turtlesim/srv/Kill]
/reset [std_srvs/srv/Empty]
/spawn [turtlesim/srv/Spawn]
/turtle1/set_pen [turtlesim/srv/SetPen]
/turtle1/teleport_absolute [turtlesim/srv/TeleportAbsolute]
/turtle1/teleport_relative [turtlesim/srv/TeleportRelative]
/turtlesim/describe_parameters [rcl_interfaces/srv/DescribeParameters]
/turtlesim/get_parameter_types [rcl_interfaces/srv/GetParameterTypes]
/turtlesim/get_parameters [rcl_interfaces/srv/GetParameters]
/turtlesim/list_parameters [rcl_interfaces/srv/ListParameters]
/turtlesim/set_parameters [rcl_interfaces/srv/SetParameters]
/turtlesim/set_parameters_atomically [rcl_interfaces/srv/SetParametersAtomically]

手动调用服务

bohu@bohu-TM1701:~$ ros2 service call /spawn turtlesim/srv/Spawn "{x: 1, y: 1}"
requester: making request: turtlesim.srv.Spawn_Request(x=1.0, y=1.0, theta=0.0, name='')

response:
turtlesim.srv.Spawn_Response(name='turtle2')

添加了一只小海龟。

也可以使用rqt调用

4.1.2 基于服务的参数通信

参数是节点的配置值。您可以将参数视为节点设置。而参数通信是基于服务通信实现的。

bohu@bohu-TM1701:~$ ros2 param list
/turtlesim:
  background_b
  background_g
  background_r
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  use_sim_time

background_b,background_g,background_r 就是背景色的设置。

可以查看参数值

bohu@bohu-TM1701:~$ ros2 param get /turtlesim background_r
Integer value is: 69

可以修改参数值

ros2 param set /turtlesim background_b 10

多个参数可以导出配置文件

ros2 param dump /turtlesim > turtlesim_param.yaml

bohu@bohu-TM1701:~$ cat turtlesim_param.yaml 
/turtlesim:
  ros__parameters:
    background_b: 10
    background_g: 86
    background_r: 44
    qos_overrides:
      /parameter_events:
        publisher:
          depth: 1000
          durability: volatile
          history: keep_last
          reliability: reliable
    use_sim_time: false

指定参数文件加载:

ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim_param.yaml

还可以再rqt修改小海龟参数配置。


http://www.kler.cn/a/471576.html

相关文章:

  • Redis 数据库源码分析
  • 【Go学习】-02-1-标准库:fmt、os、time
  • C#使用MVC框架创建WebApi服务接口
  • conda指定路径安装虚拟python环境
  • 网络安全常见的问题
  • 解密序列建模:理解 RNN、LSTM 和 Seq2Seq
  • 【git命令】--- git经典常用操作命令大全
  • 实时计算 Flink 版:赋能数据驱动,让决策快人一步
  • 英语外刊写作积累(2024.09)
  • JavaWeb—Servlet详解
  • Unigui基于vue+elementui的自研框架
  • JVM一之类加载子系统
  • 多模态图文检索实战——基于CLIP实现图文检索系统(附源码)
  • AI驱动的可演化架构与前端开发效率
  • 【Java基础】正则表达式的使用与常用类分享
  • 业务日志设计
  • # Java 发送电子邮件示例
  • 『SQLite』常见函数的使用
  • `http_port_t
  • 『SQLite』常见日期时间函数的使用
  • java项目之旅游网站的设计与实现(源码+文档)
  • 网络分析与监控:阿里云拨测方案解密
  • ETCD渗透利用指南
  • 【Python】Flask报错:TimeoutError: QueuePool limit of size 10...以及日常bug处理
  • PyCharm简单调试
  • 【计算机组成原理课程设计】:实验0 ROM仿真、实验1 验证74L181运算和逻辑功能、实验2 运算器 2、实验 3 跑马灯、实验4 模拟微程序实现指令