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

本文介绍了如何编写ROS的订阅者节点,通过创建回调函数处理接收到的话题消息。示例中展示了订阅/turtle1/cmd_vel话题的代码,并通过rqt_graph检查节点图的正确性。运行订阅者节点并与发布者配合,可以观察到数据的传递效果。
摘要由CSDN通过智能技术生成

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

本节节点图如下:

程序实现如下:

可复制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

本节到此结束。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值