ros中的Publisher和Subscriber

原创 2018年04月17日 21:34:36
  1. topic是ros的通信方式之一,节点(node)之间通过向主题(topic)上发布(publish)和订阅(subscribe)消息(message)来进行消息传递
  2. 以下是wiki上的示例,可以直接访问:Writing a Simple Publisher and Subscriber

下面上代码

首先是用到的std_msgs/msg路径下的String.msg文件中的内容:

string data  # 定义了数据类型和name

Publisher

#!/usr/bin/env python

import rospy
from std_msgs.msg import String

def talker():
    # 节点的初始化操作
    rospy.init_node('talker_node', anonymous=True)
    # 定义一个publisher,topic名字是'chatter',传输数据类型为由String文件定义
    pub = rospy.Publisher('chatter', String, queue_size=10)
    # 消息发布频率:10次/s
    rate = rospy.Rate(10)  # 10hz
    while not rospy.is_shutdown():
        info = 'hello world %s' % rospy.get_time()
        # 发布消息
        pub.publish(info)
        rospy.loginfo(info)
        # sleep()函数确保以10hz的频率发布消息
        rate.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSIterruptException:
        pass

Subscriber

#!/usr/bin/env python

import rospy
from std_msgs.msg import String

def listener():
    # 初始化节点
    rospy.init_node('listener', anonymous=True)
    # 订阅name是'chatter'的topic,传输数据类型为由String文件定义,收到消息后调用函数callback,并将message作为第一个参数传入
    rospy.Subscriber('chatter', String, callback)
    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

def callback(data):
    # 输出信息,此处第一个data是接收到的message,第二个data是String文件中定义的数据的name
    rospy.loginfo('I heard %s' % data.data)


if __name__ == '__main__':
    listener()

Extjs在Asp.Net中的应用开发

-
  • 1970年01月01日 08:00

ROS的学习(十五)验证publisher和subscriber

在前面的两篇博客中我们用C++在ROS中创建了一个发布者和接收者,并使用catkin_make构建了新的节点,下面就需要验证一下,我们写的是否正确。      首先运行roscore roscor...
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2013-10-30 21:01:11
  • 6426

ROS的学习(二十)rosserial中的Publisher和Subscriber中的编程步骤

1.在一个话题上发布消息。      可以使用ros::Publisher类创建一个句柄来在一个话题上发布消息,应该首先创建一个publisher将要使用的消息,然后在setup函数中调用adver...
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2013-11-01 17:09:57
  • 7335

8、ROS使用C++编写一个简单的Publisher和Subscriber

一、Publisher节点“节点” 是一个连接着ROS框架的可执行文件,这里我们用C++写一个publisher节点 (命名为”talker”) ,不断地发布一条信息。首先进入包目录的src文件夹:r...
  • ab748998806
  • ab748998806
  • 2016-04-19 16:53:27
  • 1796

ROS学习手记 - 8 编写ROS的Publisher and Subscriber

上一节我们完成了 message & srv 文件的创建和加入编译,这次我们要玩简单的Publisher 和 Subscriber 要玩 Publisher 和 Subscriber, 需要具备的条件...
  • sonictl
  • sonictl
  • 2015-07-10 14:52:05
  • 1248

ROS中编写Publisher和Subscriber的方法(Python版)

ROS中基于python编写发布器和订阅器的方法
  • zong596568821xp
  • zong596568821xp
  • 2017-09-25 19:06:55
  • 1455

ROS学习笔记一:publishers and subscribers

ROS学习笔记一:publishers and subscribers个人把ROS看做是一种通信机制的框架,围绕着三种通信机制有很多其他的功能,核心还是三种通信机制publishers/subscri...
  • Will_Ye
  • Will_Ye
  • 2018-03-08 21:21:37
  • 56

ROS 进阶学习笔记(13) - Combine Subscriber and Publisher in Python, ROS

Combine Subscriber and Publisher in Python, ROS This article will describe an example of Combining ...
  • sonictl
  • sonictl
  • 2016-02-29 14:10:51
  • 1681

ROS 学习 (1):publisher和subscriber消息 C++1

(1)catkin创建ros package catkin_creat_pkg test_ros std_msgs roscpp rospy catkin_make source ~/devel...
  • hustfzt
  • hustfzt
  • 2016-08-12 14:43:29
  • 1030

ROS学习第五弹(发布和订阅 Python写 Publisher and Subscriber)

ROS中Publisher和Subsciber的Python写法。
  • ZZMJ_F
  • ZZMJ_F
  • 2017-11-01 19:32:18
  • 177
收藏助手
不良信息举报
您举报文章:ros中的Publisher和Subscriber
举报原因:
原因补充:

(最多只允许输入30个字)