ROS 学习应用篇(三)服务Server学习之Server

话题Topic是订阅器与发布器节点之间的,而服务则是客户端(Client)和服务器(Server)间的,前者是异步的,后者是同步的。而且话题是单项的不需要服务器上线,而服务是双向的。在开启服务之前要先打开客户端,所以流程应该是客户端的建立→服务的建立,就像是要现有饭店才能有菜单,客人才能点菜,才能凭借饭店给客人提供服务。

创建功能包

src文件夹下输入一下内容

客户端实现

 引入库

在这里python程序多了一个sys库但是后面的代码里并没有看见。

 c++                                                                                python   

ROS 节点初始化

 c++                                                                                python   

这里还是一样的定义节点的名称,python函数的名字和节点的名字一样都是turtle_spawn 。

定义客户端

c++                                                                                python    

 可以看出在定义客户端的时候,C++语言依旧创建了一个句柄,之前创建的句柄是n在n.publicer这里定义的句柄是node所以是node.serviceClient,老规矩定义了服务名是/spawn,客户端的名字是add_turtle,服务的数据类型是Spawn它存在于turtlesim依赖下。特别的是,客户端定义的时候多了一个等待要等待到名为/spawn的服务的时候才开始定义客户端。

客户端响应

c++                                                                                python   

客户端调用

在这里C++是通过客户端.call的方式调用数据,call也是自带等待的,等待service的应答处理结果,一直等着知道小海龟建立成功,就像百度搜索的时候网不好它会一直转圈圈一样。ROS_INFO也不过是print一下数据,同样字符串的位置是多了一个c_str()的;而python的服客户端调用显然更加方便,之前定义的add_turtle直接就可以送入数据得到响应变量reponse,只需要返回输出一下reponse.name,这里我觉的返回那个值都行,反正函数也不输出什么。except是try对应出现的,如果出现错误就输出一下错误。

数据初始化(设定数据输入)

C++文件将数据送入到srv 变量中,在通过服务器调用,python我们之前也提过了直接就能送入数据。

主程序调用

 c++                                                                                python   

这一部分是根据代码逻辑来的,C++输出一下,然后返回个0就结束了。python也需要print一下,这个print的语句打印的是名字,所有函数turtle_spwan函数的返回值必须是名字,所以之前说的可以返回其他选项就不合适了,但是这套程序是将try封装在了函数turtle_spawn中,之前的publisher是封装在主函数外面的,其实也是可以的。

CMakeList.txt文件

封装成可执行文件,python函数不用调用的时候输入程序名.py就可以

python调用的时候输入程序名.py

c++                                                                                python   

多生成几个海龟是一样的,多输入数据,然后返回就可以了。

服务器实现

节点初始化

创建Server服务器

创建一个发布器

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

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

相关文章

使用米联客FPGA开发板进行光口开发时遇到的问题总结

使用的开发板型号:米联客MA703FA, 实物图如下 FPGA型号为a35t 米联客提供的开发板资料中的FPGA型号为a100,所以要想使用开发板例程必须进行FPGA的重新选择。如下图 通过对开发板原理图的分析,例程代码不用做任何修改就可使用&am…

Linux常用命令——bzless命令

在线Linux命令查询工具 bzless 增强.bz2压缩包查看器 补充说明 bzless命令是增强“.bz2”压缩包查看器,bzless比bzmore命令功能更加强大。 语法 bzless(参数)参数 文件:指定要分屏显示的.bz2压缩包。 在线Linux命令查询工具

Pathways

信号通路signaling pathway-武汉华美生物 (cusabio.cn) 神经信号通路(Neuronal Signaling)--selleck.cn PI3K/Akt/mTOR信号通路 表观遗传 甲基化 免疫&炎症 酪氨酸蛋白激酶 血管生成 凋亡 自噬 内质网应激&UPR响应 JAK/STAT信号通路 MAPK信号通路 细胞骨架…

网络运维Day11

文章目录 if语句if单分支应用案例 if双分支应用案例 if多分支应用案例 for循环while循环案例 正则表达式基本正则Perl兼容的正则 综合练习总结 if语句 if单分支 if单分支的语法组成: if 条件测试;then 命令序列 fiif 条件测试then 命令序列 fi应用案例 判断用…

Linux学习教程(第二章 Linux系统安装)2

第二章 Linux系统安装 四、使用U盘安装Linux系统 前面章节介绍了如何通过虚拟机 VMware 安装 Linux 系统,而实际开发中,我们更多的是要将 Linux 系统直接安装到电脑上。 直接在电脑上安装 Linux 系统的常用方法有 2 种,分别是用光盘安装和用…

软件自动化测试平台

软件测试分类黑盒、白盒、功能、API、接口、压力测试和性能测试, 自动化测试平台是一种用于自动化执行软件测试过程的工具。 一、自动化测试平台-功能性 1. 接口自动化:对接软件的接口进行测试,验证接口的功能和性能。 2. Web 自动化&…

了解项目管理软件的功能和用途

数字化办公、无纸化办公的概念越来越火,项目管理软件也一跃成为了热门话题。项目管理软件到底什么?项目管理软件是不是项目团队才用得到?项目管理软件都能干什么?今天一篇文章让你对项目管理软件不再迷茫。 什么是项目管理软件&a…

优化编辑距离以测量文本相似度

一、说明 编辑距离是一种文本相似度度量,用于测量 2 个单词之间的距离。它有许多方面应用,如文本自动完成和自动更正。 对于这两种用例中的任何一种,系统都会将用户输入的单词与字典中的单词进行比较,以找到最接近的匹配项&#x…

Seata之TCC模式解读

目录 基本介绍 起源 概述 案例流程分析 TCC注意事项 空回滚 幂等 悬挂 具体使用 LocalTCC TwoPhaseBusinessAction 小结 基本介绍 起源 关于TCC的概念,最早是由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apost…

《网络协议》05. 网络通信安全 · 密码技术

title: 《网络协议》05. 网络通信安全 密码技术 date: 2022-09-10 15:16:15 updated: 2023-11-12 07:03:52 categories: 学习记录:网络协议 excerpt: 网络通信安全(ARP 欺骗,DoS & DDoS,SYN 洪水攻击,LAND 攻击&a…

2个器件,做1个恒流源

在项目中经常要用到恒流源,查找资料可以使用电压源芯片LM317构造一个电流源芯片。本文将电压源加上一个电阻改为电流源,这种设计思路可以扩展到其他类型的电源芯片上,如开关电源及其他类型的线性电源,关键点在于基准电压VREF的使用…

数据库 关系数据理论

问题 数据冗余更新异常插入异常删除异常 一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少 数据依赖 定义:一个关系内部属性与属性之间的一种约束关系(该约束关系是通过属性间值的相等与否体现出来数据间相关联…

git02->gui图形化界面使用,ssh协议,idea集成GIT

gui图形化界面使用ssh协议idea集成GIT 1.gui图形化界面使用 2.ssh协议 git/github生成密钥并通过 操作分为本地电脑配置和github网站配置 第一步:本地电脑配置 右键空白处,选择Git Bash Here打开相关命令窗口 1.配置用户名和邮箱(如果已经配…

Go 14岁了

今天我们庆祝Go开源十四周年!Go度过了美好的一年,发布了两个功能齐全的版本和其他重要的里程碑。 我们在2月份发布了Go 1.20,在8月份发布了Go 1.21,更多地关注实现改进而不是新的语言更改。 在Go 1.20中,我们预览了配置…

基于多尺度分形残差注意力网络的超分辨率重建算法

1.引言 深度神经网络可以显著提高超分辨率的质量,但现有方法难以充分利用低分辨率尺度特征和通道信息,从而阻碍了卷积神经网络的表达能力。针对此类问题,本章提出了一种多尺度分形残差注意力网络(Multi-scale Fractal Residual A…

优秀智慧园区案例 - 深圳特区建发创智云城智慧园区,万字长文解析先进智慧园区建设方案经验

一、项目背景 1、项目背景 创智云城项目位于大湾区核心城市之一的深圳,且地处GDP第一的科技创新核心区——南山区,136万㎡新兴产业智慧之城矗立于湾区核心创新高地。项目所处西丽湖国际科教城,最具发展潜力,规划全域面积约57平方…

JavaWeb Day09 Mybatis-基础操作02-XML映射文件动态SQL

目录 Mybatis动态SQL介绍​编辑 一、案例 ①Mapper层 ②测试类 ③EmpMapper.xml ④结果​ 二、标签 (一)if where标签 ​①EmpMapper.xml ②案例 ③总结 (二)foreach标签 ①SQL语句 ②Mapper层 ③EmpMapper.xml ④…

N-133基于springboot,vue小说网站

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项…

141.环形链表(LeetCode)

想法一 快慢指针,设置slow和fast指针,slow一次走一步,fast一次走两步,如果链表有环,它们最终会相遇,相遇时返回true;如果链表无环,它们最终走到空,跳出循环,…

企业邮箱本地私有化部署解决方案

随着互联网化进程不断深入,加快推进企业信息化系统建设,已经成为提高企业核心竞争力的重要途径。企业对企业邮箱系统的需求越来越大,企业邮箱系统作为企业级通讯工具中的利器,在协同办公和内外业务交流上发挥着无可替代的巨大作用…