对rostopic的一些新认识

本文探讨了ROS中topic的工作原理,包括节点如何通过topic通信,topic与node的关系,以及多个发布者和订阅者的情况。通过一系列实验,作者发现topic的存在依赖于至少有一个发布者或订阅者,当所有相关节点关闭后,topic也会消失。rostopic pub实际上是临时创建一个节点来发布消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习使用ros的时候遇到的一个很“实际”的问题:一个节点怎样通过topic向另一个节点发送消息呢?

其实已有教程通过写简单发布器和订阅器来介绍如何利用topic进行节点间通信了:ROS与Python入门教程-写简单发布器和订阅器

看起来一个很简单的操作,我却想不通一些问题:

在talker.py里面实现了定义topic的publisher、定义了节点、发布消息这三件事,为什么topic和node要在一个程序里面定义,topic和node不应该是相对比较独立的两个东西吗?

命令行里面通过'rostopic pub'不是可以直接从topic发布msg吗?那么应该可以把topic的定义单独用一个程序实现,这样的话应该可以单独“启动”一个topic,但是我却没找到这种方法。

难道topic是必须由一个node来发布?这样的话node结束时topic不也没了?一个topic不是应该可以有多个订阅者和发布者吗?

(这个时候我对发布者、话题、订阅者的关系理解还比较抽象,认为topic是一个“中间商”,发布者和订阅者不需要直接接触,而是分别通过topic来发出和接收msg,topic就像是中间的一个buffer)

自己的理解和实际的现象产生了矛盾,使我很困惑。

于是尝试去了解ros的通信原理。。。

在阅读了两篇文章后,才发现机制不是原来想象的那么简单。

RO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值