ROS 2正式版来了,到底有哪些新变化?

锋影

email:[email protected]


如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意


2017.12.09,机器人开源操作系统软件ROS 2终于推出首个正式版,新版本命名为“Ardent Apalone”,代号“ardent”。

查了一下,中文意思为“热心的美洲鳖”,不知ROS2是不是要从ROS1的“海龟”系列换成“土鳖”系列了,ORZ。

如果你只想用最短时间了解有哪些关键的新特性,只看下一段就OK了。

1.ROS2全面支持三种平台
ØUbuntu 16.04(Xenial)
ØMac OS X 10.12(Sierra)
ØWindows 10
2.实现了分布式架构
取消Master中央节点,实现节点的分布式发现,发布/订阅,请求/响应通
3.支持实时
4.使用新版本的编程语言
ØROS 2广泛使用C ++ 11。而ROS 1的核心主要使用C ++ 03,在其API并没有使用C++ 11功能。
ØROS 2的Python版本至少为3.5,ROS 1的Python版本为2.7
5.使用了新的编译系统Ament(ROS为Catkin)
6.ROS1可以通过rosbridge和ROS 2通信


接下来进行详细介绍:

关于ROS2的起源、前世今生可参考我一年前写的一篇文章,在此不过多重复。

ROS和ROS2.0现在到底该学习哪个呢?

zhuanlan.zhihu.com/p/24



ROS 1和ROS 2之间变化



1. 系统架构

上图所示是ROS 2与ROS 1整体架构的对比:

ROS 1主要构建于Linux系统之上,主要支持Ubuntu。而ROS 2采用全新的架构,底层基于DDS通信机制,支持实时性、嵌入式、分布式、多操作系统。ROS 2支持的系统包括Linux、windows、Mac、RTOS,甚至是单片机等没有操作系统的裸机。

ROS 1的通讯系统基于TCPROS/UDPROS,强依赖于master节点的处理,而ROS 2的通讯系统是基于DDS,进而取消了master,同时在ROS2内部提供了DDS的抽象层实现,有了这个抽象层,用户就可以不去关注底层的DDS使用了哪个商家的API。

ROS 2目前已经在Ubuntu Xenial,OS X El Capitan以及Windows 10上进行了CI测试和支持(参阅ci.ros2.org)。

2. 编程语言

C ++标准

ROS 1的核心是针对C ++ 03,并没有在其API中使用C ++ 11功能。ROS 2广泛使用C ++ 11,并使用C ++ 14的某些部分。在未来,ROS 2可能会开始使用C ++ 17。

python

ROS 1是针对Python 2,ROS 2至少需要Python 3.5版本。

3. 编译系统

ROS编译系统从初期使用的rosbuild,到groovy版本之后的catkin,再到ROS2中的ament

虽然编译系统并不是ROS框架中的核心部分,但却是开发者最常接触的一个重要功能。

ROS 2新的编译系统ament是一种元编译系统,用来构建组成应用程序的多个独立功能包,它并不是一个全新的东西,是catkin编译系统进一步演化的版本,而这两个单词也是近义词。查了一下,catkin和ament的意思为柔荑花序(柳絮),而ROS最早起源于柳树车库公司。

ROS 2只支持隔离的构建

在ROS 1中,可以在单个CMake上下文中构建多个包。虽然这加快了构建步骤,但是每个包都需要确保正确定义了交叉包目标依赖关系。另外所有的软件包共享相同的命名空间,导致目标名称冲突等。

在ROS 2中,只支持隔离的构建,即每个包都是独立构建的。安装空间可以是隔离的或合并的。

取消了开发空间

在ROS 1中,可以在不安装包的情况下构建包。

在ROS 2中,必须先安装一个软件包,然后才能使用它。

ROS 1中使用开发空间的一个原因是为了使开发人员能够更改文件,例如Python代码或启动文件,并直接使用修改后的代码,而无需重新编译软件包。在ROS 2中保留了这一好处,可选择使用符号链接替换安装步骤中的复制操作。

4. 消息、服务接口

ROS 2使用了新的接口。有关更多信息,请参阅ROS接口定义文章。

如果现在就想动手开发,可参阅“古月居”的相关教程。

下一个版本

ROS 2 目前还在积极的开发完善中之中。下一个正式版本将在2018年夏天发布。届时会继续有一些出现新特性,例如将会进一步完善C++和Python的API,开发通用构建工具,发布Windows和Mac OS软件包,使用FastRTPS增强实时安全等。

期待更好,更强大的ROS 2 土鳖出现!


参考文献:

github.com/ros2/ros2/wi

github.com/ros2/ros2/wi

github.com/ros2/ros2/wi

design.ros2.org/article

古月居 guyuehome.com/



猜你喜欢

转载自blog.csdn.net/xjhhjx/article/details/80557236