ROS机器人项目开发11例(原书第2版)
上QQ阅读APP看书,第一时间看更新

2.3 ROS-2基础

在ROS-1中,用户代码将连接到ROS客户端库(例如rospy或roscpp),它们将直接与网络中的其他节点通信;而在ROS-2中,ROS客户端库就像一个抽象层,使用其他节点通过DDS实现连接到网络中进行通信的另一层。ROS-1与ROS-2的简单对比如图2.2所示。

图2.2 ROS-1与ROS-2的简单对比

如图2.2所示,在ROS-2中,操作系统层与底层硬件层的通信是通过DDS实现完成的。图中的DDS组件由相应供应商实现,供应商不同则具体实现不同。

抽象DDS层组件与ROS-2客户端库连接,并通过DDS实现帮助用户连接代码。通过这样的分层抽象,用户无须感知DDS API的存在就可以与操作系统连接。此外,ROS-1和ROS-2的区别还在于ROS-1使用了自定义传输协议以及自定义中心发现机制,因此需要使用master,而ROS-2则具有抽象的DDS层,通过该层可以实现序列化、传输和发现等功能。