ROS Python 入门学习笔记 --3-- 订阅者程序的编写

ROS Python 入门学习笔记 --3-- 订阅者程序的编写,第1张

        上一节我们介绍了 发布者的编程,类似地,我们也可以写一个订阅者节点来订阅话题消息。

本节节点图如下:

程序实现如下:

可复制Python代码如下:
#!/usr/bin/env python3
#encoding = 'utf-8'

import rospy
from geometry_msgs.msg import Twist
#与发布者不同的是,订阅者需要再编写一个回调函数,处理接受的数据
def turtle_calback(msg):
    rospy.loginfo("recieve data x = %0.2f angular z = %0.2f",msg.linear.x,msg.angular.z)

def turtle_subscriber():
    rospy.init_node('turtle_subscriber',anonymous=True)
    rospy.Subscriber('/turtle1/cmd_vel',Twist,turtle_calback)
    #创建一个Subscriber 订阅名为/turtle1/cmd_vel的话题,消息类型为TWist,回调函数为turtlr_callback
    rospy.spin()
    #等待回调触发
if __name__ == '__main__':
    turtle_subscriber()



我们同时运行上一节的发布者与我们这一节的订阅者:

(可以看到,当发布者没有运行时,订阅者终端没有消息输出)

当我们运行发布者节点,可以观察到现象:

最后

我们可以通过在终端中运行:

rqt_graph

来检查节点图是否正确。

我们总结一下订阅者程序编写的流程:
  1. 编写回调函数(有一个传入参数)
  2. 编写主函数(先初始化节点,再创建订阅者函数)
  3. 核心函数:
    1.  rospy.init_node('turtle_subscriber',anonymous=True) #节点初始化
    2.   rospy.Subscriber('/turtle1/cmd_vel',Twist,turtle_calback) #创建一个Subscriber 订阅名为/turtle1/cmd_vel的话题,消息类型为TWist,回调函数为turtle_callback

本节到此结束。

路漫漫其修远兮,吾将上下而求索。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/788637.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-05
下一篇2022-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存