上QQ阅读APP看书,第一时间看更新
2.2.4 为什么选择ROS-2
考虑到机器人社区的需求,ROS-2的工作原理与ROS-1类似。ROS-2是独立的发行版,不是ROS-1的一部分。但是,它又可以嵌入ROS-1软件包中并与之协同工作。目前正在开发中的ROS-2,主要借助现代依赖库和工具克服ROS-1存在的不足。ROS-1的特征栈是用C++编写的,客户端库是用C++和Python编写的(其中Python编写的客户端库是用一种基于底层的方法构建的,该方法基于C++库编写),而ROS-2中的组件是用C语言编写的。ROS-2中有一个用C语言编写的独立层,用来连接到ROS-2客户端库,客户端库主要包括rclcpp、rclpy和rcljava等。
ROS-2对各种网络配置有了更好的支持,并能够提供可靠的通信。ROS-2还消除了nodelet[1](http://wiki.ros.org/nodelet)的概念,支持多节点初始化。与ROS-1不同,ROS-2中有两个非常有趣的特性:一是通过状态机周期检测节点的心跳;二是在添加或删除节点和话题时发出通知。这些设计可以帮助提供系统的容错性。此外,ROS-2很快将支持不同的平台和架构。
至此我们已经了解了ROS-2与ROS-1的主要区别,下面让我们相对详细地介绍ROS-2的基本原理。
[1] nodelet是一个可以将多个节点捆绑在一起管理的功能包。——译者注