当前位置: 首页 > news >正文

话题通信之python实现

在机器人操作系统(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.xdnf.cn/news/759043.html

相关文章:

  • 【免杀】C2免杀技术(十三)Inline Hook 概念篇
  • C# winform 教程(一)
  • Hartree-Fock 自洽场计算流程
  • Oracle正则表达式学习
  • 正则表达式笔记
  • yolo目标检测助手:具有模型预测、图像标注功能
  • 【复杂网络分析】什么是modularity?
  • maven中的maven-antrun-plugin插件详解
  • Go语言中的rune和byte类型详解
  • MySQL(49)如何使用DEFAULT指定默认值?
  • 配置Ollama环境变量,实现远程访问
  • 怎么样提高研发质量?
  • 七.MySQL内置函数
  • Practice 2025.6.1—— 二叉树进阶面试题(2)
  • 研读论文《Attention Is All You Need》(13)
  • 【笔记】MSYS2 安装 Python 构建依赖记录Cython + Ninja + Meson + meson-python
  • 七、物理.
  • Flickr30k_Entities数据集
  • 【项目记录】登录认证(下)
  • 6.运算放大器—电源抑制比(五)
  • 2002-2022年 城市市政公用设施水平、环境、绿地等数据-社科经管实证数据
  • 殷咏梅教授:OptiTROP-Breast05亮相2025 ASCO,中国原创TROP2 ADC为mTNBC一线治疗带来新希望
  • 2024年数维杯国际大学生数学建模挑战赛B题空间变量协同估计方法研究解题全过程论文及程序
  • ZIP Cracker版本更新了
  • java中IO流分为几种
  • 深入Java NIO:构建高性能网络应用
  • AAA基础配置
  • LeetCode - 234. 回文链表
  • Roller: 抽奖系统测试的幕后剧本-测试报告
  • Spring AI Image Model、TTS,RAG