ROS的通信机制
通信机制

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

话题通信
- 话题--异步通信机制
- 节点间用来传输数据的重要总线;
- 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一。

消息--话题数据
- 具有一定的类型和数据结构,包括ROS提供的标准类型和用户 自定义类型;
- 使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件。
服务(service)--同步通信机制
- 使用客户端/服务器(c/s)模型,客户端请求数据,服务器完成处理后返回应答数据;
- 使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中,生成对应的代码文件。

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

文件系统
- 功能包:ROS软件中的基本单元,包含节点源码,配置文件,数据定义等
- 功能包清单:记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等
- 元功能包:组织多个用于同一目的的功能包。

工作空间(workspace)是一个存放工程开发相关文件的文件夹。
创建工作空间
- src: 代码空间(Source Space)
- builed: 编码空间(Build Space)
- devel: 开发空间(Development Space)
- install: 安装空间(Install Space)
开发工具
应用功能
生态系统
ROS的通信机制的更多相关文章
- .Net中Remoting通信机制简单实例
.Net中Remoting通信机制 前言: 本程序例子实现一个简单的Remoting通信案例 本程序采用语言:c# 编译工具:vs2013工程文件 编译环境:.net 4.0 程序模块: Test测试 ...
- .Net中Remoting通信机制
Remoting通信机制 Remoting介绍 主要元素 通道类型 激活方式 对象定义 Remoting介绍 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式. 从微软的产品角度 ...
- 【单页应用之通信机制】view之间应该如何通信
前言 在单页应用中,view与view之间的通信机制一直是一个重点,因为单页应用的所有操作以及状态管理全部发生在一个页面上 没有很好的组织的话很容易就乱了,就算表面上看起来没有问题,事实上会有各种隐忧 ...
- Android多线程通信机制
掌握Android的多线程通信机制,我们首先应该掌握Android中进程与线程是什么. 1. 进程 在Android中,一个应用程序就是一个独立的进程(应用运行在一个独立的环境中,可以避免其他应用程序 ...
- Storm进程通信机制
storm的worker进程之间消息传递机制图: 每个worker都有一个独立的监听进程,监听配置文件中配置过的端口列表supervisor.slots.ports,topology.receiver ...
- Android 进程通信机制之 AIDL
什么是 AIDL AIDL 全称 Android Interface Definition Language,即 安卓接口描述语言.听起来很深奥,其实它的本质就是生成进程间通信接口的辅助工具.它的存在 ...
- 【腾讯Bugly干货分享】深入源码探索 ReactNative 通信机制
Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 本文从源码角度剖析 RNA 中 J ...
- 【转】跟我学Kafka之NIO通信机制
from:云栖社区 玛德,今天又被人打脸了,小看人,艹,确实,相对比起来,在某些方面差一点,,,,该好好捋捋了,强化下短板,规划下日程,,,引以为耻,铭记于心. 跟我学Kafka之NIO通信机制 ...
- Angularjs Controller 间通信机制
在Angularjs开发一些经验总结随笔中提到我们需要按照业务却分angular controller,避免过大无所不能的上帝controller,我们把controller分离开了,但是有时候我们需 ...
- netlink---Linux下基于socket的内核和上层通信机制 (转)
需要在linux网卡 驱动中加入一个自己的驱动,实现在内核态完成一些报文处理(这个过程可以实现一种零COPY的网络报文截获),对于复杂报文COPY下必要的数据交给用户 态来完成(因为过于复杂的报文消耗 ...
随机推荐
- 关于linux下Qt5.7.0安装中文输入法无法显示的问题
关于linux下Qt5.7.0安装中文输入法无法显示的问题 本文是以我自己系统ubuntu-x64 + fcitx + Qt5.7.0为例: sudo apt-get install fcitx-fr ...
- Visual Basic 6 API压缩数据
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As ...
- 【Visual Leak Detector】核心源码剖析(VLD 2.5.1)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇对 VLD 2.5.1 源码做内存泄漏检测的思路进行剖析.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. ...
- nginx配置文件编写及日志文件相关操作
nginx配置文件编写及日志文件相关操作 目录 nginx配置文件编写及日志文件相关操作 nginx主配置文件扩展详解 部署nginx网站 注意事项 Nginx虚拟主机 nginx配置虚拟主机的三种方 ...
- WPF入门教程系列二十四——DataGrid使用示例(1)
WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系列五--Window 介 ...
- vue全家桶进阶之路14:常用属性和方法
Vue2中常用的属性和方法: 属性 el:用于指定Vue实例挂载的元素,可以是CSS选择器.HTML元素或Vue组件. data:用于存储Vue实例的响应式数据,也可以是一个函数,返回一个对象,用于提 ...
- 【GiraKoo】C++中static关键字的作用
C++中static关键字的作用 在程序中良好的使用static,const,private等关键字,对于代码的健壮性有很大的帮助. 本文介绍的就是C++中static关键字的一些常见用法与区别.适合 ...
- 三款Github Copilot的免费替代
大家好我是费老师,提起Github Copilot,相信很多读者朋友们都听说过甚至使用过,作为Github研发的一款先进的编程辅助插件,它可以在我们日常编写代码的过程中,根据代码的上下文内容.注释等信 ...
- 「GPT虚拟直播」实战篇|GPT接入虚拟人实现直播间弹幕回复
摘要 ChatGPT和元宇宙都是当前数字化领域中非常热门的技术和应用.结合两者的优势和特点,可以探索出更多的应用场景和商业模式.例如,在元宇宙中使用ChatGPT进行自然语言交互,可以为用户提供更加智 ...
- 研究NIST 800-53B信息系统和组织的控制基线
简介 800-53B是800-53的定制版本.为低.中.高影响的系统提供了安全与隐私控制手段.对于所有企业,定制控制手段不是强制的,必须的,可以参考NIST SP 800-37(800-37)提供了关 ...