ROS快速入门第三讲——ROS的Subscriber订阅者

Lucas在澳洲
优质创作者: python技术领域
2022-08-01 14:50:31

ROS的Subscriber订阅者

什么是订阅者

接收信息,通过ROS Topic接收来自其它Node的信息,并通过回调函数处理

通常用于监测系统状态,如当机器人关节到达限位位置时触发运动中断

ROS Topic示例

Topic通信过程为:

  1. Publisher节点和Subscriber节点分别在Master进行注册
  2. Publisher发布Topic
  3. Subscriber在Master指挥下订阅Topic,从而建立起Pub-Sub之间的通信

Publisher Node Demo

#!/usr/bin/env python
#-- coding:UTF-8 --
import rospy
from std_msgs.msg import String

def push_msgs():
    rospy.init_node("push_node", anonymous=False)
    push_pub = rospy.Publisher("push", String, queue_size=10)
    rate = rospy.Rate(100)

    while not rospy.is_shutdown():
        msg = "hello world"
        push_pub.publish(msg)
        rospy.loginfo("send message %s", msg)
        rate.sleep()


if __name__ == "__main__":
    push_msgs()

Subscriber Node Demo

#!/usr/bin/env python
#-- coding:UTF-8 --
import rospy
from std_msgs.msg import String

def stringSubscriberCallback(data): #data的数据类型与Subscriber接收的Topic对应的消息类型一致
    rospy.loginfo('The contents of simple_topic: %s', data.data)

def stringSubscriber():
    rospy.init_node('sub_node', anonymous = False) #初始化ROS节点
    rospy.Subscriber('push', String, stringSubscriberCallback) #定义Subscriber对象

    rospy.spin()


if __name__ == "__main__":
    stringSubscriber()

运行一下就是下面的效果

在这里插入图片描述

...全文
188 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-前沿技术 发布问题, 以便更快地解决您的疑问

88

社区成员

发帖
与我相关
我的任务
社区管理员
  • c_university_162
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧