ROS服务通信

news/2024/9/20 22:52:21

ROS服务通信是基于 C/S 模式的双向数据传输模式(有应答的通信机制),ROS话题通信是无应答的通信机制。根据 Master 是否参数也分为两部分:连接前的准备,连接和通信;通信流程如下:

服务通信与 话题通信的 连接和通信 步骤都是一样的。唯一不同的是服务通信是有应答的。

1、Listener 接收到 Talker 的确认消息后,使用 TCP 尝试与 Talker 建立网络连接;

2、成功连接之后,Talker 开始向 Listener 发布话题消息数据;

3、至此,服务通信完成连接和通信过程,可以进行有应答的信息交流了。

4、需要注意,有可能是一个 Talker 连接上多个 Listener。

 

# 服务端
import rospy
from demo03_server_client.src import AddInts,AddIntsRequest,AddIntsResponsedef doReq(req):# 解析提交的数据sum = req.num1 + req.num2rospy.loginfo("提交的数据:num1 = %d, num2 = %d, sum = %d", req.num1, req.num2, sum)# 创建响应对象,赋值并返回resp = AddIntsResponse(sum)return respif __name__ == "__main__":# 初始化ROS节点rospy.init_node("addints_server_p")# 创建服务对象server = rospy.Service("AddInts", AddInts, doReq)# 回调函数处理请求并产生响应
    rospy.spin()# 客户端
import rospy
import sysif __name__ == "__main__":# 初始化ROS节点rospy.init_node("AddInts_Client_p")# 创建请求对象client = rospy.ServiceProxy("AddInts", AddInts)# 等待服务器就绪
    client.wait_for_service()# 发送请求,接受并处理响应req = AddIntsRequest()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/57646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

使用 nuxi prepare 命令准备 Nuxt 项目

title: 使用 nuxi prepare 命令准备 Nuxt 项目 date: 2024/9/7 updated: 2024/9/7 author: cmdragon excerpt: 摘要:本文介绍nuxi prepare命令在Nuxt.js项目中的使用,该命令用于创建.nuxt目录并生成类型信息,以便于构建和部署。文章涵盖了命令的基本用法、指定根目录、设置…

sqlserver下利用sqlps.exe白名单绕杀软

sqlserver下利用sqlps.exe白名单绕杀软 前言: 在一次攻防里通过sqlserver盲注拿到一个执行命令权限,但是由于是盲注回显很有问题以及有杀软,所以利用起来非常难受而且拿不到webshell或者上线c2,所以才找到这个方法。 介绍: sqlps.exe是SQL Server附带的一个具有Microsoft签…

五子棋AI:实现逻辑与相关背景探讨(上)bu

合集 - 五子棋AI:遗传算法(1)1.五子棋AI:实现逻辑与相关背景探讨(上)09-07收起 绪论本合集将详细讲述如何实现基于群只能遗传算法的五子棋AI,采用C++作为底层编程语言 本篇将简要讨论实现思路,并在后续的文中逐一展开了解五子棋 五子棋规则五子棋是一种经典的棋类游戏,规…

[nacos] Nacos 3 应用场景及高频问题(FAQ)

场景:指定NACOS注册中心中spring cloud微服务应用的IP spring:cloud:nacos:discovery:ip: 127.0.0.1修改完成、并重启服务之后在nacos查看的地址如下:场景:curl请求NACOS常用功能接口测试版本nacos-client : 2.0.3 nacos-server : 2.1.2推荐文献https://nacos.io/zh-cn/docs…

ios16.2版本以上mui的picker选择器显示异常的修复方案

问题描述 mui picker ios16.2系统及以上,选择器滚动错误错乱,显示异常但是可以正常选择用多个ios手机测试了,凡是升级到16.2及以上的均会产生这个的问题。使用官方的示例,放到升级到16.2的ios手机上测试,问题同样存在https://www.dcloud.io/hellomui/examples/picker.html…

解决升级到 Delphi 12 后遇到 SQLite 不兼容的问题

今天升级到 Delphi 12 后,编译运行原来的项目,出现“[FireDAC][Phys][SQLite][sqlite3]-303.Capability is not supported”的错误。经过查找文档,发现是FireDAC SQLite 版本更新导致的。RAD Studio 12.0 支持 SQLite 3.42,同时保留了使用 FireDAC 加密(FDE)的 SQLite 3.…

远程下载上传命令(绕过大小限制)

远程下载上传命令(绕过大小限制) python起http服务python3 -m http.server 5003python2 -m SimpleHTTPServer 5003 上传时遇到限制上传大小时: 编码base64:certutil -encode yb.exe 1.txt可以把1.txt拆成三个txt,分块上传后,再使用 copy c:\*txt c:\123.txt //把c盘根目…

[C#基础2/21] C#注释与文件结构

Notion原笔记页面 1. 注释C# 支持两种不同形式的注释。 单行注释以 // 开头,并在该代码行末尾结束。 多行注释以 /* 开头,以 */ 结尾。 下面的代码示例演示了每种注释: // This is a single line comment./* This could be a summary of all thecode thats in this class.Yo…