上QQ阅读APP看书,第一时间看更新
2.1 ROS架构设计
ROS架构如图2-1所示,可以将其分为三个层次:OS层、中间层和应用层。
图2-1 ROS架构
1.OS层
ROS并不是一个传统意义上的操作系统,无法像Windows、Linux一样直接运行在计算机硬件之上,而是需要依托于Linux系统。所以在OS层,我们可以直接使用ROS官方支持度最好的Ubuntu操作系统,也可以使用macOS、Arch、Debian等操作系统。
2.中间层
Linux是一个通用系统,并没有针对机器人开发提供特殊的中间件,所以ROS在中间层做了大量工作,其中最为重要的就是基于TCPROS/UDPROS的通信系统。ROS的通信系统基于TCP/UDP网络,在此之上进行了再次封装,也就是TCPROS/UDPROS。通信系统使用发布/订阅、客户端/服务器等模型,实现多种通信机制的数据传输。
除了TCPROS/UDPROS的通信机制外,ROS还提供一种进程内的通信方法——Nodelet,可以为多进程通信提供一种更优化的数据传输方式,适合对数据传输实时性方面有较高要求的应用。
在通信机制之上,ROS提供了大量机器人开发相关的库,如数据类型定义、坐标变换、运动控制等,可以提供给应用层使用。
3.应用层
在应用层,ROS需要运行一个管理者——Master,负责管理整个系统的正常运行。ROS社区内共享了大量的机器人应用功能包,这些功能包内的模块以节点为单位运行,以ROS标准的输入输出作为接口,开发者不需要关注模块的内部实现机制,只需要了解接口规则即可实现复用,极大地提高了开发效率。
从系统实现的角度来看,ROS也可以分为如图2-2所示的三个层次:文件系统、计算图和开源社区。
图2-2 从系统实现角度可以将ROS划分为三个层次