ros的通信机构

2023-05-16

ros的通信是在os层之上,基于TCP/IP协议实现

os层(操作系统层)对于开发者来讲,是不需要关系的。

中间层:TCPROS/UDPROS,这是基于TCP/IP协议进行重新封装的,Nodelet API是为了弥补前面两者中的不足,Nodelet API的实现是通过共享内存的方式,而不是通过网络传输的方式进行数据的共享。ClientLibrary客户端库是指将TCPROS/UDPROS在进行封装,封装成一些ros的具体通讯实现方法,例如话题、服务等等

应用层:首先是ros的master,与中间层框起来,是因为是ros系统中必须要有的根节点,master是ros官方提供的,是用来管理右边的应用层的节点node,node是一个互相独立的应用

ROS通信结构--节点和主节点(node and master)

 master:相当于管理中心,node首先在master处进行注册, node之间的通信也是先由master进行“牵线”,才能两两的进行点对点通信,一个ROS计算图中又且只有一个master

节点:一个可执行程序进程,通常一个node负责者机器人的某一个单独的功能,不同的节点可以使用不同的编程语言,也可以运行在同一局域网下的不同机器人上。

节点与节点之间的通信具体实现:消息通信可以通过话题、服务、动作、参数实现

ros通讯结构--话题topic和服务service

话题topic:

同步/实时性:异步通信/弱,

实现原理:ROSTCP and ROSUDP

通信模型:发布/订阅

节点数量关系:多对多

应用场景:数据发布  eg:图像处理操作

传递内容:rosmsg (是发布者和订阅者之间定义的传输数据类型,方便两者进行通信)

服务service:

同步/实时性:同步通信/强,

实现原理:ROSTCP and ROSUDP

通信模型:request/response

节点数量关系:多对一(服务器端)

应用场景:逻辑任务处理,eg:关灯操作

传递内容:rossrv

 动作action:

.goal -用于向服务器发送目标。
.cancel -用于向服务器发送取消请求。
.status -用于通知客户端系统中每个目标的当前状态。

.feedback -用于周期反馈目标的辅助信息。
.result - 用于向client发送任务的执行结果,这个topic只会发布一次

参数服务器parameter server:

并非是一个node,运行在master中,节点存储参数的地方,用于配置参数,全局共享参数,是一个字典,key-value.用的少。

 原作者:冰达机器人,b站有官方账号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ros的通信机构 的相关文章

  • 基于51单片机的八路竞赛抢答器设计

    目录 基于51单片机的八路抢答器设计1 主要功能2 仿真图3 测试图4 程序源码5 资源获取 基于51单片机的八路抢答器设计 1 主要功能 利用STC89C52单片机及外围接口实现的抢答系统 xff1b 在抢答过程中 xff0c 只有启动抢
  • 赛灵思-Zynq UltraScale+ MPSoC学习笔记汇总

    Zynq UltraScale 43 MPSoC学习目录 xff1a 1 赛灵思 Zynq UltraScale 43 MPSoCs xff1a 产品简介 2 赛灵思 Zynq UltraScale 43 MPSoC学习笔记 xff1a P
  • 7、AUTOSAR MCAL入门-实战:I/O驱动组

    7 AUTOSAR MCAL入门 实战 xff1a I O驱动组 在第三节中有介绍AUTOSAR 把MCAL 抽象分为4个驱动组 xff0c 分别为 xff1a 微控制器驱动组 xff0c 存储器驱动组 xff0c 通信驱动组 输入 输出驱
  • FreeRTOS学习笔记:FreeRTOS启动方式及流程

    FreeRTOS启动方式及流程 FreeRTOS有两种比较流行的启动方式 1 方式一 xff1a 在main函数中创建所有任务 具体说明 xff1a 在main函数中将硬件初始化 RTOS系统初始化 xff0c 创建所有的任务 xff0c
  • 单片机各种通信协议详解

    一 IIC通信协议 1 概述 I2C Inter Integrated Circuit BUS 集成电路总线 xff0c 该总线由 NXP xff08 原 PHILIPS xff09 公司设计 xff0c 多用于主控制器和从器件间的主从通信
  • java String类(超详细!)

    一 前言 1 String表示字符串类型 xff0c 属于 引用数据类型 xff0c 不属于基本数据类型 2 在java中随便使用 双引号括起来 的都是String对象 例如 xff1a abc xff0c def xff0c hello
  • Java反射(超详细!)

    1 反射机制有什么用 xff1f 通过java语言中的反射机制可以操作字节码文件 xff08 可以读和修改字节码文件 xff09 通过反射机制可以操作代码片段 xff08 class文件 xff09 2 反射机制的相关类在哪个包下 xff1
  • windows安装配置C/C++在VScode中的环境并解决VScode中使用C/C++ #include <xxx>报错

    windows安装配置C C 43 43 在VScode中的环境并解决VScode中使用C C 43 43 include 报错 xff0c include lt napi h gt 报错 1 给vscode安装C C 43 43 插件 x
  • 0.9.1 - GPIO 初始化函数与GPIO 引脚工作模式真值表

    void GPIO Init GPIO TypeDef GPIOx GPIO InitTypeDef GPIO InitStruct 我们要使用STM32的片上外设 第一步 xff0c 要打开对应外设的时钟 第二步 xff0c 要配置对应外
  • C语言细讲——结构体和简单链表

    本博文是该系列的最后一个内容 xff1a 结构体 作者 xff1a 小 琛 欢迎转载 xff0c 请标明出处 引言 xff1a 结构是一些值的集合 xff0c 这些值称为成员变量 xff0c 且这些变量可以是不同的类型 单结构体并没有多少内
  • 什么是juc

    juc是用于处理线程的工具包
  • 缓存数据一致性解决方案

    读写锁 xff0c 读相当于无锁状态 xff0c 写加上锁 读多写多 xff0c 直接去数据库查询 读多写少 xff0c 完全可以使用Spring Cache
  • 什么是nginx动静分离

  • 检索DSL是什么

    DSL是ElasticSearch的高级搜索
  • 线程池的工作顺序

  • sku和spu的区别

    spu和sku就是上下级关系 xff0c spu是上级 xff0c sku是下级 假如没有选择任何类型那么他就是一个单独的spu xff0c 但是当它选择了具体的颜色 xff0c 版本 xff0c 购买方式等等 xff0c 那么他就是一个s
  • hexo next 博客,jsdelivr cdn报错无法访问

    一 博客环境 我的hexo版本是5 4 0 xff0c next版本是7 8 0 因 jsdelivr cdn报错导致博客首页无法访问 二 修改next cdn 首先进入hexo博客首页 xff0c F12查看报错的 jsdelivr 地址
  • busuanzi.ibruce.info 有时候报502,怎么解决

    一 现象 https busuanzi ibruce info 访问经常出现502 导致个人博客的访问人数无法正常显示 二 如何解决 用chrome 打开busuanzi ibruce info xff0c 点url链接前的那个锁 然后看到
  • BigDecimal和Double的区别

    Double span class token number 0 3 span span class token number 0 2 span span class token operator 61 span span class to
  • 对科里奥利力的理解

    首先创造一个情景 xff0c 方便理解 假设你站在一个这样的封闭靶场 xff08 全封闭 xff09 上 xff0c 这个靶场在以大小为 的角速度做匀速圆周运动 xff08 速度不大不小 xff0c 你感觉不到 xff0c 而且靶场没风 x

随机推荐

  • typora使用技巧

    1 Typora vue theme的介绍与下载 typora vue theme是参考了Vue文档风格而开发的一个 Typora 自定义主题 点击此处下载 2 如何安装 a 下载本主题中的vue css vue dark css文档和包含
  • 序列化什么意思

    序列化就是一种用来处理对象流的机制 xff0c 将对象转化成字节序列后可以保存在磁盘上 xff0c 或通过网络传输 xff0c 以达到以后恢复成原来的对象
  • mybatis plus 事务回滚总结

    https www cnblogs com c2g5201314 p 13163097 html
  • throw 和 try catch 的区别

    try catch是直接处理 xff0c 处理完成之后程序继续往下执行 xff0c throw则是将异常抛给它的上一级处理 xff0c 程序便不往下执行了
  • throw的异常日志会打印吗

    throw 就是要把异常继续抛出 xff0c 要么由上层方法解决 xff0c 要么会终止程序运行
  • java assert什么意思

    assert 意为断言的意思 xff0c 这个关键字可以判断布尔值的结果是否和预期的一样 xff0c 如果一样就正常执行 xff0c 否则会抛出AssertionError assert 的使用 xff1a span class token
  • throw和throws的区别

    throws xff1a 用来声明一个方法可能产生的所有异常 xff0c 不做任何处理而是将异常往上传 xff0c 谁调用我我就抛给谁 用在方法声明后面 xff0c 跟的是异常类名 可以跟多个异常类名 xff0c 用逗号隔开 表示抛出异常
  • 1024有感

    2022 10 24 1024节日快乐 xff01 好好学习 xff0c 天天向上 x1f600
  • 互联网项目一般几轮测试

    第一轮测试 xff1a 要覆盖所有测试用例 所有功能都要跑一遍 第二轮测试 xff1a 重点功能的测试 还要把第一轮测试发现的问题 xff0c 根据开发修改完成的结果 xff0c 进行验证 最后一轮是回归测试 xff1a 验证所有bug是否
  • IDEA pom文件 ctrl alt l无法格式化

    File gt Manage IDE settings gt Restore Default settings 恢复IDEA默认设置后 xff0c 即可格式化pom文件
  • 科里奥利力简单清晰的推导

    看到一个比较好的科里奥利力推导方法 xff1a 如果你不太理解科里奥利力 xff0c 可以看一下我的这篇文章 xff1a 对科里奥利力的理解 本文参考 xff1a 1 黄永义 科里奥利力简单而清晰的导出 J 广西物理 2015 36 04
  • java实体类命名

    Entity xff1a 与数据库表结构一一对应 xff0c 通过Dao层向上传输数据源对象 Dto xff08 Data Transfer Object xff09 xff1a 数据传输对象 xff0c Service或Manager向外
  • 字节的高低位互换

    蝶式交换法 unsigned char Reverse byte unsigned char data data 61 data lt lt 4 data gt gt 4 data 61 data lt lt 2 amp 0xcc data
  • 没有Build文件夹的情况下(最新的vue-cli3没有)怎么关闭掉ESlink

    这里写目录标题 一般的注释掉Build中的方法最新的vue cli3没有build文件夹怎么办 一般的注释掉Build中的方法 在build文件夹 gt webpack base conf js中注释以下代码 和在IntelliJ IDEA
  • 使用zed摄像头跑ORB_SLAM2

    zed ros wrapper安装 首先对zed ros wrapper安装 xff1a 具体操作步骤及代码的参考链接 xff1a https github com stereolabs zed ros wrapper git mkdir
  • 【linux网络编程学习笔记】第二节:创建TCP通信(双向)(socket、bind、listen、accept、connect、recv、send、shutdown、server\client)

    Work won 39 t kill but worry will 劳动无害 xff0c 忧愁伤身 上一篇章中创建了TCP的客户端的服务器 xff0c 但是只能单向发送 xff0c 本章节主要讲解如何进行双向互发消息 xff0c 实现的过程
  • 航模电池及稳压降压模块—毕设简记

    航模电池及稳压降压模块简介 简述 准备给设计的控制系统选一块航模电池 xff0c 需要关注什么参数 xff1f 控制系统的传感器需要5V供电 直流减速电机需要12V供电 单片机需要7 12V供电 xff0c 这么多供电该怎么处理 xff1f
  • Laplance算子(二阶导数)

    理论 xff1a 在二阶导数的时候 xff0c 最大变化处的值为0 即边缘是零 xff0c 通过二阶导数计算 xff0c 依据此理论我们可以计算图像的二阶导数 xff0c 提取边缘 Laplance算子 二阶导数我不会 xff0c 别担心
  • yolo3_pytorch 训练voc数据集和训练自己的数据集并进行预测(github代码调试)

    训练voc数据集的步骤 xff1a xff1a 首先下载voc数据集 xff0c 将数据集放在从github中下载的项目中VOCdevkit目录中 xff08 直接将数据集拉入到项目中 xff0c 替代目标文件即可 xff09 源码下载 x
  • ros的通信机构

    ros的通信是在os层之上 xff0c 基于TCP IP协议实现 os层 xff08 操作系统层 xff09 对于开发者来讲 xff0c 是不需要关系的 中间层 xff1a TCPROS UDPROS 这是基于TCP IP协议进行重新封装的