Subscriber实现

Subscriber创建流程

1. 设置环境和编码

#!/usr/bin/env python
#coding:utf-8

2. 创建节点

rospy.init_node(nodeName)

3. 创建订阅者

rospy.Subscriber(topicName, String, topicCallback)
rospy.spin()

4. 实现订阅回调

def topicCallback(msg):
    print msg

完整示例代码

#!/usr/bin/env python
# coding:utf-8

import rospy
from std_msgs.msg import String


def topicCallback(msg):
    print msg


if __name__ == '__main__':
    nodeName = "pysubscriber"
    topicName = "pytopic"

    # 初始化节点
    rospy.init_node(nodeName)

    # 创建订阅者
    rospy.Subscriber(topicName, String, topicCallback)

    # 阻塞线程
    rospy.spin()

调试订阅者

调试Subscriber主要是查看是否能收到数据,也就是提供一个发布的调试工具。ROS提供了命令行工具和图形化工具进行调试。

1. 通过自己编写的publisher进行调试

rosrun demo_topic pypublisher.py

2. 通过rostopic工具进行调试

查询主题所需要的数据类型

rostopic type pytopic

模拟发布数据

rostopic pub pytopic std_msgs/String hello -r 10

:::tip

rostopic pub是模拟发布数据的命令

cpptopic是将数据发送到那个主题,根据自己实际调试的主题来写。

std_msgs/String是这个主题所需要的数据类型,我们是通过rostopic type cpptopic进行查询出来的。

hello是发送的数据,根据自己的调试需求来写。

-r 指的是发送频率

:::

3. 通过rqt_publisher工具进行调试

通过命令启动rqt_publisher工具

rosrun rqt_publisher rqt_publisher