28 from __future__
import division, with_statement
30 from cStringIO
import StringIO
32 from io
import StringIO
34 from python_qt_binding.QtCore
import qWarning
38 from rostopic
import ROSTopicHz
55 self.
message_class = roslib.message.get_message_class(topic_type)
56 except Exception
as e:
58 qWarning(
'TopicInfo.__init__(): %s' % (e))
61 self.
error =
'can not get message class for type "%s"' % topic_type
62 qWarning(
'TopicInfo.__init__(): topic "%s": %s' % (topic_name, self.
error))
64 def _reset_data(self):
89 ROSTopicHz.callback_hz(self, message)
97 message.serialize(buff)
101 buff.seek(0, os.SEEK_END)
102 self.
sizes.append(buff.tell())
106 if len(self.
timestamps) > self.window_size - 1:
115 return None,
None,
None,
None 116 current_time = rospy.get_time()
118 return None,
None,
None,
None 121 total = sum(self.
sizes)
122 bytes_per_s = total / (current_time - self.
timestamps[0])
124 max_size = max(self.
sizes)
125 min_size = min(self.
sizes)
126 return bytes_per_s, mean_size, min_size, max_size
130 return None,
None,
None,
None 133 mean = sum(self.
times) / n
134 rate = 1. / mean
if mean > 0.
else 0
135 min_delta = min(self.
times)
136 max_delta = max(self.
times)
137 return rate, mean, min_delta, max_delta
def message_callback(self, message)
def __init__(self, topic_name, topic_type)
def stop_monitoring(self)
def toggle_monitoring(self)
def start_monitoring(self)