ROS 架构

ROS学习(二)——ROS 架构

ROS架构的三个层次

OS层(Operator System)操作系统层

  • Linux系统,Ubuntu系统

中间层

  • 通信机制(最主要的)

    • TCPROS和UDPROS

      • 是TCP,DUP网络的包装
      • 使用发布订阅和客户端服务器等模型1传递信息
    • Nodelet(进程内通信方法)

      • 多进制通信
      • 传输实时性更高
  • 机器人开发相关的库

    • 数据类型定义
    • 坐标变换
    • 运动控制

应用层

  • master

    • 管理程序运行
  • 社区的应用功能包

    • 功能包的模块里以节点(相当于程序,一个函数,封装好的一个小功能)为基本单位
    • 节点之间通过ROS标准输入输出为接口,接口就相当于函数的传入和传出,输入输出都是node节点需要或者产生的数据,参数内容

ROS通信机制

分布式通信机制

  • ROS分布式框架,提供节点/进程之间的通信服务
  • 所有软件和应用的基础

话题通信机制

服务通信机制

参数管理机制

  • 管理ROS的全局变量

话题和服务的区别

  • 话题

    • 基于发布订阅

    • 异步通信

    • 传输双方解耦

    • 应用

      • 不断更新
      • 含有较少逻辑处理
      • 数据通信
  • 服务

    • 基于客户端/服务器

    • 同步通信

    • 应用

      • 数据量较小
      • 强逻辑处理
      • 数据交换

系统实现角度的三个层次

计算图

  • 程序运行结构

    • 以节点为基本单位
    • 运行时,端对端的拓补结构连接传递信息
  • 节点

    • 执行运算任务的一个进程
    • 多个节点可以封装为一个功能模块
    • 节点间的通信,就是端对端的通信
    • 可以用节点描述程序,用节点间的线描述程序之间的连接(通信),需要传递的参数,数据,信息
  • 消息

    • 节点间通过基于发布和订阅的消息通信模型通信
    • 每一个消息是一个严格的数据结构
    • 相当于函数之间传递的参数等
  • 话题

    • 节点可对一个给定的话题topic发布Message 称为Talker
    • 节点可以关注某一个特定话题Topic并且订阅Message特定类型的数据,称为listener
    • 一个话题可以多个talker,listener,互不干扰
  • 服务

    • 适用于双向的同步传输模式,叫Service
    • 基于client/server
    • 包含两部分通信数据类型,一个请求,一个应答
    • 一个指定的service只能一个node提供
  • ROS master节点管理器

    • 控制所有节点有条不紊的执行
    • 通过远程过程调用RPC提供登记列表查找等
    • 节点间查找,连接,管理参数(尤其全局的),消息相互传递主要是

文件系统

  • 对文件进行组织,文件按照功能组织在不同文件夹下

  • 功能包(package)

    • 实现一个功能的基本单元,包括ROS节点,库,配置文件

    • 包含的文件

      • 功能包清单package manifest

        • package.xml

        • 记录功能包的基本信息,作者信息,许可信息,依赖选项,编译标志

        • 都是有头有尾的,用 ,中间放内容

        • 具体例子

          • build_depend

            • 功能包中代码编译依赖的其他功能包
          • run_depend

            • 功能包里可执行程序运行时依赖的其他功能包
      • config

        • 配置文件,用户创建
      • include

        • 功能包需要用到的头文件
      • launch

        • 启动文件
      • action

        • 自定义动作指令
      • CMakeLists.txt

        • 编译器编译功能包的规则
      • 消息类型message

        • 用于node节点之间的通信信息
        • ROS自带的消息类型
        • .msg文件定义需要的消息类型/数据类型
      • 服务类型service

        • 定义请求与应答数据类型
        • .srv文件定义服务数据类型
      • 放置节点源代码,放程序的文件夹

        • scripts

          • 可以直接运行的Python脚本
        • src

          • 需要编译的C++代码
    • 用命令创建,编译,运行,修改功能包

  • 元功能包

    • 包含元功能包清单文件

      • package.xml

        • 与功能包相比,需要添加export引用标签,指明为metapackage
    • 将多个功能包整合成逻辑上独立的功能包

      • 例如,导航包含建模定位导航
    • 不需要Biuld_depend,需要run_depend

开源社区

  • 发行版

  • 软件源

    • 共享网络的开源代码
  • ROS wiki

  • 邮件列表

  • ROS answer

  • blog

你可能感兴趣的:(ROS,架构,linux)