ROS通信原理介绍

本文将主要对clearpathrobotics网站关于ROS的介绍进行翻译。原文网址https://www.clearpathrobotics.com/2014/01/how-to-guide-ros-101/

1,何为ROS?

ROS(Robot Operating System)是遵从BSD许可的系统,它可以在PC上控制机器人的各个组件。ROS系统由多个各自独立的节点(组件)组成,并且各个节点之间可以通过发布/订阅(publish/subscribe)消息模型进行通信。例如,我们将一个特定传感器的驱动模块作为一个ROS节点,其将传感器数据发布(publish)到消息流。这些消息可能会被某些节点获取到,例如滤波器、记录器、更高级系统中的应用如导航、路径查找等节点。

(从此段可以理解,ROS的publish操作为某个节点将其自身数据或传感器数据发送到一个注册到ROS中的消息池中,其他节点可以申请获取数据,而publish数据的节点不关心哪些节点需要,其他节点如何获取数据将在下面介绍。)


2,为何使用ROS?

ROS中的节点可以运行在不同的系统、平台,甚至是不同的架构中。假如有一个Arduino publish的消息,你可以使用笔记本订阅(subscribe)此消息,也可以使用android手机驾驶摩托。对于用户的需求,ROS具有灵活适应性,并且它还是开源的,任何人都可以对它进行维护。


3,核心概念

ROS启动于ROS Master。Master允许其他ROS中不同软件片(节点)查找对方或与对方交流。那样,我们就不必指定“发送传感器数据到IP为127.0.0.1的电脑”,我们只需要简单的告诉Node1发送消息到Node2.



如何实现节点间消息传递呢?通过publishing 和 subscribing Topics。

设想有一部相机安装在机器人上,我们希望可以从相机中或者笔记本上看到图像,同时让机器人也可以看到这些图像。

在我们的例子中,我们定义一个Camera Node,用于和相机通信(驱动),一个Image Processing Node运行在机器人上处理图像数据,一个Image Display Node用于将图像显示在屏幕上。开始阶段,所有节点(Node)都要注册到Master上。Master可以认为是一个查询表,各个节点可以查询它要把消息发送到哪个节点(peer to peer communication)。


注册到ROS Master后,Camera Node 声明它要Publish一个Topic叫做/image_data。另外两个节点(Image Processing Node and Image Display Node)声明他们Subscribe这个Topic /image_data。因此,一旦Camera Node 收到Camera发送的数据,就立即将数据/image_data直接发送到另外两个节点。(实际上,这就类似于TCP/IP直连,不同的是他们是通过同一个通道image_data,这个image_data应该就类似于共享内存,这个理解不知道是否正确或者恰当。)


那么你又想了,如果Image Processing Node想主动获取Camera Node收到的数据怎么办呢?ROS定义了Services用于解决这个问题。

节点可以在ROS Master上注册一个特定的service,就像注册它的消息(topic)一样。在我们的例子中,Image Processing Node第一次请求/image_data,Camera Node将收集Camera的数据,然后发送给Image Processing Node。










  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值