ROS Node/Topic/Message/Service的一些问题

本文深入探讨了ROS(Robot Operating System)中的关键概念,包括Node如何通过Callback Queue进行消息处理、Topic与Service的区别及应用场景,以及Nodelet的工作原理。文章特别强调了Spin与SpinOnce在不同场景下的使用方式,并解释了它们如何影响Node的行为。

1.Node

http://blog.exbot.net/archives/1412 (摘自老王说ros)

node干的什么活?callback queue里的活。这个callback queue里的callback是哪里来的呢?常见的是subscriber的callback,当然还有其他的,包括publisher的,service的。那这些callback是什么时候被调用的呢。那就是spin()或者spinonce()。spin调用在queue 里所有的availiable的callback,如果没有availible的,它就阻塞。spinonce,显然只调用一次,看看有没有准备好的callback,有就调用,没有就返回。那什么是availible的、准备好的呢?对于subscribe,准备好的就是那些有新消息的subscriber的callback。现在如果你明白了上述node的运行机理。你在感到舒服之余,请准备接收心烦的问题。

1)第一个问题就是,如果subscriber没有收到新消息,那么它的callback就不会被执行。如果你想每次都运行callback呢?对不起,没办法,不是virgin我不娶。

2)第二个问题,callback执行有个timeout值,如果设置不合理,要么费时,要么callback被中止。被中止呀,兄弟们,多可怕,万一是一个重要逻辑的一环呢?今天就聊到这里,最后送点福利,如果你想实现事件触发的node就用spin;如果你要固定周期的node,那就用spinonce+sleep,但一定要牢记,在每个周期里不是所有callback被执行.

2. Topic 与 Service

http://blog.exbot.net/archives/1605 (摘自西工大一小学生 ROS 通讯层模型)

Topic:ros中广为使用的是异步的 publish-subscribe 通讯模式。这种方式将信息的产生和使用双方解耦。一般来说,节点没有通讯对方那边的信息。Node从需要的topic那取得消息,topic 可以有多个 subscriber 与publisher。Topic 一般用于单向,消息流通讯。Node 需要同步通讯交换信息时一般使用service。Topic 一般拥有很强的类型定义:一种类型的topic只能接受/发送特定数据类型(message type)的message。Publisher 没有被要求类型一致性,但是接受时subscriber会检查类型的md5,进而报错。

 Service: service 用于处理ros通讯中的同步通讯,采用server/client 语义。每个service type拥有 request 与 response两部分,对于service中的 server,ros不会检查重名(name conflict),只有最后注册的server会生效,与client建立连接。

3.Nodelet

http://wiki.ros.org/nodelet

This package provides both the nodelet base class needed for implementing a nodelet, as well as the NodeletLoader class used for instantiating nodelets

提供了turtlebot的一个控制led灯的例子

以及简单的教程

http://wiki.ros.org/nodelet/Tutorials

转载于:https://www.cnblogs.com/yebo92/p/5621532.html

(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值