一.认识ROS








二.ROS的基本概念
通信机制
node,每个节点,每个节点是在整个机器人系统当中完成一个具体功能的这样一个进程;每个node使用语言也可能不一样,比如一个c++,一个python,这便体现了松耦合式便给了很大方便性,可以分布式完成这些结点的开发

节点与节点管理器
1.节点(Node) —— 执行单元
执行具体任务的进程、独立运行的可执行文件;
不同节点可使用不同的编程语言,可分布式运行在不同的主机;
节点在系统中的名称必须是唯一的
2.节点管理器(ROS Master) —— 控制中心
为节点提供命名和注册服务;
跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;
提供参数服务器,节点使用此服务器存储和检索运行时的参数

节点之间的通讯——几种通讯方式,主要两种核心的通讯方式,话题通讯&服务通讯

1.话题通讯
单项数据的传输,数据流向从驱动端/发布端传到订阅端
话题(Topic)–异步通信机制
节点之间用来传输数据的重要总线;
使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一
通俗理解:数据传输的通道定义称为话题,相当于一个数据传输的重要的总线,这种通讯的方式采用发布和订阅的模型;异步是指,发布出去后对方不一定立马接收到
消息(Message)–话题数据
具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;
使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件
通俗理解: 通道当中传输的数据,称之为消息,比如三维二维的图像数据,命令指令数据等有自己的数据结构定义

下面举例,一个图像数据的发布者,两个图像数据的订阅者

2.服务通讯 --同步通信机制
是双向的数据传输,有请求,有反馈
使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据;
使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件
通俗理解:带有反馈的机制,两个节点,Client端和Server端,服务它的模型是请求和应答模式,类似于网络web访问的机制,由服务器为其服务数据



根据机器人实际应用的场景,去选择用话题还是服务通讯
话题
单向,不断重复;有缓冲区匹配发布者订阅者信息
可以有多个发布者,也可多个订阅者;不过一般发布者一个订阅者多个
服务
双向,有请求有应答,一般请求一次应答一次;无缓冲区,之间是阻塞的等待
多为一对多形式

参数 --全局共享字典

可通过网络访问的共享、多变量字典;
节点使用此服务器来存储和检索运行时的参数;
适合存储静态、非二进制的配置参数,不适合存储动态配置的数据

通俗理解:参数服务器,会来保存一部分参数(参数名以及参数值)作为全局共享字典,所以所有结点都可以通过网络来访问这些共享字典,字典里数据类型是多变的,整型,字符串等
主要用来存储系统里面运行的一些参数,适合存储一些静态的
(例,talker 设置foo=1,listener获得foo=1,若talker再设置foo为其他值后,这是listener若不再次获取的话,是不知道foo的值已经变成2了的)
例:talker,listener找master设置一个变量

注意该底层的通讯机制并非是话题或服务机制,而是更加底层的RPC调用

文件系统
功能包(Package)–具体完成某项功能的
ROS软件中的基本单元,包含节点源码、配置文件、数据定义等
一般一个功能包都是完成一个具体的某一项功能的,比如图像驱动,图像识别等都可以做成一个单独的功能包
功能包清单(Package manifest)
记录功能包的基本信息,包含作者信息、许可证信息、依赖选项、编译标志等
描述功能包里面具体的功能的
元功能包(Meta Packages)
组织多个用于同一目的(例如,都是图像的等)的功能包
(针对一系列同等目标的功能包组成的更大的功能包聚集到一起之后叫元功能包,比如又有驱动又有图像识别都是和图像相关的则可以弄成一个image这样一个project,一个大的工程,叫做元功能包Meta)

ROS入门-5.认识ROS及ROS的基本概念相关推荐

  1. ROS学习----依据ROS入门教程,整理的ROS命令

    文章目录 ROS命令学习 文件系统介绍 ROS文件系统工具命令:rospack,rosstack roscd,rosls 创建ROS程序包命令:roscreate,catkin程序包结构,catkin ...

  2. ROS入门21讲笔记(一)基本概念

    一.核心概念 1.1 节点(Node)和节点管理器(ROS Master) 节点是什么? 完成某个任务的进程 节点名具有唯一性 节点管理器可以做什么? 节点的注册和命名 完成.记录节点之间的通信 参数 ...

  3. ROS入门的基本操作

    ROS入门的基本操作 一.ROS命令行工具的使用 二.创建工作空间与功能包 创建工作空间的流程 创建功能包的流程 三.发布者Publisher的编程实现 如何实现一个发布者 如何配置CMakeLIst ...

  4. ROS入门与实践--1(ROS简介与ROS的安装)

    ROS入门与实践--1 1 ROS简介 1.1 什么是ROS? 1.2 ROS设计目标 1.3 ROS发行版本列表 2 ROS的安装 2.1 虚拟机及操作系统安装 2.1.1 虚拟机VMware下载 ...

  5. SLAM导航机器人零基础实战系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览...

    SLAM导航机器人零基础实战系列:(二)ROS入门--10.在实际机器人上运行ROS高级功能预览 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了 ...

  6. SLAM导航机器人零基础实战系列:(二)ROS入门——2.ROS系统整体架构

    SLAM导航机器人零基础实战系列:(二)ROS入门--2.ROS系统整体架构 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机 ...

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

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

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

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

  9. ROS入门笔记(十二):动作编程 (C++)

    ROS入门笔记(十二):动作编程 (C++) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建action(动作) 3.1 自定义action 3.2 在package.xml中添加功能 ...

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

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

最新文章

  1. IE8的项目在IE11下 一些功能无法实现的解决方案
  2. ZKEACMS for .Net Core 深度解析
  3. Nginx+PHP实时生成不同尺寸图片
  4. CV和NLP中的无监督预训练(生成式BERT/iGPT和判别式SimCLR/SimCSE)
  5. php new static,PHP中new self()和new static()的区别用法
  6. LeetCode刷题(24)
  7. 第22课: JSP语句 switch判断语句 (JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
  8. python热狗大战
  9. ECSHOP全球国际通用配送快递插件,DHL、FEDEX、TNT、UPS配送快递插件
  10. 计算机类部分核心期刊说明
  11. 大白小课程-跟着官方教程学习Scratch3.0-P04制作音乐
  12. 数据可视化(箱线图、直方图、散点图、联合分布图)
  13. 好心情:跌落凡间的星星天使,爱终将弥补一切
  14. 计算机网络安全的对策,计算机网络安全和对策.PDF
  15. 游轮帆船租赁旅游响应式模板
  16. Angular提交规范
  17. 肘关节附属运动测试软件,肘关节运动损伤
  18. 涠洲岛日出日落时间表,2月14日涠洲岛开船时间表/日出日落/天气预报
  19. rpa 手机_RPA
  20. 思维课和少儿编程的区别

热门文章

  1. js事件委托或事件代理
  2. Python 16进制与字符串的转换
  3. ios 的frame,bound,center
  4. 部署 dashboard 插件
  5. 大话设计模式之原型模式
  6. Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
  7. 手机网页设计注意事项和解决方法
  8. Linux C++ STL用法介绍(1)
  9. 体验 DreamSpark
  10. 判断两个字符串是否相似的函数 AnsiResemblesText 专题研究