2016-05-15 27 views
0

對於給定的ros消息,是否有任何方法可以獲取ros消息的子字段。我使用python腳本一個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

這裏有一個簡單的python節點(基於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()