由于操作过于频繁,请点击下方按钮进行验证!

机器人操作系统ROS详细介绍

ROS(机器人操作系统,RobotOperatingSystem),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。

ROS的运行架构是一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构,它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储。

发展目标

ROS的首要设计目标是在机器人研发领域提高代码复用率。ROS是一种分布式处理框架(又名Nodes)。这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS还支持代码库的联合系统。使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地决定发展和实施工作成为可能。上述所有功能都能由ROS的基础工具实现。

为了实现“共享与协作”这一首要目标,人们制订了ROS架构中的其他支援性目标:

“轻便”:ROS是设计得尽可能方便简易。您不必替换主框架与系统,因为ROS编写的代码可以用于其他机器人软件框架中。毫无疑问的,ROS更易于集成与其他机器人软件框架。事实上ROS已完成与OpenRAVE、Orocos和Player的整合。

ROS-agnostic库:【agnostic:不可知论】建议的开发模型是使用clear的函数接口书写ROS-agnostic库。

语言独立性:ROS框架很容易在任何编程语言中执行。我们已经能在Python和C++中顺利运行,同时添加有Lisp、Octave和Java语言库。

测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。

扩展性:ROS适合于大型实时系统与大型的系统开发项目。

ROS的概念

ROS有三个层次的概念:分别为Filesystemlevel,Computationgraphlevel,以及Communicationlevel。以下内容具体的总结了这些层次及概念。除了这三个层次的概念,ROS也定义了两种名称--Package资源名称和Graph资源名称。同样会在以下内容中提及。

ROS的FilesystemLevel文件系统层概念就是你在碟片里面遇到的资源,例如:

Packages:ROS的基本组织,可以包含任意格式文件。一个Package可以包含ROS执行时处理的文件(nodes),一个ROS的依赖库,一个数据集合,配置文件或一些有用的文件在一起。

Manifests:Manifests(manifest.xml)提供关于Package元数据,包括它的许可信息和Package之间依赖关系,以及语言特性信息像编译旗帜(编译优化参数)。

Stacks:Stacks是Packages的集合,它提供一个完整的功能,像“navigationstack”Stack与版本号关联,同时也是如何发行ROS软件方式的关键。

ManifestStackManifests:Stackmanifests(stack.xml)提供关于Stack元数据,包括它的许可信息和Stack之间依赖关系。

Message(msg)types:信息描述,位置在路径:my_package/msg/MyMessageType.msg,定义数据类型在ROS的messagesROS里面。

Service(srv)types:服务描述,位置在路径:my_package/srv/MyServiceType.srv,定义这个请求和相应的数据结构在ROSservices里面。

ROS的ComputationGraphLevel ComputationGraphLevel(计算图)就是用ROS的P2P(peer-to-peer网络传输协议)网络集中处理所有的数据。基本的ComputationGraph的概念包括Node,Master,ParameterSever,messages,services,topics,和bags,以上所有的这些都以不同的方式给Graph传输数据。

Nodes:Nodes(节点)是一系列运行中的程序。ROS被设计成在一定颗粒度下的模块化系统。一个机器人控制系统通常包含许多Nodes。比如一个Node控制激光雷达,一个Node控制车轮马达,一个Node处理定位,一个Node执行路径规划,另外一个提供图形化界面等等。一个ROS节点是由LibrariesROSclientlibrary写成的,例如roscpp和rospy.

Master:ROSMaster提供了登记列表和对其他计算图的查找。没有Master,节点将无法找到其他节点,交换消息或调用服务。

ServerParameterServer:参数服务器使数据按照钥匙的方式存储。目前,参数服务器是主持的组成部分。

Messages:节点之间通过messages来传递消息。一个message是一个简单的数据结构,包含一些归类定义的区。支持标准的原始数据类型(整数、浮点数、布尔数,等)和原始数组类型。message可以包含任意的嵌套结构和数组(很类似于C语言的结构structs)

Topics:Messages以一种发布/订阅的方式传递。一个node可以在一个给定的topic中发布消息。Topic是一个name被用于描述消息内容。一个node针对某个topic关注与订阅特定类型的数据。可能同时有多个node发布或者订阅同一个topic的消息;也可能有一个topic同时发布或订阅多个topic。总体上,发布者和订阅者不了解彼此的存在。主要的概念在于将信息的发布者和需求者解耦、分离。逻辑上,topic可以看作是一个严格规范化的消息bus。每个bus有一个名字,每个node都可以连接到bus发送和接受符合标准类型的消息。

Services:发布/订阅模型是很灵活的通讯模式,但是多对多,单向传输对于分布式系统中经常需要的“请求/回应”式的交互来说并不合适。因此,“请求/回应”是通过services来实现的。这种通讯的定义是一种成对的消息:一个用于请求,一个用于回应。假设一个节点提供了一个服务提供下一个name和客户使用服务发送请求消息并等待答复。ROS的客户库通常以一种远程调用的方式提供这样的交互。

Bags:Bags是一种格式,用于存储和播放ROS消息。对于储存数据来说Bags是一种很重要的机制。例如传感器数据很难收集但却是开发与测试中必须的。

在ROS的计算图中,ROS的Master以一个nameservice的方式工作。它给ROS的节点存储了topics和service的注册信息。Nodes与Master通信从而报告它们的注册信息。当这些节点与master通信的时候,它们可以接收关于其他以注册节点的信息并且建立与其它以注册节点之间的联系。当这些注册信息改变时Master也会回馈这些节点,同时允许节点动态创建与新节点之间的连接。

节点之间的连接是直接的;Master仅仅提供了查询信息,就像一个DNS服务器。节点订阅一个topic将会要求建立一个与发布该topics的节点的连接,并且将会在同意连接协议的基础上建立该连接。ROS里面使用最广的连接协议是TCPROS,这个协议使用标准的TCP/IP接口。

这样的架构允许脱钩工作(decoupledoperation),通过这种方式大型或是更为复杂的系统得以建立,其中names方式是一种行之有效的手段。names方式在ROS系统中扮演极为重要的角色:topics,services,andparameters都有各自的names。每一个ROS客户端库都支持重命名,这等同于,每一个编译成功的程序能够以另一种形似【名字】运行。

例如,为了控制一个北阳激光测距仪(Hokuyolaserrange-finder),我们可以启动这个hokuyo_node驱动,这个驱动可以给与激光仪进行对话并且在"扫描"topic下可以发布sensor_msgs/LaserScan的信息。为了处理数据,我们也许会写一个使用laser_filters的node来订阅"扫描"topic的信息。订阅之后,我们的过滤器将会自动开始接收激光仪的信息。注意两边是如何脱钩工作的。所有的hokuyo_node的节点都会完成发布"扫描",不需要知道是否有节点被订阅了。所有的过滤器都会完成"扫描"的订阅,不论知道还是不知道是否有节点在发布"扫描"。在不引发任何错误的情况下,这两个nodes可以任何的顺序启动,终止,或者重启。

以后我们也许会给我们的机器人加入另外一个激光器,这会导致我们重新设置我们的系统。我们所需要做的就是重新映射已经使用过的names。当我们开始我们的第一个hokuyo_node时,我们可以说它用base_scan代替了映射扫描,并且和我们的过滤器节点做相同的事。现在,这些节点将会用base_scan的topic来通信从而代替,并且将不再监听"扫描"topic的信息。然后我们就可以为我们的新激光测距仪启动另外一个hokuyo_node。


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容,以保证您的权益!联系电话:010-58612588 或 Email:editor@blueai.net.cn。

网友评论 匿名:
相关链接
  • ABB推出GoFa™协作机器人系列两款新品
  • 23-07-31
  • 重工行业案例 | 3D视觉引导技术助力企业重塑生产力
  • 23-07-31
  • FANUC助力广日电梯,打造行业标杆数字化车间
  • 23-07-28
  • 库卡125周年庆典圆满举办,近400位政商学界人士出席
  • 23-07-27
  • ABB重磅推出四款节能型新品
  • 23-07-24
  • ABB机器人中国区价值提供商大会成功举办:构筑良好合作,驱动体系竞争力
  • 23-07-17
  • 海康机器人:聚焦视觉技术升级,构筑智造生态
  • 23-07-16
  • VisionChina2023上海机器视觉大会现场专访:海康机器人 上海分公司总经理 傅讼宸 先生
  • 23-07-11
  • Keep on Moving | 库卡精彩亮相2023慕尼黑
  • 23-07-10
  • 库卡新品发布,推出免示教智能焊接系统Smart Weldin
  • 23-07-10
  • 2023年5月工业机器人产量为40175套,同比增长3.8%
  • 23-07-05
  • 库卡荣获2023德国创新奖
  • 23-07-04
  • 展会预告 | 7月5-8日,igus在AMTS等你!
  • 23-06-29
  • 先体验后消费:igus推出新品,进一步降低低成本自动化技术的
  • 23-06-29
  • 2023埃森展 | 与ABB机器人共赴智能焊接与切割之旅
  • 23-06-28
  • 鑫君特ORTHBOT®应用于人工智能辅助脊柱微创手术操作培训
  • 23-06-25
  • 解锁全新行业领域!高科技厨房家具工厂里的ABB机器人
  • 23-06-20
  • 库卡助力美的冰箱注塑打造首个智能标杆工厂
  • 23-06-20
  • 用工不“荒”,FANUC CRX协作机器人让人机“双向奔赴”
  • 23-06-20
  • 极致性能,不负期待丨史陶比尔即将亮相SEMICON CHIN
  • 23-06-20
  • 分享到

    相关主题