wandelbots_api_client 26.3.0.dev29__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.
Files changed (693) hide show
  1. wandelbots_api_client/__init__.py +48 -0
  2. wandelbots_api_client/api/__init__.py +63 -0
  3. wandelbots_api_client/api/application_api.py +1514 -0
  4. wandelbots_api_client/api/cell_api.py +1424 -0
  5. wandelbots_api_client/api/controller_api.py +2951 -0
  6. wandelbots_api_client/api/controller_ios_api.py +1205 -0
  7. wandelbots_api_client/api/coordinate_systems_api.py +1267 -0
  8. wandelbots_api_client/api/device_configuration_api.py +1193 -0
  9. wandelbots_api_client/api/library_program_api.py +1326 -0
  10. wandelbots_api_client/api/library_program_metadata_api.py +1090 -0
  11. wandelbots_api_client/api/library_recipe_api.py +1351 -0
  12. wandelbots_api_client/api/library_recipe_metadata_api.py +1050 -0
  13. wandelbots_api_client/api/license_api.py +865 -0
  14. wandelbots_api_client/api/motion_api.py +3596 -0
  15. wandelbots_api_client/api/motion_group_api.py +956 -0
  16. wandelbots_api_client/api/motion_group_infos_api.py +2611 -0
  17. wandelbots_api_client/api/motion_group_jogging_api.py +685 -0
  18. wandelbots_api_client/api/motion_group_kinematic_api.py +1055 -0
  19. wandelbots_api_client/api/program_api.py +1987 -0
  20. wandelbots_api_client/api/program_operator_api.py +1881 -0
  21. wandelbots_api_client/api/program_values_api.py +1444 -0
  22. wandelbots_api_client/api/store_collision_components_api.py +3074 -0
  23. wandelbots_api_client/api/store_collision_scenes_api.py +951 -0
  24. wandelbots_api_client/api/store_object_api.py +1387 -0
  25. wandelbots_api_client/api/system_api.py +1075 -0
  26. wandelbots_api_client/api/version_api.py +237 -0
  27. wandelbots_api_client/api/virtual_robot_api.py +1583 -0
  28. wandelbots_api_client/api/virtual_robot_behavior_api.py +649 -0
  29. wandelbots_api_client/api/virtual_robot_mode_api.py +1467 -0
  30. wandelbots_api_client/api/virtual_robot_setup_api.py +2116 -0
  31. wandelbots_api_client/api_client.py +688 -0
  32. wandelbots_api_client/api_response.py +20 -0
  33. wandelbots_api_client/authorization.py +243 -0
  34. wandelbots_api_client/configuration.py +579 -0
  35. wandelbots_api_client/exceptions.py +216 -0
  36. wandelbots_api_client/models/__init__.py +316 -0
  37. wandelbots_api_client/models/abb_controller.py +112 -0
  38. wandelbots_api_client/models/abb_controller_egm_server.py +87 -0
  39. wandelbots_api_client/models/activate_license_request.py +86 -0
  40. wandelbots_api_client/models/add_request.py +95 -0
  41. wandelbots_api_client/models/all_joint_positions_request.py +96 -0
  42. wandelbots_api_client/models/all_joint_positions_response.py +109 -0
  43. wandelbots_api_client/models/api_version.py +86 -0
  44. wandelbots_api_client/models/app.py +148 -0
  45. wandelbots_api_client/models/array_input.py +114 -0
  46. wandelbots_api_client/models/array_output.py +116 -0
  47. wandelbots_api_client/models/behavior.py +35 -0
  48. wandelbots_api_client/models/blending_auto.py +99 -0
  49. wandelbots_api_client/models/blending_position.py +97 -0
  50. wandelbots_api_client/models/box.py +98 -0
  51. wandelbots_api_client/models/box2.py +112 -0
  52. wandelbots_api_client/models/box3.py +112 -0
  53. wandelbots_api_client/models/capsule.py +87 -0
  54. wandelbots_api_client/models/capsule2.py +97 -0
  55. wandelbots_api_client/models/capsule3.py +101 -0
  56. wandelbots_api_client/models/capture.py +86 -0
  57. wandelbots_api_client/models/cell.py +142 -0
  58. wandelbots_api_client/models/circle.py +99 -0
  59. wandelbots_api_client/models/code_with_arguments.py +108 -0
  60. wandelbots_api_client/models/collection_value.py +322 -0
  61. wandelbots_api_client/models/collider.py +105 -0
  62. wandelbots_api_client/models/collider_input.py +105 -0
  63. wandelbots_api_client/models/collider_output.py +105 -0
  64. wandelbots_api_client/models/collider_output_shape.py +242 -0
  65. wandelbots_api_client/models/collider_shape.py +280 -0
  66. wandelbots_api_client/models/collision.py +110 -0
  67. wandelbots_api_client/models/collision_contact.py +92 -0
  68. wandelbots_api_client/models/collision_motion_group.py +124 -0
  69. wandelbots_api_client/models/collision_motion_group_assembly.py +128 -0
  70. wandelbots_api_client/models/collision_robot_configuration_input.py +121 -0
  71. wandelbots_api_client/models/collision_robot_configuration_output.py +121 -0
  72. wandelbots_api_client/models/collision_scene.py +117 -0
  73. wandelbots_api_client/models/collision_scene_assembly.py +133 -0
  74. wandelbots_api_client/models/command.py +140 -0
  75. wandelbots_api_client/models/command_settings.py +104 -0
  76. wandelbots_api_client/models/comparator.py +39 -0
  77. wandelbots_api_client/models/compound.py +114 -0
  78. wandelbots_api_client/models/container_environment_inner.py +87 -0
  79. wandelbots_api_client/models/container_image.py +122 -0
  80. wandelbots_api_client/models/container_image_secrets_inner.py +86 -0
  81. wandelbots_api_client/models/container_resources.py +89 -0
  82. wandelbots_api_client/models/container_storage.py +97 -0
  83. wandelbots_api_client/models/controller_capabilities.py +89 -0
  84. wandelbots_api_client/models/controller_instance.py +148 -0
  85. wandelbots_api_client/models/controller_instance_list.py +109 -0
  86. wandelbots_api_client/models/convex_hull.py +109 -0
  87. wandelbots_api_client/models/convex_hull2.py +97 -0
  88. wandelbots_api_client/models/convex_hull3.py +97 -0
  89. wandelbots_api_client/models/coordinate_system.py +108 -0
  90. wandelbots_api_client/models/coordinate_systems.py +109 -0
  91. wandelbots_api_client/models/create_program_run200_response.py +88 -0
  92. wandelbots_api_client/models/create_program_run_request.py +86 -0
  93. wandelbots_api_client/models/create_trigger200_response.py +86 -0
  94. wandelbots_api_client/models/create_trigger_request.py +101 -0
  95. wandelbots_api_client/models/cubic_spline.py +109 -0
  96. wandelbots_api_client/models/cubic_spline_cubic_spline_parameter.py +93 -0
  97. wandelbots_api_client/models/cubic_spline_parameter.py +93 -0
  98. wandelbots_api_client/models/cycle_time.py +86 -0
  99. wandelbots_api_client/models/cylinder.py +87 -0
  100. wandelbots_api_client/models/cylinder2.py +95 -0
  101. wandelbots_api_client/models/cylinder3.py +101 -0
  102. wandelbots_api_client/models/devices_inner.py +321 -0
  103. wandelbots_api_client/models/dh_parameter.py +98 -0
  104. wandelbots_api_client/models/direction.py +34 -0
  105. wandelbots_api_client/models/direction_jogging_request.py +136 -0
  106. wandelbots_api_client/models/error.py +87 -0
  107. wandelbots_api_client/models/execute_trajectory_request.py +182 -0
  108. wandelbots_api_client/models/execute_trajectory_response.py +223 -0
  109. wandelbots_api_client/models/execution_result.py +113 -0
  110. wandelbots_api_client/models/external_joint_stream_datapoint.py +96 -0
  111. wandelbots_api_client/models/external_joint_stream_datapoint_value.py +96 -0
  112. wandelbots_api_client/models/fanuc_controller.py +99 -0
  113. wandelbots_api_client/models/feedback_collision.py +126 -0
  114. wandelbots_api_client/models/feedback_joint_limit_exceeded.py +101 -0
  115. wandelbots_api_client/models/feedback_out_of_workspace.py +103 -0
  116. wandelbots_api_client/models/feedback_singularity.py +102 -0
  117. wandelbots_api_client/models/flag.py +86 -0
  118. wandelbots_api_client/models/force_vector.py +103 -0
  119. wandelbots_api_client/models/geometry.py +167 -0
  120. wandelbots_api_client/models/get_all_program_runs200_response.py +109 -0
  121. wandelbots_api_client/models/get_all_triggers200_response.py +109 -0
  122. wandelbots_api_client/models/get_mode_response.py +87 -0
  123. wandelbots_api_client/models/get_trajectory_response.py +112 -0
  124. wandelbots_api_client/models/get_trajectory_sample_response.py +90 -0
  125. wandelbots_api_client/models/google_protobuf_any.py +102 -0
  126. wandelbots_api_client/models/http_exception_response.py +86 -0
  127. wandelbots_api_client/models/http_validation_error.py +109 -0
  128. wandelbots_api_client/models/http_validation_error2.py +109 -0
  129. wandelbots_api_client/models/image_credentials.py +88 -0
  130. wandelbots_api_client/models/info_service_capabilities.py +110 -0
  131. wandelbots_api_client/models/initialize_movement_request.py +111 -0
  132. wandelbots_api_client/models/initialize_movement_response.py +96 -0
  133. wandelbots_api_client/models/initialize_movement_response_init_response.py +89 -0
  134. wandelbots_api_client/models/io.py +105 -0
  135. wandelbots_api_client/models/io_description.py +156 -0
  136. wandelbots_api_client/models/io_value.py +104 -0
  137. wandelbots_api_client/models/ios.py +109 -0
  138. wandelbots_api_client/models/jogging_response.py +117 -0
  139. wandelbots_api_client/models/jogging_service_capabilities.py +87 -0
  140. wandelbots_api_client/models/joint_jogging_request.py +108 -0
  141. wandelbots_api_client/models/joint_limit.py +123 -0
  142. wandelbots_api_client/models/joint_limit_exceeded.py +96 -0
  143. wandelbots_api_client/models/joint_position_request.py +104 -0
  144. wandelbots_api_client/models/joint_trajectory.py +117 -0
  145. wandelbots_api_client/models/joints.py +86 -0
  146. wandelbots_api_client/models/kinematic_service_capabilities.py +96 -0
  147. wandelbots_api_client/models/kuka_controller.py +112 -0
  148. wandelbots_api_client/models/kuka_controller_rsi_server.py +92 -0
  149. wandelbots_api_client/models/license.py +124 -0
  150. wandelbots_api_client/models/license_status.py +88 -0
  151. wandelbots_api_client/models/license_status_enum.py +37 -0
  152. wandelbots_api_client/models/limit_settings.py +223 -0
  153. wandelbots_api_client/models/limits_override.py +132 -0
  154. wandelbots_api_client/models/list_io_descriptions_response.py +109 -0
  155. wandelbots_api_client/models/list_io_values_response.py +109 -0
  156. wandelbots_api_client/models/list_payloads_response.py +109 -0
  157. wandelbots_api_client/models/list_program_metadata_response.py +109 -0
  158. wandelbots_api_client/models/list_recipe_metadata_response.py +109 -0
  159. wandelbots_api_client/models/list_response.py +109 -0
  160. wandelbots_api_client/models/list_tcps_response.py +112 -0
  161. wandelbots_api_client/models/location_inner.py +153 -0
  162. wandelbots_api_client/models/location_inner1.py +142 -0
  163. wandelbots_api_client/models/manufacturer.py +37 -0
  164. wandelbots_api_client/models/mode_change_response.py +97 -0
  165. wandelbots_api_client/models/motion_command.py +109 -0
  166. wandelbots_api_client/models/motion_command_blending.py +164 -0
  167. wandelbots_api_client/models/motion_command_path.py +221 -0
  168. wandelbots_api_client/models/motion_group_behavior_getter.py +87 -0
  169. wandelbots_api_client/models/motion_group_info.py +88 -0
  170. wandelbots_api_client/models/motion_group_infos.py +109 -0
  171. wandelbots_api_client/models/motion_group_instance.py +101 -0
  172. wandelbots_api_client/models/motion_group_instance_list.py +109 -0
  173. wandelbots_api_client/models/motion_group_joints.py +100 -0
  174. wandelbots_api_client/models/motion_group_physical.py +105 -0
  175. wandelbots_api_client/models/motion_group_specification.py +136 -0
  176. wandelbots_api_client/models/motion_group_state.py +180 -0
  177. wandelbots_api_client/models/motion_group_state_joint_limit_reached.py +86 -0
  178. wandelbots_api_client/models/motion_group_state_response.py +103 -0
  179. wandelbots_api_client/models/motion_id.py +88 -0
  180. wandelbots_api_client/models/motion_ids_list_response.py +89 -0
  181. wandelbots_api_client/models/motion_vector.py +103 -0
  182. wandelbots_api_client/models/mounting.py +98 -0
  183. wandelbots_api_client/models/move_request.py +162 -0
  184. wandelbots_api_client/models/move_response.py +91 -0
  185. wandelbots_api_client/models/move_to_trajectory_via_joint_ptp_request.py +107 -0
  186. wandelbots_api_client/models/movement.py +90 -0
  187. wandelbots_api_client/models/movement_error.py +90 -0
  188. wandelbots_api_client/models/movement_error_error.py +86 -0
  189. wandelbots_api_client/models/movement_movement.py +98 -0
  190. wandelbots_api_client/models/op_mode.py +93 -0
  191. wandelbots_api_client/models/opcua_node_value_trigger_config.py +100 -0
  192. wandelbots_api_client/models/opcua_node_value_trigger_config_node_value.py +159 -0
  193. wandelbots_api_client/models/optimizer_setup.py +145 -0
  194. wandelbots_api_client/models/out_of_workspace.py +92 -0
  195. wandelbots_api_client/models/path.py +109 -0
  196. wandelbots_api_client/models/path_cartesian_ptp.py +103 -0
  197. wandelbots_api_client/models/path_circle.py +108 -0
  198. wandelbots_api_client/models/path_cubic_spline.py +118 -0
  199. wandelbots_api_client/models/path_joint_ptp.py +96 -0
  200. wandelbots_api_client/models/path_line.py +103 -0
  201. wandelbots_api_client/models/pause_movement_request.py +95 -0
  202. wandelbots_api_client/models/pause_movement_response.py +96 -0
  203. wandelbots_api_client/models/pause_movement_response_pause_response.py +89 -0
  204. wandelbots_api_client/models/pause_on_io.py +96 -0
  205. wandelbots_api_client/models/payload.py +103 -0
  206. wandelbots_api_client/models/plan_collision_free_ptp_request.py +131 -0
  207. wandelbots_api_client/models/plan_collision_free_ptp_request_target.py +150 -0
  208. wandelbots_api_client/models/plan_failed_on_trajectory_response.py +149 -0
  209. wandelbots_api_client/models/plan_failed_response.py +136 -0
  210. wandelbots_api_client/models/plan_request.py +127 -0
  211. wandelbots_api_client/models/plan_response.py +112 -0
  212. wandelbots_api_client/models/plan_successful_response.py +100 -0
  213. wandelbots_api_client/models/plan_trajectory_failed_response.py +106 -0
  214. wandelbots_api_client/models/plan_trajectory_failed_response_error_feedback.py +209 -0
  215. wandelbots_api_client/models/plan_trajectory_request.py +154 -0
  216. wandelbots_api_client/models/plan_trajectory_response.py +92 -0
  217. wandelbots_api_client/models/plan_trajectory_response_response.py +147 -0
  218. wandelbots_api_client/models/plane2.py +93 -0
  219. wandelbots_api_client/models/plane3.py +93 -0
  220. wandelbots_api_client/models/planned_motion.py +125 -0
  221. wandelbots_api_client/models/planner_pose.py +100 -0
  222. wandelbots_api_client/models/planning_limits.py +168 -0
  223. wandelbots_api_client/models/planning_limits_limit_range.py +87 -0
  224. wandelbots_api_client/models/playback_speed_request.py +94 -0
  225. wandelbots_api_client/models/playback_speed_response.py +96 -0
  226. wandelbots_api_client/models/playback_speed_response_playback_speed_response.py +86 -0
  227. wandelbots_api_client/models/point_cloud.py +86 -0
  228. wandelbots_api_client/models/pose.py +107 -0
  229. wandelbots_api_client/models/pose2.py +93 -0
  230. wandelbots_api_client/models/program_metadata.py +100 -0
  231. wandelbots_api_client/models/program_run.py +168 -0
  232. wandelbots_api_client/models/program_run_object.py +103 -0
  233. wandelbots_api_client/models/program_run_state.py +37 -0
  234. wandelbots_api_client/models/program_runner_reference.py +88 -0
  235. wandelbots_api_client/models/pyjectory_datatypes_core_pose.py +88 -0
  236. wandelbots_api_client/models/pyjectory_datatypes_serializer_orientation.py +87 -0
  237. wandelbots_api_client/models/pyjectory_datatypes_serializer_pose.py +87 -0
  238. wandelbots_api_client/models/pyjectory_datatypes_serializer_position.py +87 -0
  239. wandelbots_api_client/models/pyriphery_etcd_etcd_configuration.py +101 -0
  240. wandelbots_api_client/models/pyriphery_hardware_isaac_isaac_configuration.py +101 -0
  241. wandelbots_api_client/models/pyriphery_opcua_opcua_configuration.py +99 -0
  242. wandelbots_api_client/models/pyriphery_pyrae_controller_controller_configuration.py +107 -0
  243. wandelbots_api_client/models/pyriphery_pyrae_robot_robot_configuration.py +119 -0
  244. wandelbots_api_client/models/pyriphery_robotics_configurable_collision_scene_configurable_collision_scene_configuration_input.py +130 -0
  245. wandelbots_api_client/models/pyriphery_robotics_configurable_collision_scene_configurable_collision_scene_configuration_output.py +130 -0
  246. wandelbots_api_client/models/pyriphery_robotics_robotcell_timer_configuration.py +102 -0
  247. wandelbots_api_client/models/pyriphery_robotics_simulation_robot_with_view_open3d_configuration.py +99 -0
  248. wandelbots_api_client/models/pyriphery_robotics_simulation_simulated_io_configuration.py +94 -0
  249. wandelbots_api_client/models/pyriphery_robotics_simulation_simulated_opcua_configuration.py +94 -0
  250. wandelbots_api_client/models/quaternion.py +89 -0
  251. wandelbots_api_client/models/recipe_metadata.py +102 -0
  252. wandelbots_api_client/models/rectangle.py +87 -0
  253. wandelbots_api_client/models/rectangle2.py +95 -0
  254. wandelbots_api_client/models/rectangle3.py +101 -0
  255. wandelbots_api_client/models/rectangular_capsule.py +94 -0
  256. wandelbots_api_client/models/rectangular_capsule2.py +103 -0
  257. wandelbots_api_client/models/rectangular_capsule3.py +103 -0
  258. wandelbots_api_client/models/release_channel.py +34 -0
  259. wandelbots_api_client/models/request.py +142 -0
  260. wandelbots_api_client/models/request1.py +140 -0
  261. wandelbots_api_client/models/response_get_devices_devices_get_inner.py +321 -0
  262. wandelbots_api_client/models/response_get_value_programs_values_key_get.py +317 -0
  263. wandelbots_api_client/models/response_get_values_programs_values_get_value.py +322 -0
  264. wandelbots_api_client/models/robot_controller.py +108 -0
  265. wandelbots_api_client/models/robot_controller_configuration.py +262 -0
  266. wandelbots_api_client/models/robot_controller_state.py +191 -0
  267. wandelbots_api_client/models/robot_link_geometry.py +98 -0
  268. wandelbots_api_client/models/robot_state.py +101 -0
  269. wandelbots_api_client/models/robot_system_mode.py +37 -0
  270. wandelbots_api_client/models/robot_tcp.py +104 -0
  271. wandelbots_api_client/models/robot_tcps.py +109 -0
  272. wandelbots_api_client/models/rotation_angle_types.py +58 -0
  273. wandelbots_api_client/models/rotation_angles.py +91 -0
  274. wandelbots_api_client/models/safety_configuration.py +182 -0
  275. wandelbots_api_client/models/safety_setup.py +172 -0
  276. wandelbots_api_client/models/safety_setup_safety_settings.py +106 -0
  277. wandelbots_api_client/models/safety_setup_safety_zone.py +103 -0
  278. wandelbots_api_client/models/safety_zone.py +98 -0
  279. wandelbots_api_client/models/safety_zone_limits.py +96 -0
  280. wandelbots_api_client/models/safety_zone_violation.py +86 -0
  281. wandelbots_api_client/models/service_status.py +96 -0
  282. wandelbots_api_client/models/service_status_phase.py +46 -0
  283. wandelbots_api_client/models/service_status_severity.py +35 -0
  284. wandelbots_api_client/models/service_status_status.py +90 -0
  285. wandelbots_api_client/models/set_io.py +93 -0
  286. wandelbots_api_client/models/set_playback_speed.py +91 -0
  287. wandelbots_api_client/models/single_joint_limit.py +112 -0
  288. wandelbots_api_client/models/singularity.py +110 -0
  289. wandelbots_api_client/models/singularity_type_enum.py +35 -0
  290. wandelbots_api_client/models/sphere.py +86 -0
  291. wandelbots_api_client/models/sphere2.py +94 -0
  292. wandelbots_api_client/models/sphere3.py +96 -0
  293. wandelbots_api_client/models/standstill.py +92 -0
  294. wandelbots_api_client/models/standstill_reason.py +36 -0
  295. wandelbots_api_client/models/standstill_standstill.py +99 -0
  296. wandelbots_api_client/models/start_movement_request.py +135 -0
  297. wandelbots_api_client/models/start_on_io.py +96 -0
  298. wandelbots_api_client/models/status.py +119 -0
  299. wandelbots_api_client/models/stop_response.py +109 -0
  300. wandelbots_api_client/models/store_value.py +349 -0
  301. wandelbots_api_client/models/stream_move_backward.py +90 -0
  302. wandelbots_api_client/models/stream_move_forward.py +90 -0
  303. wandelbots_api_client/models/stream_move_playback_speed.py +92 -0
  304. wandelbots_api_client/models/stream_move_request.py +207 -0
  305. wandelbots_api_client/models/stream_move_response.py +110 -0
  306. wandelbots_api_client/models/stream_move_to_trajectory.py +96 -0
  307. wandelbots_api_client/models/stream_stop.py +90 -0
  308. wandelbots_api_client/models/tcp_pose.py +105 -0
  309. wandelbots_api_client/models/tcp_pose_request.py +106 -0
  310. wandelbots_api_client/models/tool_geometry.py +111 -0
  311. wandelbots_api_client/models/trajectory_sample.py +139 -0
  312. wandelbots_api_client/models/trigger_object.py +110 -0
  313. wandelbots_api_client/models/trigger_type.py +33 -0
  314. wandelbots_api_client/models/universalrobots_controller.py +102 -0
  315. wandelbots_api_client/models/update_nova_version_request.py +87 -0
  316. wandelbots_api_client/models/update_program_metadata_request.py +88 -0
  317. wandelbots_api_client/models/update_recipe_metadata_request.py +88 -0
  318. wandelbots_api_client/models/update_trigger_request.py +100 -0
  319. wandelbots_api_client/models/validation_error.py +113 -0
  320. wandelbots_api_client/models/validation_error2.py +113 -0
  321. wandelbots_api_client/models/value.py +317 -0
  322. wandelbots_api_client/models/vector3d.py +88 -0
  323. wandelbots_api_client/models/version_number.py +113 -0
  324. wandelbots_api_client/models/virtual_controller.py +117 -0
  325. wandelbots_api_client/models/virtual_controller_types.py +153 -0
  326. wandelbots_api_client/models/virtual_robot_configuration.py +91 -0
  327. wandelbots_api_client/models/yaskawa_controller.py +99 -0
  328. wandelbots_api_client/py.typed +0 -0
  329. wandelbots_api_client/rest.py +188 -0
  330. wandelbots_api_client/v2/__init__.py +49 -0
  331. wandelbots_api_client/v2/api/__init__.py +55 -0
  332. wandelbots_api_client/v2/api/application_api.py +1532 -0
  333. wandelbots_api_client/v2/api/bus_inputs_outputs_api.py +4534 -0
  334. wandelbots_api_client/v2/api/cell_api.py +2163 -0
  335. wandelbots_api_client/v2/api/controller_api.py +3238 -0
  336. wandelbots_api_client/v2/api/controller_inputs_outputs_api.py +1244 -0
  337. wandelbots_api_client/v2/api/jogging_api.py +113 -0
  338. wandelbots_api_client/v2/api/kinematics_api.py +555 -0
  339. wandelbots_api_client/v2/api/license_api.py +877 -0
  340. wandelbots_api_client/v2/api/motion_group_api.py +689 -0
  341. wandelbots_api_client/v2/api/motion_group_models_api.py +1222 -0
  342. wandelbots_api_client/v2/api/nova_cloud_api.py +760 -0
  343. wandelbots_api_client/v2/api/program_api.py +988 -0
  344. wandelbots_api_client/v2/api/robot_configurations_api.py +485 -0
  345. wandelbots_api_client/v2/api/store_collision_components_api.py +3479 -0
  346. wandelbots_api_client/v2/api/store_collision_setups_api.py +1169 -0
  347. wandelbots_api_client/v2/api/store_object_api.py +1414 -0
  348. wandelbots_api_client/v2/api/system_api.py +2696 -0
  349. wandelbots_api_client/v2/api/trajectory_caching_api.py +1339 -0
  350. wandelbots_api_client/v2/api/trajectory_execution_api.py +115 -0
  351. wandelbots_api_client/v2/api/trajectory_planning_api.py +811 -0
  352. wandelbots_api_client/v2/api/version_api.py +240 -0
  353. wandelbots_api_client/v2/api/virtual_controller_api.py +4534 -0
  354. wandelbots_api_client/v2/api/virtual_controller_behavior_api.py +863 -0
  355. wandelbots_api_client/v2/api/virtual_controller_inputs_outputs_api.py +895 -0
  356. wandelbots_api_client/v2/api_client.py +692 -0
  357. wandelbots_api_client/v2/api_response.py +20 -0
  358. wandelbots_api_client/v2/configuration.py +579 -0
  359. wandelbots_api_client/v2/exceptions.py +216 -0
  360. wandelbots_api_client/v2/models/__init__.py +317 -0
  361. wandelbots_api_client/v2/models/abb_controller.py +104 -0
  362. wandelbots_api_client/v2/models/abb_controller_egm_server.py +84 -0
  363. wandelbots_api_client/v2/models/activate_license_request.py +83 -0
  364. wandelbots_api_client/v2/models/add_trajectory_error.py +95 -0
  365. wandelbots_api_client/v2/models/add_trajectory_error_data.py +298 -0
  366. wandelbots_api_client/v2/models/add_trajectory_request.py +97 -0
  367. wandelbots_api_client/v2/models/add_trajectory_response.py +99 -0
  368. wandelbots_api_client/v2/models/add_virtual_controller_motion_group_request.py +147 -0
  369. wandelbots_api_client/v2/models/api_version.py +83 -0
  370. wandelbots_api_client/v2/models/app.py +156 -0
  371. wandelbots_api_client/v2/models/behavior.py +35 -0
  372. wandelbots_api_client/v2/models/blending_auto.py +97 -0
  373. wandelbots_api_client/v2/models/blending_position.py +143 -0
  374. wandelbots_api_client/v2/models/blending_space.py +34 -0
  375. wandelbots_api_client/v2/models/boolean_value.py +91 -0
  376. wandelbots_api_client/v2/models/box.py +109 -0
  377. wandelbots_api_client/v2/models/bus_io_description.py +111 -0
  378. wandelbots_api_client/v2/models/bus_io_modbus_client.py +100 -0
  379. wandelbots_api_client/v2/models/bus_io_modbus_server.py +127 -0
  380. wandelbots_api_client/v2/models/bus_io_modbus_tcp_client.py +98 -0
  381. wandelbots_api_client/v2/models/bus_io_modbus_tcp_server.py +97 -0
  382. wandelbots_api_client/v2/models/bus_io_modbus_virtual.py +90 -0
  383. wandelbots_api_client/v2/models/bus_io_profinet.py +131 -0
  384. wandelbots_api_client/v2/models/bus_io_profinet_default_route.py +84 -0
  385. wandelbots_api_client/v2/models/bus_io_profinet_ip_config.py +85 -0
  386. wandelbots_api_client/v2/models/bus_io_profinet_network.py +101 -0
  387. wandelbots_api_client/v2/models/bus_io_profinet_slot.py +92 -0
  388. wandelbots_api_client/v2/models/bus_io_profinet_virtual.py +90 -0
  389. wandelbots_api_client/v2/models/bus_io_type.py +223 -0
  390. wandelbots_api_client/v2/models/bus_ios_state.py +88 -0
  391. wandelbots_api_client/v2/models/bus_ios_state_enum.py +36 -0
  392. wandelbots_api_client/v2/models/capsule.py +94 -0
  393. wandelbots_api_client/v2/models/cartesian_limits.py +108 -0
  394. wandelbots_api_client/v2/models/cell.py +127 -0
  395. wandelbots_api_client/v2/models/cloud_config_status.py +164 -0
  396. wandelbots_api_client/v2/models/cloud_config_status_configured.py +97 -0
  397. wandelbots_api_client/v2/models/cloud_config_status_not_configured.py +90 -0
  398. wandelbots_api_client/v2/models/cloud_configuration.py +84 -0
  399. wandelbots_api_client/v2/models/cloud_connection_error.py +87 -0
  400. wandelbots_api_client/v2/models/cloud_connection_error_error.py +275 -0
  401. wandelbots_api_client/v2/models/cloud_connection_error_invalid_token.py +102 -0
  402. wandelbots_api_client/v2/models/cloud_connection_error_invalid_token_details.py +95 -0
  403. wandelbots_api_client/v2/models/cloud_connection_error_invalid_token_details_cloud_response.py +90 -0
  404. wandelbots_api_client/v2/models/cloud_connection_error_leafnode_connection_error.py +106 -0
  405. wandelbots_api_client/v2/models/cloud_connection_error_leafnode_connection_error_details.py +83 -0
  406. wandelbots_api_client/v2/models/cloud_connection_error_leafnode_connection_timeout.py +91 -0
  407. wandelbots_api_client/v2/models/cloud_connection_error_leafnode_restart_timeout.py +91 -0
  408. wandelbots_api_client/v2/models/cloud_connection_error_nats_failed.py +102 -0
  409. wandelbots_api_client/v2/models/cloud_connection_error_nats_failed_details.py +84 -0
  410. wandelbots_api_client/v2/models/cloud_connection_error_unexpected_response.py +104 -0
  411. wandelbots_api_client/v2/models/cloud_connection_error_unexpected_response_details.py +95 -0
  412. wandelbots_api_client/v2/models/cloud_connection_error_unexpected_response_details_cloud_response.py +85 -0
  413. wandelbots_api_client/v2/models/cloud_connection_request.py +98 -0
  414. wandelbots_api_client/v2/models/cloud_disconnection_error.py +89 -0
  415. wandelbots_api_client/v2/models/cloud_disconnection_status_disconnected.py +90 -0
  416. wandelbots_api_client/v2/models/cloud_disconnection_status_disconnecting.py +90 -0
  417. wandelbots_api_client/v2/models/cloud_registration_success_response.py +83 -0
  418. wandelbots_api_client/v2/models/collider.py +102 -0
  419. wandelbots_api_client/v2/models/collider_shape.py +278 -0
  420. wandelbots_api_client/v2/models/collision.py +107 -0
  421. wandelbots_api_client/v2/models/collision_contact.py +89 -0
  422. wandelbots_api_client/v2/models/collision_error.py +100 -0
  423. wandelbots_api_client/v2/models/collision_free_algorithm.py +164 -0
  424. wandelbots_api_client/v2/models/collision_setup.py +130 -0
  425. wandelbots_api_client/v2/models/comparator.py +38 -0
  426. wandelbots_api_client/v2/models/configuration_archive_status.py +197 -0
  427. wandelbots_api_client/v2/models/configuration_archive_status_creating.py +94 -0
  428. wandelbots_api_client/v2/models/configuration_archive_status_error.py +91 -0
  429. wandelbots_api_client/v2/models/configuration_archive_status_success.py +90 -0
  430. wandelbots_api_client/v2/models/configuration_resource.py +104 -0
  431. wandelbots_api_client/v2/models/container_environment_inner.py +84 -0
  432. wandelbots_api_client/v2/models/container_image.py +110 -0
  433. wandelbots_api_client/v2/models/container_image_secrets_inner.py +83 -0
  434. wandelbots_api_client/v2/models/container_resources.py +87 -0
  435. wandelbots_api_client/v2/models/container_storage.py +94 -0
  436. wandelbots_api_client/v2/models/controller_description.py +97 -0
  437. wandelbots_api_client/v2/models/convex_hull.py +94 -0
  438. wandelbots_api_client/v2/models/coordinate_system.py +115 -0
  439. wandelbots_api_client/v2/models/coordinate_system_data.py +106 -0
  440. wandelbots_api_client/v2/models/cubic_spline_parameter.py +90 -0
  441. wandelbots_api_client/v2/models/cycle_time.py +86 -0
  442. wandelbots_api_client/v2/models/cylinder.py +92 -0
  443. wandelbots_api_client/v2/models/dh_parameter.py +98 -0
  444. wandelbots_api_client/v2/models/direction.py +34 -0
  445. wandelbots_api_client/v2/models/error.py +84 -0
  446. wandelbots_api_client/v2/models/error_invalid_joint_count.py +98 -0
  447. wandelbots_api_client/v2/models/error_joint_limit_exceeded.py +103 -0
  448. wandelbots_api_client/v2/models/error_joint_position_collision.py +106 -0
  449. wandelbots_api_client/v2/models/error_max_iterations_exceeded.py +91 -0
  450. wandelbots_api_client/v2/models/execute.py +95 -0
  451. wandelbots_api_client/v2/models/execute_details.py +164 -0
  452. wandelbots_api_client/v2/models/execute_jogging_request.py +204 -0
  453. wandelbots_api_client/v2/models/execute_jogging_response.py +246 -0
  454. wandelbots_api_client/v2/models/execute_trajectory_request.py +209 -0
  455. wandelbots_api_client/v2/models/execute_trajectory_response.py +246 -0
  456. wandelbots_api_client/v2/models/external_joint_stream_datapoint.py +93 -0
  457. wandelbots_api_client/v2/models/external_joint_stream_request.py +97 -0
  458. wandelbots_api_client/v2/models/fanuc_controller.py +91 -0
  459. wandelbots_api_client/v2/models/feedback_collision.py +112 -0
  460. wandelbots_api_client/v2/models/feedback_joint_limit_exceeded.py +99 -0
  461. wandelbots_api_client/v2/models/feedback_no_solution_in_current_configuration.py +100 -0
  462. wandelbots_api_client/v2/models/feedback_out_of_workspace.py +100 -0
  463. wandelbots_api_client/v2/models/feedback_singularity.py +99 -0
  464. wandelbots_api_client/v2/models/flag.py +83 -0
  465. wandelbots_api_client/v2/models/flange_payload.py +98 -0
  466. wandelbots_api_client/v2/models/float_value.py +91 -0
  467. wandelbots_api_client/v2/models/forward_kinematics422_response.py +97 -0
  468. wandelbots_api_client/v2/models/forward_kinematics_request.py +104 -0
  469. wandelbots_api_client/v2/models/forward_kinematics_response.py +93 -0
  470. wandelbots_api_client/v2/models/forward_kinematics_validation_error.py +107 -0
  471. wandelbots_api_client/v2/models/get_trajectory_response.py +97 -0
  472. wandelbots_api_client/v2/models/http_validation_error.py +93 -0
  473. wandelbots_api_client/v2/models/image_credentials.py +85 -0
  474. wandelbots_api_client/v2/models/inconsistent_trajectory_size_error.py +106 -0
  475. wandelbots_api_client/v2/models/inconsistent_trajectory_size_error_inconsistent_trajectory_size.py +91 -0
  476. wandelbots_api_client/v2/models/initialize_jogging_request.py +95 -0
  477. wandelbots_api_client/v2/models/initialize_jogging_response.py +91 -0
  478. wandelbots_api_client/v2/models/initialize_movement_request.py +112 -0
  479. wandelbots_api_client/v2/models/initialize_movement_request_trajectory.py +164 -0
  480. wandelbots_api_client/v2/models/initialize_movement_response.py +107 -0
  481. wandelbots_api_client/v2/models/integer_value.py +91 -0
  482. wandelbots_api_client/v2/models/invalid_dof_error.py +100 -0
  483. wandelbots_api_client/v2/models/invalid_dof_error_invalid_dof.py +86 -0
  484. wandelbots_api_client/v2/models/inverse_kinematics422_response.py +97 -0
  485. wandelbots_api_client/v2/models/inverse_kinematics_request.py +152 -0
  486. wandelbots_api_client/v2/models/inverse_kinematics_response.py +83 -0
  487. wandelbots_api_client/v2/models/inverse_kinematics_validation_error.py +107 -0
  488. wandelbots_api_client/v2/models/inverse_kinematics_validation_error_all_of_data.py +164 -0
  489. wandelbots_api_client/v2/models/io_boolean_value.py +92 -0
  490. wandelbots_api_client/v2/models/io_boundary.py +183 -0
  491. wandelbots_api_client/v2/models/io_description.py +116 -0
  492. wandelbots_api_client/v2/models/io_direction.py +34 -0
  493. wandelbots_api_client/v2/models/io_float_value.py +92 -0
  494. wandelbots_api_client/v2/models/io_integer_value.py +94 -0
  495. wandelbots_api_client/v2/models/io_origin.py +34 -0
  496. wandelbots_api_client/v2/models/io_value.py +183 -0
  497. wandelbots_api_client/v2/models/io_value_type.py +35 -0
  498. wandelbots_api_client/v2/models/jogging_details.py +97 -0
  499. wandelbots_api_client/v2/models/jogging_details_state.py +275 -0
  500. wandelbots_api_client/v2/models/jogging_paused_by_user.py +90 -0
  501. wandelbots_api_client/v2/models/jogging_paused_near_collision.py +91 -0
  502. wandelbots_api_client/v2/models/jogging_paused_near_joint_limit.py +92 -0
  503. wandelbots_api_client/v2/models/jogging_paused_near_singularity.py +91 -0
  504. wandelbots_api_client/v2/models/jogging_paused_on_io.py +90 -0
  505. wandelbots_api_client/v2/models/jogging_running.py +90 -0
  506. wandelbots_api_client/v2/models/joint_limit_exceeded_error.py +102 -0
  507. wandelbots_api_client/v2/models/joint_limits.py +101 -0
  508. wandelbots_api_client/v2/models/joint_trajectory.py +89 -0
  509. wandelbots_api_client/v2/models/joint_type_enum.py +34 -0
  510. wandelbots_api_client/v2/models/joint_velocity_request.py +91 -0
  511. wandelbots_api_client/v2/models/joint_velocity_response.py +91 -0
  512. wandelbots_api_client/v2/models/kinematic_model.py +118 -0
  513. wandelbots_api_client/v2/models/kuka_controller.py +106 -0
  514. wandelbots_api_client/v2/models/kuka_controller_rsi_server.py +89 -0
  515. wandelbots_api_client/v2/models/license.py +121 -0
  516. wandelbots_api_client/v2/models/license_status.py +85 -0
  517. wandelbots_api_client/v2/models/license_status_enum.py +37 -0
  518. wandelbots_api_client/v2/models/limit_range.py +84 -0
  519. wandelbots_api_client/v2/models/limit_set.py +118 -0
  520. wandelbots_api_client/v2/models/limits_override.py +136 -0
  521. wandelbots_api_client/v2/models/list_trajectories_response.py +86 -0
  522. wandelbots_api_client/v2/models/location1_inner.py +153 -0
  523. wandelbots_api_client/v2/models/manufacturer.py +37 -0
  524. wandelbots_api_client/v2/models/merge_trajectories422_response.py +97 -0
  525. wandelbots_api_client/v2/models/merge_trajectories_error.py +97 -0
  526. wandelbots_api_client/v2/models/merge_trajectories_error_error_feedback.py +209 -0
  527. wandelbots_api_client/v2/models/merge_trajectories_request.py +107 -0
  528. wandelbots_api_client/v2/models/merge_trajectories_response.py +109 -0
  529. wandelbots_api_client/v2/models/merge_trajectories_response_feedback_inner.py +147 -0
  530. wandelbots_api_client/v2/models/merge_trajectories_segment.py +126 -0
  531. wandelbots_api_client/v2/models/merge_trajectories_validation_error.py +109 -0
  532. wandelbots_api_client/v2/models/midpoint_insertion_algorithm.py +102 -0
  533. wandelbots_api_client/v2/models/modbus_io.py +109 -0
  534. wandelbots_api_client/v2/models/modbus_io_area.py +37 -0
  535. wandelbots_api_client/v2/models/modbus_io_byte_order.py +37 -0
  536. wandelbots_api_client/v2/models/modbus_io_data.py +105 -0
  537. wandelbots_api_client/v2/models/modbus_io_type_enum.py +36 -0
  538. wandelbots_api_client/v2/models/motion_command.py +106 -0
  539. wandelbots_api_client/v2/models/motion_command_blending.py +164 -0
  540. wandelbots_api_client/v2/models/motion_command_path.py +221 -0
  541. wandelbots_api_client/v2/models/motion_group_description.py +235 -0
  542. wandelbots_api_client/v2/models/motion_group_from_json.py +100 -0
  543. wandelbots_api_client/v2/models/motion_group_from_type.py +96 -0
  544. wandelbots_api_client/v2/models/motion_group_info.py +90 -0
  545. wandelbots_api_client/v2/models/motion_group_joints.py +97 -0
  546. wandelbots_api_client/v2/models/motion_group_setup.py +140 -0
  547. wandelbots_api_client/v2/models/motion_group_state.py +182 -0
  548. wandelbots_api_client/v2/models/motion_group_state_joint_limit_reached.py +83 -0
  549. wandelbots_api_client/v2/models/movement_error_response.py +91 -0
  550. wandelbots_api_client/v2/models/nan_value_error.py +100 -0
  551. wandelbots_api_client/v2/models/nan_value_error_nan_value.py +85 -0
  552. wandelbots_api_client/v2/models/network_device.py +85 -0
  553. wandelbots_api_client/v2/models/network_interface.py +86 -0
  554. wandelbots_api_client/v2/models/network_state.py +125 -0
  555. wandelbots_api_client/v2/models/op_mode.py +84 -0
  556. wandelbots_api_client/v2/models/operating_state.py +34 -0
  557. wandelbots_api_client/v2/models/operation_limits.py +106 -0
  558. wandelbots_api_client/v2/models/operation_mode.py +42 -0
  559. wandelbots_api_client/v2/models/orientation_type.py +58 -0
  560. wandelbots_api_client/v2/models/path_cartesian_ptp.py +100 -0
  561. wandelbots_api_client/v2/models/path_circle.py +105 -0
  562. wandelbots_api_client/v2/models/path_cubic_spline.py +106 -0
  563. wandelbots_api_client/v2/models/path_joint_ptp.py +93 -0
  564. wandelbots_api_client/v2/models/path_line.py +100 -0
  565. wandelbots_api_client/v2/models/pause_jogging_request.py +90 -0
  566. wandelbots_api_client/v2/models/pause_jogging_response.py +91 -0
  567. wandelbots_api_client/v2/models/pause_movement_request.py +90 -0
  568. wandelbots_api_client/v2/models/pause_movement_response.py +91 -0
  569. wandelbots_api_client/v2/models/pause_on_io.py +99 -0
  570. wandelbots_api_client/v2/models/payload.py +98 -0
  571. wandelbots_api_client/v2/models/plan422_response.py +93 -0
  572. wandelbots_api_client/v2/models/plan_collision_free_failed_response.py +93 -0
  573. wandelbots_api_client/v2/models/plan_collision_free_request.py +109 -0
  574. wandelbots_api_client/v2/models/plan_collision_free_response.py +89 -0
  575. wandelbots_api_client/v2/models/plan_collision_free_response_response.py +147 -0
  576. wandelbots_api_client/v2/models/plan_trajectory_failed_response.py +105 -0
  577. wandelbots_api_client/v2/models/plan_trajectory_failed_response_error_feedback.py +252 -0
  578. wandelbots_api_client/v2/models/plan_trajectory_request.py +113 -0
  579. wandelbots_api_client/v2/models/plan_trajectory_response.py +89 -0
  580. wandelbots_api_client/v2/models/plan_trajectory_response_response.py +147 -0
  581. wandelbots_api_client/v2/models/plan_validation_error.py +107 -0
  582. wandelbots_api_client/v2/models/plan_validation_error_all_of_data.py +183 -0
  583. wandelbots_api_client/v2/models/plane.py +90 -0
  584. wandelbots_api_client/v2/models/playback_speed_request.py +96 -0
  585. wandelbots_api_client/v2/models/playback_speed_response.py +91 -0
  586. wandelbots_api_client/v2/models/pose.py +90 -0
  587. wandelbots_api_client/v2/models/profinet_description.py +112 -0
  588. wandelbots_api_client/v2/models/profinet_input_output_config.py +98 -0
  589. wandelbots_api_client/v2/models/profinet_io.py +109 -0
  590. wandelbots_api_client/v2/models/profinet_io_data.py +105 -0
  591. wandelbots_api_client/v2/models/profinet_io_direction.py +35 -0
  592. wandelbots_api_client/v2/models/profinet_io_type_enum.py +42 -0
  593. wandelbots_api_client/v2/models/profinet_slot_description.py +106 -0
  594. wandelbots_api_client/v2/models/profinet_sub_slot_description.py +92 -0
  595. wandelbots_api_client/v2/models/program.py +105 -0
  596. wandelbots_api_client/v2/models/program_run.py +124 -0
  597. wandelbots_api_client/v2/models/program_run_state.py +37 -0
  598. wandelbots_api_client/v2/models/program_start_request.py +83 -0
  599. wandelbots_api_client/v2/models/rectangle.py +92 -0
  600. wandelbots_api_client/v2/models/rectangular_capsule.py +100 -0
  601. wandelbots_api_client/v2/models/release_channel.py +34 -0
  602. wandelbots_api_client/v2/models/robot_controller.py +105 -0
  603. wandelbots_api_client/v2/models/robot_controller_configuration.py +262 -0
  604. wandelbots_api_client/v2/models/robot_controller_configuration_request.py +99 -0
  605. wandelbots_api_client/v2/models/robot_controller_state.py +138 -0
  606. wandelbots_api_client/v2/models/robot_system_mode.py +37 -0
  607. wandelbots_api_client/v2/models/robot_tcp.py +110 -0
  608. wandelbots_api_client/v2/models/robot_tcp_data.py +108 -0
  609. wandelbots_api_client/v2/models/rrt_connect_algorithm.py +127 -0
  610. wandelbots_api_client/v2/models/safety_state_type.py +48 -0
  611. wandelbots_api_client/v2/models/service_group.py +36 -0
  612. wandelbots_api_client/v2/models/service_status.py +96 -0
  613. wandelbots_api_client/v2/models/service_status_phase.py +46 -0
  614. wandelbots_api_client/v2/models/service_status_response.py +100 -0
  615. wandelbots_api_client/v2/models/service_status_severity.py +35 -0
  616. wandelbots_api_client/v2/models/service_status_status.py +87 -0
  617. wandelbots_api_client/v2/models/set_io.py +96 -0
  618. wandelbots_api_client/v2/models/settable_robot_system_mode.py +36 -0
  619. wandelbots_api_client/v2/models/singularity_type_enum.py +35 -0
  620. wandelbots_api_client/v2/models/sphere.py +91 -0
  621. wandelbots_api_client/v2/models/start_movement_request.py +133 -0
  622. wandelbots_api_client/v2/models/start_movement_response.py +91 -0
  623. wandelbots_api_client/v2/models/start_on_io.py +99 -0
  624. wandelbots_api_client/v2/models/stream_io_values_response.py +103 -0
  625. wandelbots_api_client/v2/models/tcp_offset.py +88 -0
  626. wandelbots_api_client/v2/models/tcp_required_error.py +96 -0
  627. wandelbots_api_client/v2/models/tcp_velocity_request.py +110 -0
  628. wandelbots_api_client/v2/models/tcp_velocity_response.py +91 -0
  629. wandelbots_api_client/v2/models/torque_exceeded_error.py +102 -0
  630. wandelbots_api_client/v2/models/torque_exceeded_error_torque_exceeded.py +86 -0
  631. wandelbots_api_client/v2/models/trajectory_data.py +106 -0
  632. wandelbots_api_client/v2/models/trajectory_details.py +106 -0
  633. wandelbots_api_client/v2/models/trajectory_details_state.py +239 -0
  634. wandelbots_api_client/v2/models/trajectory_ended.py +90 -0
  635. wandelbots_api_client/v2/models/trajectory_id.py +93 -0
  636. wandelbots_api_client/v2/models/trajectory_paused_by_user.py +90 -0
  637. wandelbots_api_client/v2/models/trajectory_paused_on_io.py +90 -0
  638. wandelbots_api_client/v2/models/trajectory_running.py +94 -0
  639. wandelbots_api_client/v2/models/trajectory_section.py +84 -0
  640. wandelbots_api_client/v2/models/trajectory_wait_for_io.py +90 -0
  641. wandelbots_api_client/v2/models/unit_type.py +42 -0
  642. wandelbots_api_client/v2/models/universalrobots_controller.py +91 -0
  643. wandelbots_api_client/v2/models/update_cell_version_request.py +84 -0
  644. wandelbots_api_client/v2/models/update_nova_version_request.py +90 -0
  645. wandelbots_api_client/v2/models/validation_error.py +101 -0
  646. wandelbots_api_client/v2/models/validation_error2.py +85 -0
  647. wandelbots_api_client/v2/models/virtual_controller.py +113 -0
  648. wandelbots_api_client/v2/models/virtual_robot_configuration.py +88 -0
  649. wandelbots_api_client/v2/models/wait_for_io_event_request.py +93 -0
  650. wandelbots_api_client/v2/models/yaskawa_controller.py +91 -0
  651. wandelbots_api_client/v2/models/zod_validation_error.py +87 -0
  652. wandelbots_api_client/v2/models/zod_validation_error_error.py +108 -0
  653. wandelbots_api_client/v2/models/zod_validation_error_error_details_inner.py +101 -0
  654. wandelbots_api_client/v2/models/zod_validation_error_error_details_inner_path_inner.py +153 -0
  655. wandelbots_api_client/v2/py.typed +0 -0
  656. wandelbots_api_client/v2/rest.py +188 -0
  657. wandelbots_api_client/v2_pydantic/__init__.py +49 -0
  658. wandelbots_api_client/v2_pydantic/api/__init__.py +55 -0
  659. wandelbots_api_client/v2_pydantic/api/application_api.py +1532 -0
  660. wandelbots_api_client/v2_pydantic/api/bus_inputs_outputs_api.py +4534 -0
  661. wandelbots_api_client/v2_pydantic/api/cell_api.py +2163 -0
  662. wandelbots_api_client/v2_pydantic/api/controller_api.py +3238 -0
  663. wandelbots_api_client/v2_pydantic/api/controller_inputs_outputs_api.py +1244 -0
  664. wandelbots_api_client/v2_pydantic/api/jogging_api.py +113 -0
  665. wandelbots_api_client/v2_pydantic/api/kinematics_api.py +555 -0
  666. wandelbots_api_client/v2_pydantic/api/license_api.py +877 -0
  667. wandelbots_api_client/v2_pydantic/api/motion_group_api.py +689 -0
  668. wandelbots_api_client/v2_pydantic/api/motion_group_models_api.py +1222 -0
  669. wandelbots_api_client/v2_pydantic/api/nova_cloud_api.py +760 -0
  670. wandelbots_api_client/v2_pydantic/api/program_api.py +988 -0
  671. wandelbots_api_client/v2_pydantic/api/robot_configurations_api.py +485 -0
  672. wandelbots_api_client/v2_pydantic/api/store_collision_components_api.py +3479 -0
  673. wandelbots_api_client/v2_pydantic/api/store_collision_setups_api.py +1169 -0
  674. wandelbots_api_client/v2_pydantic/api/store_object_api.py +1414 -0
  675. wandelbots_api_client/v2_pydantic/api/system_api.py +2696 -0
  676. wandelbots_api_client/v2_pydantic/api/trajectory_caching_api.py +1339 -0
  677. wandelbots_api_client/v2_pydantic/api/trajectory_execution_api.py +115 -0
  678. wandelbots_api_client/v2_pydantic/api/trajectory_planning_api.py +811 -0
  679. wandelbots_api_client/v2_pydantic/api/version_api.py +240 -0
  680. wandelbots_api_client/v2_pydantic/api/virtual_controller_api.py +4534 -0
  681. wandelbots_api_client/v2_pydantic/api/virtual_controller_behavior_api.py +863 -0
  682. wandelbots_api_client/v2_pydantic/api/virtual_controller_inputs_outputs_api.py +895 -0
  683. wandelbots_api_client/v2_pydantic/api_client.py +692 -0
  684. wandelbots_api_client/v2_pydantic/api_response.py +20 -0
  685. wandelbots_api_client/v2_pydantic/configuration.py +579 -0
  686. wandelbots_api_client/v2_pydantic/exceptions.py +216 -0
  687. wandelbots_api_client/v2_pydantic/models/__init__.py +642 -0
  688. wandelbots_api_client/v2_pydantic/models/models.py +5090 -0
  689. wandelbots_api_client/v2_pydantic/py.typed +0 -0
  690. wandelbots_api_client/v2_pydantic/rest.py +188 -0
  691. wandelbots_api_client-26.3.0.dev29.dist-info/METADATA +241 -0
  692. wandelbots_api_client-26.3.0.dev29.dist-info/RECORD +693 -0
  693. wandelbots_api_client-26.3.0.dev29.dist-info/WHEEL +4 -0
@@ -0,0 +1,3596 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Wandelbots NOVA API
5
+
6
+ Interact with robots in an easy and intuitive way.
7
+
8
+ The version of the OpenAPI document: 1.4.0 dev
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from furl import furl
15
+ import json
16
+ import humps
17
+ import re
18
+ import warnings
19
+ import websockets
20
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
21
+ from typing import Any, AsyncGenerator, Callable, Dict, List, Optional, Tuple, Union
22
+ from typing_extensions import Annotated
23
+ from urllib.parse import quote
24
+
25
+ from pydantic import Field, StrictFloat, StrictInt, StrictStr
26
+ from typing import List, Optional, Union
27
+ from typing_extensions import Annotated
28
+ from wandelbots_api_client.models.execute_trajectory_request import ExecuteTrajectoryRequest
29
+ from wandelbots_api_client.models.execute_trajectory_response import ExecuteTrajectoryResponse
30
+ from wandelbots_api_client.models.get_trajectory_response import GetTrajectoryResponse
31
+ from wandelbots_api_client.models.get_trajectory_sample_response import GetTrajectorySampleResponse
32
+ from wandelbots_api_client.models.motion_ids_list_response import MotionIdsListResponse
33
+ from wandelbots_api_client.models.plan_collision_free_ptp_request import PlanCollisionFreePTPRequest
34
+ from wandelbots_api_client.models.plan_request import PlanRequest
35
+ from wandelbots_api_client.models.plan_response import PlanResponse
36
+ from wandelbots_api_client.models.plan_trajectory_request import PlanTrajectoryRequest
37
+ from wandelbots_api_client.models.plan_trajectory_response import PlanTrajectoryResponse
38
+ from wandelbots_api_client.models.planned_motion import PlannedMotion
39
+ from wandelbots_api_client.models.stream_move_request import StreamMoveRequest
40
+ from wandelbots_api_client.models.stream_move_response import StreamMoveResponse
41
+
42
+ from wandelbots_api_client.api_client import ApiClient, RequestSerialized
43
+ from wandelbots_api_client.api_response import ApiResponse
44
+ from wandelbots_api_client.rest import RESTResponseType
45
+
46
+
47
+ class MotionApi:
48
+ """NOTE: This class is auto generated by OpenAPI Generator
49
+ Ref: https://openapi-generator.tech
50
+
51
+ Do not edit the class manually.
52
+ """
53
+
54
+ def __init__(self, api_client=None) -> None:
55
+ if api_client is None:
56
+ api_client = ApiClient.get_default()
57
+ self.api_client = api_client
58
+
59
+ @validate_call
60
+ async def delete_all_motions(
61
+ self,
62
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
63
+ _request_timeout: Union[
64
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
65
+ ] = None,
66
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
67
+ _content_type: Optional[StrictStr] = None,
68
+ _headers: Optional[Dict[StrictStr, Any]] = None,
69
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
70
+ ) -> None:
71
+ """All Motions
72
+
73
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Delete all registered motions.
74
+
75
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
76
+ :type cell: str
77
+ :param _request_timeout: timeout setting for this request. If one
78
+ number provided, it will be total request
79
+ timeout. It can also be a pair (tuple) of
80
+ (connection, read) timeouts.
81
+ :type _request_timeout: int, tuple(int, int), optional
82
+ :param _request_auth: set to override the auth_settings for an a single
83
+ request; this effectively ignores the
84
+ authentication in the spec for a single request.
85
+ :type _request_auth: dict, optional
86
+ :param _content_type: force content-type for the request.
87
+ :type _content_type: str, Optional
88
+ :param _headers: set to override the headers for a single
89
+ request; this effectively ignores the headers
90
+ in the spec for a single request.
91
+ :type _headers: dict, optional
92
+ :param _host_index: set to override the host_index for a single
93
+ request; this effectively ignores the host_index
94
+ in the spec for a single request.
95
+ :type _host_index: int, optional
96
+ :return: Returns the result object.
97
+ """ # noqa: E501
98
+
99
+ _param = self._delete_all_motions_serialize(
100
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
101
+ )
102
+
103
+ _response_types_map: Dict[str, Optional[str]] = {
104
+ "200": None,
105
+ }
106
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
107
+ await response_data.read()
108
+ return self.api_client.response_deserialize(
109
+ response_data=response_data,
110
+ response_types_map=_response_types_map,
111
+ ).data
112
+
113
+ @validate_call
114
+ async def delete_all_motions_with_http_info(
115
+ self,
116
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
117
+ _request_timeout: Union[
118
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
119
+ ] = None,
120
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
121
+ _content_type: Optional[StrictStr] = None,
122
+ _headers: Optional[Dict[StrictStr, Any]] = None,
123
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
124
+ ) -> ApiResponse[None]:
125
+ """All Motions
126
+
127
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Delete all registered motions.
128
+
129
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
130
+ :type cell: str
131
+ :param _request_timeout: timeout setting for this request. If one
132
+ number provided, it will be total request
133
+ timeout. It can also be a pair (tuple) of
134
+ (connection, read) timeouts.
135
+ :type _request_timeout: int, tuple(int, int), optional
136
+ :param _request_auth: set to override the auth_settings for an a single
137
+ request; this effectively ignores the
138
+ authentication in the spec for a single request.
139
+ :type _request_auth: dict, optional
140
+ :param _content_type: force content-type for the request.
141
+ :type _content_type: str, Optional
142
+ :param _headers: set to override the headers for a single
143
+ request; this effectively ignores the headers
144
+ in the spec for a single request.
145
+ :type _headers: dict, optional
146
+ :param _host_index: set to override the host_index for a single
147
+ request; this effectively ignores the host_index
148
+ in the spec for a single request.
149
+ :type _host_index: int, optional
150
+ :return: Returns the result object.
151
+ """ # noqa: E501
152
+
153
+ _param = self._delete_all_motions_serialize(
154
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
155
+ )
156
+
157
+ _response_types_map: Dict[str, Optional[str]] = {
158
+ "200": None,
159
+ }
160
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
161
+ await response_data.read()
162
+ return self.api_client.response_deserialize(
163
+ response_data=response_data,
164
+ response_types_map=_response_types_map,
165
+ )
166
+
167
+ @validate_call
168
+ async def delete_all_motions_without_preload_content(
169
+ self,
170
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
171
+ _request_timeout: Union[
172
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
173
+ ] = None,
174
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
175
+ _content_type: Optional[StrictStr] = None,
176
+ _headers: Optional[Dict[StrictStr, Any]] = None,
177
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
178
+ ) -> RESTResponseType:
179
+ """All Motions
180
+
181
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Delete all registered motions.
182
+
183
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
184
+ :type cell: str
185
+ :param _request_timeout: timeout setting for this request. If one
186
+ number provided, it will be total request
187
+ timeout. It can also be a pair (tuple) of
188
+ (connection, read) timeouts.
189
+ :type _request_timeout: int, tuple(int, int), optional
190
+ :param _request_auth: set to override the auth_settings for an a single
191
+ request; this effectively ignores the
192
+ authentication in the spec for a single request.
193
+ :type _request_auth: dict, optional
194
+ :param _content_type: force content-type for the request.
195
+ :type _content_type: str, Optional
196
+ :param _headers: set to override the headers for a single
197
+ request; this effectively ignores the headers
198
+ in the spec for a single request.
199
+ :type _headers: dict, optional
200
+ :param _host_index: set to override the host_index for a single
201
+ request; this effectively ignores the host_index
202
+ in the spec for a single request.
203
+ :type _host_index: int, optional
204
+ :return: Returns the result object.
205
+ """ # noqa: E501
206
+
207
+ _param = self._delete_all_motions_serialize(
208
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
209
+ )
210
+
211
+ _response_types_map: Dict[str, Optional[str]] = {
212
+ "200": None,
213
+ }
214
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
215
+ return response_data.response
216
+
217
+ def _delete_all_motions_serialize(
218
+ self,
219
+ cell,
220
+ _request_auth,
221
+ _content_type,
222
+ _headers,
223
+ _host_index,
224
+ ) -> RequestSerialized:
225
+
226
+ _host = None
227
+
228
+ _collection_formats: Dict[str, str] = {}
229
+
230
+ _path_params: Dict[str, str] = {}
231
+ _query_params: List[Tuple[str, str]] = []
232
+ _header_params: Dict[str, Optional[str]] = _headers or {}
233
+ _form_params: List[Tuple[str, str]] = []
234
+ _files: Dict[str, Union[str, bytes]] = {}
235
+ _body_params: Optional[bytes] = None
236
+
237
+ # process the path parameters
238
+ if cell is not None:
239
+ _path_params["cell"] = cell
240
+ # process the query parameters
241
+ # process the header parameters
242
+ # process the form parameters
243
+ # process the body parameter
244
+
245
+ # set the HTTP header `Accept`
246
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
247
+
248
+ # authentication setting
249
+ _auth_settings: List[str] = ["BearerAuth"]
250
+
251
+ return self.api_client.param_serialize(
252
+ method="DELETE",
253
+ resource_path="/cells/{cell}/motions",
254
+ path_params=_path_params,
255
+ query_params=_query_params,
256
+ header_params=_header_params,
257
+ body=_body_params,
258
+ post_params=_form_params,
259
+ files=_files,
260
+ auth_settings=_auth_settings,
261
+ collection_formats=_collection_formats,
262
+ _host=_host,
263
+ _request_auth=_request_auth,
264
+ )
265
+
266
+ @validate_call
267
+ async def delete_motion(
268
+ self,
269
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
270
+ motion: Annotated[
271
+ StrictStr,
272
+ Field(
273
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
274
+ ),
275
+ ],
276
+ _request_timeout: Union[
277
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
278
+ ] = None,
279
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
280
+ _content_type: Optional[StrictStr] = None,
281
+ _headers: Optional[Dict[StrictStr, Any]] = None,
282
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
283
+ ) -> None:
284
+ """Remove
285
+
286
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Remove a previously created motion from cache. Use [listMotions](#/operations/listMotions) to list all available motions. Motions are removed automatically if the motion group or the corresponding controller is disconnected.
287
+
288
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
289
+ :type cell: str
290
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
291
+ :type motion: str
292
+ :param _request_timeout: timeout setting for this request. If one
293
+ number provided, it will be total request
294
+ timeout. It can also be a pair (tuple) of
295
+ (connection, read) timeouts.
296
+ :type _request_timeout: int, tuple(int, int), optional
297
+ :param _request_auth: set to override the auth_settings for an a single
298
+ request; this effectively ignores the
299
+ authentication in the spec for a single request.
300
+ :type _request_auth: dict, optional
301
+ :param _content_type: force content-type for the request.
302
+ :type _content_type: str, Optional
303
+ :param _headers: set to override the headers for a single
304
+ request; this effectively ignores the headers
305
+ in the spec for a single request.
306
+ :type _headers: dict, optional
307
+ :param _host_index: set to override the host_index for a single
308
+ request; this effectively ignores the host_index
309
+ in the spec for a single request.
310
+ :type _host_index: int, optional
311
+ :return: Returns the result object.
312
+ """ # noqa: E501
313
+
314
+ _param = self._delete_motion_serialize(
315
+ cell=cell, motion=motion, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
316
+ )
317
+
318
+ _response_types_map: Dict[str, Optional[str]] = {
319
+ "200": None,
320
+ }
321
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
322
+ await response_data.read()
323
+ return self.api_client.response_deserialize(
324
+ response_data=response_data,
325
+ response_types_map=_response_types_map,
326
+ ).data
327
+
328
+ @validate_call
329
+ async def delete_motion_with_http_info(
330
+ self,
331
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
332
+ motion: Annotated[
333
+ StrictStr,
334
+ Field(
335
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
336
+ ),
337
+ ],
338
+ _request_timeout: Union[
339
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
340
+ ] = None,
341
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
342
+ _content_type: Optional[StrictStr] = None,
343
+ _headers: Optional[Dict[StrictStr, Any]] = None,
344
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
345
+ ) -> ApiResponse[None]:
346
+ """Remove
347
+
348
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Remove a previously created motion from cache. Use [listMotions](#/operations/listMotions) to list all available motions. Motions are removed automatically if the motion group or the corresponding controller is disconnected.
349
+
350
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
351
+ :type cell: str
352
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
353
+ :type motion: str
354
+ :param _request_timeout: timeout setting for this request. If one
355
+ number provided, it will be total request
356
+ timeout. It can also be a pair (tuple) of
357
+ (connection, read) timeouts.
358
+ :type _request_timeout: int, tuple(int, int), optional
359
+ :param _request_auth: set to override the auth_settings for an a single
360
+ request; this effectively ignores the
361
+ authentication in the spec for a single request.
362
+ :type _request_auth: dict, optional
363
+ :param _content_type: force content-type for the request.
364
+ :type _content_type: str, Optional
365
+ :param _headers: set to override the headers for a single
366
+ request; this effectively ignores the headers
367
+ in the spec for a single request.
368
+ :type _headers: dict, optional
369
+ :param _host_index: set to override the host_index for a single
370
+ request; this effectively ignores the host_index
371
+ in the spec for a single request.
372
+ :type _host_index: int, optional
373
+ :return: Returns the result object.
374
+ """ # noqa: E501
375
+
376
+ _param = self._delete_motion_serialize(
377
+ cell=cell, motion=motion, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
378
+ )
379
+
380
+ _response_types_map: Dict[str, Optional[str]] = {
381
+ "200": None,
382
+ }
383
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
384
+ await response_data.read()
385
+ return self.api_client.response_deserialize(
386
+ response_data=response_data,
387
+ response_types_map=_response_types_map,
388
+ )
389
+
390
+ @validate_call
391
+ async def delete_motion_without_preload_content(
392
+ self,
393
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
394
+ motion: Annotated[
395
+ StrictStr,
396
+ Field(
397
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
398
+ ),
399
+ ],
400
+ _request_timeout: Union[
401
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
402
+ ] = None,
403
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
404
+ _content_type: Optional[StrictStr] = None,
405
+ _headers: Optional[Dict[StrictStr, Any]] = None,
406
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
407
+ ) -> RESTResponseType:
408
+ """Remove
409
+
410
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Remove a previously created motion from cache. Use [listMotions](#/operations/listMotions) to list all available motions. Motions are removed automatically if the motion group or the corresponding controller is disconnected.
411
+
412
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
413
+ :type cell: str
414
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
415
+ :type motion: str
416
+ :param _request_timeout: timeout setting for this request. If one
417
+ number provided, it will be total request
418
+ timeout. It can also be a pair (tuple) of
419
+ (connection, read) timeouts.
420
+ :type _request_timeout: int, tuple(int, int), optional
421
+ :param _request_auth: set to override the auth_settings for an a single
422
+ request; this effectively ignores the
423
+ authentication in the spec for a single request.
424
+ :type _request_auth: dict, optional
425
+ :param _content_type: force content-type for the request.
426
+ :type _content_type: str, Optional
427
+ :param _headers: set to override the headers for a single
428
+ request; this effectively ignores the headers
429
+ in the spec for a single request.
430
+ :type _headers: dict, optional
431
+ :param _host_index: set to override the host_index for a single
432
+ request; this effectively ignores the host_index
433
+ in the spec for a single request.
434
+ :type _host_index: int, optional
435
+ :return: Returns the result object.
436
+ """ # noqa: E501
437
+
438
+ _param = self._delete_motion_serialize(
439
+ cell=cell, motion=motion, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
440
+ )
441
+
442
+ _response_types_map: Dict[str, Optional[str]] = {
443
+ "200": None,
444
+ }
445
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
446
+ return response_data.response
447
+
448
+ def _delete_motion_serialize(
449
+ self,
450
+ cell,
451
+ motion,
452
+ _request_auth,
453
+ _content_type,
454
+ _headers,
455
+ _host_index,
456
+ ) -> RequestSerialized:
457
+
458
+ _host = None
459
+
460
+ _collection_formats: Dict[str, str] = {}
461
+
462
+ _path_params: Dict[str, str] = {}
463
+ _query_params: List[Tuple[str, str]] = []
464
+ _header_params: Dict[str, Optional[str]] = _headers or {}
465
+ _form_params: List[Tuple[str, str]] = []
466
+ _files: Dict[str, Union[str, bytes]] = {}
467
+ _body_params: Optional[bytes] = None
468
+
469
+ # process the path parameters
470
+ if cell is not None:
471
+ _path_params["cell"] = cell
472
+ if motion is not None:
473
+ _path_params["motion"] = motion
474
+ # process the query parameters
475
+ # process the header parameters
476
+ # process the form parameters
477
+ # process the body parameter
478
+
479
+ # set the HTTP header `Accept`
480
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
481
+
482
+ # authentication setting
483
+ _auth_settings: List[str] = ["BearerAuth"]
484
+
485
+ return self.api_client.param_serialize(
486
+ method="DELETE",
487
+ resource_path="/cells/{cell}/motions/{motion}/delete",
488
+ path_params=_path_params,
489
+ query_params=_query_params,
490
+ header_params=_header_params,
491
+ body=_body_params,
492
+ post_params=_form_params,
493
+ files=_files,
494
+ auth_settings=_auth_settings,
495
+ collection_formats=_collection_formats,
496
+ _host=_host,
497
+ _request_auth=_request_auth,
498
+ )
499
+
500
+ @validate_call
501
+ async def execute_trajectory(
502
+ self,
503
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
504
+ client_request_generator: Callable[
505
+ [AsyncGenerator[ExecuteTrajectoryResponse, None]], AsyncGenerator[ExecuteTrajectoryRequest, None]
506
+ ],
507
+ ) -> None: # noqa: E501
508
+ """Execute Trajectory # noqa: E501
509
+
510
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ <!-- theme: danger --> > Websocket endpoint Provide execution control over a previously planned trajectory. Enable the caller to attach I/O actions to the trajectory. Understanding the concept of location: The location or path parameter specifies the exact position along a trajectory. The location is a scalar value that ranges from 0 to `n`, where `n` denotes the number of motion commands, or trajectory segments, e.g. line, p2p, etc. See [planMotion](#/operations/planMotion). Each integer value of the location corresponds to one motion command, e.g. 3.0 to 3.999 could be a line. ### Preconditions - The motion group's control mode is not claimed by any other endpoint. - The motion group's joint position is at the start location specified with InitializeMovementRequest. ### Requests #### 1. Send InitializeMovementRequest to lock the trajectory to this connection The following actions are executed: - Sets robot controller mode to control mode - Sets start location of the execution Keep in mind that only a single trajectory can be locked to a websocket connection at a time and not unlocked anymore. To execute another trajectory, a new connection must be established. #### 2. Send StartMovementRequest to start the movement - Sets direction of movement, default is forward. #### **Optional** - To pause, send PauseMovementRequest before the movement has reached its end location. - Change the movement's velocity with PlaybackSpeedRequest after initializing the movement with InitializeMovementRequest. ### Responses - InitializeMovementResponse is sent to signal the success or failure of the InitializeMovementRequest. - Movement responses are streamed after a StartMovementRequest successfully started the movement. Movement responses are streamed in a rate that is defined as the multiple of the controller step-rate closest to but not exceeding the rate configured by InitializeMovementRequest. - Standstill response is sent once the movement has finished or has come to a standstill due to a pause. - PauseMovementResponse is sent to signal the success of the PauseMovementRequest. It does not signal the end of the movement. End of movement is signaled by standstill response. - PlaybackSpeedResponse is sent to signal the success of the PlaybackSpeedRequest. - MovementError with error details is sent in case of an unexpected error, e.g. controller disconnects during movement. ### Tips and Tricks - A movement can be paused and resumed by sending PauseMovementRequest and StartMovementRequest. - Send PlaybackSpeedRequest before StartMovementRequest to reduce the velocity of the movement before it starts. - Send PlaybackSpeedRequest repeatedly to implement a slider. The velocity of the motion group can be adjusted with each controller step. Therefore, if your app needs a slider-like UI to alter the velocity of a currently running movement, you can send PlaybackSpeedRequest with different speed values repeatedly during the movement. - A closed trajectory (end and start joint position are equal) can be repeated by sending StartMovementRequest after the movement has finished. # noqa: E501
511
+ :param client_request_generator: An AsyncGenerator that yields request of type ExecuteTrajectoryRequest and takes an AsyncGenerator of ExecuteTrajectoryResponse as an input argument (required)
512
+ :info All responses from the server will be yielded to client_request_generator through the (AsyncGenerator[ExecuteTrajectoryResponse, None])
513
+ :type AsyncGenerator[ExecuteTrajectoryRequest, None]
514
+ """
515
+
516
+ def format_path_parameters(path):
517
+ # Find all substrings that are enclosed in brackets
518
+ bracket_contents = re.findall(r"\{(.*?)\}", path)
519
+
520
+ # For each found substring, alter it to match the python variable name
521
+ for content in bracket_contents:
522
+ content = "{" + content + "}"
523
+ modified_content = humps.dekebabize(content)
524
+ path = path.replace(content, modified_content)
525
+
526
+ return path
527
+
528
+ async def iterate_responses(ws) -> AsyncGenerator[ExecuteTrajectoryResponse, None]:
529
+ async for response in ws:
530
+ if "Cancelled on the server side" in response:
531
+ break
532
+ response_data = json.loads(response)
533
+ if "result" not in response_data:
534
+ raise Exception(response_data)
535
+ result_data = response_data["result"]
536
+ if isinstance(result_data, list):
537
+ # Handle list of objects
538
+ import re
539
+
540
+ # Extract the base type from List[BaseType] pattern
541
+ return_type_str = "ExecuteTrajectoryResponse"
542
+ if return_type_str.startswith("List[") and return_type_str.endswith("]"):
543
+ base_type_name = return_type_str[5:-1] # Remove "List[" and "]"
544
+ # Get the actual class from the module
545
+ base_type_class = globals().get(base_type_name)
546
+ if base_type_class and hasattr(base_type_class, "from_dict"):
547
+ result_list = [base_type_class.from_dict(item) for item in result_data]
548
+ yield result_list
549
+ else:
550
+ yield result_data
551
+ else:
552
+ yield result_data
553
+ else:
554
+ # Handle single object
555
+ yield ExecuteTrajectoryResponse.from_dict(result_data)
556
+
557
+ path = format_path_parameters("/cells/{cell}/motions/executetrajectory")
558
+ path = path.format(
559
+ cell=cell,
560
+ )
561
+
562
+ headers = websockets.Headers()
563
+ tmp_host = self.api_client.configuration.host
564
+ if self.api_client.configuration.host.startswith("https://"):
565
+ # Basic Auth
566
+ if self.api_client.configuration.username:
567
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
568
+ tmp_host = f"wss://{self.api_client.configuration.username}:{self.api_client.configuration.password}@{tmp_host}"
569
+
570
+ # OAuth2
571
+ elif self.api_client.configuration.access_token:
572
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
573
+ tmp_host = f"wss://{tmp_host}"
574
+ headers = websockets.Headers([("Authorization", f"Bearer {self.api_client.configuration.access_token}")])
575
+ else:
576
+ tmp_host = tmp_host.replace("http://", "ws://")
577
+
578
+ full_url = furl(tmp_host + path)
579
+
580
+ async with websockets.connect(full_url.url, open_timeout=10, additional_headers=headers) as websocket:
581
+ try:
582
+ async for request in client_request_generator(iterate_responses(websocket)):
583
+ await websocket.send(request.to_json())
584
+ finally:
585
+ await websocket.close()
586
+
587
+ @validate_call
588
+ async def get_motion_trajectory(
589
+ self,
590
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
591
+ motion: Annotated[
592
+ StrictStr,
593
+ Field(
594
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
595
+ ),
596
+ ],
597
+ sample_time: Annotated[
598
+ StrictInt,
599
+ Field(description="The value of `sample_time` is the time in milliseconds (ms) between each point in the trajectory. "),
600
+ ],
601
+ responses_coordinate_system: Annotated[
602
+ Optional[StrictStr],
603
+ Field(
604
+ description="Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default: world coordinate system. "
605
+ ),
606
+ ] = None,
607
+ _request_timeout: Union[
608
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
609
+ ] = None,
610
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
611
+ _content_type: Optional[StrictStr] = None,
612
+ _headers: Optional[Dict[StrictStr, Any]] = None,
613
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
614
+ ) -> GetTrajectoryResponse:
615
+ """Get Trajectory
616
+
617
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get the trajectory of a planned motion with defined `sample_time` in milliseconds (ms). The trajectory is a list of points containing cartesian and joint data. The cartesian data is in the requested coordinate system. To get a single point of the trajectory, please use the [getMotionTrajectorySample](#/operations/getMotionTrajectorySample) endpoint.
618
+
619
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
620
+ :type cell: str
621
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
622
+ :type motion: str
623
+ :param sample_time: The value of `sample_time` is the time in milliseconds (ms) between each point in the trajectory. (required)
624
+ :type sample_time: int
625
+ :param responses_coordinate_system: Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default: world coordinate system.
626
+ :type responses_coordinate_system: str
627
+ :param _request_timeout: timeout setting for this request. If one
628
+ number provided, it will be total request
629
+ timeout. It can also be a pair (tuple) of
630
+ (connection, read) timeouts.
631
+ :type _request_timeout: int, tuple(int, int), optional
632
+ :param _request_auth: set to override the auth_settings for an a single
633
+ request; this effectively ignores the
634
+ authentication in the spec for a single request.
635
+ :type _request_auth: dict, optional
636
+ :param _content_type: force content-type for the request.
637
+ :type _content_type: str, Optional
638
+ :param _headers: set to override the headers for a single
639
+ request; this effectively ignores the headers
640
+ in the spec for a single request.
641
+ :type _headers: dict, optional
642
+ :param _host_index: set to override the host_index for a single
643
+ request; this effectively ignores the host_index
644
+ in the spec for a single request.
645
+ :type _host_index: int, optional
646
+ :return: Returns the result object.
647
+ """ # noqa: E501
648
+
649
+ _param = self._get_motion_trajectory_serialize(
650
+ cell=cell,
651
+ motion=motion,
652
+ sample_time=sample_time,
653
+ responses_coordinate_system=responses_coordinate_system,
654
+ _request_auth=_request_auth,
655
+ _content_type=_content_type,
656
+ _headers=_headers,
657
+ _host_index=_host_index,
658
+ )
659
+
660
+ _response_types_map: Dict[str, Optional[str]] = {
661
+ "200": "GetTrajectoryResponse",
662
+ }
663
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
664
+ await response_data.read()
665
+ return self.api_client.response_deserialize(
666
+ response_data=response_data,
667
+ response_types_map=_response_types_map,
668
+ ).data
669
+
670
+ @validate_call
671
+ async def get_motion_trajectory_with_http_info(
672
+ self,
673
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
674
+ motion: Annotated[
675
+ StrictStr,
676
+ Field(
677
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
678
+ ),
679
+ ],
680
+ sample_time: Annotated[
681
+ StrictInt,
682
+ Field(description="The value of `sample_time` is the time in milliseconds (ms) between each point in the trajectory. "),
683
+ ],
684
+ responses_coordinate_system: Annotated[
685
+ Optional[StrictStr],
686
+ Field(
687
+ description="Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default: world coordinate system. "
688
+ ),
689
+ ] = None,
690
+ _request_timeout: Union[
691
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
692
+ ] = None,
693
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
694
+ _content_type: Optional[StrictStr] = None,
695
+ _headers: Optional[Dict[StrictStr, Any]] = None,
696
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
697
+ ) -> ApiResponse[GetTrajectoryResponse]:
698
+ """Get Trajectory
699
+
700
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get the trajectory of a planned motion with defined `sample_time` in milliseconds (ms). The trajectory is a list of points containing cartesian and joint data. The cartesian data is in the requested coordinate system. To get a single point of the trajectory, please use the [getMotionTrajectorySample](#/operations/getMotionTrajectorySample) endpoint.
701
+
702
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
703
+ :type cell: str
704
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
705
+ :type motion: str
706
+ :param sample_time: The value of `sample_time` is the time in milliseconds (ms) between each point in the trajectory. (required)
707
+ :type sample_time: int
708
+ :param responses_coordinate_system: Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default: world coordinate system.
709
+ :type responses_coordinate_system: str
710
+ :param _request_timeout: timeout setting for this request. If one
711
+ number provided, it will be total request
712
+ timeout. It can also be a pair (tuple) of
713
+ (connection, read) timeouts.
714
+ :type _request_timeout: int, tuple(int, int), optional
715
+ :param _request_auth: set to override the auth_settings for an a single
716
+ request; this effectively ignores the
717
+ authentication in the spec for a single request.
718
+ :type _request_auth: dict, optional
719
+ :param _content_type: force content-type for the request.
720
+ :type _content_type: str, Optional
721
+ :param _headers: set to override the headers for a single
722
+ request; this effectively ignores the headers
723
+ in the spec for a single request.
724
+ :type _headers: dict, optional
725
+ :param _host_index: set to override the host_index for a single
726
+ request; this effectively ignores the host_index
727
+ in the spec for a single request.
728
+ :type _host_index: int, optional
729
+ :return: Returns the result object.
730
+ """ # noqa: E501
731
+
732
+ _param = self._get_motion_trajectory_serialize(
733
+ cell=cell,
734
+ motion=motion,
735
+ sample_time=sample_time,
736
+ responses_coordinate_system=responses_coordinate_system,
737
+ _request_auth=_request_auth,
738
+ _content_type=_content_type,
739
+ _headers=_headers,
740
+ _host_index=_host_index,
741
+ )
742
+
743
+ _response_types_map: Dict[str, Optional[str]] = {
744
+ "200": "GetTrajectoryResponse",
745
+ }
746
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
747
+ await response_data.read()
748
+ return self.api_client.response_deserialize(
749
+ response_data=response_data,
750
+ response_types_map=_response_types_map,
751
+ )
752
+
753
+ @validate_call
754
+ async def get_motion_trajectory_without_preload_content(
755
+ self,
756
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
757
+ motion: Annotated[
758
+ StrictStr,
759
+ Field(
760
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
761
+ ),
762
+ ],
763
+ sample_time: Annotated[
764
+ StrictInt,
765
+ Field(description="The value of `sample_time` is the time in milliseconds (ms) between each point in the trajectory. "),
766
+ ],
767
+ responses_coordinate_system: Annotated[
768
+ Optional[StrictStr],
769
+ Field(
770
+ description="Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default: world coordinate system. "
771
+ ),
772
+ ] = None,
773
+ _request_timeout: Union[
774
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
775
+ ] = None,
776
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
777
+ _content_type: Optional[StrictStr] = None,
778
+ _headers: Optional[Dict[StrictStr, Any]] = None,
779
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
780
+ ) -> RESTResponseType:
781
+ """Get Trajectory
782
+
783
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get the trajectory of a planned motion with defined `sample_time` in milliseconds (ms). The trajectory is a list of points containing cartesian and joint data. The cartesian data is in the requested coordinate system. To get a single point of the trajectory, please use the [getMotionTrajectorySample](#/operations/getMotionTrajectorySample) endpoint.
784
+
785
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
786
+ :type cell: str
787
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
788
+ :type motion: str
789
+ :param sample_time: The value of `sample_time` is the time in milliseconds (ms) between each point in the trajectory. (required)
790
+ :type sample_time: int
791
+ :param responses_coordinate_system: Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default: world coordinate system.
792
+ :type responses_coordinate_system: str
793
+ :param _request_timeout: timeout setting for this request. If one
794
+ number provided, it will be total request
795
+ timeout. It can also be a pair (tuple) of
796
+ (connection, read) timeouts.
797
+ :type _request_timeout: int, tuple(int, int), optional
798
+ :param _request_auth: set to override the auth_settings for an a single
799
+ request; this effectively ignores the
800
+ authentication in the spec for a single request.
801
+ :type _request_auth: dict, optional
802
+ :param _content_type: force content-type for the request.
803
+ :type _content_type: str, Optional
804
+ :param _headers: set to override the headers for a single
805
+ request; this effectively ignores the headers
806
+ in the spec for a single request.
807
+ :type _headers: dict, optional
808
+ :param _host_index: set to override the host_index for a single
809
+ request; this effectively ignores the host_index
810
+ in the spec for a single request.
811
+ :type _host_index: int, optional
812
+ :return: Returns the result object.
813
+ """ # noqa: E501
814
+
815
+ _param = self._get_motion_trajectory_serialize(
816
+ cell=cell,
817
+ motion=motion,
818
+ sample_time=sample_time,
819
+ responses_coordinate_system=responses_coordinate_system,
820
+ _request_auth=_request_auth,
821
+ _content_type=_content_type,
822
+ _headers=_headers,
823
+ _host_index=_host_index,
824
+ )
825
+
826
+ _response_types_map: Dict[str, Optional[str]] = {
827
+ "200": "GetTrajectoryResponse",
828
+ }
829
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
830
+ return response_data.response
831
+
832
+ def _get_motion_trajectory_serialize(
833
+ self,
834
+ cell,
835
+ motion,
836
+ sample_time,
837
+ responses_coordinate_system,
838
+ _request_auth,
839
+ _content_type,
840
+ _headers,
841
+ _host_index,
842
+ ) -> RequestSerialized:
843
+
844
+ _host = None
845
+
846
+ _collection_formats: Dict[str, str] = {}
847
+
848
+ _path_params: Dict[str, str] = {}
849
+ _query_params: List[Tuple[str, str]] = []
850
+ _header_params: Dict[str, Optional[str]] = _headers or {}
851
+ _form_params: List[Tuple[str, str]] = []
852
+ _files: Dict[str, Union[str, bytes]] = {}
853
+ _body_params: Optional[bytes] = None
854
+
855
+ # process the path parameters
856
+ if cell is not None:
857
+ _path_params["cell"] = cell
858
+ if motion is not None:
859
+ _path_params["motion"] = motion
860
+ # process the query parameters
861
+ if sample_time is not None:
862
+ _query_params.append(("sample_time", sample_time))
863
+
864
+ if responses_coordinate_system is not None:
865
+ _query_params.append(("responses_coordinate_system", responses_coordinate_system))
866
+
867
+ # process the header parameters
868
+ # process the form parameters
869
+ # process the body parameter
870
+
871
+ # set the HTTP header `Accept`
872
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
873
+
874
+ # authentication setting
875
+ _auth_settings: List[str] = ["BearerAuth"]
876
+
877
+ return self.api_client.param_serialize(
878
+ method="GET",
879
+ resource_path="/cells/{cell}/motions/{motion}/trajectory",
880
+ path_params=_path_params,
881
+ query_params=_query_params,
882
+ header_params=_header_params,
883
+ body=_body_params,
884
+ post_params=_form_params,
885
+ files=_files,
886
+ auth_settings=_auth_settings,
887
+ collection_formats=_collection_formats,
888
+ _host=_host,
889
+ _request_auth=_request_auth,
890
+ )
891
+
892
+ @validate_call
893
+ async def get_motion_trajectory_sample(
894
+ self,
895
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
896
+ motion: Annotated[
897
+ StrictStr,
898
+ Field(
899
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
900
+ ),
901
+ ],
902
+ location_on_trajectory: Optional[Union[StrictFloat, StrictInt]] = None,
903
+ response_coordinate_system: Annotated[
904
+ Optional[StrictStr],
905
+ Field(
906
+ description="Unique identifier addressing a coordinate system for which the cartesian data of the response should be converted to. Default is the world coordinate system."
907
+ ),
908
+ ] = None,
909
+ _request_timeout: Union[
910
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
911
+ ] = None,
912
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
913
+ _content_type: Optional[StrictStr] = None,
914
+ _headers: Optional[Dict[StrictStr, Any]] = None,
915
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
916
+ ) -> GetTrajectorySampleResponse:
917
+ """Get Trajectory Sample
918
+
919
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get a single point at a certain location of a planned motion. To get the whole trajectory, use the [getMotionTrajectory](#/operations/getMotionTrajectory) endpoint.
920
+
921
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
922
+ :type cell: str
923
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
924
+ :type motion: str
925
+ :param location_on_trajectory:
926
+ :type location_on_trajectory: float
927
+ :param response_coordinate_system: Unique identifier addressing a coordinate system for which the cartesian data of the response should be converted to. Default is the world coordinate system.
928
+ :type response_coordinate_system: str
929
+ :param _request_timeout: timeout setting for this request. If one
930
+ number provided, it will be total request
931
+ timeout. It can also be a pair (tuple) of
932
+ (connection, read) timeouts.
933
+ :type _request_timeout: int, tuple(int, int), optional
934
+ :param _request_auth: set to override the auth_settings for an a single
935
+ request; this effectively ignores the
936
+ authentication in the spec for a single request.
937
+ :type _request_auth: dict, optional
938
+ :param _content_type: force content-type for the request.
939
+ :type _content_type: str, Optional
940
+ :param _headers: set to override the headers for a single
941
+ request; this effectively ignores the headers
942
+ in the spec for a single request.
943
+ :type _headers: dict, optional
944
+ :param _host_index: set to override the host_index for a single
945
+ request; this effectively ignores the host_index
946
+ in the spec for a single request.
947
+ :type _host_index: int, optional
948
+ :return: Returns the result object.
949
+ """ # noqa: E501
950
+
951
+ _param = self._get_motion_trajectory_sample_serialize(
952
+ cell=cell,
953
+ motion=motion,
954
+ location_on_trajectory=location_on_trajectory,
955
+ response_coordinate_system=response_coordinate_system,
956
+ _request_auth=_request_auth,
957
+ _content_type=_content_type,
958
+ _headers=_headers,
959
+ _host_index=_host_index,
960
+ )
961
+
962
+ _response_types_map: Dict[str, Optional[str]] = {
963
+ "200": "GetTrajectorySampleResponse",
964
+ }
965
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
966
+ await response_data.read()
967
+ return self.api_client.response_deserialize(
968
+ response_data=response_data,
969
+ response_types_map=_response_types_map,
970
+ ).data
971
+
972
+ @validate_call
973
+ async def get_motion_trajectory_sample_with_http_info(
974
+ self,
975
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
976
+ motion: Annotated[
977
+ StrictStr,
978
+ Field(
979
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
980
+ ),
981
+ ],
982
+ location_on_trajectory: Optional[Union[StrictFloat, StrictInt]] = None,
983
+ response_coordinate_system: Annotated[
984
+ Optional[StrictStr],
985
+ Field(
986
+ description="Unique identifier addressing a coordinate system for which the cartesian data of the response should be converted to. Default is the world coordinate system."
987
+ ),
988
+ ] = None,
989
+ _request_timeout: Union[
990
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
991
+ ] = None,
992
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
993
+ _content_type: Optional[StrictStr] = None,
994
+ _headers: Optional[Dict[StrictStr, Any]] = None,
995
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
996
+ ) -> ApiResponse[GetTrajectorySampleResponse]:
997
+ """Get Trajectory Sample
998
+
999
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get a single point at a certain location of a planned motion. To get the whole trajectory, use the [getMotionTrajectory](#/operations/getMotionTrajectory) endpoint.
1000
+
1001
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1002
+ :type cell: str
1003
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
1004
+ :type motion: str
1005
+ :param location_on_trajectory:
1006
+ :type location_on_trajectory: float
1007
+ :param response_coordinate_system: Unique identifier addressing a coordinate system for which the cartesian data of the response should be converted to. Default is the world coordinate system.
1008
+ :type response_coordinate_system: str
1009
+ :param _request_timeout: timeout setting for this request. If one
1010
+ number provided, it will be total request
1011
+ timeout. It can also be a pair (tuple) of
1012
+ (connection, read) timeouts.
1013
+ :type _request_timeout: int, tuple(int, int), optional
1014
+ :param _request_auth: set to override the auth_settings for an a single
1015
+ request; this effectively ignores the
1016
+ authentication in the spec for a single request.
1017
+ :type _request_auth: dict, optional
1018
+ :param _content_type: force content-type for the request.
1019
+ :type _content_type: str, Optional
1020
+ :param _headers: set to override the headers for a single
1021
+ request; this effectively ignores the headers
1022
+ in the spec for a single request.
1023
+ :type _headers: dict, optional
1024
+ :param _host_index: set to override the host_index for a single
1025
+ request; this effectively ignores the host_index
1026
+ in the spec for a single request.
1027
+ :type _host_index: int, optional
1028
+ :return: Returns the result object.
1029
+ """ # noqa: E501
1030
+
1031
+ _param = self._get_motion_trajectory_sample_serialize(
1032
+ cell=cell,
1033
+ motion=motion,
1034
+ location_on_trajectory=location_on_trajectory,
1035
+ response_coordinate_system=response_coordinate_system,
1036
+ _request_auth=_request_auth,
1037
+ _content_type=_content_type,
1038
+ _headers=_headers,
1039
+ _host_index=_host_index,
1040
+ )
1041
+
1042
+ _response_types_map: Dict[str, Optional[str]] = {
1043
+ "200": "GetTrajectorySampleResponse",
1044
+ }
1045
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1046
+ await response_data.read()
1047
+ return self.api_client.response_deserialize(
1048
+ response_data=response_data,
1049
+ response_types_map=_response_types_map,
1050
+ )
1051
+
1052
+ @validate_call
1053
+ async def get_motion_trajectory_sample_without_preload_content(
1054
+ self,
1055
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1056
+ motion: Annotated[
1057
+ StrictStr,
1058
+ Field(
1059
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
1060
+ ),
1061
+ ],
1062
+ location_on_trajectory: Optional[Union[StrictFloat, StrictInt]] = None,
1063
+ response_coordinate_system: Annotated[
1064
+ Optional[StrictStr],
1065
+ Field(
1066
+ description="Unique identifier addressing a coordinate system for which the cartesian data of the response should be converted to. Default is the world coordinate system."
1067
+ ),
1068
+ ] = None,
1069
+ _request_timeout: Union[
1070
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1071
+ ] = None,
1072
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1073
+ _content_type: Optional[StrictStr] = None,
1074
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1075
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1076
+ ) -> RESTResponseType:
1077
+ """Get Trajectory Sample
1078
+
1079
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get a single point at a certain location of a planned motion. To get the whole trajectory, use the [getMotionTrajectory](#/operations/getMotionTrajectory) endpoint.
1080
+
1081
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1082
+ :type cell: str
1083
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
1084
+ :type motion: str
1085
+ :param location_on_trajectory:
1086
+ :type location_on_trajectory: float
1087
+ :param response_coordinate_system: Unique identifier addressing a coordinate system for which the cartesian data of the response should be converted to. Default is the world coordinate system.
1088
+ :type response_coordinate_system: str
1089
+ :param _request_timeout: timeout setting for this request. If one
1090
+ number provided, it will be total request
1091
+ timeout. It can also be a pair (tuple) of
1092
+ (connection, read) timeouts.
1093
+ :type _request_timeout: int, tuple(int, int), optional
1094
+ :param _request_auth: set to override the auth_settings for an a single
1095
+ request; this effectively ignores the
1096
+ authentication in the spec for a single request.
1097
+ :type _request_auth: dict, optional
1098
+ :param _content_type: force content-type for the request.
1099
+ :type _content_type: str, Optional
1100
+ :param _headers: set to override the headers for a single
1101
+ request; this effectively ignores the headers
1102
+ in the spec for a single request.
1103
+ :type _headers: dict, optional
1104
+ :param _host_index: set to override the host_index for a single
1105
+ request; this effectively ignores the host_index
1106
+ in the spec for a single request.
1107
+ :type _host_index: int, optional
1108
+ :return: Returns the result object.
1109
+ """ # noqa: E501
1110
+
1111
+ _param = self._get_motion_trajectory_sample_serialize(
1112
+ cell=cell,
1113
+ motion=motion,
1114
+ location_on_trajectory=location_on_trajectory,
1115
+ response_coordinate_system=response_coordinate_system,
1116
+ _request_auth=_request_auth,
1117
+ _content_type=_content_type,
1118
+ _headers=_headers,
1119
+ _host_index=_host_index,
1120
+ )
1121
+
1122
+ _response_types_map: Dict[str, Optional[str]] = {
1123
+ "200": "GetTrajectorySampleResponse",
1124
+ }
1125
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1126
+ return response_data.response
1127
+
1128
+ def _get_motion_trajectory_sample_serialize(
1129
+ self,
1130
+ cell,
1131
+ motion,
1132
+ location_on_trajectory,
1133
+ response_coordinate_system,
1134
+ _request_auth,
1135
+ _content_type,
1136
+ _headers,
1137
+ _host_index,
1138
+ ) -> RequestSerialized:
1139
+
1140
+ _host = None
1141
+
1142
+ _collection_formats: Dict[str, str] = {}
1143
+
1144
+ _path_params: Dict[str, str] = {}
1145
+ _query_params: List[Tuple[str, str]] = []
1146
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1147
+ _form_params: List[Tuple[str, str]] = []
1148
+ _files: Dict[str, Union[str, bytes]] = {}
1149
+ _body_params: Optional[bytes] = None
1150
+
1151
+ # process the path parameters
1152
+ if cell is not None:
1153
+ _path_params["cell"] = cell
1154
+ if motion is not None:
1155
+ _path_params["motion"] = motion
1156
+ # process the query parameters
1157
+ if location_on_trajectory is not None:
1158
+ _query_params.append(("location_on_trajectory", location_on_trajectory))
1159
+
1160
+ if response_coordinate_system is not None:
1161
+ _query_params.append(("response_coordinate_system", response_coordinate_system))
1162
+
1163
+ # process the header parameters
1164
+ # process the form parameters
1165
+ # process the body parameter
1166
+
1167
+ # set the HTTP header `Accept`
1168
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
1169
+
1170
+ # authentication setting
1171
+ _auth_settings: List[str] = ["BearerAuth"]
1172
+
1173
+ return self.api_client.param_serialize(
1174
+ method="GET",
1175
+ resource_path="/cells/{cell}/motions/{motion}/trajectorysample",
1176
+ path_params=_path_params,
1177
+ query_params=_query_params,
1178
+ header_params=_header_params,
1179
+ body=_body_params,
1180
+ post_params=_form_params,
1181
+ files=_files,
1182
+ auth_settings=_auth_settings,
1183
+ collection_formats=_collection_formats,
1184
+ _host=_host,
1185
+ _request_auth=_request_auth,
1186
+ )
1187
+
1188
+ @validate_call
1189
+ async def get_planned_motion(
1190
+ self,
1191
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1192
+ motion: Annotated[
1193
+ StrictStr,
1194
+ Field(
1195
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
1196
+ ),
1197
+ ],
1198
+ sample_time: Annotated[
1199
+ Optional[StrictInt],
1200
+ Field(
1201
+ description="-| The value of `sample_time` is the time in milliseconds (ms) between each datapoint of the planned motion. Optional. If not provided, the data is returned as it is stored internally and equidistant sampling is not guaranteed."
1202
+ ),
1203
+ ] = None,
1204
+ _request_timeout: Union[
1205
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1206
+ ] = None,
1207
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1208
+ _content_type: Optional[StrictStr] = None,
1209
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1210
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1211
+ ) -> PlannedMotion:
1212
+ """Get Planned Motion
1213
+
1214
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get the joint data of a planned motion. The planned motion contains only the joint information, to persistently store and reload it later. The data will be sampled equidistantly with defined `sample_time` in milliseconds (ms). If not provided, the data is returned as it is stored on Wandelbots NOVA system. To request cartesian data for visualization purposes, use the [getMotionTrajectory](#/operations/getMotionTrajectory) endpoint. To get a single point of the planned motion, use the [getMotionTrajectorySample](#/operations/getMotionTrajectorySample) endpoint.
1215
+
1216
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1217
+ :type cell: str
1218
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
1219
+ :type motion: str
1220
+ :param sample_time: -| The value of `sample_time` is the time in milliseconds (ms) between each datapoint of the planned motion. Optional. If not provided, the data is returned as it is stored internally and equidistant sampling is not guaranteed.
1221
+ :type sample_time: int
1222
+ :param _request_timeout: timeout setting for this request. If one
1223
+ number provided, it will be total request
1224
+ timeout. It can also be a pair (tuple) of
1225
+ (connection, read) timeouts.
1226
+ :type _request_timeout: int, tuple(int, int), optional
1227
+ :param _request_auth: set to override the auth_settings for an a single
1228
+ request; this effectively ignores the
1229
+ authentication in the spec for a single request.
1230
+ :type _request_auth: dict, optional
1231
+ :param _content_type: force content-type for the request.
1232
+ :type _content_type: str, Optional
1233
+ :param _headers: set to override the headers for a single
1234
+ request; this effectively ignores the headers
1235
+ in the spec for a single request.
1236
+ :type _headers: dict, optional
1237
+ :param _host_index: set to override the host_index for a single
1238
+ request; this effectively ignores the host_index
1239
+ in the spec for a single request.
1240
+ :type _host_index: int, optional
1241
+ :return: Returns the result object.
1242
+ """ # noqa: E501
1243
+
1244
+ _param = self._get_planned_motion_serialize(
1245
+ cell=cell,
1246
+ motion=motion,
1247
+ sample_time=sample_time,
1248
+ _request_auth=_request_auth,
1249
+ _content_type=_content_type,
1250
+ _headers=_headers,
1251
+ _host_index=_host_index,
1252
+ )
1253
+
1254
+ _response_types_map: Dict[str, Optional[str]] = {
1255
+ "200": "PlannedMotion",
1256
+ }
1257
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1258
+ await response_data.read()
1259
+ return self.api_client.response_deserialize(
1260
+ response_data=response_data,
1261
+ response_types_map=_response_types_map,
1262
+ ).data
1263
+
1264
+ @validate_call
1265
+ async def get_planned_motion_with_http_info(
1266
+ self,
1267
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1268
+ motion: Annotated[
1269
+ StrictStr,
1270
+ Field(
1271
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
1272
+ ),
1273
+ ],
1274
+ sample_time: Annotated[
1275
+ Optional[StrictInt],
1276
+ Field(
1277
+ description="-| The value of `sample_time` is the time in milliseconds (ms) between each datapoint of the planned motion. Optional. If not provided, the data is returned as it is stored internally and equidistant sampling is not guaranteed."
1278
+ ),
1279
+ ] = None,
1280
+ _request_timeout: Union[
1281
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1282
+ ] = None,
1283
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1284
+ _content_type: Optional[StrictStr] = None,
1285
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1286
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1287
+ ) -> ApiResponse[PlannedMotion]:
1288
+ """Get Planned Motion
1289
+
1290
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get the joint data of a planned motion. The planned motion contains only the joint information, to persistently store and reload it later. The data will be sampled equidistantly with defined `sample_time` in milliseconds (ms). If not provided, the data is returned as it is stored on Wandelbots NOVA system. To request cartesian data for visualization purposes, use the [getMotionTrajectory](#/operations/getMotionTrajectory) endpoint. To get a single point of the planned motion, use the [getMotionTrajectorySample](#/operations/getMotionTrajectorySample) endpoint.
1291
+
1292
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1293
+ :type cell: str
1294
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
1295
+ :type motion: str
1296
+ :param sample_time: -| The value of `sample_time` is the time in milliseconds (ms) between each datapoint of the planned motion. Optional. If not provided, the data is returned as it is stored internally and equidistant sampling is not guaranteed.
1297
+ :type sample_time: int
1298
+ :param _request_timeout: timeout setting for this request. If one
1299
+ number provided, it will be total request
1300
+ timeout. It can also be a pair (tuple) of
1301
+ (connection, read) timeouts.
1302
+ :type _request_timeout: int, tuple(int, int), optional
1303
+ :param _request_auth: set to override the auth_settings for an a single
1304
+ request; this effectively ignores the
1305
+ authentication in the spec for a single request.
1306
+ :type _request_auth: dict, optional
1307
+ :param _content_type: force content-type for the request.
1308
+ :type _content_type: str, Optional
1309
+ :param _headers: set to override the headers for a single
1310
+ request; this effectively ignores the headers
1311
+ in the spec for a single request.
1312
+ :type _headers: dict, optional
1313
+ :param _host_index: set to override the host_index for a single
1314
+ request; this effectively ignores the host_index
1315
+ in the spec for a single request.
1316
+ :type _host_index: int, optional
1317
+ :return: Returns the result object.
1318
+ """ # noqa: E501
1319
+
1320
+ _param = self._get_planned_motion_serialize(
1321
+ cell=cell,
1322
+ motion=motion,
1323
+ sample_time=sample_time,
1324
+ _request_auth=_request_auth,
1325
+ _content_type=_content_type,
1326
+ _headers=_headers,
1327
+ _host_index=_host_index,
1328
+ )
1329
+
1330
+ _response_types_map: Dict[str, Optional[str]] = {
1331
+ "200": "PlannedMotion",
1332
+ }
1333
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1334
+ await response_data.read()
1335
+ return self.api_client.response_deserialize(
1336
+ response_data=response_data,
1337
+ response_types_map=_response_types_map,
1338
+ )
1339
+
1340
+ @validate_call
1341
+ async def get_planned_motion_without_preload_content(
1342
+ self,
1343
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1344
+ motion: Annotated[
1345
+ StrictStr,
1346
+ Field(
1347
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
1348
+ ),
1349
+ ],
1350
+ sample_time: Annotated[
1351
+ Optional[StrictInt],
1352
+ Field(
1353
+ description="-| The value of `sample_time` is the time in milliseconds (ms) between each datapoint of the planned motion. Optional. If not provided, the data is returned as it is stored internally and equidistant sampling is not guaranteed."
1354
+ ),
1355
+ ] = None,
1356
+ _request_timeout: Union[
1357
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1358
+ ] = None,
1359
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1360
+ _content_type: Optional[StrictStr] = None,
1361
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1362
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1363
+ ) -> RESTResponseType:
1364
+ """Get Planned Motion
1365
+
1366
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Get the joint data of a planned motion. The planned motion contains only the joint information, to persistently store and reload it later. The data will be sampled equidistantly with defined `sample_time` in milliseconds (ms). If not provided, the data is returned as it is stored on Wandelbots NOVA system. To request cartesian data for visualization purposes, use the [getMotionTrajectory](#/operations/getMotionTrajectory) endpoint. To get a single point of the planned motion, use the [getMotionTrajectorySample](#/operations/getMotionTrajectorySample) endpoint.
1367
+
1368
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1369
+ :type cell: str
1370
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
1371
+ :type motion: str
1372
+ :param sample_time: -| The value of `sample_time` is the time in milliseconds (ms) between each datapoint of the planned motion. Optional. If not provided, the data is returned as it is stored internally and equidistant sampling is not guaranteed.
1373
+ :type sample_time: int
1374
+ :param _request_timeout: timeout setting for this request. If one
1375
+ number provided, it will be total request
1376
+ timeout. It can also be a pair (tuple) of
1377
+ (connection, read) timeouts.
1378
+ :type _request_timeout: int, tuple(int, int), optional
1379
+ :param _request_auth: set to override the auth_settings for an a single
1380
+ request; this effectively ignores the
1381
+ authentication in the spec for a single request.
1382
+ :type _request_auth: dict, optional
1383
+ :param _content_type: force content-type for the request.
1384
+ :type _content_type: str, Optional
1385
+ :param _headers: set to override the headers for a single
1386
+ request; this effectively ignores the headers
1387
+ in the spec for a single request.
1388
+ :type _headers: dict, optional
1389
+ :param _host_index: set to override the host_index for a single
1390
+ request; this effectively ignores the host_index
1391
+ in the spec for a single request.
1392
+ :type _host_index: int, optional
1393
+ :return: Returns the result object.
1394
+ """ # noqa: E501
1395
+
1396
+ _param = self._get_planned_motion_serialize(
1397
+ cell=cell,
1398
+ motion=motion,
1399
+ sample_time=sample_time,
1400
+ _request_auth=_request_auth,
1401
+ _content_type=_content_type,
1402
+ _headers=_headers,
1403
+ _host_index=_host_index,
1404
+ )
1405
+
1406
+ _response_types_map: Dict[str, Optional[str]] = {
1407
+ "200": "PlannedMotion",
1408
+ }
1409
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1410
+ return response_data.response
1411
+
1412
+ def _get_planned_motion_serialize(
1413
+ self,
1414
+ cell,
1415
+ motion,
1416
+ sample_time,
1417
+ _request_auth,
1418
+ _content_type,
1419
+ _headers,
1420
+ _host_index,
1421
+ ) -> RequestSerialized:
1422
+
1423
+ _host = None
1424
+
1425
+ _collection_formats: Dict[str, str] = {}
1426
+
1427
+ _path_params: Dict[str, str] = {}
1428
+ _query_params: List[Tuple[str, str]] = []
1429
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1430
+ _form_params: List[Tuple[str, str]] = []
1431
+ _files: Dict[str, Union[str, bytes]] = {}
1432
+ _body_params: Optional[bytes] = None
1433
+
1434
+ # process the path parameters
1435
+ if cell is not None:
1436
+ _path_params["cell"] = cell
1437
+ if motion is not None:
1438
+ _path_params["motion"] = motion
1439
+ # process the query parameters
1440
+ if sample_time is not None:
1441
+ _query_params.append(("sample_time", sample_time))
1442
+
1443
+ # process the header parameters
1444
+ # process the form parameters
1445
+ # process the body parameter
1446
+
1447
+ # set the HTTP header `Accept`
1448
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
1449
+
1450
+ # authentication setting
1451
+ _auth_settings: List[str] = ["BearerAuth"]
1452
+
1453
+ return self.api_client.param_serialize(
1454
+ method="GET",
1455
+ resource_path="/cells/{cell}/motions/{motion}/planned-motion",
1456
+ path_params=_path_params,
1457
+ query_params=_query_params,
1458
+ header_params=_header_params,
1459
+ body=_body_params,
1460
+ post_params=_form_params,
1461
+ files=_files,
1462
+ auth_settings=_auth_settings,
1463
+ collection_formats=_collection_formats,
1464
+ _host=_host,
1465
+ _request_auth=_request_auth,
1466
+ )
1467
+
1468
+ @validate_call
1469
+ async def get_planning_motion_group_models(
1470
+ self,
1471
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1472
+ _request_timeout: Union[
1473
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1474
+ ] = None,
1475
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1476
+ _content_type: Optional[StrictStr] = None,
1477
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1478
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1479
+ ) -> List[str]:
1480
+ """Motion Group Models for Planning
1481
+
1482
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ Returns motion group models that are supported for planning.
1483
+
1484
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1485
+ :type cell: str
1486
+ :param _request_timeout: timeout setting for this request. If one
1487
+ number provided, it will be total request
1488
+ timeout. It can also be a pair (tuple) of
1489
+ (connection, read) timeouts.
1490
+ :type _request_timeout: int, tuple(int, int), optional
1491
+ :param _request_auth: set to override the auth_settings for an a single
1492
+ request; this effectively ignores the
1493
+ authentication in the spec for a single request.
1494
+ :type _request_auth: dict, optional
1495
+ :param _content_type: force content-type for the request.
1496
+ :type _content_type: str, Optional
1497
+ :param _headers: set to override the headers for a single
1498
+ request; this effectively ignores the headers
1499
+ in the spec for a single request.
1500
+ :type _headers: dict, optional
1501
+ :param _host_index: set to override the host_index for a single
1502
+ request; this effectively ignores the host_index
1503
+ in the spec for a single request.
1504
+ :type _host_index: int, optional
1505
+ :return: Returns the result object.
1506
+ """ # noqa: E501
1507
+
1508
+ _param = self._get_planning_motion_group_models_serialize(
1509
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
1510
+ )
1511
+
1512
+ _response_types_map: Dict[str, Optional[str]] = {
1513
+ "200": "List[str]",
1514
+ "404": None,
1515
+ "422": "HTTPValidationError",
1516
+ "500": None,
1517
+ }
1518
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1519
+ await response_data.read()
1520
+ return self.api_client.response_deserialize(
1521
+ response_data=response_data,
1522
+ response_types_map=_response_types_map,
1523
+ ).data
1524
+
1525
+ @validate_call
1526
+ async def get_planning_motion_group_models_with_http_info(
1527
+ self,
1528
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1529
+ _request_timeout: Union[
1530
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1531
+ ] = None,
1532
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1533
+ _content_type: Optional[StrictStr] = None,
1534
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1535
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1536
+ ) -> ApiResponse[List[str]]:
1537
+ """Motion Group Models for Planning
1538
+
1539
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ Returns motion group models that are supported for planning.
1540
+
1541
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1542
+ :type cell: str
1543
+ :param _request_timeout: timeout setting for this request. If one
1544
+ number provided, it will be total request
1545
+ timeout. It can also be a pair (tuple) of
1546
+ (connection, read) timeouts.
1547
+ :type _request_timeout: int, tuple(int, int), optional
1548
+ :param _request_auth: set to override the auth_settings for an a single
1549
+ request; this effectively ignores the
1550
+ authentication in the spec for a single request.
1551
+ :type _request_auth: dict, optional
1552
+ :param _content_type: force content-type for the request.
1553
+ :type _content_type: str, Optional
1554
+ :param _headers: set to override the headers for a single
1555
+ request; this effectively ignores the headers
1556
+ in the spec for a single request.
1557
+ :type _headers: dict, optional
1558
+ :param _host_index: set to override the host_index for a single
1559
+ request; this effectively ignores the host_index
1560
+ in the spec for a single request.
1561
+ :type _host_index: int, optional
1562
+ :return: Returns the result object.
1563
+ """ # noqa: E501
1564
+
1565
+ _param = self._get_planning_motion_group_models_serialize(
1566
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
1567
+ )
1568
+
1569
+ _response_types_map: Dict[str, Optional[str]] = {
1570
+ "200": "List[str]",
1571
+ "404": None,
1572
+ "422": "HTTPValidationError",
1573
+ "500": None,
1574
+ }
1575
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1576
+ await response_data.read()
1577
+ return self.api_client.response_deserialize(
1578
+ response_data=response_data,
1579
+ response_types_map=_response_types_map,
1580
+ )
1581
+
1582
+ @validate_call
1583
+ async def get_planning_motion_group_models_without_preload_content(
1584
+ self,
1585
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1586
+ _request_timeout: Union[
1587
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1588
+ ] = None,
1589
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1590
+ _content_type: Optional[StrictStr] = None,
1591
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1592
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1593
+ ) -> RESTResponseType:
1594
+ """Motion Group Models for Planning
1595
+
1596
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ Returns motion group models that are supported for planning.
1597
+
1598
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1599
+ :type cell: str
1600
+ :param _request_timeout: timeout setting for this request. If one
1601
+ number provided, it will be total request
1602
+ timeout. It can also be a pair (tuple) of
1603
+ (connection, read) timeouts.
1604
+ :type _request_timeout: int, tuple(int, int), optional
1605
+ :param _request_auth: set to override the auth_settings for an a single
1606
+ request; this effectively ignores the
1607
+ authentication in the spec for a single request.
1608
+ :type _request_auth: dict, optional
1609
+ :param _content_type: force content-type for the request.
1610
+ :type _content_type: str, Optional
1611
+ :param _headers: set to override the headers for a single
1612
+ request; this effectively ignores the headers
1613
+ in the spec for a single request.
1614
+ :type _headers: dict, optional
1615
+ :param _host_index: set to override the host_index for a single
1616
+ request; this effectively ignores the host_index
1617
+ in the spec for a single request.
1618
+ :type _host_index: int, optional
1619
+ :return: Returns the result object.
1620
+ """ # noqa: E501
1621
+
1622
+ _param = self._get_planning_motion_group_models_serialize(
1623
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
1624
+ )
1625
+
1626
+ _response_types_map: Dict[str, Optional[str]] = {
1627
+ "200": "List[str]",
1628
+ "404": None,
1629
+ "422": "HTTPValidationError",
1630
+ "500": None,
1631
+ }
1632
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1633
+ return response_data.response
1634
+
1635
+ def _get_planning_motion_group_models_serialize(
1636
+ self,
1637
+ cell,
1638
+ _request_auth,
1639
+ _content_type,
1640
+ _headers,
1641
+ _host_index,
1642
+ ) -> RequestSerialized:
1643
+
1644
+ _host = None
1645
+
1646
+ _collection_formats: Dict[str, str] = {}
1647
+
1648
+ _path_params: Dict[str, str] = {}
1649
+ _query_params: List[Tuple[str, str]] = []
1650
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1651
+ _form_params: List[Tuple[str, str]] = []
1652
+ _files: Dict[str, Union[str, bytes]] = {}
1653
+ _body_params: Optional[bytes] = None
1654
+
1655
+ # process the path parameters
1656
+ if cell is not None:
1657
+ _path_params["cell"] = cell
1658
+ # process the query parameters
1659
+ # process the header parameters
1660
+ # process the form parameters
1661
+ # process the body parameter
1662
+
1663
+ # set the HTTP header `Accept`
1664
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
1665
+
1666
+ # authentication setting
1667
+ _auth_settings: List[str] = ["BearerAuth"]
1668
+
1669
+ return self.api_client.param_serialize(
1670
+ method="GET",
1671
+ resource_path="/cells/{cell}/motion-planning/motion-group-models",
1672
+ path_params=_path_params,
1673
+ query_params=_query_params,
1674
+ header_params=_header_params,
1675
+ body=_body_params,
1676
+ post_params=_form_params,
1677
+ files=_files,
1678
+ auth_settings=_auth_settings,
1679
+ collection_formats=_collection_formats,
1680
+ _host=_host,
1681
+ _request_auth=_request_auth,
1682
+ )
1683
+
1684
+ @validate_call
1685
+ async def list_motions(
1686
+ self,
1687
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1688
+ _request_timeout: Union[
1689
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1690
+ ] = None,
1691
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1692
+ _content_type: Optional[StrictStr] = None,
1693
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1694
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1695
+ ) -> MotionIdsListResponse:
1696
+ """List All Motions
1697
+
1698
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ List all currently planned and available motions. Use [planMotion](#/operations/planMotion) to plan a new motion. Motions are removed if the corresponding motion group or controller disconnects.
1699
+
1700
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1701
+ :type cell: str
1702
+ :param _request_timeout: timeout setting for this request. If one
1703
+ number provided, it will be total request
1704
+ timeout. It can also be a pair (tuple) of
1705
+ (connection, read) timeouts.
1706
+ :type _request_timeout: int, tuple(int, int), optional
1707
+ :param _request_auth: set to override the auth_settings for an a single
1708
+ request; this effectively ignores the
1709
+ authentication in the spec for a single request.
1710
+ :type _request_auth: dict, optional
1711
+ :param _content_type: force content-type for the request.
1712
+ :type _content_type: str, Optional
1713
+ :param _headers: set to override the headers for a single
1714
+ request; this effectively ignores the headers
1715
+ in the spec for a single request.
1716
+ :type _headers: dict, optional
1717
+ :param _host_index: set to override the host_index for a single
1718
+ request; this effectively ignores the host_index
1719
+ in the spec for a single request.
1720
+ :type _host_index: int, optional
1721
+ :return: Returns the result object.
1722
+ """ # noqa: E501
1723
+
1724
+ _param = self._list_motions_serialize(
1725
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
1726
+ )
1727
+
1728
+ _response_types_map: Dict[str, Optional[str]] = {
1729
+ "200": "MotionIdsListResponse",
1730
+ }
1731
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1732
+ await response_data.read()
1733
+ return self.api_client.response_deserialize(
1734
+ response_data=response_data,
1735
+ response_types_map=_response_types_map,
1736
+ ).data
1737
+
1738
+ @validate_call
1739
+ async def list_motions_with_http_info(
1740
+ self,
1741
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1742
+ _request_timeout: Union[
1743
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1744
+ ] = None,
1745
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1746
+ _content_type: Optional[StrictStr] = None,
1747
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1748
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1749
+ ) -> ApiResponse[MotionIdsListResponse]:
1750
+ """List All Motions
1751
+
1752
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ List all currently planned and available motions. Use [planMotion](#/operations/planMotion) to plan a new motion. Motions are removed if the corresponding motion group or controller disconnects.
1753
+
1754
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1755
+ :type cell: str
1756
+ :param _request_timeout: timeout setting for this request. If one
1757
+ number provided, it will be total request
1758
+ timeout. It can also be a pair (tuple) of
1759
+ (connection, read) timeouts.
1760
+ :type _request_timeout: int, tuple(int, int), optional
1761
+ :param _request_auth: set to override the auth_settings for an a single
1762
+ request; this effectively ignores the
1763
+ authentication in the spec for a single request.
1764
+ :type _request_auth: dict, optional
1765
+ :param _content_type: force content-type for the request.
1766
+ :type _content_type: str, Optional
1767
+ :param _headers: set to override the headers for a single
1768
+ request; this effectively ignores the headers
1769
+ in the spec for a single request.
1770
+ :type _headers: dict, optional
1771
+ :param _host_index: set to override the host_index for a single
1772
+ request; this effectively ignores the host_index
1773
+ in the spec for a single request.
1774
+ :type _host_index: int, optional
1775
+ :return: Returns the result object.
1776
+ """ # noqa: E501
1777
+
1778
+ _param = self._list_motions_serialize(
1779
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
1780
+ )
1781
+
1782
+ _response_types_map: Dict[str, Optional[str]] = {
1783
+ "200": "MotionIdsListResponse",
1784
+ }
1785
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1786
+ await response_data.read()
1787
+ return self.api_client.response_deserialize(
1788
+ response_data=response_data,
1789
+ response_types_map=_response_types_map,
1790
+ )
1791
+
1792
+ @validate_call
1793
+ async def list_motions_without_preload_content(
1794
+ self,
1795
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1796
+ _request_timeout: Union[
1797
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1798
+ ] = None,
1799
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1800
+ _content_type: Optional[StrictStr] = None,
1801
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1802
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1803
+ ) -> RESTResponseType:
1804
+ """List All Motions
1805
+
1806
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ List all currently planned and available motions. Use [planMotion](#/operations/planMotion) to plan a new motion. Motions are removed if the corresponding motion group or controller disconnects.
1807
+
1808
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1809
+ :type cell: str
1810
+ :param _request_timeout: timeout setting for this request. If one
1811
+ number provided, it will be total request
1812
+ timeout. It can also be a pair (tuple) of
1813
+ (connection, read) timeouts.
1814
+ :type _request_timeout: int, tuple(int, int), optional
1815
+ :param _request_auth: set to override the auth_settings for an a single
1816
+ request; this effectively ignores the
1817
+ authentication in the spec for a single request.
1818
+ :type _request_auth: dict, optional
1819
+ :param _content_type: force content-type for the request.
1820
+ :type _content_type: str, Optional
1821
+ :param _headers: set to override the headers for a single
1822
+ request; this effectively ignores the headers
1823
+ in the spec for a single request.
1824
+ :type _headers: dict, optional
1825
+ :param _host_index: set to override the host_index for a single
1826
+ request; this effectively ignores the host_index
1827
+ in the spec for a single request.
1828
+ :type _host_index: int, optional
1829
+ :return: Returns the result object.
1830
+ """ # noqa: E501
1831
+
1832
+ _param = self._list_motions_serialize(
1833
+ cell=cell, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
1834
+ )
1835
+
1836
+ _response_types_map: Dict[str, Optional[str]] = {
1837
+ "200": "MotionIdsListResponse",
1838
+ }
1839
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1840
+ return response_data.response
1841
+
1842
+ def _list_motions_serialize(
1843
+ self,
1844
+ cell,
1845
+ _request_auth,
1846
+ _content_type,
1847
+ _headers,
1848
+ _host_index,
1849
+ ) -> RequestSerialized:
1850
+
1851
+ _host = None
1852
+
1853
+ _collection_formats: Dict[str, str] = {}
1854
+
1855
+ _path_params: Dict[str, str] = {}
1856
+ _query_params: List[Tuple[str, str]] = []
1857
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1858
+ _form_params: List[Tuple[str, str]] = []
1859
+ _files: Dict[str, Union[str, bytes]] = {}
1860
+ _body_params: Optional[bytes] = None
1861
+
1862
+ # process the path parameters
1863
+ if cell is not None:
1864
+ _path_params["cell"] = cell
1865
+ # process the query parameters
1866
+ # process the header parameters
1867
+ # process the form parameters
1868
+ # process the body parameter
1869
+
1870
+ # set the HTTP header `Accept`
1871
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
1872
+
1873
+ # authentication setting
1874
+ _auth_settings: List[str] = ["BearerAuth"]
1875
+
1876
+ return self.api_client.param_serialize(
1877
+ method="GET",
1878
+ resource_path="/cells/{cell}/motions",
1879
+ path_params=_path_params,
1880
+ query_params=_query_params,
1881
+ header_params=_header_params,
1882
+ body=_body_params,
1883
+ post_params=_form_params,
1884
+ files=_files,
1885
+ auth_settings=_auth_settings,
1886
+ collection_formats=_collection_formats,
1887
+ _host=_host,
1888
+ _request_auth=_request_auth,
1889
+ )
1890
+
1891
+ @validate_call
1892
+ async def load_planned_motion(
1893
+ self,
1894
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1895
+ planned_motion: PlannedMotion,
1896
+ _request_timeout: Union[
1897
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1898
+ ] = None,
1899
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1900
+ _content_type: Optional[StrictStr] = None,
1901
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1902
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1903
+ ) -> PlanResponse:
1904
+ """Load Planned Motion
1905
+
1906
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Loads and validates the data of a planned motion into a motion session. The response contains information about the validated motion. Validation can lead to three different results: - Fully valid: The whole planned motion can be executed from start to end. The response will contain the session to move the robot. - Partially valid: Only parts of the planned motion can be executed. The response will contain the session to move the robot and information about the failure for the part that is not executable. - Invalid: The planned motion can not be executed. The response will tell you, which information about the reason of failure. If the motion is at least partially valid, the parts of the motion that are valid can be executed using the [streamMoveForward](#/operations/streamMoveForward) endpoint. You can use the following workflows: - Plan motions using the [planMotion](#/operations/planMotion) endpoint, - Store the planned motion persistently, - Use this endpoint to reload the stored motion and get a motion session for it. - Execute the loaded motion using the [streamMoveForward](#/operations/streamMoveForward) endpoint. OR: - Generate a planned motion with [planTrajectory](#/operations/planTrajectory) or your own motion planner, - Send the planned motion to this endpoint to validate it and get a motion session for it, - Execute your motion using the [streamMoveForward](#/operations/streamMoveForward) endpoint. Once a planned motion is validated, it is treated like a motion session and will appear in the list of available motions, see [listMotions](#/operations/listMotions) endpoint. You can then execute a motion session with the [streamMoveForward](#/operations/streamMoveForward) endpoint.
1907
+
1908
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1909
+ :type cell: str
1910
+ :param planned_motion: (required)
1911
+ :type planned_motion: PlannedMotion
1912
+ :param _request_timeout: timeout setting for this request. If one
1913
+ number provided, it will be total request
1914
+ timeout. It can also be a pair (tuple) of
1915
+ (connection, read) timeouts.
1916
+ :type _request_timeout: int, tuple(int, int), optional
1917
+ :param _request_auth: set to override the auth_settings for an a single
1918
+ request; this effectively ignores the
1919
+ authentication in the spec for a single request.
1920
+ :type _request_auth: dict, optional
1921
+ :param _content_type: force content-type for the request.
1922
+ :type _content_type: str, Optional
1923
+ :param _headers: set to override the headers for a single
1924
+ request; this effectively ignores the headers
1925
+ in the spec for a single request.
1926
+ :type _headers: dict, optional
1927
+ :param _host_index: set to override the host_index for a single
1928
+ request; this effectively ignores the host_index
1929
+ in the spec for a single request.
1930
+ :type _host_index: int, optional
1931
+ :return: Returns the result object.
1932
+ """ # noqa: E501
1933
+
1934
+ _param = self._load_planned_motion_serialize(
1935
+ cell=cell,
1936
+ planned_motion=planned_motion,
1937
+ _request_auth=_request_auth,
1938
+ _content_type=_content_type,
1939
+ _headers=_headers,
1940
+ _host_index=_host_index,
1941
+ )
1942
+
1943
+ _response_types_map: Dict[str, Optional[str]] = {
1944
+ "200": "PlanResponse",
1945
+ }
1946
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
1947
+ await response_data.read()
1948
+ return self.api_client.response_deserialize(
1949
+ response_data=response_data,
1950
+ response_types_map=_response_types_map,
1951
+ ).data
1952
+
1953
+ @validate_call
1954
+ async def load_planned_motion_with_http_info(
1955
+ self,
1956
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
1957
+ planned_motion: PlannedMotion,
1958
+ _request_timeout: Union[
1959
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
1960
+ ] = None,
1961
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1962
+ _content_type: Optional[StrictStr] = None,
1963
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1964
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1965
+ ) -> ApiResponse[PlanResponse]:
1966
+ """Load Planned Motion
1967
+
1968
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Loads and validates the data of a planned motion into a motion session. The response contains information about the validated motion. Validation can lead to three different results: - Fully valid: The whole planned motion can be executed from start to end. The response will contain the session to move the robot. - Partially valid: Only parts of the planned motion can be executed. The response will contain the session to move the robot and information about the failure for the part that is not executable. - Invalid: The planned motion can not be executed. The response will tell you, which information about the reason of failure. If the motion is at least partially valid, the parts of the motion that are valid can be executed using the [streamMoveForward](#/operations/streamMoveForward) endpoint. You can use the following workflows: - Plan motions using the [planMotion](#/operations/planMotion) endpoint, - Store the planned motion persistently, - Use this endpoint to reload the stored motion and get a motion session for it. - Execute the loaded motion using the [streamMoveForward](#/operations/streamMoveForward) endpoint. OR: - Generate a planned motion with [planTrajectory](#/operations/planTrajectory) or your own motion planner, - Send the planned motion to this endpoint to validate it and get a motion session for it, - Execute your motion using the [streamMoveForward](#/operations/streamMoveForward) endpoint. Once a planned motion is validated, it is treated like a motion session and will appear in the list of available motions, see [listMotions](#/operations/listMotions) endpoint. You can then execute a motion session with the [streamMoveForward](#/operations/streamMoveForward) endpoint.
1969
+
1970
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
1971
+ :type cell: str
1972
+ :param planned_motion: (required)
1973
+ :type planned_motion: PlannedMotion
1974
+ :param _request_timeout: timeout setting for this request. If one
1975
+ number provided, it will be total request
1976
+ timeout. It can also be a pair (tuple) of
1977
+ (connection, read) timeouts.
1978
+ :type _request_timeout: int, tuple(int, int), optional
1979
+ :param _request_auth: set to override the auth_settings for an a single
1980
+ request; this effectively ignores the
1981
+ authentication in the spec for a single request.
1982
+ :type _request_auth: dict, optional
1983
+ :param _content_type: force content-type for the request.
1984
+ :type _content_type: str, Optional
1985
+ :param _headers: set to override the headers for a single
1986
+ request; this effectively ignores the headers
1987
+ in the spec for a single request.
1988
+ :type _headers: dict, optional
1989
+ :param _host_index: set to override the host_index for a single
1990
+ request; this effectively ignores the host_index
1991
+ in the spec for a single request.
1992
+ :type _host_index: int, optional
1993
+ :return: Returns the result object.
1994
+ """ # noqa: E501
1995
+
1996
+ _param = self._load_planned_motion_serialize(
1997
+ cell=cell,
1998
+ planned_motion=planned_motion,
1999
+ _request_auth=_request_auth,
2000
+ _content_type=_content_type,
2001
+ _headers=_headers,
2002
+ _host_index=_host_index,
2003
+ )
2004
+
2005
+ _response_types_map: Dict[str, Optional[str]] = {
2006
+ "200": "PlanResponse",
2007
+ }
2008
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2009
+ await response_data.read()
2010
+ return self.api_client.response_deserialize(
2011
+ response_data=response_data,
2012
+ response_types_map=_response_types_map,
2013
+ )
2014
+
2015
+ @validate_call
2016
+ async def load_planned_motion_without_preload_content(
2017
+ self,
2018
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2019
+ planned_motion: PlannedMotion,
2020
+ _request_timeout: Union[
2021
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2022
+ ] = None,
2023
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2024
+ _content_type: Optional[StrictStr] = None,
2025
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2026
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2027
+ ) -> RESTResponseType:
2028
+ """Load Planned Motion
2029
+
2030
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Loads and validates the data of a planned motion into a motion session. The response contains information about the validated motion. Validation can lead to three different results: - Fully valid: The whole planned motion can be executed from start to end. The response will contain the session to move the robot. - Partially valid: Only parts of the planned motion can be executed. The response will contain the session to move the robot and information about the failure for the part that is not executable. - Invalid: The planned motion can not be executed. The response will tell you, which information about the reason of failure. If the motion is at least partially valid, the parts of the motion that are valid can be executed using the [streamMoveForward](#/operations/streamMoveForward) endpoint. You can use the following workflows: - Plan motions using the [planMotion](#/operations/planMotion) endpoint, - Store the planned motion persistently, - Use this endpoint to reload the stored motion and get a motion session for it. - Execute the loaded motion using the [streamMoveForward](#/operations/streamMoveForward) endpoint. OR: - Generate a planned motion with [planTrajectory](#/operations/planTrajectory) or your own motion planner, - Send the planned motion to this endpoint to validate it and get a motion session for it, - Execute your motion using the [streamMoveForward](#/operations/streamMoveForward) endpoint. Once a planned motion is validated, it is treated like a motion session and will appear in the list of available motions, see [listMotions](#/operations/listMotions) endpoint. You can then execute a motion session with the [streamMoveForward](#/operations/streamMoveForward) endpoint.
2031
+
2032
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2033
+ :type cell: str
2034
+ :param planned_motion: (required)
2035
+ :type planned_motion: PlannedMotion
2036
+ :param _request_timeout: timeout setting for this request. If one
2037
+ number provided, it will be total request
2038
+ timeout. It can also be a pair (tuple) of
2039
+ (connection, read) timeouts.
2040
+ :type _request_timeout: int, tuple(int, int), optional
2041
+ :param _request_auth: set to override the auth_settings for an a single
2042
+ request; this effectively ignores the
2043
+ authentication in the spec for a single request.
2044
+ :type _request_auth: dict, optional
2045
+ :param _content_type: force content-type for the request.
2046
+ :type _content_type: str, Optional
2047
+ :param _headers: set to override the headers for a single
2048
+ request; this effectively ignores the headers
2049
+ in the spec for a single request.
2050
+ :type _headers: dict, optional
2051
+ :param _host_index: set to override the host_index for a single
2052
+ request; this effectively ignores the host_index
2053
+ in the spec for a single request.
2054
+ :type _host_index: int, optional
2055
+ :return: Returns the result object.
2056
+ """ # noqa: E501
2057
+
2058
+ _param = self._load_planned_motion_serialize(
2059
+ cell=cell,
2060
+ planned_motion=planned_motion,
2061
+ _request_auth=_request_auth,
2062
+ _content_type=_content_type,
2063
+ _headers=_headers,
2064
+ _host_index=_host_index,
2065
+ )
2066
+
2067
+ _response_types_map: Dict[str, Optional[str]] = {
2068
+ "200": "PlanResponse",
2069
+ }
2070
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2071
+ return response_data.response
2072
+
2073
+ def _load_planned_motion_serialize(
2074
+ self,
2075
+ cell,
2076
+ planned_motion,
2077
+ _request_auth,
2078
+ _content_type,
2079
+ _headers,
2080
+ _host_index,
2081
+ ) -> RequestSerialized:
2082
+
2083
+ _host = None
2084
+
2085
+ _collection_formats: Dict[str, str] = {}
2086
+
2087
+ _path_params: Dict[str, str] = {}
2088
+ _query_params: List[Tuple[str, str]] = []
2089
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2090
+ _form_params: List[Tuple[str, str]] = []
2091
+ _files: Dict[str, Union[str, bytes]] = {}
2092
+ _body_params: Optional[bytes] = None
2093
+
2094
+ # process the path parameters
2095
+ if cell is not None:
2096
+ _path_params["cell"] = cell
2097
+ # process the query parameters
2098
+ # process the header parameters
2099
+ # process the form parameters
2100
+ # process the body parameter
2101
+ if planned_motion is not None:
2102
+ _body_params = planned_motion
2103
+
2104
+ # set the HTTP header `Accept`
2105
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
2106
+
2107
+ # set the HTTP header `Content-Type`
2108
+ if _content_type:
2109
+ _header_params["Content-Type"] = _content_type
2110
+ else:
2111
+ _default_content_type = self.api_client.select_header_content_type(["application/json"])
2112
+ if _default_content_type is not None:
2113
+ _header_params["Content-Type"] = _default_content_type
2114
+
2115
+ # authentication setting
2116
+ _auth_settings: List[str] = ["BearerAuth"]
2117
+
2118
+ return self.api_client.param_serialize(
2119
+ method="POST",
2120
+ resource_path="/cells/{cell}/planned-motions",
2121
+ path_params=_path_params,
2122
+ query_params=_query_params,
2123
+ header_params=_header_params,
2124
+ body=_body_params,
2125
+ post_params=_form_params,
2126
+ files=_files,
2127
+ auth_settings=_auth_settings,
2128
+ collection_formats=_collection_formats,
2129
+ _host=_host,
2130
+ _request_auth=_request_auth,
2131
+ )
2132
+
2133
+ @validate_call
2134
+ async def plan_collision_free_ptp(
2135
+ self,
2136
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2137
+ plan_collision_free_ptp_request: Optional[PlanCollisionFreePTPRequest] = None,
2138
+ _request_timeout: Union[
2139
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2140
+ ] = None,
2141
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2142
+ _content_type: Optional[StrictStr] = None,
2143
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2144
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2145
+ ) -> PlanTrajectoryResponse:
2146
+ """Plan Collision Free PTP
2147
+
2148
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ <!-- theme: danger --> > **Experimental** Plans a collision-free PTP motion for a single motion group. Use the following workflow to execute a planned trajectory: 1. Plan a collision-free movement/motion. 2. Validate and load the planned trajectory using the [loadPlannedMotion](#/operations/loadPlannedMotion) endpoint. 3. Execute the loaded trajectory using the [streamMove](#/operations/streamMove) endpoint.
2149
+
2150
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2151
+ :type cell: str
2152
+ :param plan_collision_free_ptp_request:
2153
+ :type plan_collision_free_ptp_request: PlanCollisionFreePTPRequest
2154
+ :param _request_timeout: timeout setting for this request. If one
2155
+ number provided, it will be total request
2156
+ timeout. It can also be a pair (tuple) of
2157
+ (connection, read) timeouts.
2158
+ :type _request_timeout: int, tuple(int, int), optional
2159
+ :param _request_auth: set to override the auth_settings for an a single
2160
+ request; this effectively ignores the
2161
+ authentication in the spec for a single request.
2162
+ :type _request_auth: dict, optional
2163
+ :param _content_type: force content-type for the request.
2164
+ :type _content_type: str, Optional
2165
+ :param _headers: set to override the headers for a single
2166
+ request; this effectively ignores the headers
2167
+ in the spec for a single request.
2168
+ :type _headers: dict, optional
2169
+ :param _host_index: set to override the host_index for a single
2170
+ request; this effectively ignores the host_index
2171
+ in the spec for a single request.
2172
+ :type _host_index: int, optional
2173
+ :return: Returns the result object.
2174
+ """ # noqa: E501
2175
+
2176
+ _param = self._plan_collision_free_ptp_serialize(
2177
+ cell=cell,
2178
+ plan_collision_free_ptp_request=plan_collision_free_ptp_request,
2179
+ _request_auth=_request_auth,
2180
+ _content_type=_content_type,
2181
+ _headers=_headers,
2182
+ _host_index=_host_index,
2183
+ )
2184
+
2185
+ _response_types_map: Dict[str, Optional[str]] = {
2186
+ "200": "PlanTrajectoryResponse",
2187
+ "404": None,
2188
+ "422": "HTTPValidationError",
2189
+ "500": None,
2190
+ }
2191
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2192
+ await response_data.read()
2193
+ return self.api_client.response_deserialize(
2194
+ response_data=response_data,
2195
+ response_types_map=_response_types_map,
2196
+ ).data
2197
+
2198
+ @validate_call
2199
+ async def plan_collision_free_ptp_with_http_info(
2200
+ self,
2201
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2202
+ plan_collision_free_ptp_request: Optional[PlanCollisionFreePTPRequest] = None,
2203
+ _request_timeout: Union[
2204
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2205
+ ] = None,
2206
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2207
+ _content_type: Optional[StrictStr] = None,
2208
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2209
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2210
+ ) -> ApiResponse[PlanTrajectoryResponse]:
2211
+ """Plan Collision Free PTP
2212
+
2213
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ <!-- theme: danger --> > **Experimental** Plans a collision-free PTP motion for a single motion group. Use the following workflow to execute a planned trajectory: 1. Plan a collision-free movement/motion. 2. Validate and load the planned trajectory using the [loadPlannedMotion](#/operations/loadPlannedMotion) endpoint. 3. Execute the loaded trajectory using the [streamMove](#/operations/streamMove) endpoint.
2214
+
2215
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2216
+ :type cell: str
2217
+ :param plan_collision_free_ptp_request:
2218
+ :type plan_collision_free_ptp_request: PlanCollisionFreePTPRequest
2219
+ :param _request_timeout: timeout setting for this request. If one
2220
+ number provided, it will be total request
2221
+ timeout. It can also be a pair (tuple) of
2222
+ (connection, read) timeouts.
2223
+ :type _request_timeout: int, tuple(int, int), optional
2224
+ :param _request_auth: set to override the auth_settings for an a single
2225
+ request; this effectively ignores the
2226
+ authentication in the spec for a single request.
2227
+ :type _request_auth: dict, optional
2228
+ :param _content_type: force content-type for the request.
2229
+ :type _content_type: str, Optional
2230
+ :param _headers: set to override the headers for a single
2231
+ request; this effectively ignores the headers
2232
+ in the spec for a single request.
2233
+ :type _headers: dict, optional
2234
+ :param _host_index: set to override the host_index for a single
2235
+ request; this effectively ignores the host_index
2236
+ in the spec for a single request.
2237
+ :type _host_index: int, optional
2238
+ :return: Returns the result object.
2239
+ """ # noqa: E501
2240
+
2241
+ _param = self._plan_collision_free_ptp_serialize(
2242
+ cell=cell,
2243
+ plan_collision_free_ptp_request=plan_collision_free_ptp_request,
2244
+ _request_auth=_request_auth,
2245
+ _content_type=_content_type,
2246
+ _headers=_headers,
2247
+ _host_index=_host_index,
2248
+ )
2249
+
2250
+ _response_types_map: Dict[str, Optional[str]] = {
2251
+ "200": "PlanTrajectoryResponse",
2252
+ "404": None,
2253
+ "422": "HTTPValidationError",
2254
+ "500": None,
2255
+ }
2256
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2257
+ await response_data.read()
2258
+ return self.api_client.response_deserialize(
2259
+ response_data=response_data,
2260
+ response_types_map=_response_types_map,
2261
+ )
2262
+
2263
+ @validate_call
2264
+ async def plan_collision_free_ptp_without_preload_content(
2265
+ self,
2266
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2267
+ plan_collision_free_ptp_request: Optional[PlanCollisionFreePTPRequest] = None,
2268
+ _request_timeout: Union[
2269
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2270
+ ] = None,
2271
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2272
+ _content_type: Optional[StrictStr] = None,
2273
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2274
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2275
+ ) -> RESTResponseType:
2276
+ """Plan Collision Free PTP
2277
+
2278
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ <!-- theme: danger --> > **Experimental** Plans a collision-free PTP motion for a single motion group. Use the following workflow to execute a planned trajectory: 1. Plan a collision-free movement/motion. 2. Validate and load the planned trajectory using the [loadPlannedMotion](#/operations/loadPlannedMotion) endpoint. 3. Execute the loaded trajectory using the [streamMove](#/operations/streamMove) endpoint.
2279
+
2280
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2281
+ :type cell: str
2282
+ :param plan_collision_free_ptp_request:
2283
+ :type plan_collision_free_ptp_request: PlanCollisionFreePTPRequest
2284
+ :param _request_timeout: timeout setting for this request. If one
2285
+ number provided, it will be total request
2286
+ timeout. It can also be a pair (tuple) of
2287
+ (connection, read) timeouts.
2288
+ :type _request_timeout: int, tuple(int, int), optional
2289
+ :param _request_auth: set to override the auth_settings for an a single
2290
+ request; this effectively ignores the
2291
+ authentication in the spec for a single request.
2292
+ :type _request_auth: dict, optional
2293
+ :param _content_type: force content-type for the request.
2294
+ :type _content_type: str, Optional
2295
+ :param _headers: set to override the headers for a single
2296
+ request; this effectively ignores the headers
2297
+ in the spec for a single request.
2298
+ :type _headers: dict, optional
2299
+ :param _host_index: set to override the host_index for a single
2300
+ request; this effectively ignores the host_index
2301
+ in the spec for a single request.
2302
+ :type _host_index: int, optional
2303
+ :return: Returns the result object.
2304
+ """ # noqa: E501
2305
+
2306
+ _param = self._plan_collision_free_ptp_serialize(
2307
+ cell=cell,
2308
+ plan_collision_free_ptp_request=plan_collision_free_ptp_request,
2309
+ _request_auth=_request_auth,
2310
+ _content_type=_content_type,
2311
+ _headers=_headers,
2312
+ _host_index=_host_index,
2313
+ )
2314
+
2315
+ _response_types_map: Dict[str, Optional[str]] = {
2316
+ "200": "PlanTrajectoryResponse",
2317
+ "404": None,
2318
+ "422": "HTTPValidationError",
2319
+ "500": None,
2320
+ }
2321
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2322
+ return response_data.response
2323
+
2324
+ def _plan_collision_free_ptp_serialize(
2325
+ self,
2326
+ cell,
2327
+ plan_collision_free_ptp_request,
2328
+ _request_auth,
2329
+ _content_type,
2330
+ _headers,
2331
+ _host_index,
2332
+ ) -> RequestSerialized:
2333
+
2334
+ _host = None
2335
+
2336
+ _collection_formats: Dict[str, str] = {}
2337
+
2338
+ _path_params: Dict[str, str] = {}
2339
+ _query_params: List[Tuple[str, str]] = []
2340
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2341
+ _form_params: List[Tuple[str, str]] = []
2342
+ _files: Dict[str, Union[str, bytes]] = {}
2343
+ _body_params: Optional[bytes] = None
2344
+
2345
+ # process the path parameters
2346
+ if cell is not None:
2347
+ _path_params["cell"] = cell
2348
+ # process the query parameters
2349
+ # process the header parameters
2350
+ # process the form parameters
2351
+ # process the body parameter
2352
+ if plan_collision_free_ptp_request is not None:
2353
+ _body_params = plan_collision_free_ptp_request
2354
+
2355
+ # set the HTTP header `Accept`
2356
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
2357
+
2358
+ # set the HTTP header `Content-Type`
2359
+ if _content_type:
2360
+ _header_params["Content-Type"] = _content_type
2361
+ else:
2362
+ _default_content_type = self.api_client.select_header_content_type(["application/json"])
2363
+ if _default_content_type is not None:
2364
+ _header_params["Content-Type"] = _default_content_type
2365
+
2366
+ # authentication setting
2367
+ _auth_settings: List[str] = ["BearerAuth"]
2368
+
2369
+ return self.api_client.param_serialize(
2370
+ method="POST",
2371
+ resource_path="/cells/{cell}/motion-planning/plan-collision-free-ptp",
2372
+ path_params=_path_params,
2373
+ query_params=_query_params,
2374
+ header_params=_header_params,
2375
+ body=_body_params,
2376
+ post_params=_form_params,
2377
+ files=_files,
2378
+ auth_settings=_auth_settings,
2379
+ collection_formats=_collection_formats,
2380
+ _host=_host,
2381
+ _request_auth=_request_auth,
2382
+ )
2383
+
2384
+ @validate_call
2385
+ async def plan_motion(
2386
+ self,
2387
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2388
+ plan_request: PlanRequest,
2389
+ _request_timeout: Union[
2390
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2391
+ ] = None,
2392
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2393
+ _content_type: Optional[StrictStr] = None,
2394
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2395
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2396
+ ) -> PlanResponse:
2397
+ """(Deprecated) Plan Motion
2398
+
2399
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Deprecated endpoint. Use [planTrajectory](#/operations/planTrajectory) and [loadPlannedMotion](#/operations/loadPlannedMotion) instead. Plans a new motion for a single previously configured [motion group](#/operations/listMotionGroups). Motions are described by a sequence of motion commands starting with start joints. A motion is planned from standstill to standstill. A single motion has constant TCP and payload. Currently, I/O actions can't be attached to a motion to execute the action in realtime while a motion is executed. If an I/O is needed at a specific point, multiple motions need to be planned. If an I/O is needed to be set while a motion is executed, the endpoint [setOutputValues](#/operations/setOutputValues) could be used.
2400
+
2401
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2402
+ :type cell: str
2403
+ :param plan_request: (required)
2404
+ :type plan_request: PlanRequest
2405
+ :param _request_timeout: timeout setting for this request. If one
2406
+ number provided, it will be total request
2407
+ timeout. It can also be a pair (tuple) of
2408
+ (connection, read) timeouts.
2409
+ :type _request_timeout: int, tuple(int, int), optional
2410
+ :param _request_auth: set to override the auth_settings for an a single
2411
+ request; this effectively ignores the
2412
+ authentication in the spec for a single request.
2413
+ :type _request_auth: dict, optional
2414
+ :param _content_type: force content-type for the request.
2415
+ :type _content_type: str, Optional
2416
+ :param _headers: set to override the headers for a single
2417
+ request; this effectively ignores the headers
2418
+ in the spec for a single request.
2419
+ :type _headers: dict, optional
2420
+ :param _host_index: set to override the host_index for a single
2421
+ request; this effectively ignores the host_index
2422
+ in the spec for a single request.
2423
+ :type _host_index: int, optional
2424
+ :return: Returns the result object.
2425
+ """ # noqa: E501
2426
+ warnings.warn("POST /cells/{cell}/motions is deprecated.", DeprecationWarning)
2427
+
2428
+ _param = self._plan_motion_serialize(
2429
+ cell=cell,
2430
+ plan_request=plan_request,
2431
+ _request_auth=_request_auth,
2432
+ _content_type=_content_type,
2433
+ _headers=_headers,
2434
+ _host_index=_host_index,
2435
+ )
2436
+
2437
+ _response_types_map: Dict[str, Optional[str]] = {
2438
+ "200": "PlanResponse",
2439
+ }
2440
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2441
+ await response_data.read()
2442
+ return self.api_client.response_deserialize(
2443
+ response_data=response_data,
2444
+ response_types_map=_response_types_map,
2445
+ ).data
2446
+
2447
+ @validate_call
2448
+ async def plan_motion_with_http_info(
2449
+ self,
2450
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2451
+ plan_request: PlanRequest,
2452
+ _request_timeout: Union[
2453
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2454
+ ] = None,
2455
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2456
+ _content_type: Optional[StrictStr] = None,
2457
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2458
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2459
+ ) -> ApiResponse[PlanResponse]:
2460
+ """(Deprecated) Plan Motion
2461
+
2462
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Deprecated endpoint. Use [planTrajectory](#/operations/planTrajectory) and [loadPlannedMotion](#/operations/loadPlannedMotion) instead. Plans a new motion for a single previously configured [motion group](#/operations/listMotionGroups). Motions are described by a sequence of motion commands starting with start joints. A motion is planned from standstill to standstill. A single motion has constant TCP and payload. Currently, I/O actions can't be attached to a motion to execute the action in realtime while a motion is executed. If an I/O is needed at a specific point, multiple motions need to be planned. If an I/O is needed to be set while a motion is executed, the endpoint [setOutputValues](#/operations/setOutputValues) could be used.
2463
+
2464
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2465
+ :type cell: str
2466
+ :param plan_request: (required)
2467
+ :type plan_request: PlanRequest
2468
+ :param _request_timeout: timeout setting for this request. If one
2469
+ number provided, it will be total request
2470
+ timeout. It can also be a pair (tuple) of
2471
+ (connection, read) timeouts.
2472
+ :type _request_timeout: int, tuple(int, int), optional
2473
+ :param _request_auth: set to override the auth_settings for an a single
2474
+ request; this effectively ignores the
2475
+ authentication in the spec for a single request.
2476
+ :type _request_auth: dict, optional
2477
+ :param _content_type: force content-type for the request.
2478
+ :type _content_type: str, Optional
2479
+ :param _headers: set to override the headers for a single
2480
+ request; this effectively ignores the headers
2481
+ in the spec for a single request.
2482
+ :type _headers: dict, optional
2483
+ :param _host_index: set to override the host_index for a single
2484
+ request; this effectively ignores the host_index
2485
+ in the spec for a single request.
2486
+ :type _host_index: int, optional
2487
+ :return: Returns the result object.
2488
+ """ # noqa: E501
2489
+ warnings.warn("POST /cells/{cell}/motions is deprecated.", DeprecationWarning)
2490
+
2491
+ _param = self._plan_motion_serialize(
2492
+ cell=cell,
2493
+ plan_request=plan_request,
2494
+ _request_auth=_request_auth,
2495
+ _content_type=_content_type,
2496
+ _headers=_headers,
2497
+ _host_index=_host_index,
2498
+ )
2499
+
2500
+ _response_types_map: Dict[str, Optional[str]] = {
2501
+ "200": "PlanResponse",
2502
+ }
2503
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2504
+ await response_data.read()
2505
+ return self.api_client.response_deserialize(
2506
+ response_data=response_data,
2507
+ response_types_map=_response_types_map,
2508
+ )
2509
+
2510
+ @validate_call
2511
+ async def plan_motion_without_preload_content(
2512
+ self,
2513
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2514
+ plan_request: PlanRequest,
2515
+ _request_timeout: Union[
2516
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2517
+ ] = None,
2518
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2519
+ _content_type: Optional[StrictStr] = None,
2520
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2521
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2522
+ ) -> RESTResponseType:
2523
+ """(Deprecated) Plan Motion
2524
+
2525
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Deprecated endpoint. Use [planTrajectory](#/operations/planTrajectory) and [loadPlannedMotion](#/operations/loadPlannedMotion) instead. Plans a new motion for a single previously configured [motion group](#/operations/listMotionGroups). Motions are described by a sequence of motion commands starting with start joints. A motion is planned from standstill to standstill. A single motion has constant TCP and payload. Currently, I/O actions can't be attached to a motion to execute the action in realtime while a motion is executed. If an I/O is needed at a specific point, multiple motions need to be planned. If an I/O is needed to be set while a motion is executed, the endpoint [setOutputValues](#/operations/setOutputValues) could be used.
2526
+
2527
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2528
+ :type cell: str
2529
+ :param plan_request: (required)
2530
+ :type plan_request: PlanRequest
2531
+ :param _request_timeout: timeout setting for this request. If one
2532
+ number provided, it will be total request
2533
+ timeout. It can also be a pair (tuple) of
2534
+ (connection, read) timeouts.
2535
+ :type _request_timeout: int, tuple(int, int), optional
2536
+ :param _request_auth: set to override the auth_settings for an a single
2537
+ request; this effectively ignores the
2538
+ authentication in the spec for a single request.
2539
+ :type _request_auth: dict, optional
2540
+ :param _content_type: force content-type for the request.
2541
+ :type _content_type: str, Optional
2542
+ :param _headers: set to override the headers for a single
2543
+ request; this effectively ignores the headers
2544
+ in the spec for a single request.
2545
+ :type _headers: dict, optional
2546
+ :param _host_index: set to override the host_index for a single
2547
+ request; this effectively ignores the host_index
2548
+ in the spec for a single request.
2549
+ :type _host_index: int, optional
2550
+ :return: Returns the result object.
2551
+ """ # noqa: E501
2552
+ warnings.warn("POST /cells/{cell}/motions is deprecated.", DeprecationWarning)
2553
+
2554
+ _param = self._plan_motion_serialize(
2555
+ cell=cell,
2556
+ plan_request=plan_request,
2557
+ _request_auth=_request_auth,
2558
+ _content_type=_content_type,
2559
+ _headers=_headers,
2560
+ _host_index=_host_index,
2561
+ )
2562
+
2563
+ _response_types_map: Dict[str, Optional[str]] = {
2564
+ "200": "PlanResponse",
2565
+ }
2566
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2567
+ return response_data.response
2568
+
2569
+ def _plan_motion_serialize(
2570
+ self,
2571
+ cell,
2572
+ plan_request,
2573
+ _request_auth,
2574
+ _content_type,
2575
+ _headers,
2576
+ _host_index,
2577
+ ) -> RequestSerialized:
2578
+
2579
+ _host = None
2580
+
2581
+ _collection_formats: Dict[str, str] = {}
2582
+
2583
+ _path_params: Dict[str, str] = {}
2584
+ _query_params: List[Tuple[str, str]] = []
2585
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2586
+ _form_params: List[Tuple[str, str]] = []
2587
+ _files: Dict[str, Union[str, bytes]] = {}
2588
+ _body_params: Optional[bytes] = None
2589
+
2590
+ # process the path parameters
2591
+ if cell is not None:
2592
+ _path_params["cell"] = cell
2593
+ # process the query parameters
2594
+ # process the header parameters
2595
+ # process the form parameters
2596
+ # process the body parameter
2597
+ if plan_request is not None:
2598
+ _body_params = plan_request
2599
+
2600
+ # set the HTTP header `Accept`
2601
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
2602
+
2603
+ # set the HTTP header `Content-Type`
2604
+ if _content_type:
2605
+ _header_params["Content-Type"] = _content_type
2606
+ else:
2607
+ _default_content_type = self.api_client.select_header_content_type(["application/json"])
2608
+ if _default_content_type is not None:
2609
+ _header_params["Content-Type"] = _default_content_type
2610
+
2611
+ # authentication setting
2612
+ _auth_settings: List[str] = ["BearerAuth"]
2613
+
2614
+ return self.api_client.param_serialize(
2615
+ method="POST",
2616
+ resource_path="/cells/{cell}/motions",
2617
+ path_params=_path_params,
2618
+ query_params=_query_params,
2619
+ header_params=_header_params,
2620
+ body=_body_params,
2621
+ post_params=_form_params,
2622
+ files=_files,
2623
+ auth_settings=_auth_settings,
2624
+ collection_formats=_collection_formats,
2625
+ _host=_host,
2626
+ _request_auth=_request_auth,
2627
+ )
2628
+
2629
+ @validate_call
2630
+ async def plan_trajectory(
2631
+ self,
2632
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2633
+ plan_trajectory_request: Optional[PlanTrajectoryRequest] = None,
2634
+ _request_timeout: Union[
2635
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2636
+ ] = None,
2637
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2638
+ _content_type: Optional[StrictStr] = None,
2639
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2640
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2641
+ ) -> PlanTrajectoryResponse:
2642
+ """Plan Trajectory
2643
+
2644
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ Plans a new trajectory for a single motion group. Describe the trajectory as a sequence of motion commands that the robots TCP should follow. Use the following workflow to execute a planned trajectory: 1. Plan a trajectory. 2. Validate and load the planned trajectory using the [loadPlannedMotion](#/operations/loadPlannedMotion) endpoint. 3. Execute the loaded trajectory using the [streamMove](#/operations/streamMove) endpoint. If the trajectory is not executable, the PlanTrajectoryFailedResponse will contain the joint trajectory up until the error (e.g. a collision) occurred. EXCEPTION: If a CartesianPTP or JointPTP motion command has an invalid target, the response will contain the trajectory up until the start of the invalid PTP motion.
2645
+
2646
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2647
+ :type cell: str
2648
+ :param plan_trajectory_request:
2649
+ :type plan_trajectory_request: PlanTrajectoryRequest
2650
+ :param _request_timeout: timeout setting for this request. If one
2651
+ number provided, it will be total request
2652
+ timeout. It can also be a pair (tuple) of
2653
+ (connection, read) timeouts.
2654
+ :type _request_timeout: int, tuple(int, int), optional
2655
+ :param _request_auth: set to override the auth_settings for an a single
2656
+ request; this effectively ignores the
2657
+ authentication in the spec for a single request.
2658
+ :type _request_auth: dict, optional
2659
+ :param _content_type: force content-type for the request.
2660
+ :type _content_type: str, Optional
2661
+ :param _headers: set to override the headers for a single
2662
+ request; this effectively ignores the headers
2663
+ in the spec for a single request.
2664
+ :type _headers: dict, optional
2665
+ :param _host_index: set to override the host_index for a single
2666
+ request; this effectively ignores the host_index
2667
+ in the spec for a single request.
2668
+ :type _host_index: int, optional
2669
+ :return: Returns the result object.
2670
+ """ # noqa: E501
2671
+
2672
+ _param = self._plan_trajectory_serialize(
2673
+ cell=cell,
2674
+ plan_trajectory_request=plan_trajectory_request,
2675
+ _request_auth=_request_auth,
2676
+ _content_type=_content_type,
2677
+ _headers=_headers,
2678
+ _host_index=_host_index,
2679
+ )
2680
+
2681
+ _response_types_map: Dict[str, Optional[str]] = {
2682
+ "200": "PlanTrajectoryResponse",
2683
+ "404": None,
2684
+ "422": "HTTPValidationError",
2685
+ "500": None,
2686
+ }
2687
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2688
+ await response_data.read()
2689
+ return self.api_client.response_deserialize(
2690
+ response_data=response_data,
2691
+ response_types_map=_response_types_map,
2692
+ ).data
2693
+
2694
+ @validate_call
2695
+ async def plan_trajectory_with_http_info(
2696
+ self,
2697
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2698
+ plan_trajectory_request: Optional[PlanTrajectoryRequest] = None,
2699
+ _request_timeout: Union[
2700
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2701
+ ] = None,
2702
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2703
+ _content_type: Optional[StrictStr] = None,
2704
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2705
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2706
+ ) -> ApiResponse[PlanTrajectoryResponse]:
2707
+ """Plan Trajectory
2708
+
2709
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ Plans a new trajectory for a single motion group. Describe the trajectory as a sequence of motion commands that the robots TCP should follow. Use the following workflow to execute a planned trajectory: 1. Plan a trajectory. 2. Validate and load the planned trajectory using the [loadPlannedMotion](#/operations/loadPlannedMotion) endpoint. 3. Execute the loaded trajectory using the [streamMove](#/operations/streamMove) endpoint. If the trajectory is not executable, the PlanTrajectoryFailedResponse will contain the joint trajectory up until the error (e.g. a collision) occurred. EXCEPTION: If a CartesianPTP or JointPTP motion command has an invalid target, the response will contain the trajectory up until the start of the invalid PTP motion.
2710
+
2711
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2712
+ :type cell: str
2713
+ :param plan_trajectory_request:
2714
+ :type plan_trajectory_request: PlanTrajectoryRequest
2715
+ :param _request_timeout: timeout setting for this request. If one
2716
+ number provided, it will be total request
2717
+ timeout. It can also be a pair (tuple) of
2718
+ (connection, read) timeouts.
2719
+ :type _request_timeout: int, tuple(int, int), optional
2720
+ :param _request_auth: set to override the auth_settings for an a single
2721
+ request; this effectively ignores the
2722
+ authentication in the spec for a single request.
2723
+ :type _request_auth: dict, optional
2724
+ :param _content_type: force content-type for the request.
2725
+ :type _content_type: str, Optional
2726
+ :param _headers: set to override the headers for a single
2727
+ request; this effectively ignores the headers
2728
+ in the spec for a single request.
2729
+ :type _headers: dict, optional
2730
+ :param _host_index: set to override the host_index for a single
2731
+ request; this effectively ignores the host_index
2732
+ in the spec for a single request.
2733
+ :type _host_index: int, optional
2734
+ :return: Returns the result object.
2735
+ """ # noqa: E501
2736
+
2737
+ _param = self._plan_trajectory_serialize(
2738
+ cell=cell,
2739
+ plan_trajectory_request=plan_trajectory_request,
2740
+ _request_auth=_request_auth,
2741
+ _content_type=_content_type,
2742
+ _headers=_headers,
2743
+ _host_index=_host_index,
2744
+ )
2745
+
2746
+ _response_types_map: Dict[str, Optional[str]] = {
2747
+ "200": "PlanTrajectoryResponse",
2748
+ "404": None,
2749
+ "422": "HTTPValidationError",
2750
+ "500": None,
2751
+ }
2752
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2753
+ await response_data.read()
2754
+ return self.api_client.response_deserialize(
2755
+ response_data=response_data,
2756
+ response_types_map=_response_types_map,
2757
+ )
2758
+
2759
+ @validate_call
2760
+ async def plan_trajectory_without_preload_content(
2761
+ self,
2762
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2763
+ plan_trajectory_request: Optional[PlanTrajectoryRequest] = None,
2764
+ _request_timeout: Union[
2765
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2766
+ ] = None,
2767
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2768
+ _content_type: Optional[StrictStr] = None,
2769
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2770
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2771
+ ) -> RESTResponseType:
2772
+ """Plan Trajectory
2773
+
2774
+ **Required permissions:** `can_plan_motion` - Plan robot motions and trajectories ___ Plans a new trajectory for a single motion group. Describe the trajectory as a sequence of motion commands that the robots TCP should follow. Use the following workflow to execute a planned trajectory: 1. Plan a trajectory. 2. Validate and load the planned trajectory using the [loadPlannedMotion](#/operations/loadPlannedMotion) endpoint. 3. Execute the loaded trajectory using the [streamMove](#/operations/streamMove) endpoint. If the trajectory is not executable, the PlanTrajectoryFailedResponse will contain the joint trajectory up until the error (e.g. a collision) occurred. EXCEPTION: If a CartesianPTP or JointPTP motion command has an invalid target, the response will contain the trajectory up until the start of the invalid PTP motion.
2775
+
2776
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2777
+ :type cell: str
2778
+ :param plan_trajectory_request:
2779
+ :type plan_trajectory_request: PlanTrajectoryRequest
2780
+ :param _request_timeout: timeout setting for this request. If one
2781
+ number provided, it will be total request
2782
+ timeout. It can also be a pair (tuple) of
2783
+ (connection, read) timeouts.
2784
+ :type _request_timeout: int, tuple(int, int), optional
2785
+ :param _request_auth: set to override the auth_settings for an a single
2786
+ request; this effectively ignores the
2787
+ authentication in the spec for a single request.
2788
+ :type _request_auth: dict, optional
2789
+ :param _content_type: force content-type for the request.
2790
+ :type _content_type: str, Optional
2791
+ :param _headers: set to override the headers for a single
2792
+ request; this effectively ignores the headers
2793
+ in the spec for a single request.
2794
+ :type _headers: dict, optional
2795
+ :param _host_index: set to override the host_index for a single
2796
+ request; this effectively ignores the host_index
2797
+ in the spec for a single request.
2798
+ :type _host_index: int, optional
2799
+ :return: Returns the result object.
2800
+ """ # noqa: E501
2801
+
2802
+ _param = self._plan_trajectory_serialize(
2803
+ cell=cell,
2804
+ plan_trajectory_request=plan_trajectory_request,
2805
+ _request_auth=_request_auth,
2806
+ _content_type=_content_type,
2807
+ _headers=_headers,
2808
+ _host_index=_host_index,
2809
+ )
2810
+
2811
+ _response_types_map: Dict[str, Optional[str]] = {
2812
+ "200": "PlanTrajectoryResponse",
2813
+ "404": None,
2814
+ "422": "HTTPValidationError",
2815
+ "500": None,
2816
+ }
2817
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2818
+ return response_data.response
2819
+
2820
+ def _plan_trajectory_serialize(
2821
+ self,
2822
+ cell,
2823
+ plan_trajectory_request,
2824
+ _request_auth,
2825
+ _content_type,
2826
+ _headers,
2827
+ _host_index,
2828
+ ) -> RequestSerialized:
2829
+
2830
+ _host = None
2831
+
2832
+ _collection_formats: Dict[str, str] = {}
2833
+
2834
+ _path_params: Dict[str, str] = {}
2835
+ _query_params: List[Tuple[str, str]] = []
2836
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2837
+ _form_params: List[Tuple[str, str]] = []
2838
+ _files: Dict[str, Union[str, bytes]] = {}
2839
+ _body_params: Optional[bytes] = None
2840
+
2841
+ # process the path parameters
2842
+ if cell is not None:
2843
+ _path_params["cell"] = cell
2844
+ # process the query parameters
2845
+ # process the header parameters
2846
+ # process the form parameters
2847
+ # process the body parameter
2848
+ if plan_trajectory_request is not None:
2849
+ _body_params = plan_trajectory_request
2850
+
2851
+ # set the HTTP header `Accept`
2852
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
2853
+
2854
+ # set the HTTP header `Content-Type`
2855
+ if _content_type:
2856
+ _header_params["Content-Type"] = _content_type
2857
+ else:
2858
+ _default_content_type = self.api_client.select_header_content_type(["application/json"])
2859
+ if _default_content_type is not None:
2860
+ _header_params["Content-Type"] = _default_content_type
2861
+
2862
+ # authentication setting
2863
+ _auth_settings: List[str] = ["BearerAuth"]
2864
+
2865
+ return self.api_client.param_serialize(
2866
+ method="POST",
2867
+ resource_path="/cells/{cell}/motion-planning/plan-trajectory",
2868
+ path_params=_path_params,
2869
+ query_params=_query_params,
2870
+ header_params=_header_params,
2871
+ body=_body_params,
2872
+ post_params=_form_params,
2873
+ files=_files,
2874
+ auth_settings=_auth_settings,
2875
+ collection_formats=_collection_formats,
2876
+ _host=_host,
2877
+ _request_auth=_request_auth,
2878
+ )
2879
+
2880
+ @validate_call
2881
+ async def stop_execution(
2882
+ self,
2883
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2884
+ motion: Annotated[
2885
+ StrictStr,
2886
+ Field(
2887
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
2888
+ ),
2889
+ ],
2890
+ _request_timeout: Union[
2891
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2892
+ ] = None,
2893
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2894
+ _content_type: Optional[StrictStr] = None,
2895
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2896
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2897
+ ) -> None:
2898
+ """Stop
2899
+
2900
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Stops an active motion gracefully with deceleration until standstill while staying on the planned trajectory. When an active movement is stopped any further update request will be rejected. This call will immediately return even if the deceleration is still in progress. The active movement stream returns responses until the robot has reached standstill. Currently it is not possible to restart the motion. Please send in a feature request if you need to restart/continue the motion.
2901
+
2902
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2903
+ :type cell: str
2904
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
2905
+ :type motion: str
2906
+ :param _request_timeout: timeout setting for this request. If one
2907
+ number provided, it will be total request
2908
+ timeout. It can also be a pair (tuple) of
2909
+ (connection, read) timeouts.
2910
+ :type _request_timeout: int, tuple(int, int), optional
2911
+ :param _request_auth: set to override the auth_settings for an a single
2912
+ request; this effectively ignores the
2913
+ authentication in the spec for a single request.
2914
+ :type _request_auth: dict, optional
2915
+ :param _content_type: force content-type for the request.
2916
+ :type _content_type: str, Optional
2917
+ :param _headers: set to override the headers for a single
2918
+ request; this effectively ignores the headers
2919
+ in the spec for a single request.
2920
+ :type _headers: dict, optional
2921
+ :param _host_index: set to override the host_index for a single
2922
+ request; this effectively ignores the host_index
2923
+ in the spec for a single request.
2924
+ :type _host_index: int, optional
2925
+ :return: Returns the result object.
2926
+ """ # noqa: E501
2927
+
2928
+ _param = self._stop_execution_serialize(
2929
+ cell=cell, motion=motion, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
2930
+ )
2931
+
2932
+ _response_types_map: Dict[str, Optional[str]] = {
2933
+ "200": None,
2934
+ }
2935
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2936
+ await response_data.read()
2937
+ return self.api_client.response_deserialize(
2938
+ response_data=response_data,
2939
+ response_types_map=_response_types_map,
2940
+ ).data
2941
+
2942
+ @validate_call
2943
+ async def stop_execution_with_http_info(
2944
+ self,
2945
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
2946
+ motion: Annotated[
2947
+ StrictStr,
2948
+ Field(
2949
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
2950
+ ),
2951
+ ],
2952
+ _request_timeout: Union[
2953
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
2954
+ ] = None,
2955
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2956
+ _content_type: Optional[StrictStr] = None,
2957
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2958
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2959
+ ) -> ApiResponse[None]:
2960
+ """Stop
2961
+
2962
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Stops an active motion gracefully with deceleration until standstill while staying on the planned trajectory. When an active movement is stopped any further update request will be rejected. This call will immediately return even if the deceleration is still in progress. The active movement stream returns responses until the robot has reached standstill. Currently it is not possible to restart the motion. Please send in a feature request if you need to restart/continue the motion.
2963
+
2964
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
2965
+ :type cell: str
2966
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
2967
+ :type motion: str
2968
+ :param _request_timeout: timeout setting for this request. If one
2969
+ number provided, it will be total request
2970
+ timeout. It can also be a pair (tuple) of
2971
+ (connection, read) timeouts.
2972
+ :type _request_timeout: int, tuple(int, int), optional
2973
+ :param _request_auth: set to override the auth_settings for an a single
2974
+ request; this effectively ignores the
2975
+ authentication in the spec for a single request.
2976
+ :type _request_auth: dict, optional
2977
+ :param _content_type: force content-type for the request.
2978
+ :type _content_type: str, Optional
2979
+ :param _headers: set to override the headers for a single
2980
+ request; this effectively ignores the headers
2981
+ in the spec for a single request.
2982
+ :type _headers: dict, optional
2983
+ :param _host_index: set to override the host_index for a single
2984
+ request; this effectively ignores the host_index
2985
+ in the spec for a single request.
2986
+ :type _host_index: int, optional
2987
+ :return: Returns the result object.
2988
+ """ # noqa: E501
2989
+
2990
+ _param = self._stop_execution_serialize(
2991
+ cell=cell, motion=motion, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
2992
+ )
2993
+
2994
+ _response_types_map: Dict[str, Optional[str]] = {
2995
+ "200": None,
2996
+ }
2997
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
2998
+ await response_data.read()
2999
+ return self.api_client.response_deserialize(
3000
+ response_data=response_data,
3001
+ response_types_map=_response_types_map,
3002
+ )
3003
+
3004
+ @validate_call
3005
+ async def stop_execution_without_preload_content(
3006
+ self,
3007
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
3008
+ motion: Annotated[
3009
+ StrictStr,
3010
+ Field(
3011
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
3012
+ ),
3013
+ ],
3014
+ _request_timeout: Union[
3015
+ None, Annotated[StrictFloat, Field(gt=0)], Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]]
3016
+ ] = None,
3017
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3018
+ _content_type: Optional[StrictStr] = None,
3019
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3020
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
3021
+ ) -> RESTResponseType:
3022
+ """Stop
3023
+
3024
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Stops an active motion gracefully with deceleration until standstill while staying on the planned trajectory. When an active movement is stopped any further update request will be rejected. This call will immediately return even if the deceleration is still in progress. The active movement stream returns responses until the robot has reached standstill. Currently it is not possible to restart the motion. Please send in a feature request if you need to restart/continue the motion.
3025
+
3026
+ :param cell: Unique identifier addressing a cell in all API calls. (required)
3027
+ :type cell: str
3028
+ :param motion: This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion. (required)
3029
+ :type motion: str
3030
+ :param _request_timeout: timeout setting for this request. If one
3031
+ number provided, it will be total request
3032
+ timeout. It can also be a pair (tuple) of
3033
+ (connection, read) timeouts.
3034
+ :type _request_timeout: int, tuple(int, int), optional
3035
+ :param _request_auth: set to override the auth_settings for an a single
3036
+ request; this effectively ignores the
3037
+ authentication in the spec for a single request.
3038
+ :type _request_auth: dict, optional
3039
+ :param _content_type: force content-type for the request.
3040
+ :type _content_type: str, Optional
3041
+ :param _headers: set to override the headers for a single
3042
+ request; this effectively ignores the headers
3043
+ in the spec for a single request.
3044
+ :type _headers: dict, optional
3045
+ :param _host_index: set to override the host_index for a single
3046
+ request; this effectively ignores the host_index
3047
+ in the spec for a single request.
3048
+ :type _host_index: int, optional
3049
+ :return: Returns the result object.
3050
+ """ # noqa: E501
3051
+
3052
+ _param = self._stop_execution_serialize(
3053
+ cell=cell, motion=motion, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index
3054
+ )
3055
+
3056
+ _response_types_map: Dict[str, Optional[str]] = {
3057
+ "200": None,
3058
+ }
3059
+ response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
3060
+ return response_data.response
3061
+
3062
+ def _stop_execution_serialize(
3063
+ self,
3064
+ cell,
3065
+ motion,
3066
+ _request_auth,
3067
+ _content_type,
3068
+ _headers,
3069
+ _host_index,
3070
+ ) -> RequestSerialized:
3071
+
3072
+ _host = None
3073
+
3074
+ _collection_formats: Dict[str, str] = {}
3075
+
3076
+ _path_params: Dict[str, str] = {}
3077
+ _query_params: List[Tuple[str, str]] = []
3078
+ _header_params: Dict[str, Optional[str]] = _headers or {}
3079
+ _form_params: List[Tuple[str, str]] = []
3080
+ _files: Dict[str, Union[str, bytes]] = {}
3081
+ _body_params: Optional[bytes] = None
3082
+
3083
+ # process the path parameters
3084
+ if cell is not None:
3085
+ _path_params["cell"] = cell
3086
+ if motion is not None:
3087
+ _path_params["motion"] = motion
3088
+ # process the query parameters
3089
+ # process the header parameters
3090
+ # process the form parameters
3091
+ # process the body parameter
3092
+
3093
+ # set the HTTP header `Accept`
3094
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
3095
+
3096
+ # authentication setting
3097
+ _auth_settings: List[str] = ["BearerAuth"]
3098
+
3099
+ return self.api_client.param_serialize(
3100
+ method="PUT",
3101
+ resource_path="/cells/{cell}/motions/{motion}/stop",
3102
+ path_params=_path_params,
3103
+ query_params=_query_params,
3104
+ header_params=_header_params,
3105
+ body=_body_params,
3106
+ post_params=_form_params,
3107
+ files=_files,
3108
+ auth_settings=_auth_settings,
3109
+ collection_formats=_collection_formats,
3110
+ _host=_host,
3111
+ _request_auth=_request_auth,
3112
+ )
3113
+
3114
+ @validate_call
3115
+ async def stream_move(
3116
+ self,
3117
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
3118
+ client_request_generator: Callable[[AsyncGenerator[StreamMoveResponse, None]], AsyncGenerator[StreamMoveRequest, None]],
3119
+ ) -> None: # noqa: E501
3120
+ """(Deprecated) Stream Move # noqa: E501
3121
+
3122
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Deprecated endpoint. Use `executeTrajectory` instead. Moves the motion group forward or backward along a previously planned motion. Or request to move the motion group via joint point-to-point to a given location on a planned motion. Or set the playback speed of the motion. Or stop the motion execution. # noqa: E501
3123
+ :param client_request_generator: An AsyncGenerator that yields request of type StreamMoveRequest and takes an AsyncGenerator of StreamMoveResponse as an input argument (required)
3124
+ :info All responses from the server will be yielded to client_request_generator through the (AsyncGenerator[StreamMoveResponse, None])
3125
+ :type AsyncGenerator[StreamMoveRequest, None]
3126
+ """
3127
+
3128
+ def format_path_parameters(path):
3129
+ # Find all substrings that are enclosed in brackets
3130
+ bracket_contents = re.findall(r"\{(.*?)\}", path)
3131
+
3132
+ # For each found substring, alter it to match the python variable name
3133
+ for content in bracket_contents:
3134
+ content = "{" + content + "}"
3135
+ modified_content = humps.dekebabize(content)
3136
+ path = path.replace(content, modified_content)
3137
+
3138
+ return path
3139
+
3140
+ async def iterate_responses(ws) -> AsyncGenerator[StreamMoveResponse, None]:
3141
+ async for response in ws:
3142
+ if "Cancelled on the server side" in response:
3143
+ break
3144
+ response_data = json.loads(response)
3145
+ if "result" not in response_data:
3146
+ raise Exception(response_data)
3147
+ result_data = response_data["result"]
3148
+ if isinstance(result_data, list):
3149
+ # Handle list of objects
3150
+ import re
3151
+
3152
+ # Extract the base type from List[BaseType] pattern
3153
+ return_type_str = "StreamMoveResponse"
3154
+ if return_type_str.startswith("List[") and return_type_str.endswith("]"):
3155
+ base_type_name = return_type_str[5:-1] # Remove "List[" and "]"
3156
+ # Get the actual class from the module
3157
+ base_type_class = globals().get(base_type_name)
3158
+ if base_type_class and hasattr(base_type_class, "from_dict"):
3159
+ result_list = [base_type_class.from_dict(item) for item in result_data]
3160
+ yield result_list
3161
+ else:
3162
+ yield result_data
3163
+ else:
3164
+ yield result_data
3165
+ else:
3166
+ # Handle single object
3167
+ yield StreamMoveResponse.from_dict(result_data)
3168
+
3169
+ path = format_path_parameters("/cells/{cell}/motions/streammove")
3170
+ path = path.format(
3171
+ cell=cell,
3172
+ )
3173
+
3174
+ headers = websockets.Headers()
3175
+ tmp_host = self.api_client.configuration.host
3176
+ if self.api_client.configuration.host.startswith("https://"):
3177
+ # Basic Auth
3178
+ if self.api_client.configuration.username:
3179
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3180
+ tmp_host = f"wss://{self.api_client.configuration.username}:{self.api_client.configuration.password}@{tmp_host}"
3181
+
3182
+ # OAuth2
3183
+ elif self.api_client.configuration.access_token:
3184
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3185
+ tmp_host = f"wss://{tmp_host}"
3186
+ headers = websockets.Headers([("Authorization", f"Bearer {self.api_client.configuration.access_token}")])
3187
+ else:
3188
+ tmp_host = tmp_host.replace("http://", "ws://")
3189
+
3190
+ full_url = furl(tmp_host + path)
3191
+
3192
+ async with websockets.connect(full_url.url, open_timeout=10, additional_headers=headers) as websocket:
3193
+ try:
3194
+ async for request in client_request_generator(iterate_responses(websocket)):
3195
+ await websocket.send(request.to_json())
3196
+ finally:
3197
+ await websocket.close()
3198
+
3199
+ @validate_call
3200
+ async def stream_move_backward(
3201
+ self,
3202
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
3203
+ motion: Annotated[
3204
+ StrictStr,
3205
+ Field(
3206
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
3207
+ ),
3208
+ ],
3209
+ playback_speed_in_percent: Annotated[
3210
+ StrictInt,
3211
+ Field(
3212
+ description="Set the velocity for executed movements of the motion in percent. A percentage of 100% means that the robot moves as fast as possible without violating the limits. Setting this value does not affect the overall shape of the velocity profile. Everything is slowed down by the same factor. Therefore, this should only be used for teaching and trajectory evaluation purposes. If the process requires a certain velocity, the respective limits should be set when planning the motion. This will not change the velocity override of the controller. The controller velocity override value shall be 100% to ensure controllability of the motion group. "
3213
+ ),
3214
+ ],
3215
+ response_rate: Annotated[
3216
+ Optional[StrictInt],
3217
+ Field(
3218
+ description="Update rate for the response message in milliseconds (ms). Default is 200 ms. We recommend to use the step rate of the controller or a multiple of the step rate as NOVA updates the state in the controller's step rate as well. Minimal response rate is the step rate of controller."
3219
+ ),
3220
+ ] = None,
3221
+ response_coordinate_system: Annotated[
3222
+ Optional[StrictStr],
3223
+ Field(
3224
+ description="Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default is the world coordinate system. "
3225
+ ),
3226
+ ] = None,
3227
+ start_location_on_trajectory: Annotated[
3228
+ Optional[Union[StrictFloat, StrictInt]],
3229
+ Field(
3230
+ description="Location the motion is requested to start at. The default value is the end of the trajectory. The location is a scalar value that defines a position along a path, typically ranging from 0 to `n`, where `n` denotes the number of motion commands. Each integer value of the location corresponds to a specific motion command, while non-integer values interpolate positions within the segments. The location is calculated from the joint path. "
3231
+ ),
3232
+ ] = None,
3233
+ ) -> AsyncGenerator[StreamMoveResponse, None]: # noqa: E501
3234
+ """(Deprecated) Stream Backward # noqa: E501
3235
+
3236
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Deprecated endpoint. Use the [executeTrajectory](#/operations/executeTrajectory) endpoint instead. Request to move the motion group backward along a previously planned motion. Once started, you can stop a motion using the [stopExecution](#/operations/stopExecution) endpoint. Prerequisites, before starting the motion execution: - The motion group is currently at the endpoint of the planned motion OR - The motion was stopped using [stopExecution](#/operations/stopExecution) endpoint. Then it is possible to resume the motion execution from where it stopped OR - The motion group was moved onto the motion using the [streamMoveToTrajectoryViaJointP2P](#/operations/streamMoveToTrajectoryViaJointP2P) endpoint. # noqa: E501
3237
+ :param request: A StreamMoveBackwardRequest
3238
+ :info All responses from the server will be yielded
3239
+ :type StreamMoveBackwardRequest
3240
+ """
3241
+
3242
+ def format_path_parameters(path):
3243
+ # Find all substrings that are enclosed in brackets
3244
+ bracket_contents = re.findall(r"\{(.*?)\}", path)
3245
+
3246
+ # For each found substring, replace underscores with spaces
3247
+ for content in bracket_contents:
3248
+ content = "{" + content + "}"
3249
+ modified_content = humps.dekebabize(content)
3250
+ path = path.replace(content, modified_content)
3251
+
3252
+ return path
3253
+
3254
+ def append_parameter_connector(url_schema):
3255
+ if not "?" in url_schema:
3256
+ url_schema += "?"
3257
+ else:
3258
+ url_schema += "&"
3259
+ return url_schema
3260
+
3261
+ path = format_path_parameters("/cells/{cell}/motions/{motion}/executebackward")
3262
+ path = path.format(
3263
+ cell=cell,
3264
+ motion=motion,
3265
+ )
3266
+
3267
+ headers = websockets.Headers()
3268
+ tmp_host = self.api_client.configuration.host
3269
+ if self.api_client.configuration.host.startswith("https://"):
3270
+ # Basic Auth
3271
+ if self.api_client.configuration.username:
3272
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3273
+ tmp_host = f"wss://{self.api_client.configuration.username}:{self.api_client.configuration.password}@{tmp_host}"
3274
+
3275
+ # OAuth2
3276
+ elif self.api_client.configuration.access_token:
3277
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3278
+ tmp_host = f"wss://{tmp_host}"
3279
+ headers = websockets.Headers([("Authorization", f"Bearer {self.api_client.configuration.access_token}")])
3280
+ else:
3281
+ tmp_host = tmp_host.replace("http://", "ws://")
3282
+
3283
+ url_schema = tmp_host + path
3284
+ if locals().get("playback_speed_in_percent") is not None:
3285
+ url_schema = append_parameter_connector(url_schema)
3286
+ if isinstance(playback_speed_in_percent, list):
3287
+ url_schema += "&".join(["playback_speed_in_percent=" + s for s in playback_speed_in_percent])
3288
+ else:
3289
+ url_schema += "playback_speed_in_percent=" + str(playback_speed_in_percent)
3290
+ if locals().get("response_rate") is not None:
3291
+ url_schema = append_parameter_connector(url_schema)
3292
+ if isinstance(response_rate, list):
3293
+ url_schema += "&".join(["response_rate=" + s for s in response_rate])
3294
+ else:
3295
+ url_schema += "response_rate=" + str(response_rate)
3296
+ if locals().get("response_coordinate_system") is not None:
3297
+ url_schema = append_parameter_connector(url_schema)
3298
+ if isinstance(response_coordinate_system, list):
3299
+ url_schema += "&".join(["response_coordinate_system=" + s for s in response_coordinate_system])
3300
+ else:
3301
+ url_schema += "response_coordinate_system=" + str(response_coordinate_system)
3302
+ if locals().get("start_location_on_trajectory") is not None:
3303
+ url_schema = append_parameter_connector(url_schema)
3304
+ if isinstance(start_location_on_trajectory, list):
3305
+ url_schema += "&".join(["start_location_on_trajectory=" + s for s in start_location_on_trajectory])
3306
+ else:
3307
+ url_schema += "start_location_on_trajectory=" + str(start_location_on_trajectory)
3308
+ full_url = furl(url_schema)
3309
+
3310
+ async with websockets.connect(full_url.url, open_timeout=10, additional_headers=headers) as websocket:
3311
+ try:
3312
+ async for response in websocket:
3313
+ response_data = json.loads(response)
3314
+ if "result" not in response_data:
3315
+ raise Exception(response_data)
3316
+ yield StreamMoveResponse.from_dict(response_data["result"])
3317
+ except websockets.exceptions.ConnectionClosed:
3318
+ return
3319
+ finally:
3320
+ await websocket.close()
3321
+
3322
+ @validate_call
3323
+ async def stream_move_forward(
3324
+ self,
3325
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
3326
+ motion: Annotated[
3327
+ StrictStr,
3328
+ Field(
3329
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
3330
+ ),
3331
+ ],
3332
+ playback_speed_in_percent: Annotated[
3333
+ StrictInt,
3334
+ Field(
3335
+ description="Set the velocity for executed movements of the motion in percent. A percentage of 100% means that the robot moves as fast as possible without violating the limits. Setting this value does not affect the overall shape of the velocity profile. Everything is slowed down by the same factor. Therefore, this should only be used for teaching and trajectory evaluation purposes. If the process requires a certain velocity, the respective limits should be set when planning the motion. This will not change the velocity override of the controller. The controller velocity override value shall be 100% to ensure controllability of the motion group. "
3336
+ ),
3337
+ ],
3338
+ response_rate: Annotated[
3339
+ Optional[StrictInt],
3340
+ Field(
3341
+ description="Update rate for the response message in milliseconds (ms). Default is 200 ms. We recommend to use the step rate of the controller or a multiple of the step rate as NOVA updates the state in the controller's step rate as well. Minimal response rate is the step rate of controller."
3342
+ ),
3343
+ ] = None,
3344
+ response_coordinate_system: Annotated[
3345
+ Optional[StrictStr],
3346
+ Field(
3347
+ description="Unique identifier addressing a coordinate system to which the cartesian data of the responses should be converted. Default is the world coordinate system. "
3348
+ ),
3349
+ ] = None,
3350
+ start_location_on_trajectory: Annotated[
3351
+ Optional[Union[StrictFloat, StrictInt]],
3352
+ Field(
3353
+ description="Location the motion is requested to start at. The default value is the beginning of the trajectory. The location is a scalar value that defines a position along a path, typically ranging from 0 to `n`, where `n` denotes the number of motion commands. Each integer value of the location corresponds to a specific motion command, while non-integer values interpolate positions within the segments. The location is calculated from the joint path. "
3354
+ ),
3355
+ ] = None,
3356
+ ) -> AsyncGenerator[StreamMoveResponse, None]: # noqa: E501
3357
+ """(Deprecated) Stream Forward # noqa: E501
3358
+
3359
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Deprecated endpoint. Use the [executeTrajectory](#/operations/executeTrajectory) endpoint instead. Move the motion group forward along a previously planned motion. Once started, you can stop a motion using the [stopExecution](#/operations/stopExecution) endpoint. Prerequisites, before starting the motion execution: - The motion group is currently at the start point of the planned motion OR - The motion was stopped using [stopExecution](#/operations/stopExecution) endpoint. Then it is possible to resume the motion execution from where it stopped OR - The motion group was moved onto the motion using the [streamMoveToTrajectoryViaJointP2P](#/operations/streamMoveToTrajectoryViaJointP2P) endpoint. # noqa: E501
3360
+ :param request: A StreamMoveForwardRequest
3361
+ :info All responses from the server will be yielded
3362
+ :type StreamMoveForwardRequest
3363
+ """
3364
+
3365
+ def format_path_parameters(path):
3366
+ # Find all substrings that are enclosed in brackets
3367
+ bracket_contents = re.findall(r"\{(.*?)\}", path)
3368
+
3369
+ # For each found substring, replace underscores with spaces
3370
+ for content in bracket_contents:
3371
+ content = "{" + content + "}"
3372
+ modified_content = humps.dekebabize(content)
3373
+ path = path.replace(content, modified_content)
3374
+
3375
+ return path
3376
+
3377
+ def append_parameter_connector(url_schema):
3378
+ if not "?" in url_schema:
3379
+ url_schema += "?"
3380
+ else:
3381
+ url_schema += "&"
3382
+ return url_schema
3383
+
3384
+ path = format_path_parameters("/cells/{cell}/motions/{motion}/executeforward")
3385
+ path = path.format(
3386
+ cell=cell,
3387
+ motion=motion,
3388
+ )
3389
+
3390
+ headers = websockets.Headers()
3391
+ tmp_host = self.api_client.configuration.host
3392
+ if self.api_client.configuration.host.startswith("https://"):
3393
+ # Basic Auth
3394
+ if self.api_client.configuration.username:
3395
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3396
+ tmp_host = f"wss://{self.api_client.configuration.username}:{self.api_client.configuration.password}@{tmp_host}"
3397
+
3398
+ # OAuth2
3399
+ elif self.api_client.configuration.access_token:
3400
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3401
+ tmp_host = f"wss://{tmp_host}"
3402
+ headers = websockets.Headers([("Authorization", f"Bearer {self.api_client.configuration.access_token}")])
3403
+ else:
3404
+ tmp_host = tmp_host.replace("http://", "ws://")
3405
+
3406
+ url_schema = tmp_host + path
3407
+ if locals().get("playback_speed_in_percent") is not None:
3408
+ url_schema = append_parameter_connector(url_schema)
3409
+ if isinstance(playback_speed_in_percent, list):
3410
+ url_schema += "&".join(["playback_speed_in_percent=" + s for s in playback_speed_in_percent])
3411
+ else:
3412
+ url_schema += "playback_speed_in_percent=" + str(playback_speed_in_percent)
3413
+ if locals().get("response_rate") is not None:
3414
+ url_schema = append_parameter_connector(url_schema)
3415
+ if isinstance(response_rate, list):
3416
+ url_schema += "&".join(["response_rate=" + s for s in response_rate])
3417
+ else:
3418
+ url_schema += "response_rate=" + str(response_rate)
3419
+ if locals().get("response_coordinate_system") is not None:
3420
+ url_schema = append_parameter_connector(url_schema)
3421
+ if isinstance(response_coordinate_system, list):
3422
+ url_schema += "&".join(["response_coordinate_system=" + s for s in response_coordinate_system])
3423
+ else:
3424
+ url_schema += "response_coordinate_system=" + str(response_coordinate_system)
3425
+ if locals().get("start_location_on_trajectory") is not None:
3426
+ url_schema = append_parameter_connector(url_schema)
3427
+ if isinstance(start_location_on_trajectory, list):
3428
+ url_schema += "&".join(["start_location_on_trajectory=" + s for s in start_location_on_trajectory])
3429
+ else:
3430
+ url_schema += "start_location_on_trajectory=" + str(start_location_on_trajectory)
3431
+ full_url = furl(url_schema)
3432
+
3433
+ async with websockets.connect(full_url.url, open_timeout=10, additional_headers=headers) as websocket:
3434
+ try:
3435
+ async for response in websocket:
3436
+ response_data = json.loads(response)
3437
+ if "result" not in response_data:
3438
+ raise Exception(response_data)
3439
+ yield StreamMoveResponse.from_dict(response_data["result"])
3440
+ except websockets.exceptions.ConnectionClosed:
3441
+ return
3442
+ finally:
3443
+ await websocket.close()
3444
+
3445
+ @validate_call
3446
+ async def stream_move_to_trajectory_via_joint_ptp(
3447
+ self,
3448
+ cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
3449
+ motion: Annotated[
3450
+ StrictStr,
3451
+ Field(
3452
+ description="This represents the UUID of a motion. Every executable or partially executable motion is cached and an UUID is returned. Indicate the UUID to execute the motion or retrieve information on the motion."
3453
+ ),
3454
+ ],
3455
+ location_on_trajectory: Union[StrictFloat, StrictInt],
3456
+ limit_override_joint_velocity_limits_joints: Annotated[
3457
+ Optional[List[Union[StrictFloat, StrictInt]]],
3458
+ Field(description="The joint velocity limits for the p2p motion to a previously planned motion."),
3459
+ ] = None,
3460
+ limit_override_joint_acceleration_limits_joints: Annotated[
3461
+ Optional[List[Union[StrictFloat, StrictInt]]],
3462
+ Field(description="The joint acceleration limits for the p2p motion to a previously planned motion."),
3463
+ ] = None,
3464
+ limit_override_tcp_velocity_limit: Annotated[
3465
+ Optional[Union[StrictFloat, StrictInt]], Field(description="Maximum allowed TCP velocity in [mm/s].")
3466
+ ] = None,
3467
+ limit_override_tcp_acceleration_limit: Annotated[
3468
+ Optional[Union[StrictFloat, StrictInt]], Field(description="Maximum allowed TCP acceleration in [mm/s^2].")
3469
+ ] = None,
3470
+ limit_override_tcp_orientation_velocity_limit: Annotated[
3471
+ Optional[Union[StrictFloat, StrictInt]], Field(description="Maximum allowed TCP rotation velocity in [rad/s].")
3472
+ ] = None,
3473
+ limit_override_tcp_orientation_acceleration_limit: Annotated[
3474
+ Optional[Union[StrictFloat, StrictInt]], Field(description="Maximum allowed TCP rotation acceleration in [rad/s^2].")
3475
+ ] = None,
3476
+ responses_coordinate_system: Optional[StrictStr] = None,
3477
+ ) -> AsyncGenerator[StreamMoveResponse, None]: # noqa: E501
3478
+ """Stream to Trajectory # noqa: E501
3479
+
3480
+ **Required permissions:** `can_operate_controllers` - Operate and monitor robot controllers ___ Request to move the motion group via joint point-to-point to a given location on a planned motion. You must use this endpoint in order to start moving from an arbritrary location of the trajectory. Afterwards, you are able to call [streamMoveForward](#/operations/streamMoveForward) or [streamMoveBackward](#/operations/streamMoveBackward) to move along planned motion. Use the [stopExecution](#/operations/stopExecution) endpoint to stop the motion gracefully. # noqa: E501
3481
+ :param request: A StreamMoveToTrajectoryViaJointPtpRequest
3482
+ :info All responses from the server will be yielded
3483
+ :type StreamMoveToTrajectoryViaJointPtpRequest
3484
+ """
3485
+
3486
+ def format_path_parameters(path):
3487
+ # Find all substrings that are enclosed in brackets
3488
+ bracket_contents = re.findall(r"\{(.*?)\}", path)
3489
+
3490
+ # For each found substring, replace underscores with spaces
3491
+ for content in bracket_contents:
3492
+ content = "{" + content + "}"
3493
+ modified_content = humps.dekebabize(content)
3494
+ path = path.replace(content, modified_content)
3495
+
3496
+ return path
3497
+
3498
+ def append_parameter_connector(url_schema):
3499
+ if not "?" in url_schema:
3500
+ url_schema += "?"
3501
+ else:
3502
+ url_schema += "&"
3503
+ return url_schema
3504
+
3505
+ path = format_path_parameters("/cells/{cell}/motions/{motion}/executetotrajectory")
3506
+ path = path.format(
3507
+ cell=cell,
3508
+ motion=motion,
3509
+ )
3510
+
3511
+ headers = websockets.Headers()
3512
+ tmp_host = self.api_client.configuration.host
3513
+ if self.api_client.configuration.host.startswith("https://"):
3514
+ # Basic Auth
3515
+ if self.api_client.configuration.username:
3516
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3517
+ tmp_host = f"wss://{self.api_client.configuration.username}:{self.api_client.configuration.password}@{tmp_host}"
3518
+
3519
+ # OAuth2
3520
+ elif self.api_client.configuration.access_token:
3521
+ tmp_host = self.api_client.configuration.host.replace("https://", "")
3522
+ tmp_host = f"wss://{tmp_host}"
3523
+ headers = websockets.Headers([("Authorization", f"Bearer {self.api_client.configuration.access_token}")])
3524
+ else:
3525
+ tmp_host = tmp_host.replace("http://", "ws://")
3526
+
3527
+ url_schema = tmp_host + path
3528
+ if locals().get("location_on_trajectory") is not None:
3529
+ url_schema = append_parameter_connector(url_schema)
3530
+ if isinstance(location_on_trajectory, list):
3531
+ url_schema += "&".join(["location_on_trajectory=" + s for s in location_on_trajectory])
3532
+ else:
3533
+ url_schema += "location_on_trajectory=" + str(location_on_trajectory)
3534
+ if locals().get("limit_override_joint_velocity_limits_joints") is not None:
3535
+ url_schema = append_parameter_connector(url_schema)
3536
+ if isinstance(limit_override_joint_velocity_limits_joints, list):
3537
+ url_schema += "&".join(
3538
+ ["limit_override.joint_velocity_limits.joints=" + s for s in limit_override_joint_velocity_limits_joints]
3539
+ )
3540
+ else:
3541
+ url_schema += "limit_override.joint_velocity_limits.joints=" + str(limit_override_joint_velocity_limits_joints)
3542
+ if locals().get("limit_override_joint_acceleration_limits_joints") is not None:
3543
+ url_schema = append_parameter_connector(url_schema)
3544
+ if isinstance(limit_override_joint_acceleration_limits_joints, list):
3545
+ url_schema += "&".join(
3546
+ ["limit_override.joint_acceleration_limits.joints=" + s for s in limit_override_joint_acceleration_limits_joints]
3547
+ )
3548
+ else:
3549
+ url_schema += "limit_override.joint_acceleration_limits.joints=" + str(limit_override_joint_acceleration_limits_joints)
3550
+ if locals().get("limit_override_tcp_velocity_limit") is not None:
3551
+ url_schema = append_parameter_connector(url_schema)
3552
+ if isinstance(limit_override_tcp_velocity_limit, list):
3553
+ url_schema += "&".join(["limit_override.tcp_velocity_limit=" + s for s in limit_override_tcp_velocity_limit])
3554
+ else:
3555
+ url_schema += "limit_override.tcp_velocity_limit=" + str(limit_override_tcp_velocity_limit)
3556
+ if locals().get("limit_override_tcp_acceleration_limit") is not None:
3557
+ url_schema = append_parameter_connector(url_schema)
3558
+ if isinstance(limit_override_tcp_acceleration_limit, list):
3559
+ url_schema += "&".join(["limit_override.tcp_acceleration_limit=" + s for s in limit_override_tcp_acceleration_limit])
3560
+ else:
3561
+ url_schema += "limit_override.tcp_acceleration_limit=" + str(limit_override_tcp_acceleration_limit)
3562
+ if locals().get("limit_override_tcp_orientation_velocity_limit") is not None:
3563
+ url_schema = append_parameter_connector(url_schema)
3564
+ if isinstance(limit_override_tcp_orientation_velocity_limit, list):
3565
+ url_schema += "&".join(
3566
+ ["limit_override.tcp_orientation_velocity_limit=" + s for s in limit_override_tcp_orientation_velocity_limit]
3567
+ )
3568
+ else:
3569
+ url_schema += "limit_override.tcp_orientation_velocity_limit=" + str(limit_override_tcp_orientation_velocity_limit)
3570
+ if locals().get("limit_override_tcp_orientation_acceleration_limit") is not None:
3571
+ url_schema = append_parameter_connector(url_schema)
3572
+ if isinstance(limit_override_tcp_orientation_acceleration_limit, list):
3573
+ url_schema += "&".join(
3574
+ ["limit_override.tcp_orientation_acceleration_limit=" + s for s in limit_override_tcp_orientation_acceleration_limit]
3575
+ )
3576
+ else:
3577
+ url_schema += "limit_override.tcp_orientation_acceleration_limit=" + str(limit_override_tcp_orientation_acceleration_limit)
3578
+ if locals().get("responses_coordinate_system") is not None:
3579
+ url_schema = append_parameter_connector(url_schema)
3580
+ if isinstance(responses_coordinate_system, list):
3581
+ url_schema += "&".join(["responses_coordinate_system=" + s for s in responses_coordinate_system])
3582
+ else:
3583
+ url_schema += "responses_coordinate_system=" + str(responses_coordinate_system)
3584
+ full_url = furl(url_schema)
3585
+
3586
+ async with websockets.connect(full_url.url, open_timeout=10, additional_headers=headers) as websocket:
3587
+ try:
3588
+ async for response in websocket:
3589
+ response_data = json.loads(response)
3590
+ if "result" not in response_data:
3591
+ raise Exception(response_data)
3592
+ yield StreamMoveResponse.from_dict(response_data["result"])
3593
+ except websockets.exceptions.ConnectionClosed:
3594
+ return
3595
+ finally:
3596
+ await websocket.close()