ROS,更具体地说,ROS-1,目前推动机器人技术在开源社区发展到了一个里程碑式的水平。尽管在软硬件连接同步方面存在缺陷与不足,但是ROS-1提供了一种简单的通信策略,该策略使得用户能够轻松地将任何复杂的传感器连接到微型计算机或微控制器中。在过去的十年里,ROS-1已经发展壮大,拥有一个庞大的功能包列表,每个功能包都能解决一个或一些问题,并一定程度上消除了重新发明轮子的问题。这些功能包带来了一种看待机器人技术的全新方式,并使得当前可用的机器人系统具备了一定的智能。通过连接几个小规模的功能包,用户就可以创建一个全新的复杂自治系统。
尽管ROS-1让我们可以轻松地与复杂的硬件和软件组件进行通信,但使用ROS-1开发实际可用产品的过程涉及一些复杂的问题。例如,假设在制造业中需要一大群异构机器人(例如,移动机器人、机械臂等)协同工作,由于ROS-1的体系结构不支持多master的概念,因此很难在多异构机器人之间建立通信。
尽管有其他方法用于网络中节点之间的通信(我们将在第6章探讨),但它们之间没有安全的通信方式。任何连接到master的用户都可以很容易地访问可用话题的列表,还可以使用或修改它们。鉴于此,人们通常使用ROS-1来验证概念,或者构建科学研究的快速解决方案。
在使用ROS-1进行原型设计验证和创建最终产品之间出现了一条难以逾越的鸿沟,这主要是因为ROS-1不是实时的。通过无线连接(Wi-Fi)使用有线连接(以太网)时,系统组件之间的网络连接有所不同,这可能导致数据接收延迟,甚至丢失数据,从而导致系统不稳定。
考虑到这一点,OSRF开始了改进和建设下一代ROS——ROS-2的旅程。目前ROS-2正处于开发之中,主要目的是修复ROS-1在通信中存在的风险和不足。在本章中,读者将了解ROS-2的概念及其与ROS-1的区别以及特点。为了读者能够更好地理解和比较,本章的组织方式与前一章相似:
·ROS-2概述。
·ROS-2基础。
·ROS-2客户端库。
·ROS-2工具。
·安装ROS-2。
·设置ROS-2工作空间。
·编写ROS-2节点。
·ROS-1和ROS-2的通信。