您当前的位置: 首页 > 

鱼香ROS

暂无认证

  • 3浏览

    0关注

    498博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ROS学习系列:村长说给我来一本艳娘传奇!一文搞懂话题和服务

鱼香ROS 发布时间:2021-07-14 10:40:10 ,浏览量:3

大家好,我是小智,今天更新又很晚了,最近事情有点多,有很多小伙伴遇到了gazebo仿真的问题,回头专门讲一讲。

今天收到个任务调研一下ROS,于是小智就把ROS官方文档又翻了一遍,对ROS的理解又加深了一些。

做机器人一般来说肯定是通过ROS来入门,虽然前期稍微痛苦一些,但ROS还是集成了很多有手就行的功能包。

今天小智就来讲一讲ROS中的话题和服务通信机制,给刚入门ROS的小伙伴们加深一下理解。

1.ROS是一个操作系统吗?

大家都说ROS是一个机器人操作系统,这个操作系统一说起来就感觉非常高大上了,很多刚学ROS的同学都会误解这个操作系统的意思,都以为是像Android、Windows、IOS这样的操作系统,其实不是的,ROS只是装在现有操作系统上的一个软件而已(就像在你的手机上装一个APP一样,只不过这个APP的名字叫做ROS而已)。

2.ROS要钱吗?

免费、开源,不要钱

3.ROS镇长的传奇故事 3.1 统一方言

从前在一个大山里,有五个村庄,这五个村庄每个村庄有自己的方言。不同村庄的村民们互相沟通就是非常复杂的一件事,首先要找到一个能同时会两个方言的翻译官,才能互相沟通。

后来五个村子合并成了一个镇,来了个叫ROS的镇长,一看这多影响平时交流呀,就开始推行普通话。后来又有很多村子迁入这个镇,因为语言统一,大家互相交流起来都很方便。

方言统一了之后,沟通方便了,镇子里就兴起了三个行业,第一个行业是报业,专门卖报纸的。第二个行业是外卖业,专门送外卖。

3.2 王二订报

ROS镇长给报业制定了一种订报机制,叫做话题(Topic),并且开设了一个报务科去管理这个事: 村民王二单身多年,最喜欢看的就是村民李四写的《艳娘传奇》这个杂志。

单身狗王二(Subscriber)想要看这个《艳娘传奇》(Topic-Name)这个杂志,首先要去报务科去告诉科长,我要定《艳娘传奇》,科长会留下王二的联系方式并写在手册上。但李四(Publisher)更新总是不定时,但他一更新就会把杂志送到镇上报务科去,报务科有一个手册,里面写着订阅《艳娘传奇》的村民名单。科长看到谁定了,就会把杂志复印一份让邮差给谁(Node)送过去。 在这里插入图片描述

杂志=话题

看完上面的内容,我们来总结一下,上面其实讲了一下ROS中Topic和Service两种非常重要的通信方式。Topic是一种发布订阅模型,订阅者(王二)需要通过话题(艳娘传奇)到Master节点(科长)来订阅发布者(李四)的发布。这里讲的还是一对一(一个发布者,一个订阅者)的模型,真实的ROS中其实可以1对n,n对1,n对n的。

并且满足以下规则:

  • 话题名字是关键,订阅者必须要订阅的话题的名称才能完成订阅;
  • 同一个人可以订阅多个话题,同时也可以发布多个话题,就像一本书的作者也可以是另外一本书的读者;
  • 同一个杂志不能有多个作者,但同一个话题可以有多个发布者。
3.3 李四叫外卖

李四为了专心写杂志,每天窝在家里不出去,吃饭全靠叫外卖。镇里叫外卖比较原始,是靠写信定的,想要叫外卖先写一封信(request),写清楚菜名和菜馆名,然后通过外卖小哥(service)进行送信,小哥将信送到镇上对应的某个菜馆(service端),镇上菜馆做好菜(response),然后让外卖小哥带回去,这时候李四(client端)才能吃上外卖。 在这里插入图片描述

外卖=服务

李四是服务的客户端,菜馆是服务端,客户端(李四)通过发送一个request(一封信)给服务端(菜馆),服务端根据信里的内容进行处理后,让外卖小哥把菜(response)将送回去。

服务满足以下规则:

  • 请求者必须知道服务名和可服务类型,就像李四知道菜馆名和菜名一样
  • 请求者在返回之前,无法或者服务端处理的进度。就像李四在菜到之前并不知道外卖小哥有没有偷换了自己的菜
  • 每一个节点可以提供多个服务,也可以请求多个服务。这点和餐馆不太一样
4. ROS镇长的中央集权

ROS小镇在ROS镇长的治理下,变得非常的繁华,但是ROS镇长是一个人非常有控制欲的一个人,到什么程度呢?如果ROS镇长不在,报务科和外卖小哥就不能营业,村民就不允许互相分享杂志(话题通信)、叫外卖了(服务通信)。

初次之外,村里来的每一个人也都需要到ROS镇长的人口管理科注册登记才能成为一个合法的村民,平时也受ROS镇长的管理。

总结一下: ROS镇长和其下属的科,其实就是ROS中的主节点,这个是ROS1才有的机制。同时节点之间的topic和service通信,也都需要主节点牵线搭桥。

写在最后

该文章小智准备写成一个系列,先从ROS1开始讲起,后面就开始讲ROS2,目前ROS2国内资料还是比较少的,不然闲鱼上小姐姐不会主动来找小智,回头给大家分享一下。

我是小智,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚

初中学习编程,高中开始学习机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)

目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小智,一起交流技术,学习机器人 在这里插入图片描述

关注
打赏
1666092100
查看更多评论
立即登录/注册

微信扫码登录

0.1717s