首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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.使用新版本的编程语言

ØROS 2广泛使用C ++ 11。而ROS 1的核心主要使用C ++ 03,在其API并没有使用C++ 11功能。

ØROS 2的Python版本至少为3.5,ROS 1的Python版本为2.7

4.使用了新的编译系统Ament(ROS为Catkin)

5.ROS1可以通过rosbridge和ROS 2通信

接下来进行详细介绍:

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

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

https://zhuanlan.zhihu.com/p/24391444

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土鳖出现!

参考文献:

https://github.com/ros2/ros2/wiki/Release-Ardent-Apalone

https://github.com/ros2/ros2/wiki/Features

https://github.com/ros2/ros2/wiki/Roadmap

http://design.ros2.org/articles/changes.html

开始学习机器人-知乎专栏https://zhuanlan.zhihu.com/p/24391444

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171212G0QLJW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券