话题通信之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