00001 """autogenerated by genpy from arm_navigation_msgs/MoveArmActionResult.msg. Do not edit."""
00002 import sys
00003 python3 = True if sys.hexversion > 0x03000000 else False
00004 import genpy
00005 import struct
00006
00007 import arm_navigation_msgs.msg
00008 import geometry_msgs.msg
00009 import genpy
00010 import actionlib_msgs.msg
00011 import std_msgs.msg
00012
00013 class MoveArmActionResult(genpy.Message):
00014 _md5sum = "3e2bd2d3bd64d9942c0ef04de381c628"
00015 _type = "arm_navigation_msgs/MoveArmActionResult"
00016 _has_header = True
00017 _full_text = """# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
00018
00019 Header header
00020 actionlib_msgs/GoalStatus status
00021 MoveArmResult result
00022
00023 ================================================================================
00024 MSG: std_msgs/Header
00025 # Standard metadata for higher-level stamped data types.
00026 # This is generally used to communicate timestamped data
00027 # in a particular coordinate frame.
00028 #
00029 # sequence ID: consecutively increasing ID
00030 uint32 seq
00031 #Two-integer timestamp that is expressed as:
00032 # * stamp.secs: seconds (stamp_secs) since epoch
00033 # * stamp.nsecs: nanoseconds since stamp_secs
00034 # time-handling sugar is provided by the client library
00035 time stamp
00036 #Frame this data is associated with
00037 # 0: no frame
00038 # 1: global frame
00039 string frame_id
00040
00041 ================================================================================
00042 MSG: actionlib_msgs/GoalStatus
00043 GoalID goal_id
00044 uint8 status
00045 uint8 PENDING = 0 # The goal has yet to be processed by the action server
00046 uint8 ACTIVE = 1 # The goal is currently being processed by the action server
00047 uint8 PREEMPTED = 2 # The goal received a cancel request after it started executing
00048 # and has since completed its execution (Terminal State)
00049 uint8 SUCCEEDED = 3 # The goal was achieved successfully by the action server (Terminal State)
00050 uint8 ABORTED = 4 # The goal was aborted during execution by the action server due
00051 # to some failure (Terminal State)
00052 uint8 REJECTED = 5 # The goal was rejected by the action server without being processed,
00053 # because the goal was unattainable or invalid (Terminal State)
00054 uint8 PREEMPTING = 6 # The goal received a cancel request after it started executing
00055 # and has not yet completed execution
00056 uint8 RECALLING = 7 # The goal received a cancel request before it started executing,
00057 # but the action server has not yet confirmed that the goal is canceled
00058 uint8 RECALLED = 8 # The goal received a cancel request before it started executing
00059 # and was successfully cancelled (Terminal State)
00060 uint8 LOST = 9 # An action client can determine that a goal is LOST. This should not be
00061 # sent over the wire by an action server
00062
00063 #Allow for the user to associate a string with GoalStatus for debugging
00064 string text
00065
00066
00067 ================================================================================
00068 MSG: actionlib_msgs/GoalID
00069 # The stamp should store the time at which this goal was requested.
00070 # It is used by an action server when it tries to preempt all
00071 # goals that were requested before a certain time
00072 time stamp
00073
00074 # The id provides a way to associate feedback and
00075 # result message with specific goal requests. The id
00076 # specified must be unique.
00077 string id
00078
00079
00080 ================================================================================
00081 MSG: arm_navigation_msgs/MoveArmResult
00082 # ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
00083 # An error code reflecting what went wrong
00084 ArmNavigationErrorCodes error_code
00085
00086 ContactInformation[] contacts
00087
00088 ================================================================================
00089 MSG: arm_navigation_msgs/ArmNavigationErrorCodes
00090 int32 val
00091
00092 # overall behavior
00093 int32 PLANNING_FAILED=-1
00094 int32 SUCCESS=1
00095 int32 TIMED_OUT=-2
00096
00097 # start state errors
00098 int32 START_STATE_IN_COLLISION=-3
00099 int32 START_STATE_VIOLATES_PATH_CONSTRAINTS=-4
00100
00101 # goal errors
00102 int32 GOAL_IN_COLLISION=-5
00103 int32 GOAL_VIOLATES_PATH_CONSTRAINTS=-6
00104
00105 # robot state
00106 int32 INVALID_ROBOT_STATE=-7
00107 int32 INCOMPLETE_ROBOT_STATE=-8
00108
00109 # planning request errors
00110 int32 INVALID_PLANNER_ID=-9
00111 int32 INVALID_NUM_PLANNING_ATTEMPTS=-10
00112 int32 INVALID_ALLOWED_PLANNING_TIME=-11
00113 int32 INVALID_GROUP_NAME=-12
00114 int32 INVALID_GOAL_JOINT_CONSTRAINTS=-13
00115 int32 INVALID_GOAL_POSITION_CONSTRAINTS=-14
00116 int32 INVALID_GOAL_ORIENTATION_CONSTRAINTS=-15
00117 int32 INVALID_PATH_JOINT_CONSTRAINTS=-16
00118 int32 INVALID_PATH_POSITION_CONSTRAINTS=-17
00119 int32 INVALID_PATH_ORIENTATION_CONSTRAINTS=-18
00120
00121 # state/trajectory monitor errors
00122 int32 INVALID_TRAJECTORY=-19
00123 int32 INVALID_INDEX=-20
00124 int32 JOINT_LIMITS_VIOLATED=-21
00125 int32 PATH_CONSTRAINTS_VIOLATED=-22
00126 int32 COLLISION_CONSTRAINTS_VIOLATED=-23
00127 int32 GOAL_CONSTRAINTS_VIOLATED=-24
00128 int32 JOINTS_NOT_MOVING=-25
00129 int32 TRAJECTORY_CONTROLLER_FAILED=-26
00130
00131 # system errors
00132 int32 FRAME_TRANSFORM_FAILURE=-27
00133 int32 COLLISION_CHECKING_UNAVAILABLE=-28
00134 int32 ROBOT_STATE_STALE=-29
00135 int32 SENSOR_INFO_STALE=-30
00136
00137 # kinematics errors
00138 int32 NO_IK_SOLUTION=-31
00139 int32 INVALID_LINK_NAME=-32
00140 int32 IK_LINK_IN_COLLISION=-33
00141 int32 NO_FK_SOLUTION=-34
00142 int32 KINEMATICS_STATE_IN_COLLISION=-35
00143
00144 # general errors
00145 int32 INVALID_TIMEOUT=-36
00146
00147
00148 ================================================================================
00149 MSG: arm_navigation_msgs/ContactInformation
00150 # Standard ROS header contains information
00151 # about the frame in which this
00152 # contact is specified
00153 Header header
00154
00155 # Position of the contact point
00156 geometry_msgs/Point position
00157
00158 # Normal corresponding to the contact point
00159 geometry_msgs/Vector3 normal
00160
00161 # Depth of contact point
00162 float64 depth
00163
00164 # Name of the first body that is in contact
00165 # This could be a link or a namespace that represents a body
00166 string contact_body_1
00167 string attached_body_1
00168 uint32 body_type_1
00169
00170 # Name of the second body that is in contact
00171 # This could be a link or a namespace that represents a body
00172 string contact_body_2
00173 string attached_body_2
00174 uint32 body_type_2
00175
00176 uint32 ROBOT_LINK=0
00177 uint32 OBJECT=1
00178 uint32 ATTACHED_BODY=2
00179 ================================================================================
00180 MSG: geometry_msgs/Point
00181 # This contains the position of a point in free space
00182 float64 x
00183 float64 y
00184 float64 z
00185
00186 ================================================================================
00187 MSG: geometry_msgs/Vector3
00188 # This represents a vector in free space.
00189
00190 float64 x
00191 float64 y
00192 float64 z
00193 """
00194 __slots__ = ['header','status','result']
00195 _slot_types = ['std_msgs/Header','actionlib_msgs/GoalStatus','arm_navigation_msgs/MoveArmResult']
00196
00197 def __init__(self, *args, **kwds):
00198 """
00199 Constructor. Any message fields that are implicitly/explicitly
00200 set to None will be assigned a default value. The recommend
00201 use is keyword arguments as this is more robust to future message
00202 changes. You cannot mix in-order arguments and keyword arguments.
00203
00204 The available fields are:
00205 header,status,result
00206
00207 :param args: complete set of field values, in .msg order
00208 :param kwds: use keyword arguments corresponding to message field names
00209 to set specific fields.
00210 """
00211 if args or kwds:
00212 super(MoveArmActionResult, self).__init__(*args, **kwds)
00213
00214 if self.header is None:
00215 self.header = std_msgs.msg.Header()
00216 if self.status is None:
00217 self.status = actionlib_msgs.msg.GoalStatus()
00218 if self.result is None:
00219 self.result = arm_navigation_msgs.msg.MoveArmResult()
00220 else:
00221 self.header = std_msgs.msg.Header()
00222 self.status = actionlib_msgs.msg.GoalStatus()
00223 self.result = arm_navigation_msgs.msg.MoveArmResult()
00224
00225 def _get_types(self):
00226 """
00227 internal API method
00228 """
00229 return self._slot_types
00230
00231 def serialize(self, buff):
00232 """
00233 serialize message into buffer
00234 :param buff: buffer, ``StringIO``
00235 """
00236 try:
00237 _x = self
00238 buff.write(_struct_3I.pack(_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs))
00239 _x = self.header.frame_id
00240 length = len(_x)
00241 if python3 or type(_x) == unicode:
00242 _x = _x.encode('utf-8')
00243 length = len(_x)
00244 buff.write(struct.pack('<I%ss'%length, length, _x))
00245 _x = self
00246 buff.write(_struct_2I.pack(_x.status.goal_id.stamp.secs, _x.status.goal_id.stamp.nsecs))
00247 _x = self.status.goal_id.id
00248 length = len(_x)
00249 if python3 or type(_x) == unicode:
00250 _x = _x.encode('utf-8')
00251 length = len(_x)
00252 buff.write(struct.pack('<I%ss'%length, length, _x))
00253 buff.write(_struct_B.pack(self.status.status))
00254 _x = self.status.text
00255 length = len(_x)
00256 if python3 or type(_x) == unicode:
00257 _x = _x.encode('utf-8')
00258 length = len(_x)
00259 buff.write(struct.pack('<I%ss'%length, length, _x))
00260 buff.write(_struct_i.pack(self.result.error_code.val))
00261 length = len(self.result.contacts)
00262 buff.write(_struct_I.pack(length))
00263 for val1 in self.result.contacts:
00264 _v1 = val1.header
00265 buff.write(_struct_I.pack(_v1.seq))
00266 _v2 = _v1.stamp
00267 _x = _v2
00268 buff.write(_struct_2I.pack(_x.secs, _x.nsecs))
00269 _x = _v1.frame_id
00270 length = len(_x)
00271 if python3 or type(_x) == unicode:
00272 _x = _x.encode('utf-8')
00273 length = len(_x)
00274 buff.write(struct.pack('<I%ss'%length, length, _x))
00275 _v3 = val1.position
00276 _x = _v3
00277 buff.write(_struct_3d.pack(_x.x, _x.y, _x.z))
00278 _v4 = val1.normal
00279 _x = _v4
00280 buff.write(_struct_3d.pack(_x.x, _x.y, _x.z))
00281 buff.write(_struct_d.pack(val1.depth))
00282 _x = val1.contact_body_1
00283 length = len(_x)
00284 if python3 or type(_x) == unicode:
00285 _x = _x.encode('utf-8')
00286 length = len(_x)
00287 buff.write(struct.pack('<I%ss'%length, length, _x))
00288 _x = val1.attached_body_1
00289 length = len(_x)
00290 if python3 or type(_x) == unicode:
00291 _x = _x.encode('utf-8')
00292 length = len(_x)
00293 buff.write(struct.pack('<I%ss'%length, length, _x))
00294 buff.write(_struct_I.pack(val1.body_type_1))
00295 _x = val1.contact_body_2
00296 length = len(_x)
00297 if python3 or type(_x) == unicode:
00298 _x = _x.encode('utf-8')
00299 length = len(_x)
00300 buff.write(struct.pack('<I%ss'%length, length, _x))
00301 _x = val1.attached_body_2
00302 length = len(_x)
00303 if python3 or type(_x) == unicode:
00304 _x = _x.encode('utf-8')
00305 length = len(_x)
00306 buff.write(struct.pack('<I%ss'%length, length, _x))
00307 buff.write(_struct_I.pack(val1.body_type_2))
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, ``str``
00315 """
00316 try:
00317 if self.header is None:
00318 self.header = std_msgs.msg.Header()
00319 if self.status is None:
00320 self.status = actionlib_msgs.msg.GoalStatus()
00321 if self.result is None:
00322 self.result = arm_navigation_msgs.msg.MoveArmResult()
00323 end = 0
00324 _x = self
00325 start = end
00326 end += 12
00327 (_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00328 start = end
00329 end += 4
00330 (length,) = _struct_I.unpack(str[start:end])
00331 start = end
00332 end += length
00333 if python3:
00334 self.header.frame_id = str[start:end].decode('utf-8')
00335 else:
00336 self.header.frame_id = str[start:end]
00337 _x = self
00338 start = end
00339 end += 8
00340 (_x.status.goal_id.stamp.secs, _x.status.goal_id.stamp.nsecs,) = _struct_2I.unpack(str[start:end])
00341 start = end
00342 end += 4
00343 (length,) = _struct_I.unpack(str[start:end])
00344 start = end
00345 end += length
00346 if python3:
00347 self.status.goal_id.id = str[start:end].decode('utf-8')
00348 else:
00349 self.status.goal_id.id = str[start:end]
00350 start = end
00351 end += 1
00352 (self.status.status,) = _struct_B.unpack(str[start:end])
00353 start = end
00354 end += 4
00355 (length,) = _struct_I.unpack(str[start:end])
00356 start = end
00357 end += length
00358 if python3:
00359 self.status.text = str[start:end].decode('utf-8')
00360 else:
00361 self.status.text = str[start:end]
00362 start = end
00363 end += 4
00364 (self.result.error_code.val,) = _struct_i.unpack(str[start:end])
00365 start = end
00366 end += 4
00367 (length,) = _struct_I.unpack(str[start:end])
00368 self.result.contacts = []
00369 for i in range(0, length):
00370 val1 = arm_navigation_msgs.msg.ContactInformation()
00371 _v5 = val1.header
00372 start = end
00373 end += 4
00374 (_v5.seq,) = _struct_I.unpack(str[start:end])
00375 _v6 = _v5.stamp
00376 _x = _v6
00377 start = end
00378 end += 8
00379 (_x.secs, _x.nsecs,) = _struct_2I.unpack(str[start:end])
00380 start = end
00381 end += 4
00382 (length,) = _struct_I.unpack(str[start:end])
00383 start = end
00384 end += length
00385 if python3:
00386 _v5.frame_id = str[start:end].decode('utf-8')
00387 else:
00388 _v5.frame_id = str[start:end]
00389 _v7 = val1.position
00390 _x = _v7
00391 start = end
00392 end += 24
00393 (_x.x, _x.y, _x.z,) = _struct_3d.unpack(str[start:end])
00394 _v8 = val1.normal
00395 _x = _v8
00396 start = end
00397 end += 24
00398 (_x.x, _x.y, _x.z,) = _struct_3d.unpack(str[start:end])
00399 start = end
00400 end += 8
00401 (val1.depth,) = _struct_d.unpack(str[start:end])
00402 start = end
00403 end += 4
00404 (length,) = _struct_I.unpack(str[start:end])
00405 start = end
00406 end += length
00407 if python3:
00408 val1.contact_body_1 = str[start:end].decode('utf-8')
00409 else:
00410 val1.contact_body_1 = str[start:end]
00411 start = end
00412 end += 4
00413 (length,) = _struct_I.unpack(str[start:end])
00414 start = end
00415 end += length
00416 if python3:
00417 val1.attached_body_1 = str[start:end].decode('utf-8')
00418 else:
00419 val1.attached_body_1 = str[start:end]
00420 start = end
00421 end += 4
00422 (val1.body_type_1,) = _struct_I.unpack(str[start:end])
00423 start = end
00424 end += 4
00425 (length,) = _struct_I.unpack(str[start:end])
00426 start = end
00427 end += length
00428 if python3:
00429 val1.contact_body_2 = str[start:end].decode('utf-8')
00430 else:
00431 val1.contact_body_2 = str[start:end]
00432 start = end
00433 end += 4
00434 (length,) = _struct_I.unpack(str[start:end])
00435 start = end
00436 end += length
00437 if python3:
00438 val1.attached_body_2 = str[start:end].decode('utf-8')
00439 else:
00440 val1.attached_body_2 = str[start:end]
00441 start = end
00442 end += 4
00443 (val1.body_type_2,) = _struct_I.unpack(str[start:end])
00444 self.result.contacts.append(val1)
00445 return self
00446 except struct.error as e:
00447 raise genpy.DeserializationError(e)
00448
00449
00450 def serialize_numpy(self, buff, numpy):
00451 """
00452 serialize message with numpy array types into buffer
00453 :param buff: buffer, ``StringIO``
00454 :param numpy: numpy python module
00455 """
00456 try:
00457 _x = self
00458 buff.write(_struct_3I.pack(_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs))
00459 _x = self.header.frame_id
00460 length = len(_x)
00461 if python3 or type(_x) == unicode:
00462 _x = _x.encode('utf-8')
00463 length = len(_x)
00464 buff.write(struct.pack('<I%ss'%length, length, _x))
00465 _x = self
00466 buff.write(_struct_2I.pack(_x.status.goal_id.stamp.secs, _x.status.goal_id.stamp.nsecs))
00467 _x = self.status.goal_id.id
00468 length = len(_x)
00469 if python3 or type(_x) == unicode:
00470 _x = _x.encode('utf-8')
00471 length = len(_x)
00472 buff.write(struct.pack('<I%ss'%length, length, _x))
00473 buff.write(_struct_B.pack(self.status.status))
00474 _x = self.status.text
00475 length = len(_x)
00476 if python3 or type(_x) == unicode:
00477 _x = _x.encode('utf-8')
00478 length = len(_x)
00479 buff.write(struct.pack('<I%ss'%length, length, _x))
00480 buff.write(_struct_i.pack(self.result.error_code.val))
00481 length = len(self.result.contacts)
00482 buff.write(_struct_I.pack(length))
00483 for val1 in self.result.contacts:
00484 _v9 = val1.header
00485 buff.write(_struct_I.pack(_v9.seq))
00486 _v10 = _v9.stamp
00487 _x = _v10
00488 buff.write(_struct_2I.pack(_x.secs, _x.nsecs))
00489 _x = _v9.frame_id
00490 length = len(_x)
00491 if python3 or type(_x) == unicode:
00492 _x = _x.encode('utf-8')
00493 length = len(_x)
00494 buff.write(struct.pack('<I%ss'%length, length, _x))
00495 _v11 = val1.position
00496 _x = _v11
00497 buff.write(_struct_3d.pack(_x.x, _x.y, _x.z))
00498 _v12 = val1.normal
00499 _x = _v12
00500 buff.write(_struct_3d.pack(_x.x, _x.y, _x.z))
00501 buff.write(_struct_d.pack(val1.depth))
00502 _x = val1.contact_body_1
00503 length = len(_x)
00504 if python3 or type(_x) == unicode:
00505 _x = _x.encode('utf-8')
00506 length = len(_x)
00507 buff.write(struct.pack('<I%ss'%length, length, _x))
00508 _x = val1.attached_body_1
00509 length = len(_x)
00510 if python3 or type(_x) == unicode:
00511 _x = _x.encode('utf-8')
00512 length = len(_x)
00513 buff.write(struct.pack('<I%ss'%length, length, _x))
00514 buff.write(_struct_I.pack(val1.body_type_1))
00515 _x = val1.contact_body_2
00516 length = len(_x)
00517 if python3 or type(_x) == unicode:
00518 _x = _x.encode('utf-8')
00519 length = len(_x)
00520 buff.write(struct.pack('<I%ss'%length, length, _x))
00521 _x = val1.attached_body_2
00522 length = len(_x)
00523 if python3 or type(_x) == unicode:
00524 _x = _x.encode('utf-8')
00525 length = len(_x)
00526 buff.write(struct.pack('<I%ss'%length, length, _x))
00527 buff.write(_struct_I.pack(val1.body_type_2))
00528 except struct.error as se: self._check_types(se)
00529 except TypeError as te: self._check_types(te)
00530
00531 def deserialize_numpy(self, str, numpy):
00532 """
00533 unpack serialized message in str into this message instance using numpy for array types
00534 :param str: byte array of serialized message, ``str``
00535 :param numpy: numpy python module
00536 """
00537 try:
00538 if self.header is None:
00539 self.header = std_msgs.msg.Header()
00540 if self.status is None:
00541 self.status = actionlib_msgs.msg.GoalStatus()
00542 if self.result is None:
00543 self.result = arm_navigation_msgs.msg.MoveArmResult()
00544 end = 0
00545 _x = self
00546 start = end
00547 end += 12
00548 (_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs,) = _struct_3I.unpack(str[start:end])
00549 start = end
00550 end += 4
00551 (length,) = _struct_I.unpack(str[start:end])
00552 start = end
00553 end += length
00554 if python3:
00555 self.header.frame_id = str[start:end].decode('utf-8')
00556 else:
00557 self.header.frame_id = str[start:end]
00558 _x = self
00559 start = end
00560 end += 8
00561 (_x.status.goal_id.stamp.secs, _x.status.goal_id.stamp.nsecs,) = _struct_2I.unpack(str[start:end])
00562 start = end
00563 end += 4
00564 (length,) = _struct_I.unpack(str[start:end])
00565 start = end
00566 end += length
00567 if python3:
00568 self.status.goal_id.id = str[start:end].decode('utf-8')
00569 else:
00570 self.status.goal_id.id = str[start:end]
00571 start = end
00572 end += 1
00573 (self.status.status,) = _struct_B.unpack(str[start:end])
00574 start = end
00575 end += 4
00576 (length,) = _struct_I.unpack(str[start:end])
00577 start = end
00578 end += length
00579 if python3:
00580 self.status.text = str[start:end].decode('utf-8')
00581 else:
00582 self.status.text = str[start:end]
00583 start = end
00584 end += 4
00585 (self.result.error_code.val,) = _struct_i.unpack(str[start:end])
00586 start = end
00587 end += 4
00588 (length,) = _struct_I.unpack(str[start:end])
00589 self.result.contacts = []
00590 for i in range(0, length):
00591 val1 = arm_navigation_msgs.msg.ContactInformation()
00592 _v13 = val1.header
00593 start = end
00594 end += 4
00595 (_v13.seq,) = _struct_I.unpack(str[start:end])
00596 _v14 = _v13.stamp
00597 _x = _v14
00598 start = end
00599 end += 8
00600 (_x.secs, _x.nsecs,) = _struct_2I.unpack(str[start:end])
00601 start = end
00602 end += 4
00603 (length,) = _struct_I.unpack(str[start:end])
00604 start = end
00605 end += length
00606 if python3:
00607 _v13.frame_id = str[start:end].decode('utf-8')
00608 else:
00609 _v13.frame_id = str[start:end]
00610 _v15 = val1.position
00611 _x = _v15
00612 start = end
00613 end += 24
00614 (_x.x, _x.y, _x.z,) = _struct_3d.unpack(str[start:end])
00615 _v16 = val1.normal
00616 _x = _v16
00617 start = end
00618 end += 24
00619 (_x.x, _x.y, _x.z,) = _struct_3d.unpack(str[start:end])
00620 start = end
00621 end += 8
00622 (val1.depth,) = _struct_d.unpack(str[start:end])
00623 start = end
00624 end += 4
00625 (length,) = _struct_I.unpack(str[start:end])
00626 start = end
00627 end += length
00628 if python3:
00629 val1.contact_body_1 = str[start:end].decode('utf-8')
00630 else:
00631 val1.contact_body_1 = str[start:end]
00632 start = end
00633 end += 4
00634 (length,) = _struct_I.unpack(str[start:end])
00635 start = end
00636 end += length
00637 if python3:
00638 val1.attached_body_1 = str[start:end].decode('utf-8')
00639 else:
00640 val1.attached_body_1 = str[start:end]
00641 start = end
00642 end += 4
00643 (val1.body_type_1,) = _struct_I.unpack(str[start:end])
00644 start = end
00645 end += 4
00646 (length,) = _struct_I.unpack(str[start:end])
00647 start = end
00648 end += length
00649 if python3:
00650 val1.contact_body_2 = str[start:end].decode('utf-8')
00651 else:
00652 val1.contact_body_2 = str[start:end]
00653 start = end
00654 end += 4
00655 (length,) = _struct_I.unpack(str[start:end])
00656 start = end
00657 end += length
00658 if python3:
00659 val1.attached_body_2 = str[start:end].decode('utf-8')
00660 else:
00661 val1.attached_body_2 = str[start:end]
00662 start = end
00663 end += 4
00664 (val1.body_type_2,) = _struct_I.unpack(str[start:end])
00665 self.result.contacts.append(val1)
00666 return self
00667 except struct.error as e:
00668 raise genpy.DeserializationError(e)
00669
00670 _struct_I = genpy.struct_I
00671 _struct_B = struct.Struct("<B")
00672 _struct_d = struct.Struct("<d")
00673 _struct_i = struct.Struct("<i")
00674 _struct_3I = struct.Struct("<3I")
00675 _struct_2I = struct.Struct("<2I")
00676 _struct_3d = struct.Struct("<3d")