wandelbots-api-client 25.11.0.dev12__py3-none-any.whl → 26.1.0.dev62__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.
- wandelbots_api_client/__init__.py +1 -1
- wandelbots_api_client/api/motion_api.py +3 -3
- wandelbots_api_client/api_client.py +1 -1
- wandelbots_api_client/configuration.py +1 -1
- wandelbots_api_client/models/__init__.py +3 -1
- wandelbots_api_client/models/virtual_controller_types.py +4 -4
- wandelbots_api_client/v2/__init__.py +1 -1
- wandelbots_api_client/v2/api/__init__.py +2 -0
- wandelbots_api_client/v2/api/bus_inputs_outputs_api.py +579 -0
- wandelbots_api_client/v2/api/jogging_api.py +1 -1
- wandelbots_api_client/v2/api/motion_group_models_api.py +795 -2
- wandelbots_api_client/v2/api/program_api.py +12 -12
- wandelbots_api_client/v2/api/robot_configurations_api.py +291 -0
- wandelbots_api_client/v2/api/trajectory_execution_api.py +1 -1
- wandelbots_api_client/v2/api_client.py +1 -1
- wandelbots_api_client/v2/configuration.py +1 -1
- wandelbots_api_client/v2/models/__init__.py +7 -3
- wandelbots_api_client/v2/models/blending_auto.py +1 -1
- wandelbots_api_client/v2/models/blending_position.py +15 -1
- wandelbots_api_client/v2/models/blending_space.py +37 -0
- wandelbots_api_client/v2/models/initialize_jogging_request.py +2 -4
- wandelbots_api_client/v2/models/inverse_kinematics_request.py +6 -4
- wandelbots_api_client/v2/models/kinematic_model.py +110 -0
- wandelbots_api_client/v2/models/motion_group_description.py +4 -2
- wandelbots_api_client/v2/models/virtual_controller.py +1 -2
- wandelbots_api_client/v2/models/virtual_controller_types.py +1 -1
- wandelbots_api_client/v2_pydantic/__init__.py +1 -1
- wandelbots_api_client/v2_pydantic/api/__init__.py +2 -0
- wandelbots_api_client/v2_pydantic/api/bus_inputs_outputs_api.py +585 -0
- wandelbots_api_client/v2_pydantic/api/jogging_api.py +1 -1
- wandelbots_api_client/v2_pydantic/api/motion_group_models_api.py +804 -2
- wandelbots_api_client/v2_pydantic/api/program_api.py +12 -12
- wandelbots_api_client/v2_pydantic/api/robot_configurations_api.py +294 -0
- wandelbots_api_client/v2_pydantic/api/trajectory_execution_api.py +1 -1
- wandelbots_api_client/v2_pydantic/api_client.py +1 -1
- wandelbots_api_client/v2_pydantic/configuration.py +1 -1
- wandelbots_api_client/v2_pydantic/models.py +471 -527
- wandelbots_api_client/v2_pydantic/virtual_controller_types.py +126 -0
- {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/METADATA +2 -2
- {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/RECORD +43 -38
- {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/WHEEL +0 -0
- {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/licenses/LICENSE +0 -0
- {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/top_level.txt +0 -0
|
@@ -65,7 +65,7 @@ class ProgramApi:
|
|
|
65
65
|
) -> Program:
|
|
66
66
|
"""Get program
|
|
67
67
|
|
|
68
|
-
Get details of a program.
|
|
68
|
+
<!-- theme: danger --> > **Experimental** Get details of a program.
|
|
69
69
|
|
|
70
70
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
71
71
|
:type cell: str
|
|
@@ -137,7 +137,7 @@ class ProgramApi:
|
|
|
137
137
|
) -> ApiResponse[Program]:
|
|
138
138
|
"""Get program
|
|
139
139
|
|
|
140
|
-
Get details of a program.
|
|
140
|
+
<!-- theme: danger --> > **Experimental** Get details of a program.
|
|
141
141
|
|
|
142
142
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
143
143
|
:type cell: str
|
|
@@ -209,7 +209,7 @@ class ProgramApi:
|
|
|
209
209
|
) -> RESTResponseType:
|
|
210
210
|
"""Get program
|
|
211
211
|
|
|
212
|
-
Get details of a program.
|
|
212
|
+
<!-- theme: danger --> > **Experimental** Get details of a program.
|
|
213
213
|
|
|
214
214
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
215
215
|
:type cell: str
|
|
@@ -340,7 +340,7 @@ class ProgramApi:
|
|
|
340
340
|
) -> List[Program]:
|
|
341
341
|
"""List programs
|
|
342
342
|
|
|
343
|
-
List details of all existing programs.
|
|
343
|
+
<!-- theme: danger --> > **Experimental** List details of all existing programs.
|
|
344
344
|
|
|
345
345
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
346
346
|
:type cell: str
|
|
@@ -408,7 +408,7 @@ class ProgramApi:
|
|
|
408
408
|
) -> ApiResponse[List[Program]]:
|
|
409
409
|
"""List programs
|
|
410
410
|
|
|
411
|
-
List details of all existing programs.
|
|
411
|
+
<!-- theme: danger --> > **Experimental** List details of all existing programs.
|
|
412
412
|
|
|
413
413
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
414
414
|
:type cell: str
|
|
@@ -476,7 +476,7 @@ class ProgramApi:
|
|
|
476
476
|
) -> RESTResponseType:
|
|
477
477
|
"""List programs
|
|
478
478
|
|
|
479
|
-
List details of all existing programs.
|
|
479
|
+
<!-- theme: danger --> > **Experimental** List details of all existing programs.
|
|
480
480
|
|
|
481
481
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
482
482
|
:type cell: str
|
|
@@ -603,7 +603,7 @@ class ProgramApi:
|
|
|
603
603
|
) -> ProgramRun:
|
|
604
604
|
"""Start the program
|
|
605
605
|
|
|
606
|
-
This endpoint starts a new program execution. The program will be executed asynchronously.
|
|
606
|
+
<!-- theme: danger --> > **Experimental** This endpoint starts a new program execution. The program will be executed asynchronously.
|
|
607
607
|
|
|
608
608
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
609
609
|
:type cell: str
|
|
@@ -684,7 +684,7 @@ class ProgramApi:
|
|
|
684
684
|
) -> ApiResponse[ProgramRun]:
|
|
685
685
|
"""Start the program
|
|
686
686
|
|
|
687
|
-
This endpoint starts a new program execution. The program will be executed asynchronously.
|
|
687
|
+
<!-- theme: danger --> > **Experimental** This endpoint starts a new program execution. The program will be executed asynchronously.
|
|
688
688
|
|
|
689
689
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
690
690
|
:type cell: str
|
|
@@ -765,7 +765,7 @@ class ProgramApi:
|
|
|
765
765
|
) -> RESTResponseType:
|
|
766
766
|
"""Start the program
|
|
767
767
|
|
|
768
|
-
This endpoint starts a new program execution. The program will be executed asynchronously.
|
|
768
|
+
<!-- theme: danger --> > **Experimental** This endpoint starts a new program execution. The program will be executed asynchronously.
|
|
769
769
|
|
|
770
770
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
771
771
|
:type cell: str
|
|
@@ -921,7 +921,7 @@ class ProgramApi:
|
|
|
921
921
|
) -> None:
|
|
922
922
|
"""Stop program run
|
|
923
923
|
|
|
924
|
-
Stop a specific program run.
|
|
924
|
+
<!-- theme: danger --> > **Experimental** Stop a specific program run.
|
|
925
925
|
|
|
926
926
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
927
927
|
:type cell: str
|
|
@@ -994,7 +994,7 @@ class ProgramApi:
|
|
|
994
994
|
) -> ApiResponse[None]:
|
|
995
995
|
"""Stop program run
|
|
996
996
|
|
|
997
|
-
Stop a specific program run.
|
|
997
|
+
<!-- theme: danger --> > **Experimental** Stop a specific program run.
|
|
998
998
|
|
|
999
999
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
1000
1000
|
:type cell: str
|
|
@@ -1067,7 +1067,7 @@ class ProgramApi:
|
|
|
1067
1067
|
) -> RESTResponseType:
|
|
1068
1068
|
"""Stop program run
|
|
1069
1069
|
|
|
1070
|
-
Stop a specific program run.
|
|
1070
|
+
<!-- theme: danger --> > **Experimental** Stop a specific program run.
|
|
1071
1071
|
|
|
1072
1072
|
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
1073
1073
|
:type cell: str
|
|
@@ -0,0 +1,291 @@
|
|
|
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
|
+
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 StrictStr
|
|
26
|
+
from typing import List
|
|
27
|
+
|
|
28
|
+
from wandelbots_api_client.v2.api_client import ApiClient, RequestSerialized
|
|
29
|
+
from wandelbots_api_client.v2.api_response import ApiResponse
|
|
30
|
+
from wandelbots_api_client.v2.rest import RESTResponseType
|
|
31
|
+
|
|
32
|
+
class RobotConfigurationsApi:
|
|
33
|
+
"""NOTE: This class is auto generated by OpenAPI Generator
|
|
34
|
+
Ref: https://openapi-generator.tech
|
|
35
|
+
|
|
36
|
+
Do not edit the class manually.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self, api_client=None) -> None:
|
|
40
|
+
if api_client is None:
|
|
41
|
+
api_client = ApiClient.get_default()
|
|
42
|
+
self.api_client = api_client
|
|
43
|
+
|
|
44
|
+
@validate_call
|
|
45
|
+
async def get_robot_configurations(
|
|
46
|
+
self,
|
|
47
|
+
_request_timeout: Union[
|
|
48
|
+
None,
|
|
49
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
50
|
+
Tuple[
|
|
51
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
52
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
53
|
+
]
|
|
54
|
+
] = None,
|
|
55
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
56
|
+
_content_type: Optional[StrictStr] = None,
|
|
57
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
58
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
59
|
+
) -> List[str]:
|
|
60
|
+
"""List Robot Configurations
|
|
61
|
+
|
|
62
|
+
Returns the identifiers of available robot configurations. A robot configuration represents a robot controller with one or more attached motion groups.
|
|
63
|
+
|
|
64
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
65
|
+
number provided, it will be total request
|
|
66
|
+
timeout. It can also be a pair (tuple) of
|
|
67
|
+
(connection, read) timeouts.
|
|
68
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
69
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
70
|
+
request; this effectively ignores the
|
|
71
|
+
authentication in the spec for a single request.
|
|
72
|
+
:type _request_auth: dict, optional
|
|
73
|
+
:param _content_type: force content-type for the request.
|
|
74
|
+
:type _content_type: str, Optional
|
|
75
|
+
:param _headers: set to override the headers for a single
|
|
76
|
+
request; this effectively ignores the headers
|
|
77
|
+
in the spec for a single request.
|
|
78
|
+
:type _headers: dict, optional
|
|
79
|
+
:param _host_index: set to override the host_index for a single
|
|
80
|
+
request; this effectively ignores the host_index
|
|
81
|
+
in the spec for a single request.
|
|
82
|
+
:type _host_index: int, optional
|
|
83
|
+
:return: Returns the result object.
|
|
84
|
+
""" # noqa: E501
|
|
85
|
+
|
|
86
|
+
_param = self._get_robot_configurations_serialize(
|
|
87
|
+
_request_auth=_request_auth,
|
|
88
|
+
_content_type=_content_type,
|
|
89
|
+
_headers=_headers,
|
|
90
|
+
_host_index=_host_index
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
94
|
+
'200': "List[str]",
|
|
95
|
+
'404': None,
|
|
96
|
+
'500': None,
|
|
97
|
+
}
|
|
98
|
+
response_data = await self.api_client.call_api(
|
|
99
|
+
*_param,
|
|
100
|
+
_request_timeout=_request_timeout
|
|
101
|
+
)
|
|
102
|
+
await response_data.read()
|
|
103
|
+
return self.api_client.response_deserialize(
|
|
104
|
+
response_data=response_data,
|
|
105
|
+
response_types_map=_response_types_map,
|
|
106
|
+
).data
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@validate_call
|
|
110
|
+
async def get_robot_configurations_with_http_info(
|
|
111
|
+
self,
|
|
112
|
+
_request_timeout: Union[
|
|
113
|
+
None,
|
|
114
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
115
|
+
Tuple[
|
|
116
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
117
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
118
|
+
]
|
|
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[List[str]]:
|
|
125
|
+
"""List Robot Configurations
|
|
126
|
+
|
|
127
|
+
Returns the identifiers of available robot configurations. A robot configuration represents a robot controller with one or more attached motion groups.
|
|
128
|
+
|
|
129
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
130
|
+
number provided, it will be total request
|
|
131
|
+
timeout. It can also be a pair (tuple) of
|
|
132
|
+
(connection, read) timeouts.
|
|
133
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
134
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
135
|
+
request; this effectively ignores the
|
|
136
|
+
authentication in the spec for a single request.
|
|
137
|
+
:type _request_auth: dict, optional
|
|
138
|
+
:param _content_type: force content-type for the request.
|
|
139
|
+
:type _content_type: str, Optional
|
|
140
|
+
:param _headers: set to override the headers for a single
|
|
141
|
+
request; this effectively ignores the headers
|
|
142
|
+
in the spec for a single request.
|
|
143
|
+
:type _headers: dict, optional
|
|
144
|
+
:param _host_index: set to override the host_index for a single
|
|
145
|
+
request; this effectively ignores the host_index
|
|
146
|
+
in the spec for a single request.
|
|
147
|
+
:type _host_index: int, optional
|
|
148
|
+
:return: Returns the result object.
|
|
149
|
+
""" # noqa: E501
|
|
150
|
+
|
|
151
|
+
_param = self._get_robot_configurations_serialize(
|
|
152
|
+
_request_auth=_request_auth,
|
|
153
|
+
_content_type=_content_type,
|
|
154
|
+
_headers=_headers,
|
|
155
|
+
_host_index=_host_index
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
159
|
+
'200': "List[str]",
|
|
160
|
+
'404': None,
|
|
161
|
+
'500': None,
|
|
162
|
+
}
|
|
163
|
+
response_data = await self.api_client.call_api(
|
|
164
|
+
*_param,
|
|
165
|
+
_request_timeout=_request_timeout
|
|
166
|
+
)
|
|
167
|
+
await response_data.read()
|
|
168
|
+
return self.api_client.response_deserialize(
|
|
169
|
+
response_data=response_data,
|
|
170
|
+
response_types_map=_response_types_map,
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
@validate_call
|
|
175
|
+
async def get_robot_configurations_without_preload_content(
|
|
176
|
+
self,
|
|
177
|
+
_request_timeout: Union[
|
|
178
|
+
None,
|
|
179
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
180
|
+
Tuple[
|
|
181
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
182
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
183
|
+
]
|
|
184
|
+
] = None,
|
|
185
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
186
|
+
_content_type: Optional[StrictStr] = None,
|
|
187
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
188
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
189
|
+
) -> RESTResponseType:
|
|
190
|
+
"""List Robot Configurations
|
|
191
|
+
|
|
192
|
+
Returns the identifiers of available robot configurations. A robot configuration represents a robot controller with one or more attached motion groups.
|
|
193
|
+
|
|
194
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
195
|
+
number provided, it will be total request
|
|
196
|
+
timeout. It can also be a pair (tuple) of
|
|
197
|
+
(connection, read) timeouts.
|
|
198
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
199
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
200
|
+
request; this effectively ignores the
|
|
201
|
+
authentication in the spec for a single request.
|
|
202
|
+
:type _request_auth: dict, optional
|
|
203
|
+
:param _content_type: force content-type for the request.
|
|
204
|
+
:type _content_type: str, Optional
|
|
205
|
+
:param _headers: set to override the headers for a single
|
|
206
|
+
request; this effectively ignores the headers
|
|
207
|
+
in the spec for a single request.
|
|
208
|
+
:type _headers: dict, optional
|
|
209
|
+
:param _host_index: set to override the host_index for a single
|
|
210
|
+
request; this effectively ignores the host_index
|
|
211
|
+
in the spec for a single request.
|
|
212
|
+
:type _host_index: int, optional
|
|
213
|
+
:return: Returns the result object.
|
|
214
|
+
""" # noqa: E501
|
|
215
|
+
|
|
216
|
+
_param = self._get_robot_configurations_serialize(
|
|
217
|
+
_request_auth=_request_auth,
|
|
218
|
+
_content_type=_content_type,
|
|
219
|
+
_headers=_headers,
|
|
220
|
+
_host_index=_host_index
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
224
|
+
'200': "List[str]",
|
|
225
|
+
'404': None,
|
|
226
|
+
'500': None,
|
|
227
|
+
}
|
|
228
|
+
response_data = await self.api_client.call_api(
|
|
229
|
+
*_param,
|
|
230
|
+
_request_timeout=_request_timeout
|
|
231
|
+
)
|
|
232
|
+
return response_data.response
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def _get_robot_configurations_serialize(
|
|
236
|
+
self,
|
|
237
|
+
_request_auth,
|
|
238
|
+
_content_type,
|
|
239
|
+
_headers,
|
|
240
|
+
_host_index,
|
|
241
|
+
) -> RequestSerialized:
|
|
242
|
+
|
|
243
|
+
_host = None
|
|
244
|
+
|
|
245
|
+
_collection_formats: Dict[str, str] = {
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
_path_params: Dict[str, str] = {}
|
|
249
|
+
_query_params: List[Tuple[str, str]] = []
|
|
250
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
251
|
+
_form_params: List[Tuple[str, str]] = []
|
|
252
|
+
_files: Dict[str, Union[str, bytes]] = {}
|
|
253
|
+
_body_params: Optional[bytes] = None
|
|
254
|
+
|
|
255
|
+
# process the path parameters
|
|
256
|
+
# process the query parameters
|
|
257
|
+
# process the header parameters
|
|
258
|
+
# process the form parameters
|
|
259
|
+
# process the body parameter
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
# set the HTTP header `Accept`
|
|
263
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
264
|
+
[
|
|
265
|
+
'application/json'
|
|
266
|
+
]
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
# authentication setting
|
|
271
|
+
_auth_settings: List[str] = [
|
|
272
|
+
'BasicAuth',
|
|
273
|
+
'BearerAuth'
|
|
274
|
+
]
|
|
275
|
+
|
|
276
|
+
return self.api_client.param_serialize(
|
|
277
|
+
method='GET',
|
|
278
|
+
resource_path='/robot-configurations',
|
|
279
|
+
path_params=_path_params,
|
|
280
|
+
query_params=_query_params,
|
|
281
|
+
header_params=_header_params,
|
|
282
|
+
body=_body_params,
|
|
283
|
+
post_params=_form_params,
|
|
284
|
+
files=_files,
|
|
285
|
+
auth_settings=_auth_settings,
|
|
286
|
+
collection_formats=_collection_formats,
|
|
287
|
+
_host=_host,
|
|
288
|
+
_request_auth=_request_auth
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
|
|
@@ -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
|
|
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/
|
|
94
|
+
self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.1.0.dev62'
|
|
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:
|
|
538
|
+
"SDK Package Version: 26.1.0.dev62".\
|
|
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
|
|
@@ -134,6 +135,7 @@ from .joint_limits import JointLimits
|
|
|
134
135
|
from .joint_trajectory import JointTrajectory
|
|
135
136
|
from .joint_velocity_request import JointVelocityRequest
|
|
136
137
|
from .joint_velocity_response import JointVelocityResponse
|
|
138
|
+
from .kinematic_model import KinematicModel
|
|
137
139
|
from .kuka_controller import KukaController
|
|
138
140
|
from .kuka_controller_rsi_server import KukaControllerRsiServer
|
|
139
141
|
from .license import License
|
|
@@ -253,10 +255,10 @@ from .validation_error import ValidationError
|
|
|
253
255
|
from .validation_error2 import ValidationError2
|
|
254
256
|
from .validation_error_loc_inner import ValidationErrorLocInner
|
|
255
257
|
from .virtual_controller import VirtualController
|
|
256
|
-
from .virtual_controller_types import VirtualControllerTypes
|
|
257
258
|
from .virtual_robot_configuration import VirtualRobotConfiguration
|
|
258
259
|
from .wait_for_io_event_request import WaitForIOEventRequest
|
|
259
260
|
from .yaskawa_controller import YaskawaController
|
|
261
|
+
from .virtual_controller_types import VirtualControllerTypes
|
|
260
262
|
|
|
261
263
|
__all__ = [
|
|
262
264
|
"AbbController",
|
|
@@ -271,6 +273,7 @@ __all__ = [
|
|
|
271
273
|
"Behavior",
|
|
272
274
|
"BlendingAuto",
|
|
273
275
|
"BlendingPosition",
|
|
276
|
+
"BlendingSpace",
|
|
274
277
|
"BooleanValue",
|
|
275
278
|
"Box",
|
|
276
279
|
"BusIODescription",
|
|
@@ -380,6 +383,7 @@ __all__ = [
|
|
|
380
383
|
"JointTrajectory",
|
|
381
384
|
"JointVelocityRequest",
|
|
382
385
|
"JointVelocityResponse",
|
|
386
|
+
"KinematicModel",
|
|
383
387
|
"KukaController",
|
|
384
388
|
"KukaControllerRsiServer",
|
|
385
389
|
"License",
|
|
@@ -499,8 +503,8 @@ __all__ = [
|
|
|
499
503
|
"ValidationError2",
|
|
500
504
|
"ValidationErrorLocInner",
|
|
501
505
|
"VirtualController",
|
|
502
|
-
"VirtualControllerTypes",
|
|
503
506
|
"VirtualRobotConfiguration",
|
|
504
507
|
"WaitForIOEventRequest",
|
|
508
|
+
"VirtualControllerTypes",
|
|
505
509
|
"YaskawaController"
|
|
506
|
-
]
|
|
510
|
+
]
|
|
@@ -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
|
+
|
|
@@ -29,8 +29,7 @@ class InitializeJoggingRequest(BaseModel):
|
|
|
29
29
|
message_type: str = "InitializeJoggingRequest"
|
|
30
30
|
motion_group: StrictStr = Field(description="Identifier of the motion group.")
|
|
31
31
|
tcp: Optional[StrictStr] = Field(default=None, description="Identifier of the tool. Required for robots (all limits, including TCP limits, are respected at all times regardless of the motion). Not required for external axes. ")
|
|
32
|
-
|
|
33
|
-
__properties: ClassVar[List[str]] = ["message_type", "motion_group", "tcp", "response_coordinate_system"]
|
|
32
|
+
__properties: ClassVar[List[str]] = ["message_type", "motion_group", "tcp"]
|
|
34
33
|
|
|
35
34
|
@field_validator('message_type')
|
|
36
35
|
def message_type_validate_enum(cls, value):
|
|
@@ -96,8 +95,7 @@ class InitializeJoggingRequest(BaseModel):
|
|
|
96
95
|
_obj = cls.model_validate({
|
|
97
96
|
"message_type": obj.get("message_type"),
|
|
98
97
|
"motion_group": obj.get("motion_group"),
|
|
99
|
-
"tcp": obj.get("tcp")
|
|
100
|
-
"response_coordinate_system": obj.get("response_coordinate_system")
|
|
98
|
+
"tcp": obj.get("tcp")
|
|
101
99
|
})
|
|
102
100
|
return _obj
|
|
103
101
|
|
|
@@ -17,8 +17,8 @@ import pprint
|
|
|
17
17
|
import re # noqa: F401
|
|
18
18
|
import json
|
|
19
19
|
|
|
20
|
-
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
|
21
|
-
from typing import Any, ClassVar, Dict, List, Optional
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional, Union
|
|
22
22
|
from wandelbots_api_client.v2.models.collision_setup import CollisionSetup
|
|
23
23
|
from wandelbots_api_client.v2.models.limit_range import LimitRange
|
|
24
24
|
from wandelbots_api_client.v2.models.pose import Pose
|
|
@@ -35,7 +35,8 @@ class InverseKinematicsRequest(BaseModel):
|
|
|
35
35
|
mounting: Optional[Pose] = Field(default=None, description="Offset from the world frame to the motion group base.")
|
|
36
36
|
joint_position_limits: Optional[List[LimitRange]] = Field(default=None, description="Joint position limits in [rad], indexed starting from base. ")
|
|
37
37
|
collision_setups: Optional[Dict[str, CollisionSetup]] = Field(default=None, description="Collision layers to be respected by the motion planner when planning for a single motion group. Each setup represents one layer, e.g., the safety zones and shapes or a fine grained tool and workpiece model. Layers are checked individually along the trajectory and independently of other layers. To respect the safety zones of the controller and check for collision: 1. Fetch the safety zones, link and tool shapes from the controller. 2. Add the fetched zones, links and tools to a layer. 3. Create other layers from your own 3D data as needed. 4. Plan trajectory. 5. The response highlights the layer in which a collision was detected by key. ")
|
|
38
|
-
|
|
38
|
+
reference_joint_position: Optional[List[Union[StrictFloat, StrictInt]]] = None
|
|
39
|
+
__properties: ClassVar[List[str]] = ["motion_group_model", "tcp_poses", "tcp_offset", "mounting", "joint_position_limits", "collision_setups", "reference_joint_position"]
|
|
39
40
|
|
|
40
41
|
model_config = ConfigDict(
|
|
41
42
|
populate_by_name=True,
|
|
@@ -148,7 +149,8 @@ class InverseKinematicsRequest(BaseModel):
|
|
|
148
149
|
for _k, _v in obj["collision_setups"].items()
|
|
149
150
|
)
|
|
150
151
|
if obj.get("collision_setups") is not None
|
|
151
|
-
else None
|
|
152
|
+
else None,
|
|
153
|
+
"reference_joint_position": obj.get("reference_joint_position")
|
|
152
154
|
})
|
|
153
155
|
return _obj
|
|
154
156
|
|