2014-10-30 1 views
1

Я начинаю в ROS, и я не понимаю, как делать «публиковать» и «подписчик» в Python. У меня есть файл .bag, и я играю этот файл с rosbag play "file.bag".Как получить данные в python из ROS в режиме реального времени?

Я получаю значения темы с rostopic echo /"topic" или rostopic echo -n 1 /"topic" в xterm.

Однако я не могу видеть эти значения в реальном времени с помощью python для отображения в графическом интерфейсе QT. Я прочитал учебник http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers, но я этого не понимаю.

Могу ли я иметь пример с /odom [nav_msgs/Odometry] или /back_laser/filtered [sensor_msgs/LaserScan]

ответ

0

Присмотритесь на учебники. Особенно http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29

кд в папку Youd источника

и создать новый пакет:

catkin_create_pkg playground 

кд в этом каталоге

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 

новый терминал publis некоторые одометрии данные:

rostopic pub -r1 /odom nav_msgs/Odometry {} 

Теперь вы должны увидеть какой-то вывод на своем терминале, где был запущен ваш слушатель! Catki

+0

Привет! Stephen, Я пробовал этот код. Однако, несмотря на то, что/odom появляется под подпиской (rostopic list -v), я ничего не вижу в xterm, когда выполняю «listerner.py». Что я делаю плохо? Большое спасибо, и я с нетерпением жду услышать от вас – user2492523

+0

См. Правки ... – Steffen

+0

Он работает сейчас !. Большое спасибо! – user2492523