2016-05-15 3 views
0

Для данного сообщения ros есть ли способ получить подполя ros-сообщения. Я читаю сообщения из файла rosbag с помощью питона скрипт,Отображать подполя сообщения ROS

"for topic, msg, t in bag.read_messages(): " 

теперь дают тему и сообщение, я могу отобразить дополнительные поля сообщения.

например: Навигатор/Odometry.msg имеет подполя: «header», «child_frame_id», «pose» и «twist». (Reference link)

Есть ли команда, которая возвращает подполя в качестве вывода? .. если я не знаю, субполя сперва,

Благодарности

+0

Нет, Я хотел автоматизировать процесс. Как и в, что мне делать, если я не знаю, что «child_frame_id», поза и т. Д. Являются подполями –

ответ

0

вот простой узел питон (на основе this), что делает именно то, что вы просите:

#!/usr/bin/env python 
import rospy 
from nav_msgs.msg import Odometry 

def callback(data): 
    rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.header) 
    rospy.loginfo(rospy.get_caller_id() + "child_frame_id %s", data.child_frame_id) 
    rospy.loginfo(rospy.get_caller_id() + "pose %s", data.pose) 
    rospy.loginfo(rospy.get_caller_id() + "twist %s", data.twist) 

def listener(): 

    # In ROS, nodes are uniquely named. If two nodes with the same 
    # node are launched, the previous one is kicked off. The 
    # anonymous=True flag means that rospy will choose a unique 
    # name for our 'listener' node so that multiple listeners can 
    # run simultaneously. 
    rospy.init_node('listener', anonymous=True) 

    rospy.Subscriber("odom_topic", Odometry, callback) 

    # spin() simply keeps python from exiting until this node is stopped 
    rospy.spin() 

if __name__ == '__main__': 
    listener() 
Смежные вопросы