一.ROS架构

ROS架构上分为三个层级:

  • 计算图级(Computation Graph level):体现进程与系统的关系,描述系统怎么运行。
  • 文件系统级(Filesystem level):组织构建程序文件。
  • 社区级(Community level):开源社区,共享知识、算法和代码等。

1.1 计算图级

计算图级包含:节点、节点管理器、参数服务器、消息、服务、主题和消息记录包。

  • 节点(node):主要的计算执行进程,可自行创建节点,加入网络。
  • 节点管理器(master):是节点通信的基础,用于节点的注册、查找。
  • 参数服务器(parameter server):属于节点管理器的一部分,将数据存放在系统关键位置,节点可以获取这些数据来配置、改变自己的状态。
  • 消息(message):具有各种类型,节点间沟通传输的信息数据。
  • 主题(topic):一类消息的集合,节点可以发布、订阅主题。发布者和订阅者之间相互解耦,不知对方的存在。
  • 服务(service):区别于主题,服务用于节点直接向节点交互,获得请求或应答。
  • 消息记录包(bag):保存回放消息数据的文件格式。

  ROS创建一个网络(Computation Network)来进行计算,该网络连接了系统中的所有进程(节点),如下图所示:

1.2 文件系统级

  功能包(package):一种特定结构的文件、文件夹的组合。ROS中各种软件的组织方式,包含节点、配置文件、ROS依赖库、第三方软件及其它任何逻辑构成。

  元功能包(Metapackage):只有一个文件(package.xml)的特殊包,将多个具有某些功能的包组织在一起形成逻辑包。

1.3 社区级

开源社区级,通过独立的网络社区分享软件、知识,包含如下几部分:

  • 发行版:可独立安装、类似于Linux。
  • 软件库:联网的代码存储库,不同机构可以发布。
  • ROS Wiki:论坛,可贡献自己的文件。
  • Bug提交系统
  • 邮件列表:交流软件更新等各种问题。
  • 博客:发布一些定期更新、新闻。
  • ROS问答

ROS初探:(一)ROS架构的更多相关文章

  1. SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  2. SLAM+语音机器人DIY系列:(二)ROS入门——1.ROS是什么

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  3. 回调函数ros::spin()与ros::spinOnce()

    ros::spin() 这句话的意思是循环且监听反馈函数(callback).循环就是指程序运行到这里,就会一直在这里循环了.监听反馈函数的意思是,如果这个节点有callback函数,那写一句ros: ...

  4. ros::spin() 和 ros::spinOnce() 区别及详解

    版权声明:本文为博主原创文章,转载请标明出处: http://www.cnblogs.com/liu-fa/p/5925381.html 博主提示:本文基于ROS Kinetic Kame,如有更(g ...

  5. (十)创建ROS消息和ROS服务

    ROS总教程(中文版) 110.创建ROS消息和ROS服务

  6. ROS教程4 ROS自定义srv类型及使用

    创建srv文件 在上一节单独为自定义的消息和服务的包 test_msgs 里面 创建 srv文件夹 进入创建 testsrv.srv 文件 ,内容为: (srv文件和msg文件类似,唯一不同的是它包含 ...

  7. ROS教程3 ROS自定义msg类型及使用

    1ROS自定义msg类型及使用 http://blog.csdn.net/u013453604/article/details/72903398 首先创建一个空的package单独存放msg类型(当然 ...

  8. ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数

    ROS Indigo beginner_Tutorials-08 ROS服务 和 ROS参数 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14 ...

  9. ROS Learning-008 beginner_Tutorials ROS话题

    ROS Indigo beginner_Tutorials-07 ROS话题 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LT ...

  10. ROS Learning-012 beginner_Tutorials (编程) 创建自定义的ROS消息和ROS服务

    ROS Indigo beginner_Tutorials-11 创建自定义的ROS消息和ROS服务 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubunt ...

随机推荐

  1. css实现左侧固定宽,右侧自适应的7中方法

    一个面试会问的问题,如何实现两个盒子,左侧固定宽度,右侧自适应. 1.利用 calc 计算宽度的方法 css代码如下: .box{overflow: hidden;height: 100px;marg ...

  2. HTML5能否会成为Web技术的核心?

    谁会成为HTML5后继者? 那么会有一个HTML6吗? Jaffe表示,网上支付可能会推动进行这样的全面修订,以期能为网上支付来提供一个统一方式.如果大家将之称为HTML 6,那么HTML 6是极有可 ...

  3. laravel中with()方法,has()方法和whereHas()方法的区别

    with() with()方法是用作"渴求式加载"的,那主要意味着,laravel将会伴随着主要模型预加载出确切的的关联关系.这就对那些如果你想加在一个模型的所有关联关系非常有帮助 ...

  4. CSS-笔记1-选择器与文本元素

    知识点一: CSS概念:CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表) Css是用来美化html标签的,相当于页面化妆. 知识点二: 选择器格式与部分属性: 写法 ...

  5. NullSafe基于Runtime的深度解析

    Objective-C是一门动态语言,一个函数是由一个selector(SEL),和一个implement(IML)组成的. 执行一个方法时如果系统找不到方法会给几次机会寻找方法,实在没有此方法就会抛 ...

  6. 浅谈快速开发框架的分层(WinForm)

    对于B/S都是MVC好不好 不多说了,反正大家都这么用 这里简单说下C/S 首先常用的几种: 模仿B/S的MVC  也有人称之为 MVP 还有MVVM这种真心觉得够够的了,当然也有其优势所在,这里不讨 ...

  7. c++的引用和c的指针之创建链表,二叉树的烦恼和区别

    /* **代码功能:创建一个令人头疼的不算头疼的链表,然后把特定的数据删除. *这次的主题不是在代码上,主要是关于创建链表时候的传参问题,嘿嘿,不相信你没遇到过 */#include "st ...

  8. Unity3D寻路导航烘焙

    在初次进行3D(三维)游戏体验中,避免不了对游戏有生疏的情况,因此在游戏中一般会插入新手指导.自动寻路.导航地图等AI人工智能技术到游戏中,方便玩家更快体验,为了玩家的体验更好,Unity3D寻路导航 ...

  9. XSD详解二 - 简易元素、属性、内容限定

    一.XSD 简易元素 XML Schema 可定义 XML 文件的元素. 简易元素指那些只包含文本的元素.它不会包含任何其他的元素或属性. 1.什么是简易元素? 简易元素指那些仅包含文本的元素.它不会 ...

  10. java 之 适配器模式(大话设计模式)

    适配器模式,笔者不是很推荐在项目初期阶段使用,在笔者看来这个设计模式就是套接了一层,从而达到能够迎合现有的外部接口规范. 先来简单的看下类图: 大话设计模式-类图 这个模式理解起来非常简单,A→B因为 ...