ros::spin()和ros::spinOnce()介绍讲解及区别

2023-11-07

首先要理解的一点是,任何一个发布和订阅,都会有其对应的发布缓存区和订阅缓存区,正如advertise和subscribe函数中都有缓存数量的参数。当有发布者发布消息后,会存放在发布缓存区,如果该topic有订阅者,则从发布缓存区读取到订阅缓存区,等待被使用。
spin()和spinOnce()的目的都是将消息从订阅缓存区拿到回调函数中去,那么这两者有什么区别呢?

spinOnce()

当程序运行到spinOnce()时,程序到相应的topic订阅缓存区查看是否存在消息,如果有消息,则将消息传入回调函数执行回调函数;如果没有消息则继续向后执行。spinOnce()并不是等待到一个消息才向后执行,而是查看有没有消息!

spin()

当程序运行到spin()时,程序同样去相应的topic订阅缓存区查看是否有消息,如果有消息,则将消息传入回调函数;如果没有消息则重复上述过程。因此spin()可以当作是对spinOnce()的循环,即:

while(1)
{
	ros::spinOnce();
}

显然,spin()后面的代码将不会再被执行,表现出来的功能就是持续等待消息。

总结

刚接触ros时,以为消息机制会类似于android的监听机制,即开启监听后就启动了监听线程在后台不断等待消息,有消息后马上就可以传入回调函数开始执行。而实际实验后发现只有运行到spin()及spinOnce()时才会去查看消息。

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

ros::spin()和ros::spinOnce()介绍讲解及区别 的相关文章

  • 下载文件时显示“请稍候”消息或进度条

    我使用以下 WordPress 管理员通知来提示用户下载一些文件 我想在下载文件时包含一个进度条或至少包含一个 正在下载 请稍候 消息 有任何想法吗 我已经尝试了几种 jQuery 解决方案 但没有任何效果 对于 jQuery 我完全是个菜
  • pjsip接收短信

    任何人都知道有关如何设置 pjsip 客户端来接收消息的任何好例子 我可以使用以下方式从客户端发送消息 pjsua im send sip acc id to NULL msgbody NULL NULL 到任何数字 但我不知道如何才能将消
  • 没有提交消息的 Git 提交

    如何在不指定提交消息的情况下提交更改 为什么默认需要它 git 通常需要非空消息 因为提供有意义的提交消息是良好开发实践和良好存储库管理的一部分 提交消息的第一行在 git 中随处可见 欲了解更多信息 请阅读 关于 Git 提交消息的注释
  • Java - 当数据超出限制时打印消息?

    我的代码已经可以工作了 虽然不漂亮 但确实是工作 现在我想编写一段代码 如果文本文件中有 19 条或更多数据 则停止加载数据 然后显示例如 显示 输入无效 的消息 我不知道如何做到这一点 所以任何帮助将不胜感激 package stacka
  • 如何更改警报对话框中按钮的颜色[重复]

    这个问题在这里已经有答案了 这是我创建对话框的代码 builder setMessage msg setNeutralButton Dismiss dialogClickListener setPositiveButton Edit dia
  • Android:使用电子邮件意图发送电子邮件,可以在发送之前更改消息吗?

    我在用着 Intent emailIntent new Intent android content Intent ACTION SEND 要发送电子邮件 我需要在消息中添加一些页脚 当用户单击 发送 时 是否有侦听器或某种方式可以编辑消息
  • Django 消息不显示

    我正在尝试使用 django 消息框架在用户退出我的应用程序时显示消息 我是 django 的新手 文档对我来说不是很清楚 为什么我的消息不显示 https docs djangoproject com en dev ref contrib
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • 您的异常消息是否以句点结束? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我见过带句点和不带句点的异常消息 我可以想出一些理由来解释为什么两者都可以很好 如果您愿意 没有点可以让您自由添加或省略句点 如果消息出现在
  • Java中的特殊字符

    java中如何使用特殊字符 它们属于 Cp1252 字符编码 我尝试在消息中使用它们 但无法使用它们 类似字符 de 使用关联的 UTF 值 例如在http www fileformat info info unicode char sea
  • 程序下载 - IE CHROME - “不常下载,可能很危险。”

    我有一个 C 程序的安装程序 我将其上传到我的网站 但每当我尝试在 chrome 或 IE 中下载它时 我都会收到 MY FILE 不常下载 可能很危险 只有单击小箭头并从菜单中选择 保留 才能保留它 只有十分之一的用户能够获取我的程序 我
  • 经过一段时间后,OpenEdge ABL 自动关闭是/否消息

    现在我有 消息 Hello World 查看为警报框警告按钮是 否更新 lVariable 如何在 14 秒后自动点击 否 如何以 另一种方式 做到这一点 DEFINE FRAME f message This is your messag
  • MySQL:大型 VARCHAR 与 TEXT?

    我在 MySQL 中有一个消息表 用于记录用户之间的消息 除了典型的 ID 和消息类型 所有整数类型 之外 我还需要将实际消息文本保存为 VARCHAR 或 TEXT 我将前端限制设置为 3000 个字符 这意味着消息永远不会插入数据库中的
  • Android 中的聊天应用程序,以便发送者和接收者消息应该位于不同的一侧

    protected void onPostExecute ArrayList
  • 如何覆盖 Struts 2 消息?

    这是我的 struts xml 的一部分
  • Magento:如何在管理面板中使用 JS 显示标准错误/成功消息?

    我可以从服务器端将错误 成功消息添加到 Magento 管理面板 例如 Mage getSingleton core session gt addError 但是如何使用 JS 在客户端显示相同的消息呢 我的意思是标准方式 当然我可以创建相
  • 我如何在 Skype 上玩 google?

    此代码用于在 Skype 上向某人发送消息 但我不知道如何设置https play google com store apps details id com skype raider https play google com store
  • Erlang 进程和消息传递架构

    我手头的任务是读取大文件的行 处理它们 并返回有序结果 我的算法是 从评估工作负载的主进程开始 写在文件的第一行 生成工作进程 每个工作进程将使用 pread 3 读取文件的一部分 处理这部分 并将结果发送给 master master接收
  • Symfony2 自定义表单错误消息

    你能帮我了解如何使用 Symfony2 自定义表单中的错误消息吗 我想更改 HTML 布局 添加 div 类等 阅读指南 它给出了一段代码 可以放入一个名为的文件中fields errors html twig但它没有告诉将该文件放在哪里以
  • 在 C++\Win32 中编辑控件文本更改消息

    与 NET for C Win32 中的 TextChanged 属性匹配的消息是什么 假设你正在谈论编辑控件 http msdn microsoft com en us library bb775458 VS 85 aspx EN CHA

随机推荐

  • 元宇宙产业委一届二次全会召开 同步举办共享大会和全球元宇宙大会

    2022全球元宇宙大会 上海站将于8月18 19日在沪召开 央链直播快讯 2022年8月18 19日 由中国移动通信联合会主办 上海市通信管理局联合主办 众视Tech 中移联会展部 中国移动通信联合会元宇宙产业委员会承办 BIC EURON
  • Aop反射机制实现某个参数值 修改

    项目中使用敏感字段的加解密 但是有的是直接在url中拼接的 所以我就想根据一个自定义注解的方式做匹配 修改值 利用反射的机制实现值的修改 以下是具体的代码 依赖aop
  • VSCode顶端文件名多行显示

    VScode默认顶端一行显示所有打开的文件名 1 直接在设置中搜索 多行 在 Workbench Editor Wrap Tabs 前选中即可 2 也可用快捷键 Ctrl P 查看最近浏览文件记录
  • 2023华为od机试 Python 实现【德州扑克】

    前言 本题使用Python解答 如果需要Java代码 请参考 链接 题目 我们可以选择五张牌 它们的范围是 每张牌的大小在2 10之间 或者字母J Q K A 牌花色为红桃 黑桃 梅花 方块四种花色之一 现在一共有6种牌型 牌型1 同花顺
  • 运维体系框架标准化模型简介

    为什么要做标准化 标准化的过程实际上就是对运维对象的识别和建模过程 形成统一的对象模型后 各方在统一的认识下展开有效协作 然后针对不同的运维对象 再抽取出它们所对应的运维场景 接下来才是运维场景的自动化实现 这有点像我们学的面向对象编程的思
  • Fabric.js

    Fabric js是什么 Fabric js 是一个简化HTML5 Canvas开发的Javascript库 Fabric js提供了HTML5 Canvas本身缺失的对象模型 交互层 SVG解析器以及其他一整套工具 它是一个完全开源的项目
  • C中的预编译宏定义

    C中的预编译宏定义 作者 infobillows 发表日期 2007 09 15 21 34 点击数 1507 在将一个C源程序转换为可执行程序的过程中 编译预处理是最初的步骤 这一步骤是由预处理器 preprocessor 来完成的 在源
  • 根据文字长度,设置文字滚动的速度

    div class tips box span class scroll text span div 根据文字长度设置中文滚动时间 const animateTextlength this conference importantInfo
  • pygame模块介绍

    pygame模块介绍 在python中开发游戏 通常会用到pygame这个模块 pygame模块总览 模块 作用 cdrom 管理cdrom设备和音频播放 cursors 加载光标图像 包括标准光标 display 控制显示窗口或屏幕 dr
  • FCN学习:Semantic Segmentation(摘自知乎)

    源文章地址 https zhuanlan zhihu com p 22976342 utm source tuicool utm medium referral FCN学习 Semantic Segmentation 余俊 计算机视觉及深度
  • 计算机图形学年鉴:研究现状、应用和未来

    计算机图形学是支持各种影视特效 三维动画影片 计算机游戏 虚拟现实以及大家手机上各种照片视频美化特效背后的技术基础 在本文中 微软亚洲研究院网络图形组深入解释了图形学的现状 发展和未来 谈及 计算机图形学 可能很多人会觉得很有距离感 或者和
  • 微信小程序弹窗提示:wx.showToast、wx.showModal、wx.showLoading的使用场景与实现

    1 wx showToast 使用场景 常规的提示 没有确定和取消按钮 例 属性 title 提示的内容 icon 显示的图标 合法值有success error loading none image 自定义图标的本地路径 优先级高于ico
  • K8S部署步骤:8-部署Master节点

    kubernetes master节点包含的组件 etcd flannel docker kube apiserver kube scheduler kube controller manager 目前这三个组件需要部署在同一台机器上 ku
  • python面试的3大重点,让你顺利拿到offer!

    5月已经过去大半个月了 马上就要迎来毕业季了 你准备好去面试了么 W3C咨询了不少python爬虫岗位从业者 如果你也打算从事python爬虫岗位 掌握这三个重点 能让你更顺利的get到理想的offer 1 Python 因为面试的是Pyt
  • C++入门——引用(重点!!!)

    文章目录 引用概念 引用特性 常引用 const 使用场景 1 做参数 输出型参数 2 做返回值 引用返回 引用和指针的区别 引用概念 引用不是新定义一个变量 而是给已存在的变量取了一个别名 编译器不会为引用变量开辟内存空间 它和它的引用变
  • springboot+MD5实现注册登录的密码的加密解密

    写在前面 你们好 我是小庄 很高兴能和你们一起学习mybatis 如果您对Java感兴趣的话可关注我的动态 写博文是一种习惯 在这过程中能够梳理知识和巩固知识点 需求 登录和注册的密码涉及到网络安全 对密码的加密能够在一定程度上增加安全性
  • linux shell字符串截取

    linux字符串截取很有用 有八种方法 有变量url https www test com 123 html 号截取 删除左边字符 保留右边字符 echo url 输出 www test com 123 html 其中url是变量名 是运算
  • 【极简代码】Unity控制3D物体的自由旋转 缩放和移动

    Unity中以最少代码 控制3D物体的自由旋转 缩放和移动 using UnityEngine public class TestMatrix MonoBehaviour float scaleparam 0f Vector3 oldSca
  • (2)一文懂“AI推理芯片” 测试方法与测试指标

    1 前言 Inference是用于测试系统使用训练有素的模型处理输入和产生结果的速度 1 1 缘起 随着人工智能应用的崛起 其在不同的硬件芯片平台上的性能也逐渐变成了比较不同硬件和芯片的重要参考 然而 最初由各个芯片厂商自行公布的跑分结果往
  • ros::spin()和ros::spinOnce()介绍讲解及区别

    首先要理解的一点是 任何一个发布和订阅 都会有其对应的发布缓存区和订阅缓存区 正如advertise和subscribe函数中都有缓存数量的参数 当有发布者发布消息后 会存放在发布缓存区 如果该topic有订阅者 则从发布缓存区读取到订阅缓