Go to the documentation of this file.00001
00002
00003 import rospy
00004 import roslib
00005 import roslib.message
00006 import sys
00007 from roslib.message import get_message_class
00008 from jsk_network_tools.silverhammer_util import *
00009 from struct import calcsize
00010 from StringIO import StringIO
00011
00012 def usage():
00013 print "silverhammer_lowspeed_check_size.py message_packege/Message"
00014
00015 def checkSize(class_str):
00016 try:
00017 message_class = get_message_class(class_str)
00018 format = msgToStructFormat(message_class)
00019 ros_msg = message_class()
00020 ros_buffer = StringIO()
00021 rospy.msg.serialize_message(ros_buffer, 0, ros_msg)
00022 print class_str
00023 print " binary format: ", format
00024 print " size: ", calcsize(format), "bytes"
00025 print " ", 8 * calcsize(format), "bits"
00026 print " size w/ UDP header: ", calcsize(format) + 36, "bytes"
00027 print " ", 8 * (calcsize(format) + 36), "bits"
00028 print " ROS size: ", ros_buffer.len, "bytes"
00029 print " ", ros_buffer.len * 8, "bits"
00030 except Exception, e:
00031 print "cannot serialize %s" % class_str
00032 print " error: ", e.message
00033 return
00034
00035
00036 if __name__ == "__main__":
00037 if len(sys.argv) != 2:
00038 usage()
00039 sys.exit(1)
00040 checkSize(sys.argv[1])