智能机器人原理与应用 课件 第8章 ROS机器人操作系统_第1页
智能机器人原理与应用 课件 第8章 ROS机器人操作系统_第2页
智能机器人原理与应用 课件 第8章 ROS机器人操作系统_第3页
智能机器人原理与应用 课件 第8章 ROS机器人操作系统_第4页
智能机器人原理与应用 课件 第8章 ROS机器人操作系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

北京信息科技大学自动化学院智能机器人原理与应用“智能检测技术与模式识别”研究所北京信息科技大学自动化学院课程《智能机器人原理与应用》第八章ROS机器人操作系统

机器人操作系统(robot

operating

system),简称ROS,是由WillowGarage公司于2010年发布并开源的高度灵活的软件架构,用于编写机器人软件程序。ROS极大地提高了研发效率,减少了重复工作,也降低了硬件设计和开发的难度。8.1.1ROS简介

ROS并不是传统意义上的操作系统,它是基于计算机操作系统之上开发的一个框架,提供了硬件抽象、底层设备管理与控制、常用功能实现、进程间消息、程序包发送等功能。ROS具备操作系统的许多功能,但是它需要运行在计算机操作系统之上,故一般被称作次级操作系统或元操作系统。ROS采用了分布式结构,基于TCP/IP的通信方式,其强大的耦合性使得每个功能模块都可以单独设计、编译,然后在运行时松散地进行合成。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架ROS基于分布式处理框架,使得多种不同功能可单独设计,并能在运行时松散耦合。如图所示,这种基于模块间点对点的松散耦合的网络连接处理架构执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通信、基于Topic的异步数据流通信,还有参数服务器上的数据存储。8.1.1ROS简介1.ROS的运行机制北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架(1)点对点的设计。ROS有众多的任务进程,系统将其抽象为节点,由Master统一管理。其中每个节点的耦合程度较低,而Master为服务和客户建立连接充当媒介,各个节点功能间都可进行通信,这种消息传递机制使得ROS可分布式部署,并且更加简单高效。8.1.1ROS简介2.ROS系统的特点(2)多语言支持。ROS利用了简单的、与语言无关的接口定义语言描述模块之间的消息传送。接口定义语言使用简短的文本描述每条消息的结构,也允许消息的合成。在ROS系统中,每个节点内部的程序可由各种语言编写,只要其发出的接口相符,通过网络套接字通信的方式便可获取节点想表达的数据信息,此种通信方式有利于代码的移植。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架(3)集成程度高。在设计之初,大多数已经存在的机器人软件工程都包含了可复用的驱动和算法,但是由于接口不兼容,大部分代码的中间层都非常混乱,故ROS建立的系统具有模块化的特点。在实际工程中,既可以编写或使用一两个节点单独运行,又可以通过代码复用令多个节点融合。8.1.1ROS简介2.ROS系统的特点(4)工具包丰富。为了提升系统的管理效率,ROS参考已有的计算机操作系统,构建采用了丰富的工具包。这些工具承担了各种各样的任务,丰富的工具包使基于ROS的开发更有效率。(5)源码开放。ROS的所有的源码都是公开发布,以分布式的关系遵循着BSD许可,即允许各种商业和非商业的工程开发。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架如图所示,从架构上看,ROS架构分为3个层次:一是建立在Linux系统上的OS层;二是实现通信机制与机器人开发库的中间层;三是在ROSMaster管理下保证各个节点功能运行的应用层。8.1.2ROS整体架构分析在中间层中,ROS做了大量工作,并专门设计了通信系统,各个节点之间均使用ROS提供的消息传递机制。在通信机制之上,ROS提供了大量机器人开发相关的库,如数据类型定义、坐标变换、运动控制等,可以提供给应用层使用。应用层中负责管理整个系统的正常运行管理者为Master。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架如图所示,从应用层面看,ROS系统可以分为3三个级别,分别为计算图级、文件系统级、开源社区级。计算图集描述程序如何运行,以及各个进程与系统之间的通信。文件系统级表达的是硬盘中的代码程序以及软件如何组织和构建的。开源社区级主要是ROS资源的获取和分享,如何开源代码。8.1.2ROS整体架构分析北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架计算图级是ROS处理数据的一种点对点的网络形式,该网络是节点之间通过主题或服务来连接。系统运行时,任何节点都可以访问此网络,通过获取其他节点发布的消息,或是将自身数据发布到网络上来达到节点之间数据交换的目的。ROS中的基本计算图级概念包括:节点、节点管理器、参数服务器、消息、服务、主题和消息记录包。这些概念以各种形式来提供数据交互。8.1.2ROS整体架构分析1.计算图级1)节点(node)节点是ROS中抽象出来的最基本的计算执行进程。在工程中,若要使用某个功能包,或是调用自己编写的可执行文件,必然要创建一个节点,并将此节点连接到ROS的网络中,定义好该节点的接口和通信形式,以便完成节点之间的数据交换。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架8.1.2ROS整体架构分析1.计算图级2)节点管理器(master)节点管理器是为了管理节点产生的,用于节点的主题、信息和参数修改等,而节点之间的通信完全是由节点管理器控制。同时,对于部署在不同设备的节点来说,可以通过一个节点管理器统一管理。3)参数服务器(parameter

server)参数服务器是可以通过网络访问的共享的多变量字典,是节点存储参数的地方,通过关键字存储。使用节点时,通过参数服务器存储和检索参数,也通过参数服务器修改节点的工作任务。4)消息(message)节点之间的通信可以通过消息实现数据交换。消息包含了一个节点所发布的数据信息,消息的类型很多,前面已有了介绍,除了介绍的消息类型外,也可以进行自定义消息操作。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架8.1.2ROS整体架构分析1.计算图级5)主题(topic)主题是ROS网络对节点发布消息一种通信方式,它通过发布/订阅来实现,每一条消息都会发布到相应的主题上。当一个节点发送数据时,可称为此节点项主题发布消息,其他订阅此主题的节点可通过主题接收消息,这是ROS中常见的通信方式。6)服务(service)服务是ROS网络对节点发出请求的一种通信方式,它通过请求/应答来实现,服务也必须有唯一的名称。当一个节点提供了某一个服务后,ROS中的所有节点都可以使用ROS编写的代码与其通信。7)消息记录包(bag)消息记录包是用来保存ROS消息数据的文件格式。在工程中,可以通过消息记录包记录各种难以收集的传感器数据,并且收集多次实验的数据,以便开发者的开发和调试。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架8.1.2ROS整体架构分析2.文件系统级ROS的内部结构、文件结构和所需的核心文件都在这一层。由于ROS有众多的文件,而这些文件需要进行统一的管理,不同的程序文件放在不同的文件夹下,根据不同的功能进行分类。1)功能包集(metapackage)将多个功能接近甚至相互依赖的软件包放到一个集合之中,称为功能包集,在ROShydromedusa版本之前,相似的概念为stack(功能包集)。2)功能包(package)功能包在ROS中是组成软件的最基本形式,无论是单个节点的运行还是多个节点组织,都需要用功能包搭建。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架8.1.2ROS整体架构分析2.文件系统级4)消息类型(message)在ROS中,消息是节点之间进行数据交换的一种通信形式,它既有ROS设计时规定的消息格式,也可以根据工程需要进行消息格式的自定义。5)服务类型(service)服务是节点之间通信的另一种方式,是一种简化的服务描述语言,以实现节点之间的请求/响应的通信。与消息的通信方式不同,此种通信方式面对一对一的节点数据交换。3)功能包清单(manifest)功能包清单主要描述此功能包的依赖关系、名称、版本号、作者、维护者等信息。一般来说,每个功能包都会对应地提供一个功能包清单,以便更加方便地安装应用功能包,通过功能包清单实现对功能包的管理工作。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架8.1.2ROS整体架构分析3.开源社区级ROS的资源共享机制主要来源于其开源社区,其共享途径有多种方式,通过独立的网络社区分享软件和知识。发行版(distribution):类似Linux发行版,ROS发行版包括一系列带有版本号、可直接安装的功能包,这使得ROS的软件管理和安装更加容易,而且可以通过软件集合来维持统一的版本号。软件源(repository):ROS依赖共享网络上的开源代码,不同的组织结构可以开发或共享自己的机器人软件。ROS

wiki:记录ROS信息文档的主要论坛。所有人都可以注册、登录该论坛,上传自己的开发文档、更新、编写教程。邮件列表(mailinglist):ROS邮件列表是交流ROS更新的主要渠道,也可以交流ROS开发的各种疑问。ROS

Answers:ROSAnswers是一个咨询ROS相关问题的网站,用户可以在该网站提交自己的问题,并得到其他开发者的问答。博客(blog):发布ROS社区中的新闻、图片、视频。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.1ROS框架8.1.3ROS名称系统在设计之初,ROS便考虑到大型的工程存在很多节点以及节点通信时的主题等,通过对各个部分的名称加以组织,工程会进行得更加顺利,以便ROS处理和提取复杂的信息,如节点、主题、服务、参数服务器都有各自对应的名称。资源名称的解析可以是相对的,故资源不一定需要知道它们所在的命名空间的位置。编写节点时,可以假设它们在根命名空间中,如果编写更大的系统,它们可以被放到另一个指定的命名空间内。这种可以移动到其他命名空间的机制提升了ROS的可复用性。在ROS中,每一个资源被定义在一个命名空间之中,此资源可以共享。资源可以在它们的命名空间内创建,在自己的命名空间内或上一级命名空间内连接资源,连接可以在不同命名空间的资源间进行。此种封装将系统的不同部分进行分离,避免命名错误导致占用全局名称,使得调用出错。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.2ROS通信机制8.2.1ROS通信机制概述ROS在中间层做的最多的是通信机制的改动,它提供了点对点的通信机制,在机器人开发中可以轻松地处理单独模块,灵活地使用机器人。ROS是基于Socket网络连接的构架,其中所有的消息通信都必须使用节点管理器。ROS通信实现的要素在8.1节进行了详细讲解,包括节点、节点管理器、参数服务器、消息、服务、主题。ROS的架构是基于ROS的松耦合网络连接的处理架构,提供多种通信服务,包括使用主题的异步数据流通信、使用服务的远程电泳通信和通过参数服务器数据传输通信,可以实现多种情况下的网络连接。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.2ROS通信机制8.2.1ROS通信机制概述使用主题的异步数据流通信是ROS中最主要的通信方式,它实现了节点之间多对多的连接,并通过单向的数据通道传输数据。节点只需将数据发送到对应的主题,订阅者通过主题接收信息,实现了节点之间的通信解耦。使用远程调用服务通信可实现节点间一对一的连接,采用了请求/应答的通信模式。当一个节点发送请求并要从其他节点获取数据时,可使用此种类型的通信方式。使用参数服务器数据传输通信可实现通过ROS搭建的网络获取多元共享的参数字典,节点运行时可在参数服务器上存储或获取参数。参数服务器运行在节点管理器上,主要实现一些参数的配置。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.2ROS通信机制8.2.2主题异步数据流通信原理简介主题使用发布/订阅模型进行消息的传递,名称是唯一的。在使用ROS的智能机器人中,一个节点若要与其他节点通信,只需在主题上发布消息,消息的发布者和订阅者不需要相互知晓,实现了两者之间的解耦,如图所示。在ROS中,一个主题可以有多个发布者和订阅者,同时,一个节点可发布或订阅多个主题,并且可以随时新建发布者或订阅者。但每个发布者只能向一个主题发布消息,订阅者只能订阅一个主题。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.2ROS通信机制8.2.2主题异步数据流通信原理简介通过主题的方式发布接收消息,实现节点间的单向数据流,发布者通过数据流向主题发布消息,而不用关注订阅者是否接收到,订阅者从主题接收消息,也不用反馈给发布者是否收到消息。在一个完整的ROS系统中,必须包含一个节点管理器Master,用来管理发布者和订阅者,使消息可以正常地发布和订阅,故每创建一个新的发布者或订阅者,都要在Master上注册。当发布者在Master上注册时,Master会保存发布者的统一资源标识符和发布者发布的主题,当有订阅者在Master上注册并订阅某个主题时,它会在保存的信息中寻找发布者,之后将发布者的统一资源标识符发送给订阅者,从而建立一对多的连接。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.2ROS通信机制8.2.3同步远程过程调用服务通信发布/订阅的通信方式属于单向的多对多的通信方式,发布者与订阅者之间解耦,这种通信方式不适合远程过程调用的请求/应答模型。请求/应答是分布式系统常用的信息交互方式,故ROS提供了远程过程服务通信方式,实现远程过程调用请求/应答模型。服务是由一对一的消息组成,一个用于实现请求,一个用来实现应答。节点用字符名定义服务,客户端通过发送一个请求消息调用服务,之后等待响应。如图所示。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.2ROS通信机制8.2.4参数服务器数据传输简介参数服务器是在ROS上的一种共享的多变量参数字典,节点运行时可在参数服务器上存储或获取参数。参数服务器通常用于存储静态的非二进制数据,并非是为了高性能数据存储。参数服务器是全局可见的,所有节点都可以获取和存储参数,可以删除、修改数据。如图所示。参数属于参数服务器,即节点创建了参数,在节点终止后,参数依然会保留在参数服务器中。这种模式提高了ROS节点的灵活性和可配置性。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.3ROS开发实例—基于ROS的室内智能机器人导航与控制8.3.1ROS开发环境搭建支持ROS的操作系统有多种,但正式支持的只有Ubuntu系统。以Ubuntu系统为例,本节介绍ROS开发环境的搭建。这里主要介绍ROS的安装和ROS开发环境的搭建,Ubuntu系统的安装不再赘述。ROS的常规安装操作如下。(1)设置网络时间协议(network

time

protocol,NTP)。(2)添加代码列表。这里需要在ros-latestl.ist添加ROS版本库(3)设置公钥。设置公钥能获取从ROS库下载功能包的权限。(4)更新软件包索引。(5)安装ROS

Kinetic

Kame。此操作的目的是安装台式机的ROS功能包,功能包涵盖ROS、rqt、RViz、机器人相关的一些库、仿真、导航等内容。(6)初始化rosdep。(7)安装rosinstall。(8)加载环境配置文件。(9)创建并初始化工作目录。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.3ROS开发实例—基于ROS的室内智能机器人导航与控制8.3.2室内移动服务机器人的系统结构室内环境是一种结构化环境,并具有一定动态性。这要求室内移动服务机器人具备周边环境感知、动态环境下的地图构建、面向任务的导航以及人机间交互与合作的能力。室内移动服务机器人的基本硬件组成主要包括运动底盘、地图构建设备、感知与导航设备等。1.硬件结构(1)运动底盘。虽然两轮差动底盘对地面的适应性能较差,并且存在运动约束,但从控制成本角度考虑,选择了YujinRobot公司生产的智能机器人底盘Kobuki。Kobuki具有碰撞、高精度码盘以及陀螺仪等传感器,具有判别行进路面的情况以及自身姿态的能力。(2)地图构建设备。本文使用RPLIDAR激光雷达作为地图构建设备,它能够实现360°、6m范围内的激光测距扫描,在各类室内环境以及无日光直接照射的室外环境下表现不错。(3)视觉导航与认知。为实现高性能的场景认知功能,本文采用具有深度信息获取功能的XtionPROLive摄像头完成。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.3ROS开发实例—基于ROS的室内智能机器人导航与控制8.3.2室内移动服务机器人的系统结构根据上述要求,室内服务机器人的系统结构如图8.10所示。硬件层包括移动底盘,用于地图构建的传感器以及用于完成任务的视觉传感器。虚线部分为驱动层,用于应用层与硬件的沟通。定位导航模块负责完成机器人的自主移动,可视化部分是人机交互的接口。2.软件结构北京信息科技大学自动化学院课程《智能机器人原理与应用》8.3ROS开发实例—基于ROS的室内智能机器人导航与控制8.3.3系统实现本文构建的基于ROS的软件系统主要分为4大部分:机器人运动控制模块、同步定位与地图构建模块、定位导航模块、三维视觉认知模块。所有模块独立完成,开发者可以根据需要拼接。如图所示,模块运行时,统一由ROS_Master完成调度。北京信息科技大学自动化学院课程《智能机器人原理与应用》8.3ROS开发实例—基于ROS的室内智能机器人导航与控制8.3.3系统实现SLAM是机器人认知外界环境的一种方式,也是智能机器人实现自主行为规划的前提。其功能可以描述为:在未知的环境中,根据地图以及传感器信息进行定位估计,并在定位的基础上建造增量式地图。1.同号定位与地图构建2.定位与导航智能机器人的定位导航是实现机器人自主运动的关键,本系统使用激

温馨提示

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

评论

0/150

提交评论