机器人操作系统ROS详细介绍_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、机器人操作系统ros详细介绍 ros(操作系统,robotoperatingsystem),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于猎取、建立、编写和执行多机融合的程序。 ros的运行架构是一种用法ros通信模块实现模块间p2p的松耦合的网络衔接的处理架构,它执行若干种类型的通讯,包括基于服务的同步rpc(远程过程调用)通讯、基于topic的异步数据流通讯,还有参数服务器上的数据存储。进展目标ros的首要设

2、计目标是在机器人研发领域提高代码复用率。ros是一种分布式处理框架(又名nodes)。这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到数据包(packages)和堆栈(stacks)中,以便于分享和分发。ros还支持代码库的联合系统。使得配合亦能被分发。这种从文件系统级别到社区一级的设计让自立地打算进展和实施工作成为可能。上述全部功能都能由ros的基础工具实现。为了实现“分享与配合”这一首要目标,人们制订了ros架构中的其他支援性目标:“轻巧”:ros是设计得尽可能便利简易。您不必替换主框架与系统,由于ros编写的代码可以用于其他机器人软件框架中。毫无疑问的,ros更易于集

3、成与其他机器人软件框架。实际上ros已完成与openrave、orocos和player的整合。ros-agnostic库:【agnostic:不行知论】建议的开发模型是用法clear的函数接口书写ros-agnostic库。语言自立性:ros框架很简单在任何编程语言中执行。我们已经能在python和c+中顺当运行,同时添加有lisp、octave和java语言库。测试容易:ros有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很简单。扩展性:ros适合于大型实时系统与大型的系统开发项目。ros的概念ros有三个层次的概念:分离为filesystemlevel

4、,computationgraphlevel,以及communicationlevel。以下内容详细的总结了这些层次及概念。除了这三个层次的概念,ros也定义了两种名称-package资源名称和graph资源名称。同样会在以下内容中提及。ros的filesystemlevel文件系统层概念就是你在碟片里面碰到的资源,例如:packages:ros的基本组织,可以包含随意格式文件。一个package可以包含ros执行时处理的文件(nodes),一个ros的依靠库,一个数据集合,配置文件或一些实用的文件在一起。manifests:manifests(manifest.xml)提供关于package

5、元数据,包括它的许可信息和package之间依靠关系,以及语言特性信息像编译旗帜(编译优化参数)。stacks:stacks是packages的集合,它提供一个完整的功能,像“navigationstack”stack与版本号关联,同时也是如何发行ros软件方式的关键。manifeststackmanifests:stackmanifests(stack.xml)提供关于stack元数据,包括它的许可信息和stack之间依靠关系。message(msg)types:信息描述,位置在路径:my_package/msg/mymessagetype.msg,定义数据类型在ros的messagesro

6、s里面。service(srv)types:服务描述,位置在路径:my_package/srv/myservicetype.srv,定义这个哀求和相应的数据结构在rosservices里面。ros的computationgraphlevelcomputationgraphlevel(计算图)就是用ros的p2p(peer-to-peer网络传输协议)网络集中处理全部的数据。基本的computationgraph的概念包括node,master,parametersever,messages,services,topics,和bags,以上全部的这些都以不同的方式给graph传输数据。nodes

7、:nodes(节点)是一系列运行中的程序。ros被设计成在一定颗粒度下的模块化系统。一个机器人控制系统通常包含许多nodes。比如一个node控制激光雷达,一个node控制车轮马达,一个node处理定位,一个node执行路径规划,另外一个提供图形化界面等等。一个ros节点是由librariesrosclientlibrary写成的,例如roscpp和rospy.master:rosmaster提供了记下列表和对其他计算图的查找。没有master,节点将无法找到其他节点,交换消息或调用服务。serverparameterserver:参数服务器使数据根据钥匙的方式存储。目前,参数服务器是主持的组

8、成部分。messages:节点之间通过messages来传递消息。一个message是一个容易的数据结构,包含一些归类定义的区。支持标准的原始数据类型(整数、浮点数、布尔数,等)和原始数组类型。message可以包含随意的嵌套结构和数组(很类似于的结构structs)topics:messages以一种发布/订阅的方式传递。一个node可以在一个给定的topic中发布消息。topic是一个name被用于描述消息内容。一个node针对某个topic关注与订阅特定类型的数据。可能同时有多个node发布或者订阅同一个topic的消息;也可能有一个topic同时发布或订阅多个topic。总体上,发布者

9、和订阅者不了解彼此的存在。主要的概念在于将信息的发布者和需求者解耦、分别。规律上,topic可以看作是一个严格规范化的消息bus。每个bus有一个名字,每个node都可以衔接到bus发送和接受符合标准类型的消息。services:发布/订阅模型是很灵便的通讯模式,但是多对多,单向传输对于分布式系统中常常需要的“哀求/回应”式的交互来说并不合适。因此,“哀求/回应”是通过services来实现的。这种通讯的定义是一种成对的消息:一个用于哀求,一个用于回应。假设一个节点提供了一个服务提供下一个name和客户用法服务发送哀求消息并等待答复。ros的客户库通常以一种远程调用的方式提供这样的交互。bag

10、s:bags是一种格式,用于存储和播放ros消息。对于储存数据来说bags是一种很重要的机制。例如数据很难收集但却是开发与测试中必需的。在ros的计算图中,ros的master以一个nameservice的方式工作。它给ros的节点存储了topics和service的注册信息。nodes与master通信从而报告它们的注册信息。当这些节点与master通信的时候,它们可以接收关于其他以注册节点的信息并且建立与其它以注册节点之间的联系。当这些注册信息转变时master也会回馈这些节点,同时允许节点动态创建与新节点之间的衔接。节点之间的衔接是挺直的;master仅仅提供了查询信息,就像一个dns服

11、务器。节点订阅一个topic将会要求建立一个与发布该topics的节点的衔接,并且将会在同意衔接协议的基础上建立该衔接。ros里面用法最广的衔接协议是tcpros,这个协议用法标准的tcp/ip接口。这样的架构允许脱钩工作(decoupledoperation),通过这种方式大型或是更为复杂的系统得以建立,其中names方式是一种行之有效的手段。names方式在ros系统中饰演极为重要的角色:topics,services,andparameters都有各自的names。每一个ros客户端库都支持重命名,这等同于,每一个编译胜利的程序能够以另一种形似【名字】运行。例如,为了控制一个北阳激光测距

12、仪(hokuyolaserrange-finder),我们可以启动这个hokuyo_node驱动,这个驱动可以给与激光仪举行对话并且在"扫描"topic下可以发布sensor_msgs/laserscan的信息。为了处理数据,我们大概会写一个用法laser_filters的node来订阅"扫描"topic的信息。订阅之后,我们的过滤器将会自动开头接收激光仪的信息。注重两边是如何脱钩工作的。全部的hokuyo_node的节点都会完成发布"扫描",不需要知道是否有节点被订阅了。全部的过滤器都会完成"扫描"的订阅,不论知道还是不知道是否有节点在发布"扫描"。在不引发任何错误的状况下,这两个nodes可以任何的挨次启动,终止,或者重启。以后我们大概会给我们的机器人加入另外一个激光器,这会导致我们重新设置我们的系统。我们所需要做的就是重新

温馨提示

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

评论

0/150

提交评论