ROS 介绍:定义、架构、通信机制

ROS介绍

ROS是什么:ROS是一个用于编写机器人软件的灵活框架,它集成了大量的工具、库、协议,提供了类似操作系统所提供的功能,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,可以极大简化繁杂多样的机器人平台下的复杂任务创建与稳定行为控制。

  • ROS的架构

ROS的架构设计分为三层,下面通过介绍两代ROS之间的设计变化来引出通信机制。

1. OS层

ROS并不是一个传统意义上的操作系统,无法像Windows、Linux一样直接运行在计算机硬件之上。ROS1主要构建于Linux系统之上,ROS2带来了改变,支持构建的系统包括Linux、Windows、Mac、RTOS,甚至没有操作系统的裸机。

2. 中间层

Linux是一个通用系统,并没有针对机器人开发提供特殊的中间件,ROS在中间层做了大量的工作,其中最为重要的就是基于TCPROS/UDPROS的通信系统,这是基于TCP/UDP网络所做的再次封装。通信系统使用发布/订阅、客户端/服务器等模型,实现多种通信机制的数据传输。

除了TCPROS/UDPROS的通信机制外,ROS还提供一种进程内的通信方法——Nodelet,可以为多进程通信提供一种更优化的数据传输方式,适合对数据传输实时性方面有较高要求的应用。

ROS1的通讯系统基于TCPROS/UDPROS,而ROS2的通讯系统基于DDS。DDS是一种分布式实时系统中数据发布/订阅的标准解决方案。ROS2内部提供了DDS的抽象层实现,用户不需要关注底层DDS的提供厂家。

在ROS1的架构中Nodelet和TCPROS/UDPROS是并列的层次,为同一个进程中的多个节点提供一种更优化的数据传输方式。ROS2中也保留了这种数据传输方式,只不过换了一个名字,叫做“Intra-process”,同样也是独立于DDS。

在通信机制之上,ROS提供了大量机器人开发相关的库,如数据类型定义、坐标变换、运动控制等,可以提供给应用层使用。

3.  应用层

ROS1强依赖于ROS Master(通过远程过程调用提供登记列表和对其他计算图表的查找功能,帮助ROS节点之间相互查找、建立连接,同时还为系统提供参数服务器,管理全局参数),一旦Master宕机,整个系统会面临崩溃的处境。但是从右边ROS2的架构中可以发现,之前让人耿耿于怀的Master终于消失了,节点之间使用一种称为“Discovery”的发现机制来获取彼此的信息。

ROS社区内共享了大量的机器人应用功能包,这些功能包内的模块以节点为单位运行,以ROS标准的输入输出作为接口,开发者不需要关注模块的内部实现机制,只需要了解接口规则即可实现复用,极大地提高了开发效率。

从系统实现的角度,ROS也可以分为三个层次:文件系统(程序文件的组织和构建)、计算图(从计算图的角度来看,ROS系统软件的功能模块以节点为单位独立运行,可以分布于多个相同或不同的主机中,在系统运行时通过端到端的拓扑结构进行连接)和开源社区。

  • ROS1的通信机制

ROS三种通信机制:1.话题通信(发布和订阅) 2.服务通信(客户端服务端)3. 基于RPC(远程过程调用)的参数服务器。

1、Topic:ROS中使用最为广泛的异步的publish-subscibe通讯模式,一般用于单向数据流传输。这种方式将信息的产生和使用双方解耦。各个节点在master处注册信息,master会返回一个成功的应答,其中包括所有publisher节点的URI(定位node在分布式系统中的位置),通过RPC将publisher的信息分发给各个subscriber,然后subscriber去与相应的publisher建立连接传输 topic 相关信息。Topic消息的数据由TCPROS(基于tcp协议的ros应用层数据协议,用于解析topic与service的二进制数据流)协议传输。

2、Service: service 用于处理ros通讯中的同步通讯,采用server/client 语义。每个service type拥 有 request 与 response两部分,对于service中的 server,ros不会检查重名(name conflict),只有最后 注册的server会生效,与client建立连接。

3、Parameter: parameter 可以看作为ros系统运行时中定义的全局变量,而master node 中有 parameter server 来维护这些变量。

话题和服务的区别:

  • ROS1中的通讯中间层只是勘用的水平,通信机制的实时性和稳定性不好,强依赖于中心节点ROS Master。在基于ROS开发时,在通信机制方面需要经过大量的优化和改良,例如百度的Apollo无人车,其优化方式与ROS2对其做的改进类似。但是目前ROS2的功能尚不完善,需要依赖部分ROS1中的功能包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值