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

2024-04-29 19:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是ROS中的begginer,我不知道如何在Python中执行“publish”和“subscriber”。我有一个file.bag,我用rosbag play "file.bag"播放这个文件。

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

但是,我不能用python在QT GUI中实时显示这些值。我读过教程http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers,但我不明白。

我能举个例子吗/odom [nav_msgs/Odometry]或者/back_laser/filtered [sensor_msgs/LaserScan]


Tags: 文件echoplaytopicrosqtpublishfile
1条回答
网友
1楼 · 发布于 2024-04-29 19:33:43

仔细看看教程。尤其是http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29

cd放入源文件夹

并创建新包:

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 {}

现在你应该在你的终端上看到一些你的监听器被启动的输出!卡茨基

相关问题 更多 >