【ROS】手写消息发布器和订阅器(Python版)

【ROS】手写消息发布器和订阅器(Python版)这里记录使用 Python 语言编写简单的 ROS 消息发布器和订阅器 C 版本可以参考 点击进入 使用环境 Python 7 17 作系统 ubuntu18 04 IDE VSCode 开发前准备 新建 Python 开发目录 如何建立 ROS 开发工作空间和功能包

大家好,我是讯享网,很高兴认识大家。
这里记录使用Python语言编写简单的ROS消息发布器和订阅器,C++版本可以参考 点击进入

使用环境:Python2.7.17
作系统:ubuntu18.04
IDE : VSCode

开发前准备

新建Python开发目录,如何建立ROS开发工作空间和功能包,可以参考 工作空间和功能包

注意文件目录,在 /test_turtorials/scripts/ 文件夹下

在这里插入图片描述

ROS消息发布器(talker.py)
1 代码
#!/usr/bin/env python import rospy from std_msgs.msg import String def talker(): #初始化节点 rospy.init_node("talker",anonymous=True) # 发布话题 pub=rospy.Publisher("chatter",String,queue_size=10) # 默认10hz的频率 可动态调节时间 将所在整个循环中代码运行时间控制在10hz rate=rospy.Rate(10) #检测节点是否关闭 while not rospy.is_shutdown(): hello_str="hello world %s" % rospy.get_time() #打印日志 rospy.log(hello_str) # 发布字符串 pub.publish(hello_str) #控制频率 rate.sleep() if __name__=="__main__" : try: talker() except rospy.ROSInterruptException: pass 
讯享网
ROS消息订阅器(listener.py)
代码
讯享网#!/usr/bin/env python import rospy from std_msgs.msg import String def callback(data): rospy.loginfo(rospy.get_caller_id+" I hear %s" , data.data) def listener(): # anonymous=True 即对listener这个名字不那么严格,如果为false 则必须用listener 调用此节点 rospy.init_node("listener",anonymous=True) rospy.Subscriber("chatter",String,callback) rospy.spin() if __name__=="__main__": listener() 
整体调试
1 修改talker.py 和 listener.py 的执行权限

进入代码所在文件夹,执行下面的语句

sudo chmod +x talker.py sudo chmod +x listener.py 

在这里插入图片描述

2 刷新ros节点

由于Python为解释型语言,一般不用编译后运行,我们新添加了 talker.py 和 listener.py 两者在原来不存在,需要使用命令进行刷新节点,使系统知道我们添加了节点

讯享网rospack profile 

在这里插入图片描述
如果不想进行刷新,也可以直接重新打开一个命令框即可,即前提是您的系统环境变量中存在该工作空间,新终端一启动,系统路径重新加载也可以。

发布与调试

1 启动master节点

roscore 

在这里插入图片描述

2 重启一个终端,启动发布者

 rosrun test_tutorials talker.py 

在这里插入图片描述

3 重启一个终端,启动订阅者

 rosrun test_tutorials listener.py 

在这里插入图片描述

4 重启一个终端 ,启动计算图

rosrun rqt_graph rqt_graph 

在这里插入图片描述

以上是关于Python进行手写简单的发布器和订阅器

小讯
上一篇 2025-03-11 11:23
下一篇 2025-02-16 17:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/14720.html