ROS整理 —— ROS架构/功能实现/通信机制 (1)

之前学ROS比较零散,容易忘。最近再看胡春旭大神的《ROS机器人开发实践》做一些笔记,主要梳理知识点,加深印象或回头翻看时用。

一、ROS架构的设计

1.ROS架构分为三个层次:

  • OS层
    • Linux操作系统,如Ubuntu、macOS等;
  • 中间层:(通信机制+开发库)
    • TCPROS/UDPROS 通信系统:
      • 实现多种通信机制的数据传输(基于发布/订阅、客户端/服务端等);
      • 基于TCP/UDP网络的再次封装;
    • Nodelet 通信方法
      • 更优化的数据传输方式(应用于实时性方面要求较高时)
    • 机器人开发相关的库
      • 如:数据类型定义、坐标变换、运动控制等;
  • 应用层
    • ROS需运行master,用来管理整个系统的正常运行;
    • 功能包内的模块以节点为单位运行,通过ROS标准的输入输出接口规则实现复用;

注:若从系统的实现角度来看,ROS可分为三个层次:计算图、文件系统、开源社区。

二、系统实现

1.计算图——描述程序如何运行

  • 节点
    • 节点即软件模块
    • 节点关系图
  • 消息
    • 一种严格的数据结构
    • 基于发布/订阅模型
  • 话题
    • 以发布/订阅的方式传递
  • 服务
    • 双向的同步传输模式
    • 基于客户端/服务端模型
    • 包含的通讯数据类型:请求+应答
    • 注:只允许一个节点提供指定命令的服务
  • 节点管理器
    • 通过远程调用(RPC)提供登记列表和对其它计算图表的查找;

2.文件系统——程序文件如何组织和构建

  • 文件系统 -> 元功能包(元功能包清单) -> 功能包
  • 功能包:
    • 代码( src +scripts ) + 消息类型(msg)+ 服务类型(srv)+ 功能包清单(package.xml)
    • 其它(头文件include、编译文件CMakeList.txt、配置文件config、启动文件launch + 动作指令action)
  • 元功能包:
    • 只包含一个元功能包清单文件package.xml;
    • 元功能包清单功能包清单 的区别
      • 元功能包清单不需要<build_depend>标签声明编译依赖;
      • 元功能包清单需要包含一个引用的标签:

<export>

        <metapackage/>

<export>

3.开源社区

扫描二维码关注公众号,回复: 5281709 查看本文章
  • ROS社区 -> 软件仓库 -> 元功能包 -> 功能包
  • 包含:发行版+软件源+ROS wiki+邮件列表+ROS Answer+博客

三、ROS的通信机制

  • 话题通信机制(7步)
  • 服务通信机制(5步)
  • 参数管理机制(3步)(参数值更新问题)

注:一、二采用TCP/UDP通信,而三没有;一二的异同!!!

猜你喜欢

转载自blog.csdn.net/kongli524/article/details/87641316
今日推荐