rxbag_plugin.py
Go to the documentation of this file.
00001 # Software License Agreement (BSD License)
00002 #
00003 # Copyright (c) 2010, Willow Garage, Inc.
00004 # All rights reserved.
00005 #
00006 # Redistribution and use in source and binary forms, with or without
00007 # modification, are permitted provided that the following conditions
00008 # are met:
00009 #
00010 #  * Redistributions of source code must retain the above copyright
00011 #    notice, this list of conditions and the following disclaimer.
00012 #  * Redistributions in binary form must reproduce the above
00013 #    copyright notice, this list of conditions and the following
00014 #    disclaimer in the documentation and/or other materials provided
00015 #    with the distribution.
00016 #  * Neither the name of Willow Garage, Inc. nor the names of its
00017 #    contributors may be used to endorse or promote products derived
00018 #    from this software without specific prior written permission.
00019 #
00020 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00021 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00022 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00023 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00024 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00025 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00026 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00027 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00028 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00029 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00030 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00031 # POSSIBILITY OF SUCH DAMAGE.
00032 #
00033 # Author: Tim Field
00034 
00035 PKG = 'tf2_visualization'
00036 import roslib; roslib.load_manifest(PKG)
00037 
00038 import wx
00039 
00040 from rxbag import bag_helper, TopicMessageView
00041 
00042 def get_rxbag_plugins():
00043     return [(FrameViewerView, None, ['tf/tfMessage'])]
00044 
00045 from tf2_visualization.frame_viewer_panel import FrameViewerPanel
00046 from tf2_visualization.tf_interface       import TFInterface
00047 
00048 class FrameViewerView(TopicMessageView):
00049     name = 'Frame Viewer'
00050 
00051     def __init__(self, timeline, parent):
00052         TopicMessageView.__init__(self, timeline, parent)
00053 
00054         self.tf_interface  = TFInterface(use_listener=False)
00055         self.viewer        = FrameViewerPanel(self.parent, self.tf_interface, False)
00056         self.buffer_length = roslib.rostime.Duration(10.0)
00057 
00058     def message_viewed(self, bag, msg_details):
00059         TopicMessageView.message_viewed(self, bag, msg_details)
00060 
00061         topic, _, t = msg_details[:3]
00062 
00063         tf_entries = list(self.timeline.get_entries_with_bags(topic, t - self.buffer_length, t))
00064         self.tf_interface.buffer.clear()
00065         for bag, entry in tf_entries:
00066             _, msg, msg_stamp = self.timeline.read_message(bag, entry.position)
00067             for transform in msg.transforms:
00068                 self.tf_interface.buffer.set_transform(transform, '')
00069         self.tf_interface.set_data_timestamp(t.to_sec())
00070 
00071     def message_cleared(self):
00072         TopicMessageView.message_cleared(self)
00073 
00074         self.tf_interface.buffer.clear()
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Friends


tf2_visualization
Author(s): Wim Meeussen
autogenerated on Mon Aug 19 2013 11:37:23