栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

本节节点图如下:

程序实现如下:

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

本节到此结束。

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/843961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号