00001 """autogenerated by genmsg_py from TabletopDetectionRequest.msg. Do not edit."""
00002 import roslib.message
00003 import struct
00004
00005
00006 class TabletopDetectionRequest(roslib.message.Message):
00007 _md5sum = "f42d30308c026708dba683b43ccd22b8"
00008 _type = "tabletop_object_detector/TabletopDetectionRequest"
00009 _has_header = False
00010 _full_text = """
00011
00012
00013
00014
00015 bool return_clusters
00016
00017
00018
00019 bool return_models
00020
00021
00022 int32 num_models
00023
00024 """
00025 __slots__ = ['return_clusters','return_models','num_models']
00026 _slot_types = ['bool','bool','int32']
00027
00028 def __init__(self, *args, **kwds):
00029 """
00030 Constructor. Any message fields that are implicitly/explicitly
00031 set to None will be assigned a default value. The recommend
00032 use is keyword arguments as this is more robust to future message
00033 changes. You cannot mix in-order arguments and keyword arguments.
00034
00035 The available fields are:
00036 return_clusters,return_models,num_models
00037
00038 @param args: complete set of field values, in .msg order
00039 @param kwds: use keyword arguments corresponding to message field names
00040 to set specific fields.
00041 """
00042 if args or kwds:
00043 super(TabletopDetectionRequest, self).__init__(*args, **kwds)
00044
00045 if self.return_clusters is None:
00046 self.return_clusters = False
00047 if self.return_models is None:
00048 self.return_models = False
00049 if self.num_models is None:
00050 self.num_models = 0
00051 else:
00052 self.return_clusters = False
00053 self.return_models = False
00054 self.num_models = 0
00055
00056 def _get_types(self):
00057 """
00058 internal API method
00059 """
00060 return self._slot_types
00061
00062 def serialize(self, buff):
00063 """
00064 serialize message into buffer
00065 @param buff: buffer
00066 @type buff: StringIO
00067 """
00068 try:
00069 _x = self
00070 buff.write(_struct_2Bi.pack(_x.return_clusters, _x.return_models, _x.num_models))
00071 except struct.error, se: self._check_types(se)
00072 except TypeError, te: self._check_types(te)
00073
00074 def deserialize(self, str):
00075 """
00076 unpack serialized message in str into this message instance
00077 @param str: byte array of serialized message
00078 @type str: str
00079 """
00080 try:
00081 end = 0
00082 _x = self
00083 start = end
00084 end += 6
00085 (_x.return_clusters, _x.return_models, _x.num_models,) = _struct_2Bi.unpack(str[start:end])
00086 self.return_clusters = bool(self.return_clusters)
00087 self.return_models = bool(self.return_models)
00088 return self
00089 except struct.error, e:
00090 raise roslib.message.DeserializationError(e)
00091
00092
00093 def serialize_numpy(self, buff, numpy):
00094 """
00095 serialize message with numpy array types into buffer
00096 @param buff: buffer
00097 @type buff: StringIO
00098 @param numpy: numpy python module
00099 @type numpy module
00100 """
00101 try:
00102 _x = self
00103 buff.write(_struct_2Bi.pack(_x.return_clusters, _x.return_models, _x.num_models))
00104 except struct.error, se: self._check_types(se)
00105 except TypeError, te: self._check_types(te)
00106
00107 def deserialize_numpy(self, str, numpy):
00108 """
00109 unpack serialized message in str into this message instance using numpy for array types
00110 @param str: byte array of serialized message
00111 @type str: str
00112 @param numpy: numpy python module
00113 @type numpy: module
00114 """
00115 try:
00116 end = 0
00117 _x = self
00118 start = end
00119 end += 6
00120 (_x.return_clusters, _x.return_models, _x.num_models,) = _struct_2Bi.unpack(str[start:end])
00121 self.return_clusters = bool(self.return_clusters)
00122 self.return_models = bool(self.return_models)
00123 return self
00124 except struct.error, e:
00125 raise roslib.message.DeserializationError(e)
00126
00127 _struct_I = roslib.message.struct_I
00128 _struct_2Bi = struct.Struct("<2Bi")
00129 """autogenerated by genmsg_py from TabletopDetectionResponse.msg. Do not edit."""
00130 import roslib.message
00131 import struct
00132
00133 import tabletop_object_detector.msg
00134 import sensor_msgs.msg
00135 import geometry_msgs.msg
00136 import household_objects_database_msgs.msg
00137 import std_msgs.msg
00138
00139 class TabletopDetectionResponse(roslib.message.Message):
00140 _md5sum = "7d44034c76d519b86ba5c0a56ff5cf38"
00141 _type = "tabletop_object_detector/TabletopDetectionResponse"
00142 _has_header = False
00143 _full_text = """
00144 TabletopDetectionResult detection
00145
00146
00147 ================================================================================
00148 MSG: tabletop_object_detector/TabletopDetectionResult
00149 # Contains all the information from one run of the tabletop detection node
00150
00151 # The information for the plane that has been detected
00152 Table table
00153
00154 # The raw clusters detected in the scan
00155 sensor_msgs/PointCloud[] clusters
00156
00157 # The list of potential models that have been detected for each cluster
00158 # An empty list will be returned for a cluster that has no recognition results at all
00159 household_objects_database_msgs/DatabaseModelPoseList[] models
00160
00161 # For each cluster, the index of the list of models that was fit to that cluster
00162 # keep in mind that multiple raw clusters can correspond to a single fit
00163 int32[] cluster_model_indices
00164
00165 # Whether the detection has succeeded or failed
00166 int32 NO_CLOUD_RECEIVED = 1
00167 int32 NO_TABLE = 2
00168 int32 OTHER_ERROR = 3
00169 int32 SUCCESS = 4
00170 int32 result
00171
00172 ================================================================================
00173 MSG: tabletop_object_detector/Table
00174 # Informs that a planar table has been detected at a given location
00175
00176 # The pose gives you the transform that take you to the coordinate system
00177 # of the table, with the origin somewhere in the table plane and the
00178 # z axis normal to the plane
00179 geometry_msgs/PoseStamped pose
00180
00181 # These values give you the observed extents of the table, along x and y,
00182 # in the table's own coordinate system (above)
00183 # there is no guarantee that the origin of the table coordinate system is
00184 # inside the boundary defined by these values.
00185 float32 x_min
00186 float32 x_max
00187 float32 y_min
00188 float32 y_max
00189
00190 # There is no guarantee that the table doe NOT extend further than these
00191 # values; this is just as far as we've observed it.
00192
00193 ================================================================================
00194 MSG: geometry_msgs/PoseStamped
00195 # A Pose with reference coordinate frame and timestamp
00196 Header header
00197 Pose pose
00198
00199 ================================================================================
00200 MSG: std_msgs/Header
00201 # Standard metadata for higher-level stamped data types.
00202 # This is generally used to communicate timestamped data
00203 # in a particular coordinate frame.
00204 #
00205 # sequence ID: consecutively increasing ID
00206 uint32 seq
00207 #Two-integer timestamp that is expressed as:
00208 # * stamp.secs: seconds (stamp_secs) since epoch
00209 # * stamp.nsecs: nanoseconds since stamp_secs
00210 # time-handling sugar is provided by the client library
00211 time stamp
00212 #Frame this data is associated with
00213 # 0: no frame
00214 # 1: global frame
00215 string frame_id
00216
00217 ================================================================================
00218 MSG: geometry_msgs/Pose
00219 # A representation of pose in free space, composed of postion and orientation.
00220 Point position
00221 Quaternion orientation
00222
00223 ================================================================================
00224 MSG: geometry_msgs/Point
00225 # This contains the position of a point in free space
00226 float64 x
00227 float64 y
00228 float64 z
00229
00230 ================================================================================
00231 MSG: geometry_msgs/Quaternion
00232 # This represents an orientation in free space in quaternion form.
00233
00234 float64 x
00235 float64 y
00236 float64 z
00237 float64 w
00238
00239 ================================================================================
00240 MSG: sensor_msgs/PointCloud
00241 # This message holds a collection of 3d points, plus optional additional
00242 # information about each point.
00243
00244 # Time of sensor data acquisition, coordinate frame ID.
00245 Header header
00246
00247 # Array of 3d points. Each Point32 should be interpreted as a 3d point
00248 # in the frame given in the header.
00249 geometry_msgs/Point32[] points
00250
00251 # Each channel should have the same number of elements as points array,
00252 # and the data in each channel should correspond 1:1 with each point.
00253 # Channel names in common practice are listed in ChannelFloat32.msg.
00254 ChannelFloat32[] channels
00255
00256 ================================================================================
00257 MSG: geometry_msgs/Point32
00258 # This contains the position of a point in free space(with 32 bits of precision).
00259 # It is recommeded to use Point wherever possible instead of Point32.
00260 #
00261 # This recommendation is to promote interoperability.
00262 #
00263 # This message is designed to take up less space when sending
00264 # lots of points at once, as in the case of a PointCloud.
00265
00266 float32 x
00267 float32 y
00268 float32 z
00269 ================================================================================
00270 MSG: sensor_msgs/ChannelFloat32
00271 # This message is used by the PointCloud message to hold optional data
00272 # associated with each point in the cloud. The length of the values
00273 # array should be the same as the length of the points array in the
00274 # PointCloud, and each value should be associated with the corresponding
00275 # point.
00276
00277 # Channel names in existing practice include:
00278 # "u", "v" - row and column (respectively) in the left stereo image.
00279 # This is opposite to usual conventions but remains for
00280 # historical reasons. The newer PointCloud2 message has no
00281 # such problem.
00282 # "rgb" - For point clouds produced by color stereo cameras. uint8
00283 # (R,G,B) values packed into the least significant 24 bits,
00284 # in order.
00285 # "intensity" - laser or pixel intensity.
00286 # "distance"
00287
00288 # The channel name should give semantics of the channel (e.g.
00289 # "intensity" instead of "value").
00290 string name
00291
00292 # The values array should be 1-1 with the elements of the associated
00293 # PointCloud.
00294 float32[] values
00295
00296 ================================================================================
00297 MSG: household_objects_database_msgs/DatabaseModelPoseList
00298 # stores a list of possible database models recognition results
00299 DatabaseModelPose[] model_list
00300 ================================================================================
00301 MSG: household_objects_database_msgs/DatabaseModelPose
00302 # Informs that a specific model from the Model Database has been
00303 # identified at a certain location
00304
00305 # the database id of the model
00306 int32 model_id
00307
00308 # the pose that it can be found in
00309 geometry_msgs/PoseStamped pose
00310
00311 # a measure of the confidence level in this detection result
00312 float32 confidence
00313 """
00314 __slots__ = ['detection']
00315 _slot_types = ['tabletop_object_detector/TabletopDetectionResult']
00316
00317 def __init__(self, *args, **kwds):
00318 """
00319 Constructor. Any message fields that are implicitly/explicitly
00320 set to None will be assigned a default value. The recommend
00321 use is keyword arguments as this is more robust to future message
00322 changes. You cannot mix in-order arguments and keyword arguments.
00323
00324 The available fields are:
00325 detection
00326
00327 @param args: complete set of field values, in .msg order
00328 @param kwds: use keyword arguments corresponding to message field names
00329 to set specific fields.
00330 """
00331 if args or kwds:
00332 super(TabletopDetectionResponse, self).__init__(*args, **kwds)
00333 #message fields cannot be None, assign default values for those that are
00334 if self.detection is None:
00335 self.detection = tabletop_object_detector.msg.TabletopDetectionResult()
00336 else:
00337 self.detection = tabletop_object_detector.msg.TabletopDetectionResult()
00338
00339 def _get_types(self):
00340 """
00341 internal API method
00342 """
00343 return self._slot_types
00344
00345 def serialize(self, buff):
00346 """
00347 serialize message into buffer
00348 @param buff: buffer
00349 @type buff: StringIO
00350 """
00351 try:
00352 _x = self
00353 buff.write(_struct_3I.pack(_x.detection.table.pose.header.seq, _x.detection.table.pose.header.stamp.secs, _x.detection.table.pose.header.stamp.nsecs))
00354 _x = self.detection.table.pose.header.frame_id
00355 length = len(_x)
00356 buff.write(struct.pack('<I%ss'%length, length, _x))
00357 _x = self
00358 buff.write(_struct_7d4f.pack(_x.detection.table.pose.pose.position.x, _x.detection.table.pose.pose.position.y, _x.detection.table.pose.pose.position.z, _x.detection.table.pose.pose.orientation.x, _x.detection.table.pose.pose.orientation.y, _x.detection.table.pose.pose.orientation.z, _x.detection.table.pose.pose.orientation.w, _x.detection.table.x_min, _x.detection.table.x_max, _x.detection.table.y_min, _x.detection.table.y_max))
00359 length = len(self.detection.clusters)
00360 buff.write(_struct_I.pack(length))
00361 for val1 in self.detection.clusters:
00362 _v1 = val1.header
00363 buff.write(_struct_I.pack(_v1.seq))
00364 _v2 = _v1.stamp
00365 _x = _v2
00366 buff.write(_struct_2I.pack(_x.secs, _x.nsecs))
00367 _x = _v1.frame_id
00368 length = len(_x)
00369 buff.write(struct.pack('<I%ss'%length, length, _x))
00370 length = len(val1.points)
00371 buff.write(_struct_I.pack(length))
00372 for val2 in val1.points:
00373 _x = val2
00374 buff.write(_struct_3f.pack(_x.x, _x.y, _x.z))
00375 length = len(val1.channels)
00376 buff.write(_struct_I.pack(length))
00377 for val2 in val1.channels:
00378 _x = val2.name
00379 length = len(_x)
00380 buff.write(struct.pack('<I%ss'%length, length, _x))
00381 length = len(val2.values)
00382 buff.write(_struct_I.pack(length))
00383 pattern = '<%sf'%length
00384 buff.write(struct.pack(pattern, *val2.values))
00385 length = len(self.detection.models)
00386 buff.write(_struct_I.pack(length))
00387 for val1 in self.detection.models:
00388 length = len(val1.model_list)
00389 buff.write(_struct_I.pack(length))
00390 for val2 in val1.model_list:
00391 buff.write(_struct_i.pack(val2.model_id))
00392 _v3 = val2.pose
00393 _v4 = _v3.header
00394 buff.write(_struct_I.pack(_v4.seq))
00395 _v5 = _v4.stamp
00396 _x = _v5
00397 buff.write(_struct_2I.pack(_x.secs, _x.nsecs))
00398 _x = _v4.frame_id
00399 length = len(_x)
00400 buff.write(struct.pack('<I%ss'%length, length, _x))
00401 _v6 = _v3.pose
00402 _v7 = _v6.position
00403 _x = _v7
00404 buff.write(_struct_3d.pack(_x.x, _x.y, _x.z))
00405 _v8 = _v6.orientation
00406 _x = _v8
00407 buff.write(_struct_4d.pack(_x.x, _x.y, _x.z, _x.w))
00408 buff.write(_struct_f.pack(val2.confidence))
00409 length = len(self.detection.cluster_model_indices)
00410 buff.write(_struct_I.pack(length))
00411 pattern = '<%si'%length
00412 buff.write(struct.pack(pattern, *self.detection.cluster_model_indices))
00413 buff.write(_struct_i.pack(self.detection.result))
00414 except struct.error, se: self._check_types(se)
00415 except TypeError, te: self._check_types(te)
00416
00417 def deserialize(self, str):
00418 """
00419 unpack serialized message in str into this message instance
00420 @param str: byte array of serialized message
00421 @type str: str
00422 """
00423 try:
00424 if self.detection is None:
00425 self.detection = tabletop_object_detector.msg.TabletopDetectionResult()
00426 end = 0
00427 _x = self
00428 start = end
00429 end += 12
00430 (_x.detection.table.pose.header.seq, _x.detection.table.pose.header.stamp.secs, _x.detection.table.pose.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00431 start = end
00432 end += 4
00433 (length,) = _struct_I.unpack(str[start:end])
00434 start = end
00435 end += length
00436 self.detection.table.pose.header.frame_id = str[start:end]
00437 _x = self
00438 start = end
00439 end += 72
00440 (_x.detection.table.pose.pose.position.x, _x.detection.table.pose.pose.position.y, _x.detection.table.pose.pose.position.z, _x.detection.table.pose.pose.orientation.x, _x.detection.table.pose.pose.orientation.y, _x.detection.table.pose.pose.orientation.z, _x.detection.table.pose.pose.orientation.w, _x.detection.table.x_min, _x.detection.table.x_max, _x.detection.table.y_min, _x.detection.table.y_max,) = _struct_7d4f.unpack(str[start:end])
00441 start = end
00442 end += 4
00443 (length,) = _struct_I.unpack(str[start:end])
00444 self.detection.clusters = []
00445 for i in xrange(0, length):
00446 val1 = sensor_msgs.msg.PointCloud()
00447 _v9 = val1.header
00448 start = end
00449 end += 4
00450 (_v9.seq,) = _struct_I.unpack(str[start:end])
00451 _v10 = _v9.stamp
00452 _x = _v10
00453 start = end
00454 end += 8
00455 (_x.secs, _x.nsecs,) = _struct_2I.unpack(str[start:end])
00456 start = end
00457 end += 4
00458 (length,) = _struct_I.unpack(str[start:end])
00459 start = end
00460 end += length
00461 _v9.frame_id = str[start:end]
00462 start = end
00463 end += 4
00464 (length,) = _struct_I.unpack(str[start:end])
00465 val1.points = []
00466 for i in xrange(0, length):
00467 val2 = geometry_msgs.msg.Point32()
00468 _x = val2
00469 start = end
00470 end += 12
00471 (_x.x, _x.y, _x.z,) = _struct_3f.unpack(str[start:end])
00472 val1.points.append(val2)
00473 start = end
00474 end += 4
00475 (length,) = _struct_I.unpack(str[start:end])
00476 val1.channels = []
00477 for i in xrange(0, length):
00478 val2 = sensor_msgs.msg.ChannelFloat32()
00479 start = end
00480 end += 4
00481 (length,) = _struct_I.unpack(str[start:end])
00482 start = end
00483 end += length
00484 val2.name = str[start:end]
00485 start = end
00486 end += 4
00487 (length,) = _struct_I.unpack(str[start:end])
00488 pattern = '<%sf'%length
00489 start = end
00490 end += struct.calcsize(pattern)
00491 val2.values = struct.unpack(pattern, str[start:end])
00492 val1.channels.append(val2)
00493 self.detection.clusters.append(val1)
00494 start = end
00495 end += 4
00496 (length,) = _struct_I.unpack(str[start:end])
00497 self.detection.models = []
00498 for i in xrange(0, length):
00499 val1 = household_objects_database_msgs.msg.DatabaseModelPoseList()
00500 start = end
00501 end += 4
00502 (length,) = _struct_I.unpack(str[start:end])
00503 val1.model_list = []
00504 for i in xrange(0, length):
00505 val2 = household_objects_database_msgs.msg.DatabaseModelPose()
00506 start = end
00507 end += 4
00508 (val2.model_id,) = _struct_i.unpack(str[start:end])
00509 _v11 = val2.pose
00510 _v12 = _v11.header
00511 start = end
00512 end += 4
00513 (_v12.seq,) = _struct_I.unpack(str[start:end])
00514 _v13 = _v12.stamp
00515 _x = _v13
00516 start = end
00517 end += 8
00518 (_x.secs, _x.nsecs,) = _struct_2I.unpack(str[start:end])
00519 start = end
00520 end += 4
00521 (length,) = _struct_I.unpack(str[start:end])
00522 start = end
00523 end += length
00524 _v12.frame_id = str[start:end]
00525 _v14 = _v11.pose
00526 _v15 = _v14.position
00527 _x = _v15
00528 start = end
00529 end += 24
00530 (_x.x, _x.y, _x.z,) = _struct_3d.unpack(str[start:end])
00531 _v16 = _v14.orientation
00532 _x = _v16
00533 start = end
00534 end += 32
00535 (_x.x, _x.y, _x.z, _x.w,) = _struct_4d.unpack(str[start:end])
00536 start = end
00537 end += 4
00538 (val2.confidence,) = _struct_f.unpack(str[start:end])
00539 val1.model_list.append(val2)
00540 self.detection.models.append(val1)
00541 start = end
00542 end += 4
00543 (length,) = _struct_I.unpack(str[start:end])
00544 pattern = '<%si'%length
00545 start = end
00546 end += struct.calcsize(pattern)
00547 self.detection.cluster_model_indices = struct.unpack(pattern, str[start:end])
00548 start = end
00549 end += 4
00550 (self.detection.result,) = _struct_i.unpack(str[start:end])
00551 return self
00552 except struct.error, e:
00553 raise roslib.message.DeserializationError(e) #most likely buffer underfill
00554
00555
00556 def serialize_numpy(self, buff, numpy):
00557 """
00558 serialize message with numpy array types into buffer
00559 @param buff: buffer
00560 @type buff: StringIO
00561 @param numpy: numpy python module
00562 @type numpy module
00563 """
00564 try:
00565 _x = self
00566 buff.write(_struct_3I.pack(_x.detection.table.pose.header.seq, _x.detection.table.pose.header.stamp.secs, _x.detection.table.pose.header.stamp.nsecs))
00567 _x = self.detection.table.pose.header.frame_id
00568 length = len(_x)
00569 buff.write(struct.pack('<I%ss'%length, length, _x))
00570 _x = self
00571 buff.write(_struct_7d4f.pack(_x.detection.table.pose.pose.position.x, _x.detection.table.pose.pose.position.y, _x.detection.table.pose.pose.position.z, _x.detection.table.pose.pose.orientation.x, _x.detection.table.pose.pose.orientation.y, _x.detection.table.pose.pose.orientation.z, _x.detection.table.pose.pose.orientation.w, _x.detection.table.x_min, _x.detection.table.x_max, _x.detection.table.y_min, _x.detection.table.y_max))
00572 length = len(self.detection.clusters)
00573 buff.write(_struct_I.pack(length))
00574 for val1 in self.detection.clusters:
00575 _v17 = val1.header
00576 buff.write(_struct_I.pack(_v17.seq))
00577 _v18 = _v17.stamp
00578 _x = _v18
00579 buff.write(_struct_2I.pack(_x.secs, _x.nsecs))
00580 _x = _v17.frame_id
00581 length = len(_x)
00582 buff.write(struct.pack('<I%ss'%length, length, _x))
00583 length = len(val1.points)
00584 buff.write(_struct_I.pack(length))
00585 for val2 in val1.points:
00586 _x = val2
00587 buff.write(_struct_3f.pack(_x.x, _x.y, _x.z))
00588 length = len(val1.channels)
00589 buff.write(_struct_I.pack(length))
00590 for val2 in val1.channels:
00591 _x = val2.name
00592 length = len(_x)
00593 buff.write(struct.pack('<I%ss'%length, length, _x))
00594 length = len(val2.values)
00595 buff.write(_struct_I.pack(length))
00596 pattern = '<%sf'%length
00597 buff.write(val2.values.tostring())
00598 length = len(self.detection.models)
00599 buff.write(_struct_I.pack(length))
00600 for val1 in self.detection.models:
00601 length = len(val1.model_list)
00602 buff.write(_struct_I.pack(length))
00603 for val2 in val1.model_list:
00604 buff.write(_struct_i.pack(val2.model_id))
00605 _v19 = val2.pose
00606 _v20 = _v19.header
00607 buff.write(_struct_I.pack(_v20.seq))
00608 _v21 = _v20.stamp
00609 _x = _v21
00610 buff.write(_struct_2I.pack(_x.secs, _x.nsecs))
00611 _x = _v20.frame_id
00612 length = len(_x)
00613 buff.write(struct.pack('<I%ss'%length, length, _x))
00614 _v22 = _v19.pose
00615 _v23 = _v22.position
00616 _x = _v23
00617 buff.write(_struct_3d.pack(_x.x, _x.y, _x.z))
00618 _v24 = _v22.orientation
00619 _x = _v24
00620 buff.write(_struct_4d.pack(_x.x, _x.y, _x.z, _x.w))
00621 buff.write(_struct_f.pack(val2.confidence))
00622 length = len(self.detection.cluster_model_indices)
00623 buff.write(_struct_I.pack(length))
00624 pattern = '<%si'%length
00625 buff.write(self.detection.cluster_model_indices.tostring())
00626 buff.write(_struct_i.pack(self.detection.result))
00627 except struct.error, se: self._check_types(se)
00628 except TypeError, te: self._check_types(te)
00629
00630 def deserialize_numpy(self, str, numpy):
00631 """
00632 unpack serialized message in str into this message instance using numpy for array types
00633 @param str: byte array of serialized message
00634 @type str: str
00635 @param numpy: numpy python module
00636 @type numpy: module
00637 """
00638 try:
00639 if self.detection is None:
00640 self.detection = tabletop_object_detector.msg.TabletopDetectionResult()
00641 end = 0
00642 _x = self
00643 start = end
00644 end += 12
00645 (_x.detection.table.pose.header.seq, _x.detection.table.pose.header.stamp.secs, _x.detection.table.pose.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00646 start = end
00647 end += 4
00648 (length,) = _struct_I.unpack(str[start:end])
00649 start = end
00650 end += length
00651 self.detection.table.pose.header.frame_id = str[start:end]
00652 _x = self
00653 start = end
00654 end += 72
00655 (_x.detection.table.pose.pose.position.x, _x.detection.table.pose.pose.position.y, _x.detection.table.pose.pose.position.z, _x.detection.table.pose.pose.orientation.x, _x.detection.table.pose.pose.orientation.y, _x.detection.table.pose.pose.orientation.z, _x.detection.table.pose.pose.orientation.w, _x.detection.table.x_min, _x.detection.table.x_max, _x.detection.table.y_min, _x.detection.table.y_max,) = _struct_7d4f.unpack(str[start:end])
00656 start = end
00657 end += 4
00658 (length,) = _struct_I.unpack(str[start:end])
00659 self.detection.clusters = []
00660 for i in xrange(0, length):
00661 val1 = sensor_msgs.msg.PointCloud()
00662 _v25 = val1.header
00663 start = end
00664 end += 4
00665 (_v25.seq,) = _struct_I.unpack(str[start:end])
00666 _v26 = _v25.stamp
00667 _x = _v26
00668 start = end
00669 end += 8
00670 (_x.secs, _x.nsecs,) = _struct_2I.unpack(str[start:end])
00671 start = end
00672 end += 4
00673 (length,) = _struct_I.unpack(str[start:end])
00674 start = end
00675 end += length
00676 _v25.frame_id = str[start:end]
00677 start = end
00678 end += 4
00679 (length,) = _struct_I.unpack(str[start:end])
00680 val1.points = []
00681 for i in xrange(0, length):
00682 val2 = geometry_msgs.msg.Point32()
00683 _x = val2
00684 start = end
00685 end += 12
00686 (_x.x, _x.y, _x.z,) = _struct_3f.unpack(str[start:end])
00687 val1.points.append(val2)
00688 start = end
00689 end += 4
00690 (length,) = _struct_I.unpack(str[start:end])
00691 val1.channels = []
00692 for i in xrange(0, length):
00693 val2 = sensor_msgs.msg.ChannelFloat32()
00694 start = end
00695 end += 4
00696 (length,) = _struct_I.unpack(str[start:end])
00697 start = end
00698 end += length
00699 val2.name = str[start:end]
00700 start = end
00701 end += 4
00702 (length,) = _struct_I.unpack(str[start:end])
00703 pattern = '<%sf'%length
00704 start = end
00705 end += struct.calcsize(pattern)
00706 val2.values = numpy.frombuffer(str[start:end], dtype=numpy.float32, count=length)
00707 val1.channels.append(val2)
00708 self.detection.clusters.append(val1)
00709 start = end
00710 end += 4
00711 (length,) = _struct_I.unpack(str[start:end])
00712 self.detection.models = []
00713 for i in xrange(0, length):
00714 val1 = household_objects_database_msgs.msg.DatabaseModelPoseList()
00715 start = end
00716 end += 4
00717 (length,) = _struct_I.unpack(str[start:end])
00718 val1.model_list = []
00719 for i in xrange(0, length):
00720 val2 = household_objects_database_msgs.msg.DatabaseModelPose()
00721 start = end
00722 end += 4
00723 (val2.model_id,) = _struct_i.unpack(str[start:end])
00724 _v27 = val2.pose
00725 _v28 = _v27.header
00726 start = end
00727 end += 4
00728 (_v28.seq,) = _struct_I.unpack(str[start:end])
00729 _v29 = _v28.stamp
00730 _x = _v29
00731 start = end
00732 end += 8
00733 (_x.secs, _x.nsecs,) = _struct_2I.unpack(str[start:end])
00734 start = end
00735 end += 4
00736 (length,) = _struct_I.unpack(str[start:end])
00737 start = end
00738 end += length
00739 _v28.frame_id = str[start:end]
00740 _v30 = _v27.pose
00741 _v31 = _v30.position
00742 _x = _v31
00743 start = end
00744 end += 24
00745 (_x.x, _x.y, _x.z,) = _struct_3d.unpack(str[start:end])
00746 _v32 = _v30.orientation
00747 _x = _v32
00748 start = end
00749 end += 32
00750 (_x.x, _x.y, _x.z, _x.w,) = _struct_4d.unpack(str[start:end])
00751 start = end
00752 end += 4
00753 (val2.confidence,) = _struct_f.unpack(str[start:end])
00754 val1.model_list.append(val2)
00755 self.detection.models.append(val1)
00756 start = end
00757 end += 4
00758 (length,) = _struct_I.unpack(str[start:end])
00759 pattern = '<%si'%length
00760 start = end
00761 end += struct.calcsize(pattern)
00762 self.detection.cluster_model_indices = numpy.frombuffer(str[start:end], dtype=numpy.int32, count=length)
00763 start = end
00764 end += 4
00765 (self.detection.result,) = _struct_i.unpack(str[start:end])
00766 return self
00767 except struct.error, e:
00768 raise roslib.message.DeserializationError(e) #most likely buffer underfill
00769
00770 _struct_I = roslib.message.struct_I
00771 _struct_7d4f = struct.Struct("<7d4f")
00772 _struct_f = struct.Struct("<f")
00773 _struct_2I = struct.Struct("<2I")
00774 _struct_i = struct.Struct("<i")
00775 _struct_3I = struct.Struct("<3I")
00776 _struct_4d = struct.Struct("<4d")
00777 _struct_3f = struct.Struct("<3f")
00778 _struct_3d = struct.Struct("<3d")
00779 class TabletopDetection(roslib.message.ServiceDefinition):
00780 _type = 'tabletop_object_detector/TabletopDetection'
00781 _md5sum = '0fb5dfc7b06846e22a42e6d876eab8e1'
00782 _request_class = TabletopDetectionRequest
00783 _response_class = TabletopDetectionResponse