好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

机器人操作系统资料.pdf

5页
  • 卖家[上传人]:x****妹
  • 文档编号:276593595
  • 上传时间:2022-04-12
  • 文档格式:PDF
  • 文档大小:15.29KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 机器人操作系统ROS 1.何谓 ROS ROS 是一个机器人软件操作平台,前身由斯坦福大学(Stanford Artificail Intelligence Laboratory) 所研发它提供一些标准操作系统服务,目前主要支持Ubuntu 操作系统 ROS可分为两层,低层是操作系统层,高层是实现不同功能的软件包2.ROS的版本ROS1.0版本叫做 Box Turtle,2010 年 3 月 2 日发布; ROS 1.1-1.2 C Turtle ,2010 年 8 月 2 日发布; ROS 1.3-1.4 Diamondback,2011 年 3 月 2 日发布3.ROS文件系统的概念和操作(1)ROS文件系统的概念Packages: 它位于 ROS软件的最底层,可以包含任意的东西: libraries,tools,executables,etc. Manifest: 是package 的 描 述 其 最 重 要 的 角 色 是 定 义packages 之 间 的 依 赖 关 系(manifest.xml ) Stacks: 它是 package 的集合,是一个更高层的library 。

      Stack Manifest: stack 的描述( stack.xml) setup.sh 文件设置ROS工作区的环境变量source /setup.sh :将设置永久化此时键入echo $ROS_PACKAGE_PATH 指令,会看到类似于home/user/ros_workspace:/opt/ros/electric/stacks 的路径2)ROS文件系统的操作a.rospack find package name 返回指定package 的路径(rospack 提供与 package 相关的信息) b.rosstack find stack name 返回指定stack 的路径;c.roscd 更改文件夹;d.rosls 允许根据名字而不是package 路径直接列出package、stack等的内容e.TAB键可以在前边有提示的情况下,代替后面的字符4.在工作区中创建一个新的package 的方法$ cd /ros_workspace / 挺像 dos 的$ roscreate-pkg beginner_tutorials std_msgs rospy roscpp 5.建立一个ROS package rosdep = ros+dep(endencies) : a tool to install package dependencies rosmake = ros+make : makes (compiles) a ROS package ROS (机器人操作系统,Robot Operating System) ,是专为机器人软件开发所设计出来的一套电脑操作系统架构。

      它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序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 有 三 个 层 次 的 概 念 : 分 别 为Filesystem level , Computation graph level ,以 及Communication level 以下内容具体的总结了这些层次及概念除了这三个层次的概念,ROS也定义了两种名称- Package资源名称和Graph 资源名称同样会在以下内容中提及ROS 的 Filesystem Level 文件系统层概念就是你在碟片里面遇到的资源,例如:Packages :ROS的基本组织,可以包含任意格式文件。

      一个Package 可以包含ROS执行时处理的文件( nodes) ,一个ROS 的依赖库,一个数据集合,配置文件或一些有用的文件在一起Manifests:Manifests (manifest.xml) 提供关于Package元数据, 包括它的许可信息和Package之间依赖关系,以及语言特性信息像编译旗帜(编译优化参数)Stacks: Stacks 是 Packages的集合,它提供一个完整的功能,像“navigation stack” Stack 与版本号关联,同时也是如何发行ROS软件方式的关键Manifest Stack Manifests: Stack manifests (stack.xml) 提供关于 Stack 元数据, 包括它的许可信息和 Stack 之间依赖关系Message (msg) types: 信息描述 , 位置在路径: my_package/msg/MyMessageType.msg, 定义数据类型在ROS的 messages ROS 里面Service (srv) types: 服务描述 ,位置在路径: my_package/srv/MyServiceType.srv, 定义这个请求和相应的数据结构在 ROS services 里面。

      ROS 的 Computation Graph Level Computation Graph Level(计算图)就是用ROS的 P2P(peer-to-peer 网络传输协议)网络集中处理所有的数据基本的Computation Graph 的概念包括Node, Master, Parameter Sever,messages, services, topics, 和 bags, 以上所有的这些都以不同的方式给Graph 传输数据Nodes: Nodes (节点)是一系列运行中的程序ROS被设计成在一定颗粒度下的模块化系统一个机器人控制系统通常包含许多Nodes比如一个Node 控制激光雷达,一个Node 控制车轮马达, 一个 Node 处理定位, 一个 Node 执行路径规划, 另外一个提供图形化界面等等一个 ROS节点是由Libraries ROS client library 写成的 , 例如roscpp 和 rospy. Master: ROS Master 提供了登记列表和对其他计算图的查找没有Master ,节点将无法找到其他节点,交换消息或调用服务Server Parameter Server: 参数服务器使数据按照钥匙的方式存储。

      目前,参数服务器是主持的组成部分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 以一个 name service 的方式工作 它给 ROS的节点存储了 topics 和 service 的注册信息 Nodes 与 Master 通信从而报告它们的注册信息当这些节点与 master 通信的时候,它们可以接收关于其他以注册节点的信息并且建立与其它以注册节点之间的联系当这些注册信息改变时Master 也会回馈这些节点,同时允许节点动态创建与新节点之间的连接节点之间的连接是直接的;Master 仅仅提供了查询信息,就像一个DNS 服务器节点订阅一个 topic 将会要求建立一个与发布该topics 的节点的连接,并且将会在同意连接协议的基础上建立该连接 ROS里面使用最广的连接协议是TCPROS , 这个协议使用标准的TCP/IP 接口。

      这样的架构允许脱钩工作(decoupled operation ) ,通过这种方式大型或是更为复杂的系统得以建立,其中names 方式是一种行之有效的手段names 方式在 ROS系统中扮演极为重要的角色:topics, services, and parameters 都有各自的names每一个ROS客户端库都支持重命名,这等同于,每一个编译成功的程序能够以另一种形似【名字】运行例如,为了控制一个北阳激光测距仪(Hokuyo laser range-finder ) ,我们可以启动这个hokuyo_node 驱动,这个驱动可以给与激光仪进行对话并且在扫描 topic下可以发布sensor_msgs/LaserScan 的信息为了处理数据,我们也许会写一个使用laser_filters 的 node来订阅 扫描 topic 的信息订阅之后,我们的过滤器将会自动开始接收激光仪的信息注意两边是如何脱钩工作的所有的 hokuyo_node 的节点都会完成发布扫描 ,不需要知道是否有节点被订阅了所有的过滤器都会完成扫描 的订阅, 不论知道还是不知道是否有节点在发布 扫描 在不引发任何错误的情况下,这两个 nodes 可以任何的顺序启动,终止,或者重启。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.