robot_monitor_bag_plugin.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #
3 # Software License Agreement (BSD License)
4 #
5 # Copyright (c) 2014, Austin Hendrix
6 # All rights reserved.
7 #
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
10 # are met:
11 #
12 # * Redistributions of source code must retain the above copyright
13 # notice, this list of conditions and the following disclaimer.
14 # * Redistributions in binary form must reproduce the above
15 # copyright notice, this list of conditions and the following
16 # disclaimer in the documentation and/or other materials provided
17 # with the distribution.
18 # * Neither the name of Austin Hendrix. nor the names of its
19 # contributors may be used to endorse or promote products derived
20 # from this software without specific prior written permission.
21 #
22 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 # POSSIBILITY OF SUCH DAMAGE.
34 #
35 # Author: Austin Hendrix
36 
37 
38 from rqt_bag.plugins.plugin import Plugin
39 from rqt_bag import TopicMessageView
40 
41 from rqt_robot_monitor.robot_monitor import RobotMonitorWidget
42 from diagnostic_msgs.msg import DiagnosticArray, DiagnosticStatus
43 
45  def __init__(self):
46  pass
47 
48  def get_view_class(self):
49  return RobotMonitorBagView
50 
51  def get_renderer_class(self):
52  return None
53 
54  def get_message_types(self):
55  return ['diagnostic_msgs/DiagnosticArray']
56 
57 class RobotMonitorBagView(TopicMessageView):
58  name = 'Diagnostics Viewer'
59 
60  def __init__(self, timeline, parent, topic):
61  super(RobotMonitorBagView, self).__init__(timeline, parent, topic)
62 
63  self._widget = RobotMonitorWidget(parent)
64  parent.layout().addWidget(self._widget)
65 
66  def message_viewed(self, bag, msg_details):
67  msg = msg_details[1]
68  # generic conversion of DiagnosticStatus from bag type to current type
69  # this should be fairly robust to minor changes in the message format
70  status = [DiagnosticStatus(**dict((slot, getattr(m, slot)) for slot in m.__slots__)) for m in msg.status]
71  msg = DiagnosticArray(msg.header, status)
72  self._widget.message_updated.emit(msg)
73 
74  def close(self):
75  self._widget.shutdown() # Closes unclosed popup windows.


rqt_robot_monitor
Author(s): Austin Hendrix, Isaac Saito, Ze'ev Klapow, Kevin Watts, Josh Faust
autogenerated on Thu Jun 4 2020 03:46:53