2016-05-15 10 views
0

特定のrosメッセージの場合、ros-messageのサブフィールドを取得する方法はありますか。私は、今話題とメッセージを考えると、私はメッセージのサブフィールドを表示することができROSメッセージのサブフィールドを表示

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

、Pythonスクリプトを使用してrosbagファイルからのメッセージを読んでいます。

例: nav/Odometry.msgには、「header」、「child_frame_id」、「pose」および「twist」というサブフィールドがあります。 (Reference link)

サブフィールドを出力として返すコマンドはありますか? ... 私はあなたが求めているかを正確に行い

おかげ

+0

いいえ、私はプロセスを自動化したいと思っていました。のように、 "child_frame_id"、poseなどがサブフィールドであることがわからない場合はどうすればよいですか? –

答えて

0

ここ(thisに基づいて)簡単なPythonのノードがあります事前にサブフィールドがわからない場合:

#!/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() 
関連する問題