kuavo-humanoid-sdk 1.2.1b3279__20250911210455-py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of kuavo-humanoid-sdk might be problematic. Click here for more details.

Files changed (184) hide show
  1. kuavo_humanoid_sdk/__init__.py +6 -0
  2. kuavo_humanoid_sdk/common/logger.py +45 -0
  3. kuavo_humanoid_sdk/interfaces/__init__.py +4 -0
  4. kuavo_humanoid_sdk/interfaces/data_types.py +288 -0
  5. kuavo_humanoid_sdk/interfaces/end_effector.py +62 -0
  6. kuavo_humanoid_sdk/interfaces/robot.py +22 -0
  7. kuavo_humanoid_sdk/interfaces/robot_info.py +56 -0
  8. kuavo_humanoid_sdk/kuavo/__init__.py +16 -0
  9. kuavo_humanoid_sdk/kuavo/core/audio.py +32 -0
  10. kuavo_humanoid_sdk/kuavo/core/core.py +666 -0
  11. kuavo_humanoid_sdk/kuavo/core/dex_hand_control.py +114 -0
  12. kuavo_humanoid_sdk/kuavo/core/leju_claw_control.py +67 -0
  13. kuavo_humanoid_sdk/kuavo/core/llm_doubao.py +608 -0
  14. kuavo_humanoid_sdk/kuavo/core/microphone.py +192 -0
  15. kuavo_humanoid_sdk/kuavo/core/navigation.py +70 -0
  16. kuavo_humanoid_sdk/kuavo/core/ros/audio.py +110 -0
  17. kuavo_humanoid_sdk/kuavo/core/ros/control.py +1524 -0
  18. kuavo_humanoid_sdk/kuavo/core/ros/microphone.py +38 -0
  19. kuavo_humanoid_sdk/kuavo/core/ros/navigation.py +217 -0
  20. kuavo_humanoid_sdk/kuavo/core/ros/observation.py +94 -0
  21. kuavo_humanoid_sdk/kuavo/core/ros/param.py +201 -0
  22. kuavo_humanoid_sdk/kuavo/core/ros/sat_utils.py +103 -0
  23. kuavo_humanoid_sdk/kuavo/core/ros/state.py +652 -0
  24. kuavo_humanoid_sdk/kuavo/core/ros/tools.py +220 -0
  25. kuavo_humanoid_sdk/kuavo/core/ros/vision.py +234 -0
  26. kuavo_humanoid_sdk/kuavo/core/ros_env.py +238 -0
  27. kuavo_humanoid_sdk/kuavo/demo_climbstair.py +249 -0
  28. kuavo_humanoid_sdk/kuavo/dexterous_hand.py +238 -0
  29. kuavo_humanoid_sdk/kuavo/leju_claw.py +235 -0
  30. kuavo_humanoid_sdk/kuavo/logger_client.py +80 -0
  31. kuavo_humanoid_sdk/kuavo/robot.py +561 -0
  32. kuavo_humanoid_sdk/kuavo/robot_arm.py +299 -0
  33. kuavo_humanoid_sdk/kuavo/robot_audio.py +39 -0
  34. kuavo_humanoid_sdk/kuavo/robot_blockly.py +1162 -0
  35. kuavo_humanoid_sdk/kuavo/robot_climbstair.py +1607 -0
  36. kuavo_humanoid_sdk/kuavo/robot_head.py +74 -0
  37. kuavo_humanoid_sdk/kuavo/robot_info.py +134 -0
  38. kuavo_humanoid_sdk/kuavo/robot_microphone.py +19 -0
  39. kuavo_humanoid_sdk/kuavo/robot_navigation.py +135 -0
  40. kuavo_humanoid_sdk/kuavo/robot_observation.py +64 -0
  41. kuavo_humanoid_sdk/kuavo/robot_speech.py +24 -0
  42. kuavo_humanoid_sdk/kuavo/robot_state.py +310 -0
  43. kuavo_humanoid_sdk/kuavo/robot_tool.py +109 -0
  44. kuavo_humanoid_sdk/kuavo/robot_vision.py +81 -0
  45. kuavo_humanoid_sdk/kuavo_strategy/__init__.py +2 -0
  46. kuavo_humanoid_sdk/kuavo_strategy/grasp_box/grasp_box_strategy.py +1325 -0
  47. kuavo_humanoid_sdk/kuavo_strategy/kuavo_strategy.py +106 -0
  48. kuavo_humanoid_sdk/kuavo_strategy_v2/common/data_type.py +340 -0
  49. kuavo_humanoid_sdk/kuavo_strategy_v2/common/events/base_event.py +215 -0
  50. kuavo_humanoid_sdk/kuavo_strategy_v2/common/robot_sdk.py +25 -0
  51. kuavo_humanoid_sdk/kuavo_strategy_v2/pick_place_box/case.py +331 -0
  52. kuavo_humanoid_sdk/kuavo_strategy_v2/pick_place_box/strategy.py +504 -0
  53. kuavo_humanoid_sdk/kuavo_strategy_v2/utils/logger_setup.py +40 -0
  54. kuavo_humanoid_sdk/kuavo_strategy_v2/utils/utils.py +88 -0
  55. kuavo_humanoid_sdk/msg/__init__.py +4 -0
  56. kuavo_humanoid_sdk/msg/kuavo_msgs/__init__.py +7 -0
  57. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetection.py +306 -0
  58. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetectionArray.py +437 -0
  59. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AudioReceiverData.py +122 -0
  60. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_FTsensorData.py +260 -0
  61. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_JoySticks.py +191 -0
  62. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_Metadata.py +199 -0
  63. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_MmDetectionMsg.py +264 -0
  64. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_RobotActionState.py +112 -0
  65. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_TFArray.py +323 -0
  66. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_TaskPoint.py +175 -0
  67. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/__init__.py +62 -0
  68. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armCollisionCheckInfo.py +160 -0
  69. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armHandPose.py +161 -0
  70. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armHandPoseFree.py +171 -0
  71. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armPoseWithTimeStamp.py +168 -0
  72. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armTargetPoses.py +171 -0
  73. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_bezierCurveCubicPoint.py +178 -0
  74. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandCommand.py +229 -0
  75. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandTouchState.py +256 -0
  76. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_endEffectorData.py +227 -0
  77. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose.py +123 -0
  78. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose6D.py +123 -0
  79. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose6DTargetTrajectories.py +320 -0
  80. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseTargetTrajectories.py +301 -0
  81. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseWithVision.py +136 -0
  82. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseWithVisionArray.py +231 -0
  83. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoses.py +149 -0
  84. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoses6D.py +149 -0
  85. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_fullBodyTargetTrajectories.py +258 -0
  86. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gaitTimeName.py +147 -0
  87. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureInfo.py +218 -0
  88. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureTask.py +149 -0
  89. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_handPose.py +136 -0
  90. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_headBodyPose.py +145 -0
  91. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_ikSolveError.py +171 -0
  92. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_ikSolveParam.py +140 -0
  93. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_imuData.py +165 -0
  94. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointBezierTrajectory.py +201 -0
  95. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointCmd.py +390 -0
  96. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointData.py +205 -0
  97. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_kuavoModeSchedule.py +224 -0
  98. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawCommand.py +320 -0
  99. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawState.py +341 -0
  100. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_motorParam.py +122 -0
  101. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_picoPoseInfo.py +143 -0
  102. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_picoPoseInfoList.py +220 -0
  103. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_planArmState.py +120 -0
  104. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_qv.py +121 -0
  105. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotArmQVVD.py +177 -0
  106. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotBodyMatrices.py +332 -0
  107. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHandPosition.py +225 -0
  108. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHeadMotionData.py +128 -0
  109. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotState.py +222 -0
  110. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_sensorsData.py +655 -0
  111. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_switchGaitByName.py +200 -0
  112. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_tagDataArray.py +216 -0
  113. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_touchSensorStatus.py +162 -0
  114. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPose.py +273 -0
  115. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseCmd.py +316 -0
  116. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseCmdFree.py +338 -0
  117. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseFree.py +299 -0
  118. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloDetection.py +251 -0
  119. kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloOutputData.py +168 -0
  120. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_CreatePath.py +581 -0
  121. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_ExecuteArmAction.py +281 -0
  122. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetAllMaps.py +241 -0
  123. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetCurrentMap.py +225 -0
  124. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetTargetPartPoseInCamera.py +298 -0
  125. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_InitialPoseWithTaskPoint.py +281 -0
  126. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_LoadMap.py +281 -0
  127. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_NavigateToTaskPoint.py +281 -0
  128. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_RepublishTFs.py +373 -0
  129. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetInitialPose.py +394 -0
  130. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetJoyTopic.py +282 -0
  131. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetLEDMode.py +468 -0
  132. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetLEDMode_free.py +289 -0
  133. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SpeechSynthesis.py +270 -0
  134. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_TaskPointOperation.py +536 -0
  135. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/__init__.py +43 -0
  136. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_adjustZeroPoint.py +277 -0
  137. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeArmCtrlMode.py +275 -0
  138. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeArmCtrlModeKuavo.py +236 -0
  139. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeMotorParam.py +299 -0
  140. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeTorsoCtrlMode.py +274 -0
  141. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_controlLejuClaw.py +408 -0
  142. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_enableHandTouchSensor.py +304 -0
  143. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_fkSrv.py +395 -0
  144. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_footPose6DTargetTrajectoriesSrv.py +426 -0
  145. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_footPoseTargetTrajectoriesSrv.py +409 -0
  146. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecute.py +339 -0
  147. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecuteState.py +257 -0
  148. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureList.py +418 -0
  149. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getCurrentGaitName.py +253 -0
  150. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getMotorParam.py +299 -0
  151. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getMotorZeroPoints.py +286 -0
  152. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_handForceLevel.py +330 -0
  153. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_jointMoveTo.py +302 -0
  154. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_planArmTrajectoryBezierCurve.py +422 -0
  155. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_planArmTrajectoryCubicSpline.py +490 -0
  156. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_playmusic.py +268 -0
  157. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setHwIntialState.py +304 -0
  158. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMmCtrlFrame.py +273 -0
  159. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMotorEncoderRoundService.py +283 -0
  160. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setTagId.py +275 -0
  161. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_singleStepControl.py +444 -0
  162. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_twoArmHandPoseCmdFreeSrv.py +716 -0
  163. kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_twoArmHandPoseCmdSrv.py +664 -0
  164. kuavo_humanoid_sdk/msg/motion_capture_ik/__init__.py +7 -0
  165. kuavo_humanoid_sdk/msg/ocs2_msgs/__init__.py +7 -0
  166. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/__init__.py +12 -0
  167. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_constraint.py +142 -0
  168. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_controller_data.py +121 -0
  169. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_lagrangian_metrics.py +148 -0
  170. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mode_schedule.py +150 -0
  171. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_flattened_controller.py +666 -0
  172. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_input.py +122 -0
  173. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_observation.py +209 -0
  174. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_performance_indices.py +140 -0
  175. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_solver_data.py +886 -0
  176. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_state.py +122 -0
  177. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_target_trajectories.py +239 -0
  178. kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_multiplier.py +148 -0
  179. kuavo_humanoid_sdk/msg/ocs2_msgs/srv/__init__.py +1 -0
  180. kuavo_humanoid_sdk/msg/ocs2_msgs/srv/_reset.py +376 -0
  181. kuavo_humanoid_sdk-1.2.1b3279.dist-info/METADATA +296 -0
  182. kuavo_humanoid_sdk-1.2.1b3279.dist-info/RECORD +184 -0
  183. kuavo_humanoid_sdk-1.2.1b3279.dist-info/WHEEL +6 -0
  184. kuavo_humanoid_sdk-1.2.1b3279.dist-info/top_level.txt +1 -0
@@ -0,0 +1,273 @@
1
+ # This Python file uses the following encoding: utf-8
2
+ """autogenerated by genpy from kuavo_msgs/twoArmHandPose.msg. Do not edit."""
3
+ import codecs
4
+ import sys
5
+ python3 = True if sys.hexversion > 0x03000000 else False
6
+ import genpy
7
+ import struct
8
+
9
+ import kuavo_msgs.msg
10
+ import std_msgs.msg
11
+
12
+ class twoArmHandPose(genpy.Message):
13
+ _md5sum = "5bdb1e027f430369b6f88e5e2f5d31ca"
14
+ _type = "kuavo_msgs/twoArmHandPose"
15
+ _has_header = True # flag to mark the presence of a Header object
16
+ _full_text = """Header header
17
+ armHandPose left_pose
18
+ armHandPose right_pose
19
+ ================================================================================
20
+ MSG: std_msgs/Header
21
+ # Standard metadata for higher-level stamped data types.
22
+ # This is generally used to communicate timestamped data
23
+ # in a particular coordinate frame.
24
+ #
25
+ # sequence ID: consecutively increasing ID
26
+ uint32 seq
27
+ #Two-integer timestamp that is expressed as:
28
+ # * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')
29
+ # * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')
30
+ # time-handling sugar is provided by the client library
31
+ time stamp
32
+ #Frame this data is associated with
33
+ string frame_id
34
+
35
+ ================================================================================
36
+ MSG: kuavo_msgs/armHandPose
37
+ float64[3] pos_xyz
38
+ float64[4] quat_xyzw
39
+
40
+ float64[3] elbow_pos_xyz
41
+
42
+ float64[7] joint_angles
43
+ """
44
+ __slots__ = ['header','left_pose','right_pose']
45
+ _slot_types = ['std_msgs/Header','kuavo_msgs/armHandPose','kuavo_msgs/armHandPose']
46
+
47
+ def __init__(self, *args, **kwds):
48
+ """
49
+ Constructor. Any message fields that are implicitly/explicitly
50
+ set to None will be assigned a default value. The recommend
51
+ use is keyword arguments as this is more robust to future message
52
+ changes. You cannot mix in-order arguments and keyword arguments.
53
+
54
+ The available fields are:
55
+ header,left_pose,right_pose
56
+
57
+ :param args: complete set of field values, in .msg order
58
+ :param kwds: use keyword arguments corresponding to message field names
59
+ to set specific fields.
60
+ """
61
+ if args or kwds:
62
+ super(twoArmHandPose, self).__init__(*args, **kwds)
63
+ # message fields cannot be None, assign default values for those that are
64
+ if self.header is None:
65
+ self.header = std_msgs.msg.Header()
66
+ if self.left_pose is None:
67
+ self.left_pose = kuavo_msgs.msg.armHandPose()
68
+ if self.right_pose is None:
69
+ self.right_pose = kuavo_msgs.msg.armHandPose()
70
+ else:
71
+ self.header = std_msgs.msg.Header()
72
+ self.left_pose = kuavo_msgs.msg.armHandPose()
73
+ self.right_pose = kuavo_msgs.msg.armHandPose()
74
+
75
+ def _get_types(self):
76
+ """
77
+ internal API method
78
+ """
79
+ return self._slot_types
80
+
81
+ def serialize(self, buff):
82
+ """
83
+ serialize message into buffer
84
+ :param buff: buffer, ``StringIO``
85
+ """
86
+ try:
87
+ _x = self
88
+ buff.write(_get_struct_3I().pack(_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs))
89
+ _x = self.header.frame_id
90
+ length = len(_x)
91
+ if python3 or type(_x) == unicode:
92
+ _x = _x.encode('utf-8')
93
+ length = len(_x)
94
+ buff.write(struct.Struct('<I%ss'%length).pack(length, _x))
95
+ buff.write(_get_struct_3d().pack(*self.left_pose.pos_xyz))
96
+ buff.write(_get_struct_4d().pack(*self.left_pose.quat_xyzw))
97
+ buff.write(_get_struct_3d().pack(*self.left_pose.elbow_pos_xyz))
98
+ buff.write(_get_struct_7d().pack(*self.left_pose.joint_angles))
99
+ buff.write(_get_struct_3d().pack(*self.right_pose.pos_xyz))
100
+ buff.write(_get_struct_4d().pack(*self.right_pose.quat_xyzw))
101
+ buff.write(_get_struct_3d().pack(*self.right_pose.elbow_pos_xyz))
102
+ buff.write(_get_struct_7d().pack(*self.right_pose.joint_angles))
103
+ except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
104
+ except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))
105
+
106
+ def deserialize(self, str):
107
+ """
108
+ unpack serialized message in str into this message instance
109
+ :param str: byte array of serialized message, ``str``
110
+ """
111
+ if python3:
112
+ codecs.lookup_error("rosmsg").msg_type = self._type
113
+ try:
114
+ if self.header is None:
115
+ self.header = std_msgs.msg.Header()
116
+ if self.left_pose is None:
117
+ self.left_pose = kuavo_msgs.msg.armHandPose()
118
+ if self.right_pose is None:
119
+ self.right_pose = kuavo_msgs.msg.armHandPose()
120
+ end = 0
121
+ _x = self
122
+ start = end
123
+ end += 12
124
+ (_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs,) = _get_struct_3I().unpack(str[start:end])
125
+ start = end
126
+ end += 4
127
+ (length,) = _struct_I.unpack(str[start:end])
128
+ start = end
129
+ end += length
130
+ if python3:
131
+ self.header.frame_id = str[start:end].decode('utf-8', 'rosmsg')
132
+ else:
133
+ self.header.frame_id = str[start:end]
134
+ start = end
135
+ end += 24
136
+ self.left_pose.pos_xyz = _get_struct_3d().unpack(str[start:end])
137
+ start = end
138
+ end += 32
139
+ self.left_pose.quat_xyzw = _get_struct_4d().unpack(str[start:end])
140
+ start = end
141
+ end += 24
142
+ self.left_pose.elbow_pos_xyz = _get_struct_3d().unpack(str[start:end])
143
+ start = end
144
+ end += 56
145
+ self.left_pose.joint_angles = _get_struct_7d().unpack(str[start:end])
146
+ start = end
147
+ end += 24
148
+ self.right_pose.pos_xyz = _get_struct_3d().unpack(str[start:end])
149
+ start = end
150
+ end += 32
151
+ self.right_pose.quat_xyzw = _get_struct_4d().unpack(str[start:end])
152
+ start = end
153
+ end += 24
154
+ self.right_pose.elbow_pos_xyz = _get_struct_3d().unpack(str[start:end])
155
+ start = end
156
+ end += 56
157
+ self.right_pose.joint_angles = _get_struct_7d().unpack(str[start:end])
158
+ return self
159
+ except struct.error as e:
160
+ raise genpy.DeserializationError(e) # most likely buffer underfill
161
+
162
+
163
+ def serialize_numpy(self, buff, numpy):
164
+ """
165
+ serialize message with numpy array types into buffer
166
+ :param buff: buffer, ``StringIO``
167
+ :param numpy: numpy python module
168
+ """
169
+ try:
170
+ _x = self
171
+ buff.write(_get_struct_3I().pack(_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs))
172
+ _x = self.header.frame_id
173
+ length = len(_x)
174
+ if python3 or type(_x) == unicode:
175
+ _x = _x.encode('utf-8')
176
+ length = len(_x)
177
+ buff.write(struct.Struct('<I%ss'%length).pack(length, _x))
178
+ buff.write(self.left_pose.pos_xyz.tostring())
179
+ buff.write(self.left_pose.quat_xyzw.tostring())
180
+ buff.write(self.left_pose.elbow_pos_xyz.tostring())
181
+ buff.write(self.left_pose.joint_angles.tostring())
182
+ buff.write(self.right_pose.pos_xyz.tostring())
183
+ buff.write(self.right_pose.quat_xyzw.tostring())
184
+ buff.write(self.right_pose.elbow_pos_xyz.tostring())
185
+ buff.write(self.right_pose.joint_angles.tostring())
186
+ except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
187
+ except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))
188
+
189
+ def deserialize_numpy(self, str, numpy):
190
+ """
191
+ unpack serialized message in str into this message instance using numpy for array types
192
+ :param str: byte array of serialized message, ``str``
193
+ :param numpy: numpy python module
194
+ """
195
+ if python3:
196
+ codecs.lookup_error("rosmsg").msg_type = self._type
197
+ try:
198
+ if self.header is None:
199
+ self.header = std_msgs.msg.Header()
200
+ if self.left_pose is None:
201
+ self.left_pose = kuavo_msgs.msg.armHandPose()
202
+ if self.right_pose is None:
203
+ self.right_pose = kuavo_msgs.msg.armHandPose()
204
+ end = 0
205
+ _x = self
206
+ start = end
207
+ end += 12
208
+ (_x.header.seq, _x.header.stamp.secs, _x.header.stamp.nsecs,) = _get_struct_3I().unpack(str[start:end])
209
+ start = end
210
+ end += 4
211
+ (length,) = _struct_I.unpack(str[start:end])
212
+ start = end
213
+ end += length
214
+ if python3:
215
+ self.header.frame_id = str[start:end].decode('utf-8', 'rosmsg')
216
+ else:
217
+ self.header.frame_id = str[start:end]
218
+ start = end
219
+ end += 24
220
+ self.left_pose.pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
221
+ start = end
222
+ end += 32
223
+ self.left_pose.quat_xyzw = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=4)
224
+ start = end
225
+ end += 24
226
+ self.left_pose.elbow_pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
227
+ start = end
228
+ end += 56
229
+ self.left_pose.joint_angles = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=7)
230
+ start = end
231
+ end += 24
232
+ self.right_pose.pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
233
+ start = end
234
+ end += 32
235
+ self.right_pose.quat_xyzw = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=4)
236
+ start = end
237
+ end += 24
238
+ self.right_pose.elbow_pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
239
+ start = end
240
+ end += 56
241
+ self.right_pose.joint_angles = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=7)
242
+ return self
243
+ except struct.error as e:
244
+ raise genpy.DeserializationError(e) # most likely buffer underfill
245
+
246
+ _struct_I = genpy.struct_I
247
+ def _get_struct_I():
248
+ global _struct_I
249
+ return _struct_I
250
+ _struct_3I = None
251
+ def _get_struct_3I():
252
+ global _struct_3I
253
+ if _struct_3I is None:
254
+ _struct_3I = struct.Struct("<3I")
255
+ return _struct_3I
256
+ _struct_3d = None
257
+ def _get_struct_3d():
258
+ global _struct_3d
259
+ if _struct_3d is None:
260
+ _struct_3d = struct.Struct("<3d")
261
+ return _struct_3d
262
+ _struct_4d = None
263
+ def _get_struct_4d():
264
+ global _struct_4d
265
+ if _struct_4d is None:
266
+ _struct_4d = struct.Struct("<4d")
267
+ return _struct_4d
268
+ _struct_7d = None
269
+ def _get_struct_7d():
270
+ global _struct_7d
271
+ if _struct_7d is None:
272
+ _struct_7d = struct.Struct("<7d")
273
+ return _struct_7d
@@ -0,0 +1,316 @@
1
+ # This Python file uses the following encoding: utf-8
2
+ """autogenerated by genpy from kuavo_msgs/twoArmHandPoseCmd.msg. Do not edit."""
3
+ import codecs
4
+ import sys
5
+ python3 = True if sys.hexversion > 0x03000000 else False
6
+ import genpy
7
+ import struct
8
+
9
+ import kuavo_msgs.msg
10
+ import std_msgs.msg
11
+
12
+ class twoArmHandPoseCmd(genpy.Message):
13
+ _md5sum = "cd5f0a3dc4154eb55aff1c874e2dc81e"
14
+ _type = "kuavo_msgs/twoArmHandPoseCmd"
15
+ _has_header = False # flag to mark the presence of a Header object
16
+ _full_text = """twoArmHandPose hand_poses
17
+ # params for the IK solver
18
+ bool use_custom_ik_param
19
+ bool joint_angles_as_q0
20
+ ikSolveParam ik_param
21
+ int32 frame # 0 keep current frame 1 world frame (based on odom) 2 local frame 3 VRFrame 4 manipulation world frame
22
+ ================================================================================
23
+ MSG: kuavo_msgs/twoArmHandPose
24
+ Header header
25
+ armHandPose left_pose
26
+ armHandPose right_pose
27
+ ================================================================================
28
+ MSG: std_msgs/Header
29
+ # Standard metadata for higher-level stamped data types.
30
+ # This is generally used to communicate timestamped data
31
+ # in a particular coordinate frame.
32
+ #
33
+ # sequence ID: consecutively increasing ID
34
+ uint32 seq
35
+ #Two-integer timestamp that is expressed as:
36
+ # * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')
37
+ # * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')
38
+ # time-handling sugar is provided by the client library
39
+ time stamp
40
+ #Frame this data is associated with
41
+ string frame_id
42
+
43
+ ================================================================================
44
+ MSG: kuavo_msgs/armHandPose
45
+ float64[3] pos_xyz
46
+ float64[4] quat_xyzw
47
+
48
+ float64[3] elbow_pos_xyz
49
+
50
+ float64[7] joint_angles
51
+
52
+ ================================================================================
53
+ MSG: kuavo_msgs/ikSolveParam
54
+ # snopt params
55
+ float64 major_optimality_tol
56
+ float64 major_feasibility_tol
57
+ float64 minor_feasibility_tol
58
+ float64 major_iterations_limit
59
+ # constraint and cost params
60
+ float64 oritation_constraint_tol
61
+ float64 pos_constraint_tol # work when pos_cost_weight > 0.0
62
+ float64 pos_cost_weight"""
63
+ __slots__ = ['hand_poses','use_custom_ik_param','joint_angles_as_q0','ik_param','frame']
64
+ _slot_types = ['kuavo_msgs/twoArmHandPose','bool','bool','kuavo_msgs/ikSolveParam','int32']
65
+
66
+ def __init__(self, *args, **kwds):
67
+ """
68
+ Constructor. Any message fields that are implicitly/explicitly
69
+ set to None will be assigned a default value. The recommend
70
+ use is keyword arguments as this is more robust to future message
71
+ changes. You cannot mix in-order arguments and keyword arguments.
72
+
73
+ The available fields are:
74
+ hand_poses,use_custom_ik_param,joint_angles_as_q0,ik_param,frame
75
+
76
+ :param args: complete set of field values, in .msg order
77
+ :param kwds: use keyword arguments corresponding to message field names
78
+ to set specific fields.
79
+ """
80
+ if args or kwds:
81
+ super(twoArmHandPoseCmd, self).__init__(*args, **kwds)
82
+ # message fields cannot be None, assign default values for those that are
83
+ if self.hand_poses is None:
84
+ self.hand_poses = kuavo_msgs.msg.twoArmHandPose()
85
+ if self.use_custom_ik_param is None:
86
+ self.use_custom_ik_param = False
87
+ if self.joint_angles_as_q0 is None:
88
+ self.joint_angles_as_q0 = False
89
+ if self.ik_param is None:
90
+ self.ik_param = kuavo_msgs.msg.ikSolveParam()
91
+ if self.frame is None:
92
+ self.frame = 0
93
+ else:
94
+ self.hand_poses = kuavo_msgs.msg.twoArmHandPose()
95
+ self.use_custom_ik_param = False
96
+ self.joint_angles_as_q0 = False
97
+ self.ik_param = kuavo_msgs.msg.ikSolveParam()
98
+ self.frame = 0
99
+
100
+ def _get_types(self):
101
+ """
102
+ internal API method
103
+ """
104
+ return self._slot_types
105
+
106
+ def serialize(self, buff):
107
+ """
108
+ serialize message into buffer
109
+ :param buff: buffer, ``StringIO``
110
+ """
111
+ try:
112
+ _x = self
113
+ buff.write(_get_struct_3I().pack(_x.hand_poses.header.seq, _x.hand_poses.header.stamp.secs, _x.hand_poses.header.stamp.nsecs))
114
+ _x = self.hand_poses.header.frame_id
115
+ length = len(_x)
116
+ if python3 or type(_x) == unicode:
117
+ _x = _x.encode('utf-8')
118
+ length = len(_x)
119
+ buff.write(struct.Struct('<I%ss'%length).pack(length, _x))
120
+ buff.write(_get_struct_3d().pack(*self.hand_poses.left_pose.pos_xyz))
121
+ buff.write(_get_struct_4d().pack(*self.hand_poses.left_pose.quat_xyzw))
122
+ buff.write(_get_struct_3d().pack(*self.hand_poses.left_pose.elbow_pos_xyz))
123
+ buff.write(_get_struct_7d().pack(*self.hand_poses.left_pose.joint_angles))
124
+ buff.write(_get_struct_3d().pack(*self.hand_poses.right_pose.pos_xyz))
125
+ buff.write(_get_struct_4d().pack(*self.hand_poses.right_pose.quat_xyzw))
126
+ buff.write(_get_struct_3d().pack(*self.hand_poses.right_pose.elbow_pos_xyz))
127
+ buff.write(_get_struct_7d().pack(*self.hand_poses.right_pose.joint_angles))
128
+ _x = self
129
+ buff.write(_get_struct_2B7di().pack(_x.use_custom_ik_param, _x.joint_angles_as_q0, _x.ik_param.major_optimality_tol, _x.ik_param.major_feasibility_tol, _x.ik_param.minor_feasibility_tol, _x.ik_param.major_iterations_limit, _x.ik_param.oritation_constraint_tol, _x.ik_param.pos_constraint_tol, _x.ik_param.pos_cost_weight, _x.frame))
130
+ except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
131
+ except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))
132
+
133
+ def deserialize(self, str):
134
+ """
135
+ unpack serialized message in str into this message instance
136
+ :param str: byte array of serialized message, ``str``
137
+ """
138
+ if python3:
139
+ codecs.lookup_error("rosmsg").msg_type = self._type
140
+ try:
141
+ if self.hand_poses is None:
142
+ self.hand_poses = kuavo_msgs.msg.twoArmHandPose()
143
+ if self.ik_param is None:
144
+ self.ik_param = kuavo_msgs.msg.ikSolveParam()
145
+ end = 0
146
+ _x = self
147
+ start = end
148
+ end += 12
149
+ (_x.hand_poses.header.seq, _x.hand_poses.header.stamp.secs, _x.hand_poses.header.stamp.nsecs,) = _get_struct_3I().unpack(str[start:end])
150
+ start = end
151
+ end += 4
152
+ (length,) = _struct_I.unpack(str[start:end])
153
+ start = end
154
+ end += length
155
+ if python3:
156
+ self.hand_poses.header.frame_id = str[start:end].decode('utf-8', 'rosmsg')
157
+ else:
158
+ self.hand_poses.header.frame_id = str[start:end]
159
+ start = end
160
+ end += 24
161
+ self.hand_poses.left_pose.pos_xyz = _get_struct_3d().unpack(str[start:end])
162
+ start = end
163
+ end += 32
164
+ self.hand_poses.left_pose.quat_xyzw = _get_struct_4d().unpack(str[start:end])
165
+ start = end
166
+ end += 24
167
+ self.hand_poses.left_pose.elbow_pos_xyz = _get_struct_3d().unpack(str[start:end])
168
+ start = end
169
+ end += 56
170
+ self.hand_poses.left_pose.joint_angles = _get_struct_7d().unpack(str[start:end])
171
+ start = end
172
+ end += 24
173
+ self.hand_poses.right_pose.pos_xyz = _get_struct_3d().unpack(str[start:end])
174
+ start = end
175
+ end += 32
176
+ self.hand_poses.right_pose.quat_xyzw = _get_struct_4d().unpack(str[start:end])
177
+ start = end
178
+ end += 24
179
+ self.hand_poses.right_pose.elbow_pos_xyz = _get_struct_3d().unpack(str[start:end])
180
+ start = end
181
+ end += 56
182
+ self.hand_poses.right_pose.joint_angles = _get_struct_7d().unpack(str[start:end])
183
+ _x = self
184
+ start = end
185
+ end += 62
186
+ (_x.use_custom_ik_param, _x.joint_angles_as_q0, _x.ik_param.major_optimality_tol, _x.ik_param.major_feasibility_tol, _x.ik_param.minor_feasibility_tol, _x.ik_param.major_iterations_limit, _x.ik_param.oritation_constraint_tol, _x.ik_param.pos_constraint_tol, _x.ik_param.pos_cost_weight, _x.frame,) = _get_struct_2B7di().unpack(str[start:end])
187
+ self.use_custom_ik_param = bool(self.use_custom_ik_param)
188
+ self.joint_angles_as_q0 = bool(self.joint_angles_as_q0)
189
+ return self
190
+ except struct.error as e:
191
+ raise genpy.DeserializationError(e) # most likely buffer underfill
192
+
193
+
194
+ def serialize_numpy(self, buff, numpy):
195
+ """
196
+ serialize message with numpy array types into buffer
197
+ :param buff: buffer, ``StringIO``
198
+ :param numpy: numpy python module
199
+ """
200
+ try:
201
+ _x = self
202
+ buff.write(_get_struct_3I().pack(_x.hand_poses.header.seq, _x.hand_poses.header.stamp.secs, _x.hand_poses.header.stamp.nsecs))
203
+ _x = self.hand_poses.header.frame_id
204
+ length = len(_x)
205
+ if python3 or type(_x) == unicode:
206
+ _x = _x.encode('utf-8')
207
+ length = len(_x)
208
+ buff.write(struct.Struct('<I%ss'%length).pack(length, _x))
209
+ buff.write(self.hand_poses.left_pose.pos_xyz.tostring())
210
+ buff.write(self.hand_poses.left_pose.quat_xyzw.tostring())
211
+ buff.write(self.hand_poses.left_pose.elbow_pos_xyz.tostring())
212
+ buff.write(self.hand_poses.left_pose.joint_angles.tostring())
213
+ buff.write(self.hand_poses.right_pose.pos_xyz.tostring())
214
+ buff.write(self.hand_poses.right_pose.quat_xyzw.tostring())
215
+ buff.write(self.hand_poses.right_pose.elbow_pos_xyz.tostring())
216
+ buff.write(self.hand_poses.right_pose.joint_angles.tostring())
217
+ _x = self
218
+ buff.write(_get_struct_2B7di().pack(_x.use_custom_ik_param, _x.joint_angles_as_q0, _x.ik_param.major_optimality_tol, _x.ik_param.major_feasibility_tol, _x.ik_param.minor_feasibility_tol, _x.ik_param.major_iterations_limit, _x.ik_param.oritation_constraint_tol, _x.ik_param.pos_constraint_tol, _x.ik_param.pos_cost_weight, _x.frame))
219
+ except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
220
+ except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))
221
+
222
+ def deserialize_numpy(self, str, numpy):
223
+ """
224
+ unpack serialized message in str into this message instance using numpy for array types
225
+ :param str: byte array of serialized message, ``str``
226
+ :param numpy: numpy python module
227
+ """
228
+ if python3:
229
+ codecs.lookup_error("rosmsg").msg_type = self._type
230
+ try:
231
+ if self.hand_poses is None:
232
+ self.hand_poses = kuavo_msgs.msg.twoArmHandPose()
233
+ if self.ik_param is None:
234
+ self.ik_param = kuavo_msgs.msg.ikSolveParam()
235
+ end = 0
236
+ _x = self
237
+ start = end
238
+ end += 12
239
+ (_x.hand_poses.header.seq, _x.hand_poses.header.stamp.secs, _x.hand_poses.header.stamp.nsecs,) = _get_struct_3I().unpack(str[start:end])
240
+ start = end
241
+ end += 4
242
+ (length,) = _struct_I.unpack(str[start:end])
243
+ start = end
244
+ end += length
245
+ if python3:
246
+ self.hand_poses.header.frame_id = str[start:end].decode('utf-8', 'rosmsg')
247
+ else:
248
+ self.hand_poses.header.frame_id = str[start:end]
249
+ start = end
250
+ end += 24
251
+ self.hand_poses.left_pose.pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
252
+ start = end
253
+ end += 32
254
+ self.hand_poses.left_pose.quat_xyzw = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=4)
255
+ start = end
256
+ end += 24
257
+ self.hand_poses.left_pose.elbow_pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
258
+ start = end
259
+ end += 56
260
+ self.hand_poses.left_pose.joint_angles = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=7)
261
+ start = end
262
+ end += 24
263
+ self.hand_poses.right_pose.pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
264
+ start = end
265
+ end += 32
266
+ self.hand_poses.right_pose.quat_xyzw = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=4)
267
+ start = end
268
+ end += 24
269
+ self.hand_poses.right_pose.elbow_pos_xyz = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=3)
270
+ start = end
271
+ end += 56
272
+ self.hand_poses.right_pose.joint_angles = numpy.frombuffer(str[start:end], dtype=numpy.float64, count=7)
273
+ _x = self
274
+ start = end
275
+ end += 62
276
+ (_x.use_custom_ik_param, _x.joint_angles_as_q0, _x.ik_param.major_optimality_tol, _x.ik_param.major_feasibility_tol, _x.ik_param.minor_feasibility_tol, _x.ik_param.major_iterations_limit, _x.ik_param.oritation_constraint_tol, _x.ik_param.pos_constraint_tol, _x.ik_param.pos_cost_weight, _x.frame,) = _get_struct_2B7di().unpack(str[start:end])
277
+ self.use_custom_ik_param = bool(self.use_custom_ik_param)
278
+ self.joint_angles_as_q0 = bool(self.joint_angles_as_q0)
279
+ return self
280
+ except struct.error as e:
281
+ raise genpy.DeserializationError(e) # most likely buffer underfill
282
+
283
+ _struct_I = genpy.struct_I
284
+ def _get_struct_I():
285
+ global _struct_I
286
+ return _struct_I
287
+ _struct_2B7di = None
288
+ def _get_struct_2B7di():
289
+ global _struct_2B7di
290
+ if _struct_2B7di is None:
291
+ _struct_2B7di = struct.Struct("<2B7di")
292
+ return _struct_2B7di
293
+ _struct_3I = None
294
+ def _get_struct_3I():
295
+ global _struct_3I
296
+ if _struct_3I is None:
297
+ _struct_3I = struct.Struct("<3I")
298
+ return _struct_3I
299
+ _struct_3d = None
300
+ def _get_struct_3d():
301
+ global _struct_3d
302
+ if _struct_3d is None:
303
+ _struct_3d = struct.Struct("<3d")
304
+ return _struct_3d
305
+ _struct_4d = None
306
+ def _get_struct_4d():
307
+ global _struct_4d
308
+ if _struct_4d is None:
309
+ _struct_4d = struct.Struct("<4d")
310
+ return _struct_4d
311
+ _struct_7d = None
312
+ def _get_struct_7d():
313
+ global _struct_7d
314
+ if _struct_7d is None:
315
+ _struct_7d = struct.Struct("<7d")
316
+ return _struct_7d