Go to the documentation of this file.00001
00002
00003 import sys
00004 import numpy as np
00005 import scipy.io
00006
00007 import roslib
00008 roslib.load_manifest('hrl_phri_2011')
00009 import rospy
00010
00011 import rosbag
00012
00013 def main():
00014
00015 field_map = {
00016 "time_offset" : "time_offset",
00017 "tool_frame.transform.translation.x" : "pos_x",
00018 "tool_frame.transform.translation.y" : "pos_y",
00019 "tool_frame.transform.translation.z" : "pos_z",
00020 "tool_frame.transform.rotation.x" : "rot_x",
00021 "tool_frame.transform.rotation.y" : "rot_y",
00022 "tool_frame.transform.rotation.z" : "rot_z",
00023 "tool_frame.transform.rotation.w" : "rot_w",
00024 "pc_pt.x" : "pc_pt_x",
00025 "pc_pt.y" : "pc_pt_y",
00026 "pc_pt.z" : "pc_pt_z",
00027 "pc_normal.x" : "pc_norm_x",
00028 "pc_normal.y" : "pc_norm_y",
00029 "pc_normal.z" : "pc_norm_z",
00030 "pc_dist" : "pc_dist",
00031 "wrench.force.x" : "force_x",
00032 "wrench.force.y" : "force_y",
00033 "wrench.force.z" : "force_z",
00034 "wrench.torque.x" : "torque_x",
00035 "wrench.torque.y" : "torque_y",
00036 "wrench.torque.z" : "torque_z",
00037 "force_magnitude" : "force_mag",
00038 "force_normal" : "force_norm",
00039 "force_tangental" : "force_tan",
00040 "contact_period" : "contact_period",
00041 "time_from_contact_start" : "time_contact",
00042 "ell_coords.x" : "lat",
00043 "ell_coords.y" : "long",
00044 "ell_coords.z" : "height",
00045 }
00046 data = {}
00047 for field in field_map:
00048 data[field_map[field]] = []
00049
00050 bag = rosbag.Bag(sys.argv[1], 'r')
00051 for topic, fp, t in bag.read_messages(topics=["/force_processed"]):
00052 for field in field_map:
00053 exec("data['%s'].append(fp.%s)" % (field_map[field], field))
00054 bag.close()
00055
00056 output_file = ".".join(sys.argv[1].split(".")[:-1] + ["mat"])
00057 scipy.io.savemat(output_file, data)
00058 print "Saved mat file to:", output_file
00059
00060 if __name__ == "__main__":
00061 main()