ROS2.0时代 & ROS2.0开发

ROS1.0的诟病

  • Realtime Performance
    基于话题的发布与订阅,这种方式本身就不能保证实时性
  • Node management
    当分布式部署的时候,每个node都要指定自己的IP和master在哪
  • Master(roscore)
    roscore要挂掉的话,整个系统都玩完了
  • Multi-robots capability(Swarm)
  • Small processors
    只能在能跑Linux(比如ubuntu)这样的硬件上跑,小型的嵌入式板根本做不了ROS
  • Communication Priority
  • Communication Security
  • Unreliable network connectivity

所以基于上述的种种问题,ROS2.0终于诞生了,来对上述的问题做一下改进。

ROS2.0

ROS 2.0 Design
ROS2.0 wiki
ROS discourse
ADLINK-IST OpenSplice Getting Started Guide
RTI Connext DDS


前面是在2018年新年来临之际,看到了一些有关ROS2.0发布后,获取的一些信息,和收集的一些文档。发了上面的博文之后,其中我自己也没有仔细看看ROS2.0,这个周末刚好有些时间,重新回顾了一下ROS2.0相关内容。首先我研读了 ros缔造者Brian Gerkey的文章《Why ROS 2.0?》
总的来说,作者主要讲了三方面的问题:

  • 一是之前没有考虑到一些新用例,比如机器人的多样性,用户对小型嵌入平台和实时系统等诉求。
  • 二是这几年出现了Zeroconf、Protocol Buffers、ZeroMQ、Redis、WebSockets、DDS等新技术,不利用岂不是浪费了。
  • 三是研究人员想借机也升级API,将一代API中用户提出的建议加进新API中。

作者回顾了当初2007推出ROS的设计理念,以及针对当时的应用场景。随着这十年来的不断迭代和ROS开源社区的不断壮大,ROS似乎可以用在很多领域, agricultural robots, commercial cleaning robots, and others,甚至NASA也希望把ROS用在空间站中。

但是当ROS壮大之后,人们对它的期望也越来越高。当它不再能够我们日益增长的需求之后,必然会暴露出一些问题,这就意味着必须为ROS注入New technologies,其中好像特意针对话题发布、订阅的实时性和 多平台的适用性,在底层融合了DDS-RTPS( Real-Time- Publish and Subscribe),具体的内容可以参看William Woodall的文章《ROS on DDS》
其实到目前为止,我对ROS2.0的认知,只知道它对ROS1有很大的改进,听到比较多的词就是DDS、RTPS、no-node-master、 Qos等等吧。我想对于开发,最好的理解方式莫过于能够上手体验一下ROS2.0,那么怎么学习ROS2.0的开发呢?

GitHub上有发布新版的ros-dds,和新版的ROS2

新特性平台和依赖性
ROS 2支持在Ubuntu Xenial、OS X El Capitan和Windows 10上进行CI测试。
在语言方面,ROS 2广泛使用了C++11,并且还用到了部分C++14,Python至少为3.5版。
此外,ROS使用自定义的序列化格式、自定义传输协议和自定义中心发现机制;ROS 2有一个抽象的中间设备接口,目前该接口的所有实现都基于DDS标准。

构建系统
ROS 2开始支持除CMake以外的其他构建系统,并且Python包可以使用setup中的所有特性。
ROS 2中的环境设置被分成特定package和特定工作空间的脚本。
在ROS中,用户可以在单个CMake context上构建多个package,但ROS 2只支持单独构建。
在ROS中,研究者可以在不安装它们的情况下构建package,用ROS 2必须提前安装。
此外,ROS 2中重构的CMake API简化了编写代码,并且可以在没有清单文件的文件夹中检测支持的构建系统package。
消息与服务
在ROS 2中——
生成的代码使用了单独的命名空间。
可以设置消息中的默认初始值。
数组和字符串的可选上限。
持续时间和时间类型被定义为消息。
删除了Header message中的序列字段。
客户端库
ROS 2目前还不支持主题名称中的命名空间,在使用C或C++时,部分情况下可以编写实时节点。
资源查找
在ROS 2中的资源可在编译时在索引处注册,在运行时可被有效查询。

https://github.com/osrf/ros_dds
https://github.com/ros2/ros2
http://docs.erlerobotics.com/robot_operating_system/ros2/basic_concepts/middleware_interface

你可能感兴趣的:(ROS2.0,ROS机器人系统)