ROS入门笔记(六): ROS系统架构

文章目录

  • 1 ROS系统架构
    • 1.1 文件系统(重点)
    • 1.2 计算图
    • 1.3 开源社区

1 ROS系统架构

1.1 文件系统(重点)

文件系统:主要指在硬盘里能看到的ROS目录和文件:

1)元功能包(Meta Packages):组织多个用于同一目的功能包。
2)元功能包清单(Meta Packages):类似于功能包清单,不同之处在于元功能包清单中可能会包含运行时需要依赖的功能包或者声明一些引用的标签。

3)功能包(Package):功能包是ROS中软件组织的基本形式。一个功能包具有用于创建ROS程序的最小结构和最少内容。它可以包含ROS运行的进程(节点)、配置文件等;

4)功能包清单(Package manifest):记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等。
5)消息类型(Message):消息是ROS节点之间发布/订阅的通信信息,可以使用ROS系统提供的消息类型,也可以使用.msg文件在功能包的msg文件夹下自定义需要的消息类型。

注:消息类型的说明存储在对应功能包的msg文件夹下。

6)服务类型(Service):服务类型定义了ROS服务器/客户端通信模型下的请求与应答数据类型,可以使用ROS系统提供的服务类型,也可以使用.srv文件在功能包的srv文件夹中进行定义。

注:服务描述说明存储在对应功能包的src文件夹下

7)代码(Code):放置功能包节点源代码的文件夹。

1.2 计算图

计算图是ROS在点对点网络里整合并处理数据的过程。基本计算图概念是 节点, 主机, 参数服务器, 消息, 服务, 话题, 和 数据包,它们通过不同的方式提供数据给图层。

这些概念是在ros_comm库里实现的。

1)节点(Node)—节点是执行任务的进程,也称为软件模块。

注:在ROS中,最小的进程单元就是节点( node)。一个软件包里可以有多个可执行文件, 可执行文件在运行之后就成了一个进程(process), 这个进程在ROS中就叫做节点 。

2)节点管理器(ROS Master)—管理者角色,统筹管理节点,保证节点的正常运行。

注:当ROS程序启动时, 第一步首先启动master, 由节点管理器处理依次启动node 。

作用:

通过RPC提供登记列表及对其他计算图表的查找功能,帮助节点间互相查找,建立连接,进行点对点的通信

控制中心,提供参数服务器,管理全局参数

3)参数服务器(Parameter Server)—参数服务器是节点存储参数的地方、 用于配置参数, 全局共享参数。 参
数服务器使用互联网传输, 在节点管理器中运行, 实现整个通信过程。 参数服务器维护着一个数据字典, 字典里存储着各种参数和配置。

4)消息(Message)—消息在ROS中,是一种数据类型,节点之间通过消息来互相通信。消息类型有ROS标准类型和基于标准消息开发的自定义类型两种。

6)主题(Topic)—异步通信机制,传输消息(Message)

主题:指节点发布的消息的去处。节点可以发布消息到话题,也可以订阅话题以接收消息。当一个节点发送数据时,我们就说该节点正在向主题发布消息。节点可以通过订阅某个主题,接受来自其他节点的消息。

发布/订阅:多对多的传输方式

6)服务(Service)—同步通信机制,传输请求/应答数据,基于C/S模型

当你需要直接与节点通信并获得应答时,将无法通过主题实现,从而需要服务。此外,服务必须有唯一的名称。当一个节点提供某个服务时,所有的节点都可以通过使用ROS客户端编写的代码与它通信。

请求/应答:一对多的传输模式

7)消息记录包(bag)—是一种用于保存和回放ROS消息数据的文件格式。消息记录包是一种用于存储数据的重要机制,它可以帮助记录一些难以收集的传感器数据,然后通过反复回放数据进行算法的性能开发和测试。ROS创建的消息记录包文件以*.bag为扩展名,通过播放、停止、后退操作该文件,可以像实时会话一样在ROS中再现情景,便于算法的反复调试。

1.3 开源社区

ROS开源社区的概念主要是ROS资源,其能够通过独立的网络社区分享软件和知识。

1)发行版(Distribution):ROS发行版包括一系列带有版本号、可以直接安装的功能包。
2)软件源(Repository):ROS依赖于共享网络上的开源代码,不同的组织机构可以开发或者共享自己的机器人软件。
3)ROS wiki:记录ROS信息文档的主要论坛。
4)邮件列表(Mailing list):交流ROS更新的主要渠道,同时也可以交流ROS开发的各种疑问。
5)ROS Answers:咨询ROS相关问题的网站。
6)博客(Blog):发布ROS社区中的新闻、图片、视频(http://www.ros.org/news)

ROS入门笔记(六): ROS系统架构相关推荐

  1. ROS入门笔记(七):详解ROS文件系统

    ROS入门笔记(七):详解ROS文件系统 文章目录 01 Catkin编译系统 1.1 Catkin特点 1.2 Catkin工作原理 1.3 使用`catkin_make`进行编译 02 Catki ...

  2. ROS入门笔记(一): ROS简介

    ROS入门笔记(一): ROS简介 文章目录 1 ROS是什么? 2 ROS历史发展 2.1 ROS参考资料 2.2 ROS历史演变 2.3 ROS的官方解释(重点) 3 ROS设计目标 4 ROS特 ...

  3. ROS入门笔记(十一):编写与测试简单的Service和Client (Python)

    ROS入门笔记(十一):编写与测试简单的Service和Client (Python) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建自定义服务类型 3.1 定义srv文件 3.2 在 ...

  4. ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)

    ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++) 文章目录 01 导读 02 功能包的创建 03 功能包的源代码编写 3.1 编写发布器节点(talker.cpp) 3.2 编写订阅 ...

  5. ROS入门笔记(九):编写ROS的第一个程序hello world(重点)

    ROS入门笔记(九):编写ROS的第一个程序hello world(重点) 文章目录 1 Catkin工作空间 1.1 创建catkin工作空间 1.2 编译工作空间 1.3 设置环境变量 1.4 检 ...

  6. ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics

    ROS入门笔记(四):ROS实践(小海龟仿真)- ROS Topics 文章目录 1 基础知识 1.1 运行ROS Master所在主机的资源地址 1.2 ROS常用命令 1.2.1 查看所有以ros ...

  7. ROS入门笔记(三):二进制包与源代码包

    ROS入门笔记(三):二进制包与源代码包 文章目录 1 软件包分类 2 二进制包与源代码包的区别 3 ROS二进制包的安装 4 适配ROS的IDE 注意: 如果你是使用类似apt这样的软件管理器来安装 ...

  8. ROS入门笔记(二):ROS安装与环境配置及卸载(重点)

    ROS入门笔记(二):ROS安装与环境配置及卸载(重点) 文章目录 1 ROS安装步骤 1.1 ROS版本 1.2 确定Ubuntu版本号 1.3 安装ROS 1.3.1 Ubuntu初始环境配置 1 ...

  9. ROS入门笔记(十三):分布式通信

    ROS入门笔记(十三):分布式通信 文章目录 01 如何实现分布式多机通信 1.1 设置IP地址,确保底层链路的连通 1.2 在从机端设置ROS_MASTER_URI,让从机找到ROS Master ...

最新文章

  1. 选点(dfs序+LIS)
  2. 为全局变量赋值_Postman全局变量设置和运用
  3. [Redux-Observable Unit Testing] Mocking an ajax request when testing epics
  4. 《实施Cisco统一通信管理器(CIPT1)》——2.2 CUCM:单站点部署模型
  5. 【Paper】2013_Autonomous Cooperation Between UAV and UGV to Improve Navigation and Environmental
  6. flink的datastream进行join操作没有输出结果一例
  7. 华为新出的鸿蒙,华为发出新计划:2021年完成3亿鸿蒙用户,你会给你手机尝试吗...
  8. List去除重复的元素
  9. Elasticsearchan相关插件和工具安装
  10. ajax谷歌浏览器没缓存,从缓存AJAX请求会导致Chrome(Prevent Chrome from caching AJA
  11. Python 练习题6-13
  12. 在苹果Mac上怎样使用鼠标来放大图像?
  13. win10系统重装鼠标右键响应慢怎么办
  14. 用计算机专业术语写寄语,教师给计算机专业学生寄语
  15. CodeVS3287[NOIP2013] 货车运输【Kruskal+倍增求LCA】
  16. v5行为验证使用介绍(三)- 程序接入流程
  17. 带你了解基于Ploto构建自动驾驶平台
  18. Live预告 | 松鼠AI首席科学家:在教育这个超千亿市场中,AI究竟扮演了什么样的角色?... 1
  19. 在Mac OS X上安装使用lazarus 1.6.4
  20. 大数据可视化大屏设计经验分享

热门文章

  1. Java Web-网页基础-HTML-CSS
  2. go get 的不再src目录中_如何正确的开始用Go编程
  3. 标题在图表上_Excel 2010基础应用:图表的创建与编辑
  4. openGauss北京Meetup成功举办,“产学研用”合力共建主流根社区(附:视频回放PPT)...
  5. 直播丨Oracle 12cR2 ADG LGWR Library Cache案例分享
  6. 20万DBA都在关注的11个问题
  7. 【华为云技术分享】“敏捷+ DevOps”先行,效能提升助推企业升级
  8. sar命令,linux中最为全面的性能分析工具之一
  9. 云端远程Ubuntu系统进行无桌面Web浏览器自动化测试
  10. 【奇技淫巧】在安卓模拟器中安装busybox