wandelbots-api-client 25.11.0.dev12__py3-none-any.whl → 26.1.0.dev50__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 (31) hide show
  1. wandelbots_api_client/__init__.py +1 -1
  2. wandelbots_api_client/api/motion_api.py +3 -3
  3. wandelbots_api_client/api_client.py +1 -1
  4. wandelbots_api_client/configuration.py +1 -1
  5. wandelbots_api_client/v2/__init__.py +1 -1
  6. wandelbots_api_client/v2/api/bus_inputs_outputs_api.py +579 -0
  7. wandelbots_api_client/v2/api/jogging_api.py +1 -1
  8. wandelbots_api_client/v2/api/motion_group_models_api.py +530 -2
  9. wandelbots_api_client/v2/api/program_api.py +12 -12
  10. wandelbots_api_client/v2/api/trajectory_execution_api.py +1 -1
  11. wandelbots_api_client/v2/api_client.py +1 -1
  12. wandelbots_api_client/v2/configuration.py +1 -1
  13. wandelbots_api_client/v2/models/__init__.py +2 -0
  14. wandelbots_api_client/v2/models/blending_auto.py +1 -1
  15. wandelbots_api_client/v2/models/blending_position.py +15 -1
  16. wandelbots_api_client/v2/models/blending_space.py +37 -0
  17. wandelbots_api_client/v2/models/motion_group_description.py +4 -2
  18. wandelbots_api_client/v2_pydantic/__init__.py +1 -1
  19. wandelbots_api_client/v2_pydantic/api/bus_inputs_outputs_api.py +585 -0
  20. wandelbots_api_client/v2_pydantic/api/jogging_api.py +1 -1
  21. wandelbots_api_client/v2_pydantic/api/motion_group_models_api.py +536 -2
  22. wandelbots_api_client/v2_pydantic/api/program_api.py +12 -12
  23. wandelbots_api_client/v2_pydantic/api/trajectory_execution_api.py +1 -1
  24. wandelbots_api_client/v2_pydantic/api_client.py +1 -1
  25. wandelbots_api_client/v2_pydantic/configuration.py +1 -1
  26. wandelbots_api_client/v2_pydantic/models.py +401 -374
  27. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev50.dist-info}/METADATA +2 -2
  28. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev50.dist-info}/RECORD +31 -30
  29. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev50.dist-info}/WHEEL +0 -0
  30. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev50.dist-info}/licenses/LICENSE +0 -0
  31. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev50.dist-info}/top_level.txt +0 -0
@@ -47,7 +47,7 @@ class TrajectoryExecutionApi:
47
47
  async def execute_trajectory(self, cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")], controller: Annotated[StrictStr, Field(description="Unique identifier to address a controller in the cell.")], client_request_generator: Callable[[AsyncGenerator[ExecuteTrajectoryResponse, None]], AsyncGenerator[ExecuteTrajectoryRequest, None]]) -> None: # noqa: E501
48
48
  """Execute Trajectory # noqa: E501
49
49
 
50
- <!-- theme: success --> > Websocket endpoint Provides execution control over a previously [planned trajectory](planTrajectory). Enables the caller to attach input/output actions to the trajectory. ### Movement behavior | Virtual controller | Physical controller | |------------------|-------------------| | Desired joint configurations are commanded to each motion group and **applied immediately** | Move to desired **actual joint configuration**, **if possible** | ### 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 [planTrajectory](planTrajectory). - 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 are at start location specified with `InitializeMovementRequest`. - Use [executeToTrajectory](executeToTrajectory) to move the robot to the start location. ### 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
50
+ <!-- theme: success --> > Websocket endpoint Provides execution control over a previously [planned trajectory](planTrajectory). Enables the caller to attach input/output actions to the trajectory. ### Movement behavior | Virtual controller | Physical controller | |------------------|-------------------| | Desired joint configurations are commanded to each motion group and **applied immediately** | Move to desired **actual joint configuration**, **if possible** | ### 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 [planTrajectory](planTrajectory). - 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 are at start location specified with `InitializeMovementRequest`. - Use [executeToTrajectory](executeToTrajectory) to move the robot to the start location. ### 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. Pausing the current movement enables you to send another `InitializeMovementRequest` to execute another trajectory on the same connection. #### 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 To monitor the state of the movement, listen to the [state stream](streamMotionGroupState). The state is published via nats as well. Field `execute` in the `MotionGroupState` indicates whether a movement is ongoing and carries execution details. Each request has a corresponding acknowledgment response. They signal success or failure of the request. Especially for `PauseMovementResponse`, it does not signal the end of the movement. Additionally, `MovementError` messages can be sent in case of unexpected errors during the execution, 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
51
51
  :param client_request_generator: An AsyncGenerator that yields request of type ExecuteTrajectoryRequest and takes an AsyncGenerator of ExecuteTrajectoryResponse as an input argument (required)
52
52
  :info All responses from the server will be yielded to client_request_generator through the (AsyncGenerator[ExecuteTrajectoryResponse, None])
53
53
  :type AsyncGenerator[ExecuteTrajectoryRequest, None]
@@ -91,7 +91,7 @@ class ApiClient:
91
91
  self.default_headers[header_name] = header_value
92
92
  self.cookie = cookie
93
93
  # Set default User-Agent.
94
- self.user_agent = 'Wandelbots-Nova-API-Python-Client/25.11.0.dev12'
94
+ self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.1.0.dev50'
95
95
  self.client_side_validation = configuration.client_side_validation
96
96
 
97
97
  async def __aenter__(self):
@@ -535,7 +535,7 @@ conf = wandelbots_api_client.v2.Configuration(
535
535
  "OS: {env}\n"\
536
536
  "Python Version: {pyversion}\n"\
537
537
  "Version of the API: 2.1.0 dev\n"\
538
- "SDK Package Version: 25.11.0.dev12".\
538
+ "SDK Package Version: 26.1.0.dev50".\
539
539
  format(env=sys.platform, pyversion=sys.version)
540
540
 
541
541
  def get_host_settings(self) -> List[HostSetting]:
@@ -25,6 +25,7 @@ from .app import App
25
25
  from .behavior import Behavior
26
26
  from .blending_auto import BlendingAuto
27
27
  from .blending_position import BlendingPosition
28
+ from .blending_space import BlendingSpace
28
29
  from .boolean_value import BooleanValue
29
30
  from .box import Box
30
31
  from .bus_io_description import BusIODescription
@@ -271,6 +272,7 @@ __all__ = [
271
272
  "Behavior",
272
273
  "BlendingAuto",
273
274
  "BlendingPosition",
275
+ "BlendingSpace",
274
276
  "BooleanValue",
275
277
  "Box",
276
278
  "BusIODescription",
@@ -27,7 +27,7 @@ class BlendingAuto(BaseModel):
27
27
  """
28
28
  BlendingAuto
29
29
  """ # noqa: E501
30
- min_velocity_in_percent: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field(default=None, description="Auto-blending is used to keep a constant velocity when blending between two motion commands. It changes the TCP path around the target point of the motion command. The value represents the percentage of the original velocity. ")
30
+ min_velocity_in_percent: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field(default=None, description="Auto-blending is used to keep a constant velocity when blending between two motion commands. To use auto-blending, the TCP velocity limit must be set. It changes the TCP path around the target point of the motion command. The value represents the percentage of the original velocity. Auto-blending is always performed in cartesian space. ")
31
31
  blending_name: str = "BlendingAuto"
32
32
  __properties: ClassVar[List[str]] = ["min_velocity_in_percent", "blending_name"]
33
33
 
@@ -19,6 +19,8 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr, field_validator
21
21
  from typing import Any, ClassVar, Dict, List, Optional, Union
22
+ from typing_extensions import Annotated
23
+ from wandelbots_api_client.v2.models.blending_space import BlendingSpace
22
24
  from typing import Optional, Set
23
25
  from typing_extensions import Self
24
26
 
@@ -27,8 +29,14 @@ class BlendingPosition(BaseModel):
27
29
  BlendingPosition
28
30
  """ # noqa: E501
29
31
  position_zone_radius: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Specifies the maximum radius in [mm] around the motion command's target point where the TCP path can be altered to blend the motion command into the following one. If auto-blending blends too much of the resulting trajectory, use position-blending to restrict the blending zone radius. ")
32
+ position_zone_percentage: Optional[Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]]] = Field(default=None, description="Specifies the maximum blending percentage based on the trajectory length in position space around the motion command's target point. Percentage indicated in 0.0 - 100.0. ")
33
+ orientation_zone_radius: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Specifies the maximum radius in [rad] for orientation blending around the motion command's target orientation. At the target's orientation, the TCP orientation can be altered to blend into the following motion. ")
34
+ orientation_zone_percentage: Optional[Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]]] = Field(default=None, description="Specifies the maximum blending percentage for orientation blending based on the trajectory length in orientation space. Percentage indicated in 0.0 - 100.0. ")
35
+ joints_zone_radius: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Specifies the maximum radius in [rad] for joint space blending around the motion command's target joint configuration. At the target joint configuration, the joint path can be altered to blend into the following motion. ")
36
+ joints_zone_percentage: Optional[Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]]] = Field(default=None, description="Specifies the maximum blending percentage for joint space blending based on the trajectory length in joint space. Percentage indicated in 0.0 to 100.0. ")
37
+ space: Optional[BlendingSpace] = Field(default=None, description="Defines the space in which blending is performed. ")
30
38
  blending_name: str = "BlendingPosition"
31
- __properties: ClassVar[List[str]] = ["position_zone_radius", "blending_name"]
39
+ __properties: ClassVar[List[str]] = ["position_zone_radius", "position_zone_percentage", "orientation_zone_radius", "orientation_zone_percentage", "joints_zone_radius", "joints_zone_percentage", "space", "blending_name"]
32
40
 
33
41
  @field_validator('blending_name')
34
42
  def blending_name_validate_enum(cls, value):
@@ -93,6 +101,12 @@ class BlendingPosition(BaseModel):
93
101
 
94
102
  _obj = cls.model_validate({
95
103
  "position_zone_radius": obj.get("position_zone_radius"),
104
+ "position_zone_percentage": obj.get("position_zone_percentage"),
105
+ "orientation_zone_radius": obj.get("orientation_zone_radius"),
106
+ "orientation_zone_percentage": obj.get("orientation_zone_percentage"),
107
+ "joints_zone_radius": obj.get("joints_zone_radius"),
108
+ "joints_zone_percentage": obj.get("joints_zone_percentage"),
109
+ "space": obj.get("space"),
96
110
  "blending_name": obj.get("blending_name")
97
111
  })
98
112
  return _obj
@@ -0,0 +1,37 @@
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: 2.1.0 dev
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import json
17
+ from enum import Enum
18
+ from typing_extensions import Self
19
+
20
+
21
+ class BlendingSpace(str, Enum):
22
+ """
23
+ Defines the space in which blending is performed. - `JOINT`: Zone blending is performed in joint space - `CARTESIAN`: Auto-blending is performed in cartesian space
24
+ """
25
+
26
+ """
27
+ allowed enum values
28
+ """
29
+ JOINT = 'JOINT'
30
+ CARTESIAN = 'CARTESIAN'
31
+
32
+ @classmethod
33
+ def from_json(cls, json_str: str) -> Self:
34
+ """Create an instance of BlendingSpace from a JSON string"""
35
+ return cls(json.loads(json_str))
36
+
37
+
@@ -43,7 +43,8 @@ class MotionGroupDescription(BaseModel):
43
43
  payloads: Optional[Dict[str, Payload]] = Field(default=None, description="Maps a payload name to its configuration. Key must be a payload identifier. Values are payload objects. ")
44
44
  cycle_time: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field(default=None, description="[ms] cycle time of the motion group controller. A trajectory for this motion group should be computed to this resolution.")
45
45
  dh_parameters: Optional[List[DHParameter]] = Field(default=None, description="The DH parameters describing the motion group geometry, starting from base.")
46
- __properties: ClassVar[List[str]] = ["motion_group_model", "mounting", "tcps", "safety_zones", "safety_link_colliders", "safety_tool_colliders", "operation_limits", "payloads", "cycle_time", "dh_parameters"]
46
+ serial_number: Optional[StrictStr] = Field(default=None, description="The serial number of the motion group, if available. If not available, the serial number of the robot controller. If not available, empty. ")
47
+ __properties: ClassVar[List[str]] = ["motion_group_model", "mounting", "tcps", "safety_zones", "safety_link_colliders", "safety_tool_colliders", "operation_limits", "payloads", "cycle_time", "dh_parameters", "serial_number"]
47
48
 
48
49
  model_config = ConfigDict(
49
50
  populate_by_name=True,
@@ -204,7 +205,8 @@ class MotionGroupDescription(BaseModel):
204
205
  DHParameter.from_dict(_item) if hasattr(DHParameter, 'from_dict') else _item
205
206
  # <<< End modification
206
207
  for _item in obj["dh_parameters"]
207
- ] if obj.get("dh_parameters") is not None else None
208
+ ] if obj.get("dh_parameters") is not None else None,
209
+ "serial_number": obj.get("serial_number")
208
210
  })
209
211
  return _obj
210
212
 
@@ -13,7 +13,7 @@
13
13
  Do not edit the class manually.
14
14
  """ # noqa: E501
15
15
 
16
- __version__ = "25.11.0.dev12"
16
+ __version__ = "26.1.0.dev50"
17
17
 
18
18
  from . import api
19
19
  from . import api_client