六、ROS2通信机制(服务)
admin
2024-02-24 23:18:38
0

一、服务介绍

客户端发送请求给服务端服务端可以根据客户端的请求做一些处理,然后返回结果给客户端
这里与话题的主要区别就是:话题是没有返回的,适用于单向或大量的数据传递。而服务是双向的,客户端发送请求,服务端响应请求。
注意事项:
1、同一个服务(名称相同)有且只有一个节点来提供
2、同一个服务可以被多个客户端调用source /opt/ros/galactic/setup.bash

二、体验服务

ROS2自带一些服务使用样例。
1、启动服务端:运行一个服务节点,这两个服务的功能是将两个数字相加,给定a,b两个数,返回sum

ros2 run examples_rclpy_minimal_service service

2、使用命令查看服务列表

ros2 service list

3、手动调用服务

ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"

三、ROS2服务常用命令

1、查看服务列表

ros2 service list

2、手动调用服务

ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts

3、查看服务接口类型

ros2 service type /add_two_ints

4、查找使用某一接口的服务

ros2 service find example_interfaces/srv/AddTwoInts

四、自定义服务接口

1、服务接口介绍
服务接口与话题接口有什么不同?
话题是发布订阅模型。主要是单向传输数据,只能由发布者发布,接收者接收(同一话题,发布者接收者都可以有多个)
服务是客户端服务端(请求响应)模型。由客户端发送请求,服务端处理请求,然后返回处理结果(同一服务,客户端可以由多个,服务端只能有一个)
话题通信是单向的,自定义话题只需要定义一种数据类型就行,而服务是双向的,需要定义一去一回两种数据类型。

服务接口格式:xxx.srv

int64 a
int64 b
---
int64 sum

与话题不同,srv文件比msg文件中间多出三个—,这就是分界线,上方的是客户端发送请求的数据结构定义,下方的是服务端响应结果的数据结构定义。
如何创建自己的服务接口:参考如下步骤
1、新建srv文件夹,并在文件夹下新建xxx.srv
2、在xxx.srv下编写服务接口内容并保存
3、在CmakeLists.txt添加依赖和srv文件目录
4、在package.xml中添加xxx.srv所需的依赖
5、编译功能包即可生成python与C++头文件

相关内容

热门资讯

122.(leaflet篇)l... 听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
Vue使用pdf-lib为文件... 之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vu...
PyQt5数据库开发1 4.1... 文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
Linux基础命令大全(上) ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维...
再谈解决“因为文件包含病毒或潜... 前面出了一篇博文专门来解决“因为文件包含病毒或潜在的垃圾软件”的问题,其中第二种方法有...
南京邮电大学通达学院2023c... 题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 ...
PageObject 六大原则 PageObject六大原则: 1.封装服务的方法 2.不要暴露页面的细节 3.通过r...
【Linux网络编程】01:S... Socket多进程 OVERVIEWSocket多进程1.Server2.Client3.bug&...
数据结构刷题(二十五):122... 1.122. 买卖股票的最佳时机 II思路:贪心。把利润分解为每天为单位的维度,然后收...
浏览器事件循环 事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间࿰...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
计算机二级Python备考(2... 目录  一、选择题 1.在Python语言中: 2.知识点 二、基本操作题 1. j...
端电压 相电压 线电压 记得刚接触矢量控制的时候,拿到板子,就赶紧去测各种波形,结...
如何使用Python检测和识别... 车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计...
带环链表详解 目录 一、什么是环形链表 二、判断是否为环形链表 2.1 具体题目 2.2 具体思路 2.3 思路的...
【C语言进阶:刨根究底字符串函... 本节重点内容: 深入理解strcpy函数的使用学会strcpy函数的模拟实现⚡strc...
Django web开发(一)... 文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和s...