您好,欢迎来到易妖游戏网。
搜索
您的当前位置:首页ROS - 架构

ROS - 架构

来源:易妖游戏网

学习资料参考:ROS机器人开发实践(胡春旭)

ROS-架构的三个层次

OS层(linux系统)
  • 依托于linux系统
中间层(实现ROS核心通信机制以及众多机器人开发的中间层)
  • TCPROS/UDPROS通信系统(最重要)
    • 发布/订阅(模型)
    • 客户端/服务器(模型)
  • Nodelet(进程内通信)
    • 对多进程通信提供数据传输(优化)
    • 适合对数据传输实时性方面有较高要求的应用
应用层(在ROS Master的管理下保证功能节点的正常运行)
  • 管理者:MASTER
  • 负责管理整个系统的正常运行

ROS-系统实现的三个层次

计算图

  • 特点
    • 功能模块以节点为单位运行
    • 可以分布于多个相同或不同的主机中
    • 通过端到端的拓扑结构进行连接
  • 节点
    • 一个系统由多个节点(软件模块)构成
    • 多节点同时运行时,将端到端的通信绘制成节点关系图:
  • 消息(Message)
    • 消息通信:发布/订阅(Publish/Subscribe)模型
    • 每一个消息都是一种严格的数据结构
    • 支持标准数据类型(int,float,bool)
    • 支持嵌套结构和数组(类似结构体)
    • 可自定义
  • 话题(topic)
    • 异步,适用于不断更新的含较少逻辑处理的数据通信
    • Node(Talker发布者) 针对Topic 发布Message
    • Node(Listener订阅者)关注某个Topic订阅某个特定类型的数据。
    • 发布者和订阅者彼此不知道其存在
    • 系统中可同时有多个节点发布和订阅同一个Topic的Message。
  • 服务(Service)
    • 同步,适用于数据量小,但强逻辑处理的数据通信
    • 适用于双向的同步传输
    • 基于客户端/服务器(Client/Server)模型
    • 包含两个部分的通信数据通信:
    • 类似于web服务器
    • ROS只允许有一个节点提供指定命名的服务。
  • 节点管理器(ROS Master)
    • 通过 远程过程调用(RPC) 提供
    1. 登记列表
    2. 对其他计算图表的查找
    • 帮助ROS节点之间
    1. 相互查找
    2. 建立连接
    • 为系统提供参数服务器(管理全局参数)
文件系统
  • 功能包(Package)
  • ROS软件的基本单元,包含:
    1. ROS节点
    2. 配置文件
  • 功能包清单(Package Manifest)
    • 每一个Package包含一个名为package.xml的功能包清单,包含:
    1. 作者信息
    2. 许可信息
    3. 依赖选项
    4. 编译标志
  • 元功能包(Meta Package)
    • 原功能包集(Stack)升级为元功能包
    • 组织多个用于同一目的的功能包。
      -(EXAMPLE)ROS导航的元功能包 包含:
      1. 建模
      2. 定位
      3. 导航等
    • 元功能包清单
      • 可能包含:
      1. 运行时依赖的功能包
      2. 声明引用的标签
  • 消息(Message)类型
    • ROS提供的消息类型
    • 使用.msg文件在功能包的msg文件下自定义消息类型
  • 服务(Service)类型
    • ROS提供的服务类型
    • 使用.srv文件在功能包的srv文件夹中进行定义
  • 代码(Code)
    • 用来放置功能包节点源代码的文件夹
开源社区
  • 发行版(Distribution)
  • 软件源(Repository)
  • ROS wiki
  • 邮件列表(Mailing List)
  • ROS Answers
  • 博客(Blog)

关键概念:节点、消息、话题、服务、功能包、元功能包。

ROS-三种通信机制(分布式通信机制)

基于发布/订阅的话题通信
  • Talker和Listener分别发布订阅同一个话题,启动顺序没有强制要求
  • 建立通信详细过程:
  1. advertise(“bar”,foo:1234)
  2. subscribe(“bar”)
  3. {foo:1234}
  4. connect(“scan”, TCP)
  5. TCP server:foo:2345)
  6. connect(foo:2345)
  7. data messages
  • ROS master 起到关键的中转作用
基于客户端/服务器的服务通信
  • 减少了talker和listener之间的RPC通信
  • 建立通信详细过程
  1. Advertise Service (“bar”, foo:1234)
  2. lookupService(“bar”)
  3. {foo:3456}
  4. request data(args)
  5. reply data
基于RPC的参数服务器(参数管理机制)
  • 参数类似于ROS中的全局变量
  • 建立详细过程
  1. setParam(“foo”,1)
  2. getParam(“foo”)
  3. {foo:1}
  • 特别注意: 如果Talker向Master更新参数值,Listener不重新查询数值是无法知道参数的更新。(需要动态参数更新的机制)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务