机器人操作系统(ROS)课件11ROS-2简介_第1页
机器人操作系统(ROS)课件11ROS-2简介_第2页
机器人操作系统(ROS)课件11ROS-2简介_第3页
机器人操作系统(ROS)课件11ROS-2简介_第4页
机器人操作系统(ROS)课件11ROS-2简介_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器人操作系统(ROS)机器人操作系统(ROS)ROS-2简介11机器人操作系统(ROS)11.ROS-2简介在过去的十多年时间里,ROS-1已经发展壮大,其拥有庞大的功能包列表,通过几个小规模的功能包,用户就可以创建一个全新的复杂系统。然而,ROS-1仍然存在以下几个问题,虽然很多开发者对其中一些问题提出了针对性的解决方案,但仍然无法解决ROS-1中的根本问题。1)多机器人系统。多机器人系统是机器人领域研究的一个重点问题,可以解决单机器人性能不足、无法应用等问题,但是ROS-1中并没有构建多机器人系统的标准方法。2)跨平台。ROS-1基于Linux系统,在Windows、macOS、RTOS等系统上无法应用或者功能有限,这对机器人开发者和开发工具提出了较高要求,也有很大的局限性。3)实时性。很多应用场景下的机器人对实时性要求较高,尤其是工业领域,系统需要做到硬实时的性能指标,但是ROS-1缺少实时性方面的设计,所以在很多应用中捉襟见肘。4)网络连接。ROS-1的分布式机制需要良好的网络环境才能保证数据的完整性,而且网络不具备数据加密、安全防护等功能,网络中的任意主机都可以获得节点发布或接收的消息数据。5)产品化。ROS-1的稳定性欠佳,ROSMaster、节点等重要环节在很多情况下会莫名宕机,这就导致很多机器人从研究开发到消费产品的过渡非常艰难。ROS-2的开发主要就是解决上述情形中遇到的问题。机器人操作系统(ROS)11.1ROS-2概述相比ROS-1,ROS-2的设计目标更加丰富,旨在改进可用于实时系统和产品阶段解决方案的通信网络架构。ROS-2的主要设计目标是:1)支持多机器人系统2)实时通信能力3)直接在硬件层面上提供ROS层4)软件版本更新(主要是客户端库)ROS-2简化了发布-订阅的基础结构,并使其在不同的硬件和软件组件之间更加可靠,以确保用户可以更专注与功能和生态系统。经过几年的alpha和beta版本的发布,ROS-2于2017年12月推出第一个发行版——ArdentApalone。截至本书稿撰写期间,最新的ROS-2版本是GalacticGeochelone,于2021年5月23日发布.具体的ROS-2发行版如表11-1所示。机器人操作系统(ROS)11.1ROS-2概述机器人操作系统(ROS)11.2ROS-2基础ROS-2重新设计了系统架构,可以从图11-1中看到两代ROS之间架构的变化。在ROS-1中,用户代码将连接到ROS客户端库(如rospy和roscpp),它们直接与网络中的其他节点通信;而在ROS-2中,ROS客户端就像一个抽象层,使用其他节点通过DDS实现连接到网络中进行通信的另一层。在ROS-2中,操作系统层与底层硬件层的通信是通过DDS实现完成的。图中的DDS组件有供应商实现,供应商不同则具体实现不同。抽象DDS层与ROS-2客户端库连接,并通过DDS实现帮助用户连接代码。通过这样的分层抽象,用户无须感知DDSAPI的存在就可以与操作系统连接。机器人操作系统(ROS)11.2.1DDSDDS(DataDistributionService,数据分发服务),2004年由对象管理组织(ObjectManagementGroup,OMG)发布,是一种专门为实时系统设计的数据分发/订阅标准。DDS最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准,同时广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。其技术关键是以数据为核心的发布/订阅(Data-CentricPublish-Subscribe,DCPS)模型,可以帮助两个或多个DDS程序在不使用master的情况下相互通讯。这种DCPS模型创建了一个“全局数据空间”(GlobalDataSpace)的概念,所有独立的应用都可以访问。机器人操作系统(ROS)11.2.2计算图ROS-2遵循与ROS-1相同的计算图概念,但有一些变化:节点:在ROS-2中,节点被称为参与者。除了可以像ROS-1一样在计算图中定义节点之外,在ROS-2中一个进程还可以初始化多个节点,它们可能位于同一进程、不同进程或不同机器中。发现(discovery):ROS-1中有一个master的概念可以帮助节点互相进行通信,而ROS-2中则没有master的概念,而是通过一种称为“发现”的机制实现通信。在默认情况下,ROS-2中的DDS标准实现提供了一种分布式发现方法,节点能够在网络中自动发现彼此。此机制有助于实现不同类型的多个机器人之间的可靠通信。除此之外,我们在前面章节中看到的其他概念,如消息、话题、参数服务器、服务和数据包,对于ROS-2来说都是一样的。机器人操作系统(ROS)11.2.3社区层级与ROS-1成熟活跃的社区氛围不同,ROS-2社区目前还在发展之中。一些研究机构和企业都做出了很好的贡献。由于ROS-2在2014年才开始开发,因此关于ROS-2的研究和工具还有很多需要关注的问题,这是因为通过开源社区实现实时系统需要克服巨大的困难。OSRF与提供DDS实现并为社区做出贡献的供应商进行了很好的沟通。目前ROS-1在其仓库中有2000多个功能包,而ROS-2还只有100多个。最新的ROS-2页面的网址为/doc/ros2/。机器人操作系统(ROS)11.3ROS-2中的通信前面我们所学习的是ROS-1通信模型,也就是话题、服务等通信机制。ROS-2的通信模型会稍显复杂,加入了很多DDS的通信机制,如图11-2所示。基于DDS的ROS-2通信模型包含以下几个关键概念。参与者(Participant)在DDS中,每一个发布者或者订阅者都称为参与者,对应于一个使用DDS的用户,可以使用某种定义好的数据类型来读/写全局数据空间。发布者(Publisher)数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相连,发布一种或多种话题(Topic)的消息。订阅者(Subscriber)数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相连,订阅一种或多种话题(Topic)的消息。数据写入器(DataWriter)上层应用向发布者更新数据的对象,每个数据写入器对应一个特定的话题(Topic),类似于ROS-1中的一个消息发布者。数据读取器(DataReader)上层应用从订阅者读取数据的对象,每个数据读取器对应一个特定的话题(Topic),类似于ROS-1中的一个消息订阅者。话题(Topic)与ROS-1中的概念类似,话题需要定义一个名称和一种数据结构,但ROS2中的每个话题都是一个实例,可以存储该话题中的历史消息数据。质量服务原则(QualityofServicePolicy)质量服务原则简称QoSPolicy,这是ROS-2中新增的、也是非常重要的一个概念,控制各方面与底层的通信机制,主要从时间限制、可靠性、持续性、历史记录这几个方面满足用户针对不同场景的数据需求。机器人操作系统(ROS)11.3ROS-2中的通信基于DDS的ROS-2通信模型包含以下几个关键概念。参与者(Participant)在DDS中,每一个发布者或者订阅者都称为参与者,对应于一个使用DDS的用户,可以使用某种定义好的数据类型来读/写全局数据空间。发布者(Publisher)数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相连,发布一种或多种话题(Topic)的消息。订阅者(Subscriber)数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相连,订阅一种或多种话题(Topic)的消息。数据写入器(DataWriter)上层应用向发布者更新数据的对象,每个数据写入器对应一个特定的话题(Topic),类似于ROS-1中的一个消息发布者。数据读取器(DataReader)上层应用从订阅者读取数据的对象,每个数据读取器对应一个特定的话题(Topic),类似于ROS-1中的一个消息订阅者。话题(Topic)与ROS-1中的概念类似,话题需要定义一个名称和一种数据结构,但ROS2中的每个话题都是一个实例,可以存储该话题中的历史消息数据。质量服务原则(QualityofServicePolicy)质量服务原则简称QoSPolicy,这是ROS-2中新增的、也是非常重要的一个概念,控制各方面与底层的通信机制,主要从时间限制、可靠性、持续性、历史记录这几个方面满足用户针对不同场景的数据需求。机器人操作系统(ROS)11.4安装ROS-21.添加软件源$sudoaptupdate&&sudoaptinstallcurl

$curl/repos.key|sudoapt-keyadd–

$sudosh-c'echo"deb[arch=amd64,arm64]/ubuntu/mainxenialmain">/etc/apt/sources.list.d/ros2-latest.list'2.安装ROS-2$sudoapt-getupdate

$sudoaptinstall`aptlistros-ardent-*2>/dev/null|grep"/"|awk-F/'{print$1}'|grep-v-eros-ardent-ros1-bridge-eros-ardent-turtlebot2-|tr"\n"""`3.设置环境变量$source/opt/ros/ardent/setup.bash如果安装了Python包——argcomplete,还需要设置以下环境变量:$source/opt/ros/ardent/share/ros2cli/environment/ros2-argcomplete.bash4.配置ROSMiddleware(RMW)DDS是ROS-2中的重要部分,ROS-2默认使用的RMW是FastRPTS,我们也可以通过以下环境变量将默认的RMW修改为OpenSplice:RMW_IMPLEMENTATION=rmw_opensplice_cpp5.安装依赖ROS1的功能包ROS2在很长一段时间内会与ROS1并存,所以目前很多ROS2中的功能包需要依赖ROS1中的功能包,ROS2也提供了与ROS1之间通信的桥梁——ros1_bridge。在安装这些与ROS1有依赖关系的功能包之前,需要系统已经成功安装有ROS1,然后才能通过以下命令安装ROS2的功能包:$sudoaptupdate

$sudoaptinstallros-ardent-ros1-bridgeros-ardent-turtlebot2-*按照以上方法安装完成后,就可以使用ROS2的命令了。ROS2的默认安装路径依然是在Ubuntu系统的/opt/ros路径下。机器人操作系统(ROS)11.5本章小

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论