如何从ROS实时获取python中的数据?

时间:2014-10-30 15:22:37

标签: python qt ros

我在ROS中很开心,我不明白如何在Python中“发布”和“订阅者”。我有一个文件.bag,我用rosbag play "file.bag"播放这个文件。

我在xterm中使用rostopic echo /"topic"rostopic echo -n 1 /"topic"获取主题的值。

但是,我无法使用python实时查看此值以在QT GUI中显示。我已阅读教程http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers,但我不明白。

我可以举例/odom [nav_msgs/Odometry]/back_laser/filtered [sensor_msgs/LaserScan]

吗?

1 个答案:

答案 0 :(得分:1)

仔细看看这些教程。特别是http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29

进入你的源文件夹

并创建新包:

catkin_create_pkg playground

在该目录中的CD

cd playground

创建一个文件listener.py并添加以下内容:

#!/usr/bin/env python
import rospy
from std_msgs.msg import String
from nav_msgs.msg import Odometry
def callback(data):
    rospy.loginfo(rospy.get_caller_id()+"I heard %s",data)

def listener():
    rospy.init_node('listener', anonymous=True)
    rospy.Subscriber("odom", Odometry, callback)
    rospy.spin()

if __name__ == '__main__':
    listener()

制作可执行文件:

chmod +x listener.py

启动核心:

roscore

新终端,运行侦听器节点:

rosrun playground listener.py

新终端发布了一些测距数据:

rostopic pub -r1 /odom nav_msgs/Odometry {}

现在你应该在你的终端上看到一些输出你的监听器的输出了!catki