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

编程入门 行业动态 更新时间:2024-10-28 05:24:04

<a href=https://www.elefans.com/category/jswz/34/1768665.html style=ROS 学习应用篇(三)服务Server学习之Server"/>

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服务器

创建一个发布器

更多推荐

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

本文发布于:2023-11-15 08:35:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1596782.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ROS   Server

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!