话题通信之python实现

article/2025/7/30 16:45:26

在机器人操作系统(ROS)中,话题通信是一种常见的通信方式,它允许不同的节点之间通过主题进行数据交换。本文将介绍如何使用Python实现ROS话题通信,包括发布者和订阅者的编写。这种方法与使用C++实现类似,但Python的简洁性使得代码更加易于理解和维护,具体C++示例请看开始通信之旅-----话题通信-CSDN博客

在已经编写好的文件目录下我们重新开始python的实现

1.发布方的实现

依据编写第一个ros程序_visual studio code ros-CSDN博客这个链接创建一个pub_demo.py文件

1.导入所需包

#1.导入包
import rospy
from std_msgs.msg import String

2.创建发布节点

    #  2.创建发布者节点rospy.init_node("Fabuzhe")

3.创建发布主题等相关信息

    pub = rospy.Publisher(name="topic",data_class=String,queue_size=10)

4.编写发布数据   

    message = String()message. Data = "hello"

5.设定发送频率

 rate = rospy.Rate(4)

完整代码如下

#! /usr/bin/env python 
#设置解释器
#1.导入包
import rospy
from std_msgs.msg import String'''1.导入所需包2.创建发布者节点3.创建发布主题等相关信息4.编写发布数据并发送5.设定发送频率
'''
if __name__ == '__main__':#  2.创建发布者节点rospy.init_node("Fabuzhe")#  3.创建发布主题等相关信息pub = rospy.Publisher(name="topic",data_class=String,queue_size=10)#  4.编写发布数据message = String()message.data = "hello"#  5.设定发送频率rate = rospy.Rate(4)while not rospy.is_shutdown():#发送数据pub.publish(message)#按照频率发送rate.sleep()continuepass

 打开CMakeLists.list文件

找到catkin_install_python打开注释

并将其改为如下代码

catkin_install_python(PROGRAMSscripts/pub_demo.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

按下ctrl + shift +b编译如果没问题则会如下图

 打开终端1(注意终端路径)输入

roscore

打开终端2

输入如下指令

source ./devel/setup.bash
rosrun topicComm pub_demo.py

 打开终端3输入

rostopic echo topic

若成功则会输出如下图所示

如果你想停止发送请在终端2和终端3中按下ctrl + c  

2.订阅方的实现

 依据编写第一个ros程序_visual studio code ros-CSDN博客这个链接创建一个sub_demo.py文件

1.导入所需包

#1.导入包
import rospy
from std_msgs.msg import String

2.创建订阅节点

    #  2.创建订阅者节点rospy.init_node("Dingyuezhe")

3.创建订阅主题等相关信息

    #  3.创建订阅主题等相关信息rospy.Subscriber(name="topic",data_class=String,callback=subCallblack,queue_size=10)

4.编写订阅回调函数

def subCallblack(message):rospy.loginfo("我是订阅者接收到信息为%s",message)

 5.spin()重复回调

    rospy.spin()

完整代码如下

#! /usr/bin/env python 
#设置解释器
#1.导入包
import rospy
from std_msgs.msg import Stringdef subCallblack(message):rospy.loginfo("我是订阅者接收到信息为%s",message)'''1.导入所需包2.创建订阅者节点3.创建订阅主题等相关信息4.编写订阅回调函数5.spin()重复回调
'''
if __name__ == '__main__':#  2.创建订阅者节点rospy.init_node("Dingyuezhe")#  3.创建订阅主题等相关信息rospy.Subscriber(name="topic",data_class=String,callback=subCallblack,queue_size=10)rospy.spin()pass

 打开CMakeLists.list文件

找到catkin_install_python打开注释

并将其改为如下代码

catkin_install_python(PROGRAMSscripts/pub_demo.pyscripts/sub_demo.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

按下ctrl + shift +b编译如果没问题则会如下图

 打开终端1(注意终端路径)输入

roscore

打开终端2

输入如下指令

source ./devel/setup.bash
rosrun topicComm pub_demo.py

 打开终端3输入

rosrun topicComm sub_demo.py 

若成功则会输出如下图所示

如果你想停止发送请在终端2和终端3中按下ctrl + c  


http://www.hkcw.cn/article/hnhqGKOQNd.shtml

相关文章

中国高分辨率高质量地面NO2数据集(2008-2023)

时间分辨率:日空间分辨率:1km - 10km共享方式:开放获取数据大小:15.36 GB数据时间范围:2008-01-01 — 2023-12-31元数据更新时间:2024-08-19 数据集摘要 ChinaHighNO2数据集是中国高分辨率高质量近地表空气…

射频通信概述

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

设置堆空间的最大值(-Xmx)应该要考虑哪些因素?

需要根据系统的配置来确定,要给操作系统和JVM其他内存区域(栈、方法区)留下一定的剩余空间。推荐配置系统或容器里可用内存的70%~80%最好。 假设物理内存是8G,设置多大堆内存比较合适? 系统有8G物理内存,系统自己可能会…

wordpress免费主题网站

这是一款WordPress主题,由jianzhanpress开发,可以免费下载。专为中小微企业设计,提供专业的网站建设、网站运营维护、网站托管和网站优化等服务。主题设计简约、现代,适合多种行业需求。 主要特点: 多样化展示&#…

SGLang 无法正常部署

1. 考虑 torch 版本 与 SGLang 不兼容: -> Python环境中的包被更新(如torch, deepspeed, transformers等)导致不兼容 - 参考:Exception: Capture CUDA graph failed: CUDA error: out of memory-CSDN博客 # 虽然锁定了 sg…

【拓扑排序】P6560 [SBCOI2020] 时光的流逝|普及+

本文涉及知识点 C图论 拓扑排序 P6560 [SBCOI2020] 时光的流逝 题目背景 时间一分一秒的过着,伴随着雪一同消融在了这个冬天, 或许,要是时光能停留在这一刻,该有多好啊。 … “这是…我在这个小镇的最后一个冬天了吧。” “嗯…

第13讲、Odoo 18 配置文件(odoo.conf)详细解读

1. 概述 Odoo 配置文件(odoo.conf)是管理 Odoo 服务器行为的核心工具,涵盖了网络、安全、数据库、性能等多方面的关键参数。本文档系统梳理 Odoo 18 配置文件的主要参数,结合实际应用场景,提供权威的配置建议与最佳实…

“大巴黎”欧冠夺冠引发法国多地骚乱

法甲球队巴黎圣日耳曼5月31日晚赢得欧冠联赛冠军奖杯,法国多地球迷彻夜庆祝。据法国内政部消息,狂欢夜有559人因滋事被捕,并发生两起命案。据法国媒体援引法国内政部等信源,在巴黎,一名20岁男子骑摩托车与汽车相撞,导致重伤不治身亡。在法国西南部城市达克斯,一名17岁未…

马斯克最新发声:不想为美政府所做的一切承担责任

当地时间6月1日,美国企业家埃隆马斯克当日在接受美国哥伦比亚广播公司的采访时表示,他不想公开反对美国政府,但也不想为政府所做的一切承担责任。马斯克在采访中表示,他所领导的“政府效率部”成了一切的替罪羊,所有的裁员无论是真是假都被怪罪到了“政府效率部”的头上。…

c++ QicsTable使用实例

效果图&#xff1a; #include <QicsTable.h> #include <QicsDataModelDefault.h> #include <QVBoxLayout> Demo1::Demo1(QWidget *parent) : QWidget(parent) { ui.setupUi(this); const int numRows 10; const int numCols 5; // create th…

俄乌第二轮会谈前夕 飞出数只 “黑天鹅”

俄乌第二轮谈判将于6月2日举行。根据土耳其外交部在1日晚间发布消息,本次会谈将于当地时间2日13时在伊斯坦布尔的契拉昂宫举行。截至目前,俄乌双方均就这次谈判各自的立场和方向做出了一定说明。但就在本次俄乌会谈前夕,多起“黑天鹅”事件却接连发生。△伊斯坦布尔的契拉昂…

内存马mama

一、Tomcat三种内存马 首先了解下tomcat的三种内存马的原理和简单实用 filter型内存马 Tomcat filter注册流程 FilterDefs&#xff1a;存放FilterDef的数组 &#xff0c;FilterDef 中存储着我们过滤器名&#xff0c;过滤器实例&#xff0c;作用 url 等基本信息 FilterConf…

PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)

文章目录 地址类QUrl主要功能URL 格式介绍常见 scheme&#xff08;协议&#xff09;类型QUrl 类常用方法常用方法示例典型应用场景 地址类QUrl QUrl 是 PySide6.QtCore 模块中的一个类&#xff0c;用于处理和操作 URL&#xff08;统一资源定位符&#xff09;。它可以解析、构建…

DAY40 训练和测试

昨天我们介绍了图像数据的格式以及模型定义的过程&#xff0c;发现和之前结构化数据的略有不同&#xff0c;主要差异体现在2处 模型定义的时候需要展平图像由于数据过大&#xff0c;需要将数据集进行分批次处理&#xff0c;这往往涉及到了dataset和dataloader来规范代码的组织…

彻底理解Spring三级缓存机制

文章目录 前言一、Spring解决循环依赖时&#xff0c;为什么要使用三级缓存&#xff1f; 前言 Spring解决循环依赖的手段&#xff0c;是通过三级缓存&#xff1a; singletonObjects&#xff1a;存放所有生命周期完整的单例对象。&#xff08;一级缓存&#xff09;earlySingleto…

Diffusion Planner:扩散模型重塑自动驾驶路径规划(ICLR‘25)

1. 概述 2025年2月14日&#xff0c;清华大学AIR智能产业研究院联合毫末智行、中科院自动化所和香港中文大学团队&#xff0c;在ICLR 2025会议上发布了Diffusion Planner——一种创新性的基于Diffusion Transformer的自动驾驶规划模型架构。该系统联合建模周车运动预测与自车行…

财管5-投资项目的评价指标现金流量构成

一、投资项目评价指标 独立项目评价指标包括净现值&#xff08;NPV&#xff09;、现值指数&#xff08;PI&#xff09;、内含报酬率&#xff08;IRR&#xff09;、回收期&#xff08;PP&#xff09;、会计报酬率&#xff1b; 1、净现值 计算NPV 未来现金流量的现值 - 原始投…

【Bluedroid】蓝牙启动之 l2c_init 源码解析

蓝牙 L2CAP&#xff08;逻辑链路控制和适配协议&#xff09;层是蓝牙协议栈的核心传输层&#xff0c;负责为上层协议&#xff08;如 ATT、SMP、GATT&#xff09;提供逻辑通道、服务路由和流量控制等关键功能。本文围绕 L2CAP 层的五大核心数据结构&#xff08;全局控制块tL2C_C…

NACOS 配置中心--数据隔离

1.实现效果 名称空间 -- 区分 多套环境 group 分组 -- 区分多种微服务 data id 数据集 -- 区分多种配置 2.新建命名空间 3.创建 group 和 data id 同逻辑 创建 test 和prod 环境配置 5.yml文件配置进行映射 server:port: 8000 spring:config:import: # 映射data id 和gro…

rtpmixsound:实现音频混音攻击!全参数详细教程!Kali Linux教程!

简介 一种将预先录制的音频与指定目标音频流中的音频&#xff08;即 RTP&#xff09;实时混合的工具。 一款用于将预先录制的音频与指定目标音频流中的音频&#xff08;即 RTP&#xff09;实时混合的工具。该工具创建于 2006 年 8 月至 9 月之间。该工具名为 rtpmixsound。它…