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

ROS2机器人开发--服务通信与参数通信

服务通信与参数通信

        在 ROS 2 中,服务(Services)通信和参数(Parameters)通信是两种重要的通信机制。服务是基于请求和响应的双向通信机制。参数用于管理节点的设置,并且参数通信是基于服务通信实现的。

1 服务通信

        服务是一种请求--响应通信机制,允许一个节点(客户端)向另一个节点(服务器)发送请求,并等待响应。服务与话题(Topics)的主要区别在于:

  • 服务是一对一的通信,而话题是多对多的通信。

  • 服务是同步的,客户端在收到响应之前会阻塞。

使用海龟来学习服务通信,首先打开海龟:

ros2 run turtlesim turtlesim_node

运行后,输入代码,查看服务列表

ros2 service list -t

结果中,每一行代表一个服务,前面是服务名字,[ ]里面是服务的接口类型。

输入下列代码,查看详细定义:

ros2 interface show turtlesim/srv/Spawn 

---上面是请求接口的定义,下面是响应接口的定义。

接下来尝试调用这个接口,输入代码如下:

ros2 service call /spawn turtlesim/srv/Spawn "{x: 1,y: 1}"

        service call命令用于调用指定的服务,其第一个参数是服务的名字,第二个参数是服务 的接口类型,第三个参数是Request 数据。结果看下面:

打开可视化工具rqt

rqt

选择Plugins→Services→Service Caller 选项

选择/spawn服务

修改Request 中 x 和 y 的值,然后单击Call 按钮,即可生成一个新的海龟。

成功!

2 基于服务的参数通信

        参数是节点的配置选项,可以在运行时动态修改。每个节点都提供了一组参数服务,用于查询和设置参数。

首先查看查看名字包含 parameter 的服务

ros2 service list -t | grep parameter

查看参数列表:   (首先要保持海龟运行)

ros2 param list

这个命令列出了当前活跃的 ROS 2 节点及其可用的参数。

输出显示了 /turtlesim 节点的参数列表,具体参数如下:

  1. background_b:背景颜色的蓝色分量。

  2. background_g:背景颜色的绿色分量。

  3. background_r:背景颜色的红色分量。

  4. qos_overrides./parameter_events.publisher.depth:与参数事件发布者服务质量相关的覆盖设置,具体是关于发布者历史的深度。

  5. qos_overrides./parameter_events.publisher.durability:关于参数事件发布者服务质量的持久性设置。

  6. qos_overrides./parameter_events.publisher.history:参数事件发布者服务质量的历史记录设置。

  7. qos_overrides./parameter_events.publisher.reliability:参数事件发布者服务质量的可靠性设置。

  8. use_sim_time:如果设置为 true,则节点将使用模拟时间而非实际系统时间。

        这些参数可以用于调整 turtlesim 节点的行为,例如改变背景颜色或修改服务质量(QoS)设置。通过 ros2 param get <node_name> <param_name> 命令可以获取特定参数的值,使用 ros2 param set <node_name> <param_name> <value> 命令可以设置新的参数值。

查看指定节点的参数描述

ros2 param describe /turtlesim background_r

这个命令用于描述 /turtlesim 节点的 background_r 参数的详细信息。

如果想要获取节点的参数值,输入:

ros2 param get /turtlesim background_r

如果你想要修改,输入:

ros2 param set /turtlesim background_r 255

观察到颜色已经改变,成功!!!!!!!!!!!!!!!

一般情况下,一个个修改参数很麻烦,如果想要一次性修改多个文件,不妨先将先将参数导出为一个yaml文件,修改完成后,运行时指定这个文件即可。命令如下:

导出文件:

ros2 param dump /turtlesim > turtlesim_param.yaml
cat turtlesim_param.yaml

运行文件:

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

如果你不清楚命令,输入help查看帮助。

当然 ,你也可以通过可视化工具rqt中的Configuration→DynamicReconfigure修改,很方便。


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

相关文章:

  • 【Git】远程操作
  • Spring Boot嵌入式服务器深度解析:从配置到调优的全方位指南
  • 本地部署AI模型 --- DeepSeek(一)
  • R包的作用及安装指南
  • FTP 实验(ENSP模拟器实现)
  • 视觉分析之边缘检测算法
  • androidnetflix手机版遥控器操作
  • http 协议和 https 协议的区别是什么?
  • DApp 开发入门指南
  • 【ubuntu24.04】pycharm安装pygraphviz
  • 一文熟练掌握Spring Framework
  • ElasticSearch查询指南:从青铜到王者的骚操作
  • 【linux核心命令】
  • 从零开始:VirtualBox安装Ubuntu 24.04.1 LTS
  • k8s学习记录:环境搭建(基于Kubeadmin)
  • 计算机毕业设计SpringBoot+Vue.jst0甘肃非物质文化网站(源码+LW文档+PPT+讲解)
  • Mybatis-Plus使用page类实现分页查询
  • 多源BFS(典型算法思想)—— OJ例题算法解析思路
  • Denoising Diffusion Restoration Models论文解读
  • matlab二维艾里光束,阵列艾里光束,可改变光束直径以及距离