你将学习:
- ROS 2.0基础知识。
- 为什么ROS 2.0很重要。
- ROS 2.0实现的特性和增强。
Open Robotics发布了第一个ROS(机器人操作系统)2007年,它被设计用来提供一套软件库和工具,开发人员可以用来构建机器人应用程序。在其根,ROS系统由许多独立的节点组成,每个节点使用发布/订阅消息传递平台与其他节点通信。
例如,某个特定传感器的驱动程序可以实现为一个节点,该节点以消息流的形式发布传感器数据。这些消息可以被任意数量的其他节点读取,包括过滤器、记录器、映射、导航等。
这些节点甚至不需要位于相同的系统上,也不需要由相同的体系结构使用来执行某个功能。用户可以使用Arduino系统发布消息;一台笔记本电脑订阅了它们;安卓手机驱动电机或激活传感器。这使得ROS更加灵活,能够适应用户的需要。更重要的是,这个平台也是开源的,由许多人维护,其中一些人上传了代码,其他人可以在他们的机器人项目中使用。
此外,ROS是一个位于操作系统之上的框架,允许它将硬件从软件中抽象出来,这意味着它可以被认为是机器人所有硬件的软件。这意味着用户可以在不需要物理硬件的情况下为机器人编写程序。
什么是ROS 2?一个框架概述
ROS的设计结构分解为几个关键参数和工具,包括一个计算图模型,其中进程表示为图结构中的节点,由称为主题的边连接。ROS节点可以通过这些主题相互传递消息,对其他节点进行服务调用,为其他节点提供服务,或者从称为参数服务器的公共数据库中设置或检索共享数据。
每个节点表示运行ROS图的单个进程。每个节点都有一个名称,它在执行任何其他操作之前向ROS主节点注册这个名称。在不同的名称空间下可以存在多个具有不同名称的节点,或者可以将节点定义为匿名的,在这种情况下,节点将随机生成一个额外的标识符,添加到其给定的名称中。
节点能够通过称为主题的总线发送和接收消息,主题可以是用户定义的,包括从收集传感器数据到执行器命令的所有内容。节点还可以发布服务或动作,这些服务或动作提供了一个有开始和结束的结果,例如捕获一个帧图像。节点之间共享的数据库(称为参数服务器)允许对静态和非静态信息(比如很少更改的数据)进行公共访问。
此外,ROS的核心功能还包括一些工具,开发人员可以利用这些工具来可视化数据、导航包结构,以及创建自动化复杂配置和设置过程的脚本。其中包括“rviz”,一个用于为机器人、传感器数据及其工作环境成像的3D可视化工具,以及“rosbag”,一个记录和播放消息数据的命令行工具,以及catkin ROS构建系统。
ROS核心平台的一些附加包包括映射和定位(2D/3D SLAM)、导航、感知、坐标框架表示和仿真。工具集还提供了“rosbash”,这是一个应用程序,提供了一个工具子集,以增强基于unix的bash shell和命令语言的功能。最后,核心功能包括“roslaunch”,这是一个用于在本地和远程启动多个节点的工具,并设置节点发送和接收主题的服务器参数。
所以,功能是什么ROS 2提供吗?该平台使用的核心组件、工具和库与它的前身基本相同,并包含许多新特性,如改进的实时数据分发服务(DDS)协议通信堆栈。DDS充当节点间通信的中间件,并使用服务质量(QoS)配置文件提供实时通信、可伸缩性、性能增强和安全优势。
ROS 2的特性
- 通过DDS进行发现、传输和序列化
- 支持多种DDS实现
- 通用核心客户端库
- 发布/订阅主题
- ROS 1/ROS 2通信桥接
- DDS安全支持
- 非理想网络的服务质量设置
- 节点需求的组合(编译、链接、加载、运行时)
- 支持具有托管生命周期的节点
额外的细节
- 协调多个节点的发射系统
- 对节点和主题的名称空间支持
- 对ROS名称进行静态重映射
- 对实时代码的初步支持
- 裸金属微控制器的初步支持
- 一个全ros 2移动机器人的演示
ROS 2还提供了多种日志记录改进,允许用户指定每个日志记录器的日志级别,并通过环境变量配置他们的日志目录。除此之外,它还能够在启动时配置QoS,并对ROS 2 CLI进行了改进,包括回显序列化的主题数据、YAML数据表示,以及在运行时加载参数文件的能力。其他特性包括RViz2的新时间面板、新的和改进的Connext RMW实现,以及改进的rosbag2性能。
除了修复了许多错误和提高了性能,最新的银河版本还包括Red Hat Enterprise Linux(RHEL) V8作为二级操作系统,可以作为ROS 2的开源基础。此外,银河维护了来自192个贡献者的超过500个ROS 2包,以增加任何数量的机器人应用程序的功能。