ROS系统中Service 通讯的原理及实现

ROS入门(三):如何使用服务 上一节提到了如何自定义消息,这一节来看一下如何自定义服务。其实“自定义服务”这个说法有点奇怪,因为ROS是没有标准服务的,都需要用户进行开发。 首先回顾一下消息和服务的区别。 ROS作为一个分布式计算框架,各节点之间的通讯有点像我们平时上网。消息(msg)的收发类似于直播博主和订阅用户之间的关系,以主题(topic)来限定通讯的内容和格式,允许有多个直播博主推送内容,而用户只需要登记订阅信息即... 阅读详情

本文我们将会了解 Service 通讯原理和机制,通过编写 Server 端和 Client 端实现 Service 通讯,并通过命令行工具或者图形化工具进行调试。最后再介绍几个常用的 rosservice 命令。

Service 通讯架构

ROS 还提供了节点与节点间通讯的另外一种方式:Service 通讯。

Service 通讯分为 client 端和 server 端。

  • client 端负责发送请求(Request)给 server 端。
  • server 端负责接收 client 端发送的请求数据。
  • server 端收到数据后,根据请求数据和当前的业务需求产生数据,将数据(Response)返回给 client 端。

Service 通讯特点:

  • 同步数据访问。
  • 具有响应反馈机制。
  • 一个 server 处理多个 client 的请求。
  • 注重业务逻辑处理。

Service 通讯的关键点:

  • service 的地址名称。
  • client 端访问 server 端的数据格式。
  • server 端响应 client 端的数据格式。

Server 创建流程 

构建一个 Service 通讯,需要的是一个 client 端和一个 server 端。server 端为 client 端提供服务,帮助 client 端进行加法的求和计算。

首先初始化一个工作空间:

mkdir -p /home/shiyanlou/ws/src
cd /home/shiyanlou/ws
# 对工作空间进行编译
catkin_make

进入 ws/src 目录下,执行如下命令创建名为 demopy 的 Package 以及包下面的 scripts 文件夹:

cd /home/shiyanlou/ws/src
catkin_create_pkg demopy roscpp rospy rosmsg
mkdir /home/shiyanlou/ws/src/demopy/scripts

在 demopy/scripts 目录新建一个 server_node.py 文件,并赋予该文件可执行权限:

chmod +x /home/shiyanlou/ws/src/demopy/scripts/server_node.py
ROS机器人入门第六课:服务通信自定义srv 服务通信也是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。也即: 一个节点A向另一个节点B发送请求,B接收处理请求并产生响应结果返回给A。比如如下场景:机器人巡逻过程中,控制系统分析传感器数据发现可疑物体或人… 此时需要拍摄照片并留存。在上述场景中,就使用到了服务通信。一个节点需要向相机节点发送拍照请求,相机节点处理请求,并返回处理结果与上述应用类似的,服务通信更适用于对时时性有要求、具有一定逻辑处理的应用场景。概念以请求响应的方式实现不同节点之间数据交互的通信模式。 阅读详情

相关推荐

ROS中rosservice系列命令详解

Rosservice call service_name arg1 arg2…… 我们如何可以实现像rostopic pub topic_name topic_type: “arg1_name:arg1……”那样在命令行发布消息,rosservice call可以帮我们做到: 输入完topic_type后,后面紧跟着arg1 arg2……就行,不用像话题通信那样繁琐。输入之后,客户端反应如下: Rosservice find service_type 如果说“rostopic f..

超级霸霸强的博客 1万+

百科不全书之ROS

1.最常用 ROS 2016 kinetic 长期版本,支持5年。ROS 运行在linux下的中间件=框架+工具+功能+社区。 2.框架:定好的规范,分布式架构(扩展性高),进程管理,进程间通讯,叫节点node。可以仿真和调试。 3.功能:有很多可视包。官网有软件包,还有github。 2工程结构 4.catkin:工作空间,用来组织和管理功能包的文件夹。1.mkdir -p ~/catkin_ws/src 新建文件夹 catkon_init_workspace 2.cd ~/catkin_ws/ 3.ca

qq_45113070的博客 1017

unity中简单全景搭建

全景场景能够直观的展现一部分区域的全貌,在全景场景中我们能360°观看周围的景象,仿佛自身就在这个场景中,在场景的外部,我们能发现场景就是一个密封的球体,我们是处在球体的内部观察周围,在球内部观察四周看到的都是球的内表面,所以我们看到的全景其实就是贴在密封球体内的一张全景图片。接下来要介绍的就是如何在unity中用一个球体来搭建全景场景。

qq_31791999的博客 3637

三模冗余设计

在数字电路设计中,Voter模块(表决器) 和 三模冗余(Triple Modular Redundancy, TMR) 是高可靠性系统的核心设计技术,主要用于容错和抗辐射(如航天、医疗设备等关键领域)。容错机制:若任一模块故障(如SEU,单粒子翻转),其他两个模块仍能保证正确输出。功耗与面积:TMR会显著增加资源占用(约3倍),需权衡可靠性和成本。航天电子:抗辐射芯片(如FPGA)中用于防止单粒子翻转(SEU)。故障检测:可扩展设计以检测并隔离故障模块(如通过BIST)。

qq_45776815的博客 2050

IAR for ARM 搭建STM32F103C8T6工程模板(实战指南)

本文详细介绍了如何在IAR for ARM开发环境中为STM32F103C8T6微控制器搭建完整的工程模板。从环境准备、固件库获取、目录结构设计到工程配置与编译调试,提供了实战指南和常见问题解决方案,帮助开发者快速建立稳定的STM32开发环境。

fun88的博客 987

翻倍密码系统主图指标-行情买卖以及持股-翻倍密码买点-获利了结,通达信炒股软件指标公式

华森制药,上图案例走势,低位出现“开始潜伏”信号,进场红色K线持股待涨,进入“翻倍密码买点”,开启紫色K线的持续上涨,目前也达到了翻倍行情,还没出现“获利了结”的出场信号。这套操盘系统,即便出现信号没走出翻倍行情,也都是可以全身而退,获利出局,或者微微止损出场,并不代表每一个波段都能翻倍,但是走翻倍行情,你按照信号参与或持仓是不会错过的。用这个操盘系统操作,你也不需要天天的盘中看盘,不需要担心盘中的震荡,只要趋势不变,哪怕是偶尔出现跌停,也不影响行情的继续上涨,这都是上涨途中的正常调整。

weixin_69760830的博客 3674

数仓建模—数据语义层

如今,企业产生大量数据,需要以正确的方式进行分析才能做出重要决策。数据可能来自多个来源并采用不同的格式,这使得清楚地了解其含义和重要性成为一项挑战。这就是语义层的用武之地。语义层存在于数据仓库和最终用户使用的应用程序之间。它为用户提供了简化且一致的数据视图,无论其基础数据源的复杂性如何。该逻辑层有助于映射物理数据结构以创建概念数据模型。它定义了数据元素之间的所有规则和关系,并以业务术语提供了数据的通用词汇表。然后,用户可以轻松地与数据进行交互,而无需了解其数据源的技术知识。

7万+

YOLO11 改进、魔改|分组残差自注意力GRSA,通过分组残差优化 QKV 计算、指数空间映射优化位置偏差,在大幅降低自注意力模块参数和计算量的同时,增强特征关系与位置信息的表征能力

【摘要】研究人员提出GRSA(分组残差自注意力)机制,解决Transformer在图像超分辨率任务中效率与性能难以兼顾的问题。GRSA通过分组残差层减少自注意力参数冗余,同时采用指数空间相对位置偏差优化位置信息表征。实验表明,GRSA在降低50%参数量的同时保持模型性能,适用于目标检测和图像分割任务。在YOLO系列模型中集成GRSA可提升小目标检测精度,代码实现已开源,详细部署教程见相关视频与GitHub资源。该机制为轻量化Transformer模型提供了高效解决方案。

qq_64693987的博客 794

Midscene.js(1):Chrome 插件实战之基于 AI 驱动 WEB UI 自动化测试「喂饭教程」

Midscene.js 是一款开源的AI驱动UI自动化工具,支持自然语言交互、数据提取、断言验证等多种功能。自然语言交互。本文将以 Midscene.js Chrome 插件为例,带你从零上手,体验如何用最简单的方式实现高效、智能的UI自动化测试。

blues_C的博客 4404

微信公众号 - 超详细 H5 网页接入微信支付功能,开发网站微信支付最详细的教程示例代码(微信公众号前端支付 JS-SDK / JSAPI 微信H5授权登录支付,唤起微信支付)最新超级详细教程

H5页面接入微信支付功能,前端网页端怎么做微信JSAPI支付,vue网站接入微信JSSDK支付,vueH5项目如何做使用微信支付,端h5调用微信支付jsapi方法,前端vue开发的H5网站怎么微信支付最详细的教程示例代码,vue怎么调取微信支付流程,将H5接入微信支付退款,vue网站怎么搞微信支付,H5前端开发网站在微信环境内H5调起微信支付,react项目h5如何调用微信支付的方法,nuxt.js项目vueH5集成微信JS支付,网站怎么做出H5微信公众号支付,请问vue.js这个框

🏆 前端领域优质创作者 8123

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 清华大学开源软件镜像站 HOME EVENTS BLOG RSS PODCAST MIRRORS 网址
下一篇: 初识激光雷达 SLAM
程序员草帽
博客等级 码龄5年 3096粉丝 64原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值