00001 """autogenerated by genmsg_py from CameraMeasurement.msg. Do not edit."""
00002 import roslib.message
00003 import struct
00004
00005 import sensor_msgs.msg
00006 import calibration_msgs.msg
00007 import geometry_msgs.msg
00008 import std_msgs.msg
00009
00010 class CameraMeasurement(roslib.message.Message):
00011 _md5sum = "4c0854cdc23435e88220144133a1c813"
00012 _type = "camera_pose_calibration/CameraMeasurement"
00013 _has_header = True
00014 _full_text = """Header header
00015 string camera_id
00016 calibration_msgs/CalibrationPattern features
00017 sensor_msgs/CameraInfo cam_info
00018
00019 ================================================================================
00020 MSG: std_msgs/Header
00021 # Standard metadata for higher-level stamped data types.
00022 # This is generally used to communicate timestamped data
00023 # in a particular coordinate frame.
00024 #
00025 # sequence ID: consecutively increasing ID
00026 uint32 seq
00027 #Two-integer timestamp that is expressed as:
00028 # * stamp.secs: seconds (stamp_secs) since epoch
00029 # * stamp.nsecs: nanoseconds since stamp_secs
00030 # time-handling sugar is provided by the client library
00031 time stamp
00032 #Frame this data is associated with
00033 # 0: no frame
00034 # 1: global frame
00035 string frame_id
00036
00037 ================================================================================
00038 MSG: calibration_msgs/CalibrationPattern
00039 Header header
00040 geometry_msgs/Point32[] object_points
00041 ImagePoint[] image_points
00042 uint8 success
00043
00044 ================================================================================
00045 MSG: geometry_msgs/Point32
00046 # This contains the position of a point in free space(with 32 bits of precision).
00047 # It is recommeded to use Point wherever possible instead of Point32.
00048 #
00049 # This recommendation is to promote interoperability.
00050 #
00051 # This message is designed to take up less space when sending
00052 # lots of points at once, as in the case of a PointCloud.
00053
00054 float32 x
00055 float32 y
00056 float32 z
00057 ================================================================================
00058 MSG: calibration_msgs/ImagePoint
00059 float32 x
00060 float32 y
00061
00062 ================================================================================
00063 MSG: sensor_msgs/CameraInfo
00064 # This message defines meta information for a camera. It should be in a
00065 # camera namespace on topic "camera_info" and accompanied by up to five
00066 # image topics named:
00067 #
00068 # image_raw - raw data from the camera driver, possibly Bayer encoded
00069 # image - monochrome, distorted
00070 # image_color - color, distorted
00071 # image_rect - monochrome, rectified
00072 # image_rect_color - color, rectified
00073 #
00074 # The image_pipeline contains packages (image_proc, stereo_image_proc)
00075 # for producing the four processed image topics from image_raw and
00076 # camera_info. The meaning of the camera parameters are described in
00077 # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
00078 #
00079 # The image_geometry package provides a user-friendly interface to
00080 # common operations using this meta information. If you want to, e.g.,
00081 # project a 3d point into image coordinates, we strongly recommend
00082 # using image_geometry.
00083 #
00084 # If the camera is uncalibrated, the matrices D, K, R, P should be left
00085 # zeroed out. In particular, clients may assume that K[0] == 0.0
00086 # indicates an uncalibrated camera.
00087
00088 #######################################################################
00089 # Image acquisition info #
00090 #######################################################################
00091
00092 # Time of image acquisition, camera coordinate frame ID
00093 Header header # Header timestamp should be acquisition time of image
00094 # Header frame_id should be optical frame of camera
00095 # origin of frame should be optical center of camera
00096 # +x should point to the right in the image
00097 # +y should point down in the image
00098 # +z should point into the plane of the image
00099
00100
00101 #######################################################################
00102 # Calibration Parameters #
00103 #######################################################################
00104 # These are fixed during camera calibration. Their values will be the #
00105 # same in all messages until the camera is recalibrated. Note that #
00106 # self-calibrating systems may "recalibrate" frequently. #
00107 # #
00108 # The internal parameters can be used to warp a raw (distorted) image #
00109 # to: #
00110 # 1. An undistorted image (requires D and K) #
00111 # 2. A rectified image (requires D, K, R) #
00112 # The projection matrix P projects 3D points into the rectified image.#
00113 #######################################################################
00114
00115 # The image dimensions with which the camera was calibrated. Normally
00116 # this will be the full camera resolution in pixels.
00117 uint32 height
00118 uint32 width
00119
00120 # The distortion model used. Supported models are listed in
00121 # sensor_msgs/distortion_models.h. For most cameras, "plumb_bob" - a
00122 # simple model of radial and tangential distortion - is sufficent.
00123 string distortion_model
00124
00125 # The distortion parameters, size depending on the distortion model.
00126 # For "plumb_bob", the 5 parameters are: (k1, k2, t1, t2, k3).
00127 float64[] D
00128
00129 # Intrinsic camera matrix for the raw (distorted) images.
00130 # [fx 0 cx]
00131 # K = [ 0 fy cy]
00132 # [ 0 0 1]
00133 # Projects 3D points in the camera coordinate frame to 2D pixel
00134 # coordinates using the focal lengths (fx, fy) and principal point
00135 # (cx, cy).
00136 float64[9] K # 3x3 row-major matrix
00137
00138 # Rectification matrix (stereo cameras only)
00139 # A rotation matrix aligning the camera coordinate system to the ideal
00140 # stereo image plane so that epipolar lines in both stereo images are
00141 # parallel.
00142 float64[9] R # 3x3 row-major matrix
00143
00144 # Projection/camera matrix
00145 # [fx' 0 cx' Tx]
00146 # P = [ 0 fy' cy' Ty]
00147 # [ 0 0 1 0]
00148 # By convention, this matrix specifies the intrinsic (camera) matrix
00149 # of the processed (rectified) image. That is, the left 3x3 portion
00150 # is the normal camera intrinsic matrix for the rectified image.
00151 # It projects 3D points in the camera coordinate frame to 2D pixel
00152 # coordinates using the focal lengths (fx', fy') and principal point
00153 # (cx', cy') - these may differ from the values in K.
00154 # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
00155 # also have R = the identity and P[1:3,1:3] = K.
00156 # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
00157 # position of the optical center of the second camera in the first
00158 # camera's frame. We assume Tz = 0 so both cameras are in the same
00159 # stereo image plane. The first camera always has Tx = Ty = 0. For
00160 # the right (second) camera of a horizontal stereo pair, Ty = 0 and
00161 # Tx = -fx' * B, where B is the baseline between the cameras.
00162 # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
00163 # the rectified image is given by:
00164 # [u v w]' = P * [X Y Z 1]'
00165 # x = u / w
00166 # y = v / w
00167 # This holds for both images of a stereo pair.
00168 float64[12] P # 3x4 row-major matrix
00169
00170
00171 #######################################################################
00172 # Operational Parameters #
00173 #######################################################################
00174 # These define the image region actually captured by the camera #
00175 # driver. Although they affect the geometry of the output image, they #
00176 # may be changed freely without recalibrating the camera. #
00177 #######################################################################
00178
00179 # Binning refers here to any camera setting which combines rectangular
00180 # neighborhoods of pixels into larger "super-pixels." It reduces the
00181 # resolution of the output image to
00182 # (width / binning_x) x (height / binning_y).
00183 # The default values binning_x = binning_y = 0 is considered the same
00184 # as binning_x = binning_y = 1 (no subsampling).
00185 uint32 binning_x
00186 uint32 binning_y
00187
00188 # Region of interest (subwindow of full camera resolution), given in
00189 # full resolution (unbinned) image coordinates. A particular ROI
00190 # always denotes the same window of pixels on the camera sensor,
00191 # regardless of binning settings.
00192 # The default setting of roi (all values 0) is considered the same as
00193 # full resolution (roi.width = width, roi.height = height).
00194 RegionOfInterest roi
00195
00196 ================================================================================
00197 MSG: sensor_msgs/RegionOfInterest
00198 # This message is used to specify a region of interest within an image.
00199 #
00200 # When used to specify the ROI setting of the camera when the image was
00201 # taken, the height and width fields should either match the height and
00202 # width fields for the associated image; or height = width = 0
00203 # indicates that the full resolution image was captured.
00204
00205 uint32 x_offset # Leftmost pixel of the ROI
00206 # (0 if the ROI includes the left edge of the image)
00207 uint32 y_offset # Topmost pixel of the ROI
00208 # (0 if the ROI includes the top edge of the image)
00209 uint32 height # Height of ROI
00210 uint32 width # Width of ROI
00211
00212 # True if a distinct rectified ROI should be calculated from the "raw"
00213 # ROI in this message. Typically this should be False if the full image
00214 # is captured (ROI not used), and True if a subwindow is captured (ROI
00215 # used).
00216 bool do_rectify
00217
00218 """
00219 __slots__ = ['header','camera_id','features','cam_info']
00220 _slot_types = ['Header','string','calibration_msgs/CalibrationPattern','sensor_msgs/CameraInfo']
00221
00222 def __init__(self, *args, **kwds):
00223 """
00224 Constructor. Any message fields that are implicitly/explicitly
00225 set to None will be assigned a default value. The recommend
00226 use is keyword arguments as this is more robust to future message
00227 changes. You cannot mix in-order arguments and keyword arguments.
00228
00229 The available fields are:
00230 header,camera_id,features,cam_info
00231
00232 @param args: complete set of field values, in .msg order
00233 @param kwds: use keyword arguments corresponding to message field names
00234 to set specific fields.
00235 """
00236 if args or kwds:
00237 super(CameraMeasurement, self).__init__(*args, **kwds)
00238
00239 if self.header is None:
00240 self.header = std_msgs.msg._Header.Header()
00241 if self.camera_id is None:
00242 self.camera_id = ''
00243 if self.features is None:
00244 self.features = calibration_msgs.msg.CalibrationPattern()
00245 if self.cam_info is None:
00246 self.cam_info = sensor_msgs.msg.CameraInfo()
00247 else:
00248 self.header = std_msgs.msg._Header.Header()
00249 self.camera_id = ''
00250 self.features = calibration_msgs.msg.CalibrationPattern()
00251 self.cam_info = sensor_msgs.msg.CameraInfo()
00252
00253 def _get_types(self):
00254 """
00255 internal API method
00256 """
00257 return self._slot_types
00258
00259 def serialize(self, buff):
00260 """
00261 serialize message into buffer
00262 @param buff: buffer
00263 @type buff: StringIO
00264 """
00265 try:
00266 _x = self
00267 buff.write(_struct_3I.pack(_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs))
00268 _x = self.header.frame_id
00269 length = len(_x)
00270 buff.write(struct.pack('<I%ss'%length, length, _x))
00271 _x = self.camera_id
00272 length = len(_x)
00273 buff.write(struct.pack('<I%ss'%length, length, _x))
00274 _x = self
00275 buff.write(_struct_3I.pack(_x.features.header.seq, _x.features.header.stamp.secs, _x.features.header.stamp.nsecs))
00276 _x = self.features.header.frame_id
00277 length = len(_x)
00278 buff.write(struct.pack('<I%ss'%length, length, _x))
00279 length = len(self.features.object_points)
00280 buff.write(_struct_I.pack(length))
00281 for val1 in self.features.object_points:
00282 _x = val1
00283 buff.write(_struct_3f.pack(_x.x, _x.y, _x.z))
00284 length = len(self.features.image_points)
00285 buff.write(_struct_I.pack(length))
00286 for val1 in self.features.image_points:
00287 _x = val1
00288 buff.write(_struct_2f.pack(_x.x, _x.y))
00289 _x = self
00290 buff.write(_struct_B3I.pack(_x.features.success, _x.cam_info.header.seq, _x.cam_info.header.stamp.secs, _x.cam_info.header.stamp.nsecs))
00291 _x = self.cam_info.header.frame_id
00292 length = len(_x)
00293 buff.write(struct.pack('<I%ss'%length, length, _x))
00294 _x = self
00295 buff.write(_struct_2I.pack(_x.cam_info.height, _x.cam_info.width))
00296 _x = self.cam_info.distortion_model
00297 length = len(_x)
00298 buff.write(struct.pack('<I%ss'%length, length, _x))
00299 length = len(self.cam_info.D)
00300 buff.write(_struct_I.pack(length))
00301 pattern = '<%sd'%length
00302 buff.write(struct.pack(pattern, *self.cam_info.D))
00303 buff.write(_struct_9d.pack(*self.cam_info.K))
00304 buff.write(_struct_9d.pack(*self.cam_info.R))
00305 buff.write(_struct_12d.pack(*self.cam_info.P))
00306 _x = self
00307 buff.write(_struct_6IB.pack(_x.cam_info.binning_x, _x.cam_info.binning_y, _x.cam_info.roi.x_offset, _x.cam_info.roi.y_offset, _x.cam_info.roi.height, _x.cam_info.roi.width, _x.cam_info.roi.do_rectify))
00308 except struct.error, se: self._check_types(se)
00309 except TypeError, te: self._check_types(te)
00310
00311 def deserialize(self, str):
00312 """
00313 unpack serialized message in str into this message instance
00314 @param str: byte array of serialized message
00315 @type str: str
00316 """
00317 try:
00318 if self.header is None:
00319 self.header = std_msgs.msg._Header.Header()
00320 if self.features is None:
00321 self.features = calibration_msgs.msg.CalibrationPattern()
00322 if self.cam_info is None:
00323 self.cam_info = sensor_msgs.msg.CameraInfo()
00324 end = 0
00325 _x = self
00326 start = end
00327 end += 12
00328 (_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00329 start = end
00330 end += 4
00331 (length,) = _struct_I.unpack(str[start:end])
00332 start = end
00333 end += length
00334 self.header.frame_id = str[start:end]
00335 start = end
00336 end += 4
00337 (length,) = _struct_I.unpack(str[start:end])
00338 start = end
00339 end += length
00340 self.camera_id = str[start:end]
00341 _x = self
00342 start = end
00343 end += 12
00344 (_x.features.header.seq, _x.features.header.stamp.secs, _x.features.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00345 start = end
00346 end += 4
00347 (length,) = _struct_I.unpack(str[start:end])
00348 start = end
00349 end += length
00350 self.features.header.frame_id = str[start:end]
00351 start = end
00352 end += 4
00353 (length,) = _struct_I.unpack(str[start:end])
00354 self.features.object_points = []
00355 for i in xrange(0, length):
00356 val1 = geometry_msgs.msg.Point32()
00357 _x = val1
00358 start = end
00359 end += 12
00360 (_x.x, _x.y, _x.z,) = _struct_3f.unpack(str[start:end])
00361 self.features.object_points.append(val1)
00362 start = end
00363 end += 4
00364 (length,) = _struct_I.unpack(str[start:end])
00365 self.features.image_points = []
00366 for i in xrange(0, length):
00367 val1 = calibration_msgs.msg.ImagePoint()
00368 _x = val1
00369 start = end
00370 end += 8
00371 (_x.x, _x.y,) = _struct_2f.unpack(str[start:end])
00372 self.features.image_points.append(val1)
00373 _x = self
00374 start = end
00375 end += 13
00376 (_x.features.success, _x.cam_info.header.seq, _x.cam_info.header.stamp.secs, _x.cam_info.header.stamp.nsecs,) = _struct_B3I.unpack(str[start:end])
00377 start = end
00378 end += 4
00379 (length,) = _struct_I.unpack(str[start:end])
00380 start = end
00381 end += length
00382 self.cam_info.header.frame_id = str[start:end]
00383 _x = self
00384 start = end
00385 end += 8
00386 (_x.cam_info.height, _x.cam_info.width,) = _struct_2I.unpack(str[start:end])
00387 start = end
00388 end += 4
00389 (length,) = _struct_I.unpack(str[start:end])
00390 start = end
00391 end += length
00392 self.cam_info.distortion_model = str[start:end]
00393 start = end
00394 end += 4
00395 (length,) = _struct_I.unpack(str[start:end])
00396 pattern = '<%sd'%length
00397 start = end
00398 end += struct.calcsize(pattern)
00399 self.cam_info.D = struct.unpack(pattern, str[start:end])
00400 start = end
00401 end += 72
00402 self.cam_info.K = _struct_9d.unpack(str[start:end])
00403 start = end
00404 end += 72
00405 self.cam_info.R = _struct_9d.unpack(str[start:end])
00406 start = end
00407 end += 96
00408 self.cam_info.P = _struct_12d.unpack(str[start:end])
00409 _x = self
00410 start = end
00411 end += 25
00412 (_x.cam_info.binning_x, _x.cam_info.binning_y, _x.cam_info.roi.x_offset, _x.cam_info.roi.y_offset, _x.cam_info.roi.height, _x.cam_info.roi.width, _x.cam_info.roi.do_rectify,) = _struct_6IB.unpack(str[start:end])
00413 self.cam_info.roi.do_rectify = bool(self.cam_info.roi.do_rectify)
00414 return self
00415 except struct.error, e:
00416 raise roslib.message.DeserializationError(e)
00417
00418
00419 def serialize_numpy(self, buff, numpy):
00420 """
00421 serialize message with numpy array types into buffer
00422 @param buff: buffer
00423 @type buff: StringIO
00424 @param numpy: numpy python module
00425 @type numpy module
00426 """
00427 try:
00428 _x = self
00429 buff.write(_struct_3I.pack(_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs))
00430 _x = self.header.frame_id
00431 length = len(_x)
00432 buff.write(struct.pack('<I%ss'%length, length, _x))
00433 _x = self.camera_id
00434 length = len(_x)
00435 buff.write(struct.pack('<I%ss'%length, length, _x))
00436 _x = self
00437 buff.write(_struct_3I.pack(_x.features.header.seq, _x.features.header.stamp.secs, _x.features.header.stamp.nsecs))
00438 _x = self.features.header.frame_id
00439 length = len(_x)
00440 buff.write(struct.pack('<I%ss'%length, length, _x))
00441 length = len(self.features.object_points)
00442 buff.write(_struct_I.pack(length))
00443 for val1 in self.features.object_points:
00444 _x = val1
00445 buff.write(_struct_3f.pack(_x.x, _x.y, _x.z))
00446 length = len(self.features.image_points)
00447 buff.write(_struct_I.pack(length))
00448 for val1 in self.features.image_points:
00449 _x = val1
00450 buff.write(_struct_2f.pack(_x.x, _x.y))
00451 _x = self
00452 buff.write(_struct_B3I.pack(_x.features.success, _x.cam_info.header.seq, _x.cam_info.header.stamp.secs, _x.cam_info.header.stamp.nsecs))
00453 _x = self.cam_info.header.frame_id
00454 length = len(_x)
00455 buff.write(struct.pack('<I%ss'%length, length, _x))
00456 _x = self
00457 buff.write(_struct_2I.pack(_x.cam_info.height, _x.cam_info.width))
00458 _x = self.cam_info.distortion_model
00459 length = len(_x)
00460 buff.write(struct.pack('<I%ss'%length, length, _x))
00461 length = len(self.cam_info.D)
00462 buff.write(_struct_I.pack(length))
00463 pattern = '<%sd'%length
00464 buff.write(self.cam_info.D.tostring())
00465 buff.write(self.cam_info.K.tostring())
00466 buff.write(self.cam_info.R.tostring())
00467 buff.write(self.cam_info.P.tostring())
00468 _x = self
00469 buff.write(_struct_6IB.pack(_x.cam_info.binning_x, _x.cam_info.binning_y, _x.cam_info.roi.x_offset, _x.cam_info.roi.y_offset, _x.cam_info.roi.height, _x.cam_info.roi.width, _x.cam_info.roi.do_rectify))
00470 except struct.error, se: self._check_types(se)
00471 except TypeError, te: self._check_types(te)
00472
00473 def deserialize_numpy(self, str, numpy):
00474 """
00475 unpack serialized message in str into this message instance using numpy for array types
00476 @param str: byte array of serialized message
00477 @type str: str
00478 @param numpy: numpy python module
00479 @type numpy: module
00480 """
00481 try:
00482 if self.header is None:
00483 self.header = std_msgs.msg._Header.Header()
00484 if self.features is None:
00485 self.features = calibration_msgs.msg.CalibrationPattern()
00486 if self.cam_info is None:
00487 self.cam_info = sensor_msgs.msg.CameraInfo()
00488 end = 0
00489 _x = self
00490 start = end
00491 end += 12
00492 (_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00493 start = end
00494 end += 4
00495 (length,) = _struct_I.unpack(str[start:end])
00496 start = end
00497 end += length
00498 self.header.frame_id = str[start:end]
00499 start = end
00500 end += 4
00501 (length,) = _struct_I.unpack(str[start:end])
00502 start = end
00503 end += length
00504 self.camera_id = str[start:end]
00505 _x = self
00506 start = end
00507 end += 12
00508 (_x.features.header.seq, _x.features.header.stamp.secs, _x.features.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00509 start = end
00510 end += 4
00511 (length,) = _struct_I.unpack(str[start:end])
00512 start = end
00513 end += length
00514 self.features.header.frame_id = str[start:end]
00515 start = end
00516 end += 4
00517 (length,) = _struct_I.unpack(str[start:end])
00518 self.features.object_points = []
00519 for i in xrange(0, length):
00520 val1 = geometry_msgs.msg.Point32()
00521 _x = val1
00522 start = end
00523 end += 12
00524 (_x.x, _x.y, _x.z,) = _struct_3f.unpack(str[start:end])
00525 self.features.object_points.append(val1)
00526 start = end
00527 end += 4
00528 (length,) = _struct_I.unpack(str[start:end])
00529 self.features.image_points = []
00530 for i in xrange(0, length):
00531 val1 = calibration_msgs.msg.ImagePoint()
00532 _x = val1
00533 start = end
00534 end += 8
00535 (_x.x, _x.y,) = _struct_2f.unpack(str[start:end])
00536 self.features.image_points.append(val1)
00537 _x = self
00538 start = end
00539 end += 13
00540 (_x.features.success, _x.cam_info.header.seq, _x.cam_info.header.stamp.secs, _x.cam_info.header.stamp.nsecs,) = _struct_B3I.unpack(str[start:end])
00541 start = end
00542 end += 4
00543 (length,) = _struct_I.unpack(str[start:end])
00544 start = end
00545 end += length
00546 self.cam_info.header.frame_id = str[start:end]
00547 _x = self
00548 start = end
00549 end += 8
00550 (_x.cam_info.height, _x.cam_info.width,) = _struct_2I.unpack(str[start:end])
00551 start = end
00552 end += 4
00553 (length,) = _struct_I.unpack(str[start:end])
00554 start = end
00555 end += length
00556 self.cam_info.distortion_model = str[start:end]
00557 start = end
00558 end += 4
00559 (length,) = _struct_I.unpack(str[start:end])
00560 pattern = '<%sd'%length
00561 start = end
00562 end += struct.calcsize(pattern)
00563 self.cam_info.D = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=length)
00564 start = end
00565 end += 72
00566 self.cam_info.K = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=9)
00567 start = end
00568 end += 72
00569 self.cam_info.R = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=9)
00570 start = end
00571 end += 96
00572 self.cam_info.P = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=12)
00573 _x = self
00574 start = end
00575 end += 25
00576 (_x.cam_info.binning_x, _x.cam_info.binning_y, _x.cam_info.roi.x_offset, _x.cam_info.roi.y_offset, _x.cam_info.roi.height, _x.cam_info.roi.width, _x.cam_info.roi.do_rectify,) = _struct_6IB.unpack(str[start:end])
00577 self.cam_info.roi.do_rectify = bool(self.cam_info.roi.do_rectify)
00578 return self
00579 except struct.error, e:
00580 raise roslib.message.DeserializationError(e)
00581
00582 _struct_I = roslib.message.struct_I
00583 _struct_6IB = struct.Struct("<6IB")
00584 _struct_12d = struct.Struct("<12d")
00585 _struct_9d = struct.Struct("<9d")
00586 _struct_3f = struct.Struct("<3f")
00587 _struct_3I = struct.Struct("<3I")
00588 _struct_2f = struct.Struct("<2f")
00589 _struct_2I = struct.Struct("<2I")
00590 _struct_B3I = struct.Struct("<B3I")