$search
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 #flag to mark the presence of a Header object 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 #message fields cannot be None, assign default values for those that are 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 as se: self._check_types(se) 00309 except TypeError as 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 range(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 range(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 as e: 00416 raise roslib.message.DeserializationError(e) #most likely buffer underfill 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 as se: self._check_types(se) 00471 except TypeError as 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 range(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 range(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 as e: 00580 raise roslib.message.DeserializationError(e) #most likely buffer underfill 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")