vicon_bag_to_npz.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 # Software License Agreement (BSD License)
00004 #
00005 #  Copyright (c) 2011, UC Regents
00006 #  All rights reserved.
00007 #
00008 #  Redistribution and use in source and binary forms, with or without
00009 #  modification, are permitted provided that the following conditions
00010 #  are met:
00011 #
00012 #   * Redistributions of source code must retain the above copyright
00013 #     notice, this list of conditions and the following disclaimer.
00014 #   * Redistributions in binary form must reproduce the above
00015 #     copyright notice, this list of conditions and the following
00016 #     disclaimer in the documentation and/or other materials provided
00017 #     with the distribution.
00018 #   * Neither the name of the University of California nor the names of its
00019 #     contributors may be used to endorse or promote products derived
00020 #     from this software without specific prior written permission.
00021 #
00022 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00023 #  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00024 #  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00025 #  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00026 #  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00027 #  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00028 #  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00029 #  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00030 #  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00031 #  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00032 #  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00033 #  POSSIBILITY OF SUCH DAMAGE.
00034 
00035 
00036 import sys
00037 
00038 import roslib
00039 roslib.load_manifest('starmac_vicon_testing')
00040 
00041 from starmac_tools.load_bag import BagLoader
00042 import numpy as np
00043 
00044 def load_bag(bagfile):
00045     bag = BagLoader(bagfile)
00046     
00047     t = bag.vicon__recv__direct_output___header__time
00048     
00049     (x, y, z) = (bag.vicon__recv__direct_output_transform_translation_x,
00050                  bag.vicon__recv__direct_output_transform_translation_y,
00051                  bag.vicon__recv__direct_output_transform_translation_z)
00052     
00053     (qx, qy, qz, qw) = ( bag.vicon__recv__direct_output_transform_rotation_x,
00054                          bag.vicon__recv__direct_output_transform_rotation_y,
00055                          bag.vicon__recv__direct_output_transform_rotation_z,
00056                          bag.vicon__recv__direct_output_transform_rotation_w)
00057 
00058     return t, x, y, z, qx, qy, qz, qw
00059 
00060 def load_npz(npzfile):
00061     npzfile = np.load(npzfile)
00062     return tuple(npzfile[foo] for foo in ('t','x','y','z','qx','qy','qz','qw'))
00063 
00064 def save_npz(npzfile,t, x, y, z, qx, qy, qz, qw):
00065     np.savez(npzfile, **{'x':x,'y':y,'z':z,'t':t,'qx':qx,'qy':qy,'qz':qz,'qw':qw})
00066     
00067 def bag_to_npz(bag_fname):
00068     assert bag_fname.endswith('.bag')
00069     npz_fname = ''.join(bag_fname.split('.')[:-1]) + '.npz'
00070     print "Converting %s -> %s ..." % (bag_fname, npz_fname)
00071     save_npz(npz_fname, *load_bag(bag_fname))
00072 
00073 if __name__ == "__main__":
00074     fnames = sys.argv[1:]
00075     for fname in fnames:
00076         bag_to_npz(fname)


starmac_vicon_testing
Author(s): Patrick Bouffard
autogenerated on Sun Jan 5 2014 11:39:10