rainbow-rb-sdk 0.0.9.dev42__tar.gz → 0.0.9.dev44__tar.gz
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.
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/PKG-INFO +12 -9
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/README.md +6 -3
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/pyproject.toml +6 -6
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/__init__.py +6 -1
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_control.py +7 -6
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_move.py +17 -5
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_status.py +20 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/base.py +2 -2
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate.py +5 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_config.py +39 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_move.py +30 -17
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_point.py +6 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_program.py +16 -1
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/manipulate_sdk/manipulate_safety.py +79 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_service.py +4 -4
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/plugin.py +40 -7
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/program_sdk/__init__.py +2 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/program_sdk/client_modules.pyi +115 -14
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/program_sdk/external_so_usage_example.py +113 -0
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/program_sdk/mechmind_vision.pyi +174 -0
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/program_sdk/plugin_context.py +174 -0
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/program_sdk/plugin_main_example.py +43 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/program_sdk/program.py +238 -6
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/program_sdk/program_interface.py +396 -9
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/rby1.py +293 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/rby1_sdk/base.py +110 -29
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/rby1_sdk/client.py +148 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/rby1_sdk/config.py +3 -4
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow/rb_sdk/rby1_sdk/control.py +753 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/rby1_sdk/state.py +83 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/schema/program_schema.py +11 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow_rb_sdk.egg-info/PKG-INFO +12 -9
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow_rb_sdk.egg-info/SOURCES.txt +5 -0
- rainbow_rb_sdk-0.0.9.dev44/src/rainbow_rb_sdk.egg-info/requires.txt +7 -0
- rainbow_rb_sdk-0.0.9.dev42/src/rainbow/rb_sdk/rby1.py +0 -71
- rainbow_rb_sdk-0.0.9.dev42/src/rainbow/rb_sdk/rby1_sdk/client.py +0 -70
- rainbow_rb_sdk-0.0.9.dev42/src/rainbow/rb_sdk/rby1_sdk/control.py +0 -194
- rainbow_rb_sdk-0.0.9.dev42/src/rainbow_rb_sdk.egg-info/requires.txt +0 -7
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/setup.cfg +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_accessory.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_capability.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_file.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_localization.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_map.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_program.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_sensor.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_setting.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/schema/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/base_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/base_sdk/base_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_get_data.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_io.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_maintenance.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_state.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/schema/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_config_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_io_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_move_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_program_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/program_sdk/test_binding.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/rby1_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/rby1_sdk/exceptions.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/schema/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/schema/amr_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/schema/base_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/schema/manipulate_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/schema/rby1_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow_rb_sdk.egg-info/dependency_links.txt +0 -0
- {rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow_rb_sdk.egg-info/top_level.txt +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rainbow-rb-sdk
|
|
3
|
-
Version: 0.0.9.
|
|
3
|
+
Version: 0.0.9.dev44
|
|
4
4
|
Summary: Rainbow Robotics 통합 Python SDK — AMR, 매니퓰레이터, RB-Y1 휴머노이드와 Rainbow Robot Service(common) 연동
|
|
5
5
|
Author-email: Derek <dfd1123@rainbow-robotics.com>
|
|
6
6
|
Requires-Python: >=3.11
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
|
-
Requires-Dist: rainbow-rb-utils==0.0.9.
|
|
9
|
-
Requires-Dist: rainbow-rb-zenoh==0.0.9.
|
|
10
|
-
Requires-Dist: rainbow-rb-flat-buffers==0.0.9.
|
|
11
|
-
Requires-Dist: rainbow-rb-schemas==0.0.9.
|
|
12
|
-
Requires-Dist: rainbow-rb-log==0.0.9.
|
|
8
|
+
Requires-Dist: rainbow-rb-utils==0.0.9.dev44
|
|
9
|
+
Requires-Dist: rainbow-rb-zenoh==0.0.9.dev44
|
|
10
|
+
Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev44
|
|
11
|
+
Requires-Dist: rainbow-rb-schemas==0.0.9.dev44
|
|
12
|
+
Requires-Dist: rainbow-rb-log==0.0.9.dev44
|
|
13
13
|
Requires-Dist: python-socketio>=5.13.0
|
|
14
14
|
Requires-Dist: rby1-sdk>=0.9.1
|
|
15
15
|
|
|
@@ -285,10 +285,13 @@ sdk.state.call_servocontrol(robot_model="C500920", control=1)
|
|
|
285
285
|
```python
|
|
286
286
|
from rb_sdk import RBRby1SDK
|
|
287
287
|
|
|
288
|
-
sdk = RBRby1SDK(
|
|
288
|
+
sdk = RBRby1SDK() # 내부: 127.0.0.1:50051 background probing
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
|
|
290
|
+
# 외부/다른 host 접근
|
|
291
|
+
# 생성 직후 바로 호출하면 pending local probing 결과는 폐기된다.
|
|
292
|
+
await sdk.connect(host="192.168.100.51")
|
|
293
|
+
|
|
294
|
+
print(sdk.models)
|
|
292
295
|
|
|
293
296
|
await sdk.control.power_on(robot_model="a")
|
|
294
297
|
await sdk.control.servo_on(robot_model="a")
|
|
@@ -270,10 +270,13 @@ sdk.state.call_servocontrol(robot_model="C500920", control=1)
|
|
|
270
270
|
```python
|
|
271
271
|
from rb_sdk import RBRby1SDK
|
|
272
272
|
|
|
273
|
-
sdk = RBRby1SDK(
|
|
273
|
+
sdk = RBRby1SDK() # 내부: 127.0.0.1:50051 background probing
|
|
274
274
|
|
|
275
|
-
|
|
276
|
-
|
|
275
|
+
# 외부/다른 host 접근
|
|
276
|
+
# 생성 직후 바로 호출하면 pending local probing 결과는 폐기된다.
|
|
277
|
+
await sdk.connect(host="192.168.100.51")
|
|
278
|
+
|
|
279
|
+
print(sdk.models)
|
|
277
280
|
|
|
278
281
|
await sdk.control.power_on(robot_model="a")
|
|
279
282
|
await sdk.control.servo_on(robot_model="a")
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rainbow-rb-sdk"
|
|
7
|
-
version = "0.0.9.
|
|
7
|
+
version = "0.0.9.dev44"
|
|
8
8
|
requires-python = ">=3.11"
|
|
9
9
|
description = "Rainbow Robotics 통합 Python SDK — AMR, 매니퓰레이터, RB-Y1 휴머노이드와 Rainbow Robot Service(common) 연동"
|
|
10
10
|
authors = [
|
|
@@ -13,11 +13,11 @@ authors = [
|
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
|
|
15
15
|
dependencies = [
|
|
16
|
-
"rainbow-rb-utils==0.0.9.
|
|
17
|
-
"rainbow-rb-zenoh==0.0.9.
|
|
18
|
-
"rainbow-rb-flat-buffers==0.0.9.
|
|
19
|
-
"rainbow-rb-schemas==0.0.9.
|
|
20
|
-
"rainbow-rb-log==0.0.9.
|
|
16
|
+
"rainbow-rb-utils==0.0.9.dev44",
|
|
17
|
+
"rainbow-rb-zenoh==0.0.9.dev44",
|
|
18
|
+
"rainbow-rb-flat-buffers==0.0.9.dev44",
|
|
19
|
+
"rainbow-rb-schemas==0.0.9.dev44",
|
|
20
|
+
"rainbow-rb-log==0.0.9.dev44",
|
|
21
21
|
"python-socketio>=5.13.0",
|
|
22
22
|
"rby1-sdk>=0.9.1",
|
|
23
23
|
]
|
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
|
|
8
8
|
from typing import TYPE_CHECKING
|
|
9
9
|
|
|
10
|
-
__all__ = ["RBAmrSDK", "RBManipulateSDK", "RBBaseSDK", "RBRby1SDK", "RBPluginCall"]
|
|
10
|
+
__all__ = ["RBAmrSDK", "RBManipulateSDK", "RBBaseSDK", "RBRby1SDK", "RBPluginCall", "PluginProgramContext"]
|
|
11
11
|
|
|
12
12
|
# 타입체커/IDE(자동완성)용: 여기서는 import 해도 런타임에 실행되지 않음
|
|
13
13
|
if TYPE_CHECKING:
|
|
@@ -15,6 +15,7 @@ if TYPE_CHECKING:
|
|
|
15
15
|
from .base import RBBaseSDK
|
|
16
16
|
from .manipulate import RBManipulateSDK
|
|
17
17
|
from .plugin import RBPluginCall
|
|
18
|
+
from .program_sdk import PluginProgramContext
|
|
18
19
|
from .rby1 import RBRby1SDK
|
|
19
20
|
|
|
20
21
|
|
|
@@ -39,6 +40,10 @@ def __getattr__(name: str):
|
|
|
39
40
|
from .plugin import RBPluginCall # noqa: PLC0415
|
|
40
41
|
return RBPluginCall
|
|
41
42
|
|
|
43
|
+
if name == "PluginProgramContext":
|
|
44
|
+
from .program_sdk import PluginProgramContext # noqa: PLC0415
|
|
45
|
+
return PluginProgramContext
|
|
46
|
+
|
|
42
47
|
raise AttributeError(name)
|
|
43
48
|
|
|
44
49
|
|
{rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_control.py
RENAMED
|
@@ -21,7 +21,7 @@ from rainbow.rb_flat_buffers.SLAMNAV.RequestSetObsBox import RequestSetObsBoxT
|
|
|
21
21
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetSafetyField import RequestSetSafetyFieldT
|
|
22
22
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetSafetyFlag import RequestSetSafetyFlagT
|
|
23
23
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetSafetyIo import RequestSetSafetyIoT
|
|
24
|
-
from rainbow.rb_flat_buffers.SLAMNAV.
|
|
24
|
+
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetStreamFrequency import RequestSetStreamFrequencyT
|
|
25
25
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestUndock import RequestUndockT
|
|
26
26
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseChargeTrigger import ResponseChargeTriggerT
|
|
27
27
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseDock import ResponseDockT
|
|
@@ -38,7 +38,7 @@ from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetObsBox import ResponseSetObsBoxT
|
|
|
38
38
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetSafetyField import ResponseSetSafetyFieldT
|
|
39
39
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetSafetyFlag import ResponseSetSafetyFlagT
|
|
40
40
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetSafetyIo import ResponseSetSafetyIoT
|
|
41
|
-
from rainbow.rb_flat_buffers.SLAMNAV.
|
|
41
|
+
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetStreamFrequency import ResponseSetStreamFrequencyT
|
|
42
42
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseUndock import ResponseUndockT
|
|
43
43
|
from rainbow.rb_flat_buffers.SLAMNAV.ResultControlDock import ResultControlDockT
|
|
44
44
|
from rainbow.rb_flat_buffers.SLAMNAV.SafetyFlag import SafetyFlagT
|
|
@@ -353,6 +353,7 @@ class RBAmrControlSDK(RBBaseSDK):
|
|
|
353
353
|
# 1) RequestGetSafetyIoT 객체 생성
|
|
354
354
|
req = RequestGetSafetyIoT()
|
|
355
355
|
req.id = req_id
|
|
356
|
+
|
|
356
357
|
# 2) 요청 전송
|
|
357
358
|
result = self.zenoh_client.query_one(
|
|
358
359
|
f"amr/{robot_model}/control/getSafetyIo",
|
|
@@ -850,7 +851,7 @@ class RBAmrControlSDK(RBBaseSDK):
|
|
|
850
851
|
frequency: int,
|
|
851
852
|
req_id: str | None = None,
|
|
852
853
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
853
|
-
) ->
|
|
854
|
+
) -> ResponseSetStreamFrequencyT:
|
|
854
855
|
"""
|
|
855
856
|
[스트림 주파수 제어]
|
|
856
857
|
- req_id: 요청 ID
|
|
@@ -863,16 +864,16 @@ class RBAmrControlSDK(RBBaseSDK):
|
|
|
863
864
|
req_id = str(uuid.uuid4())
|
|
864
865
|
|
|
865
866
|
# 1) RequestStreamFrequencyT 객체 생성
|
|
866
|
-
req =
|
|
867
|
+
req = RequestSetStreamFrequencyT()
|
|
867
868
|
req.id = req_id
|
|
868
869
|
req.target = target
|
|
869
870
|
req.frequency = frequency
|
|
870
871
|
|
|
871
872
|
# 2) 요청 전송
|
|
872
873
|
result = self.zenoh_client.query_one(
|
|
873
|
-
f"amr/{robot_model}/control/
|
|
874
|
+
f"amr/{robot_model}/control/setStreamFrequency",
|
|
874
875
|
flatbuffer_req_obj=req,
|
|
875
|
-
flatbuffer_res_T_class=
|
|
876
|
+
flatbuffer_res_T_class=ResponseSetStreamFrequencyT,
|
|
876
877
|
flatbuffer_buf_size=125,
|
|
877
878
|
timeout=3,
|
|
878
879
|
)
|
{rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_move.py
RENAMED
|
@@ -4,6 +4,7 @@ import uuid
|
|
|
4
4
|
from contextlib import suppress
|
|
5
5
|
from typing import Any
|
|
6
6
|
|
|
7
|
+
from rainbow.rb_flat_buffers.SLAMNAV.ActionEntry import ActionEntryT
|
|
7
8
|
from rainbow.rb_flat_buffers.SLAMNAV.MoveJog import MoveJogT
|
|
8
9
|
from rainbow.rb_flat_buffers.SLAMNAV.MovePose import MovePoseT
|
|
9
10
|
from rainbow.rb_flat_buffers.SLAMNAV.MoveStatus import MoveStatusT
|
|
@@ -198,7 +199,11 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
198
199
|
print("[AmrMoveSDK] Move Goal Response : ", result["dict_payload"].get("result"), result["dict_payload"].get("message"), flush=True)
|
|
199
200
|
|
|
200
201
|
if flow_manager_args is not None:
|
|
201
|
-
|
|
202
|
+
# variable_name = flow_manager_args.args.get("variable_name", None)
|
|
203
|
+
# print(">>>>>>> variable Name : ",variable_name,flush=True)
|
|
204
|
+
# print(result["dict_payload"].get("result"))
|
|
205
|
+
# flow_manager_args.ctx.update_local_variables({"AMR_TE33ST": result["dict_payload"].get("result")})
|
|
206
|
+
# flow_manager_args.done()
|
|
202
207
|
if result["dict_payload"].get("result") == "reject":
|
|
203
208
|
raise RuntimeError(result["dict_payload"].get("message"))
|
|
204
209
|
|
|
@@ -731,6 +736,8 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
731
736
|
|
|
732
737
|
return result["obj_payload"]
|
|
733
738
|
|
|
739
|
+
# def send_multi_arrival(self,)
|
|
740
|
+
|
|
734
741
|
def send_multi_enqueue(self, robot_model: str, action_id: str, predecessor_id: str, from_node: str, to_node: str) -> ResponseEnqueueActionT:
|
|
735
742
|
"""
|
|
736
743
|
[멀티 edgeAction을 추가]
|
|
@@ -742,12 +749,16 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
742
749
|
- flow_manager_args: FlowManagerArgs 객체
|
|
743
750
|
- ResponseMultiPathT 객체 반환
|
|
744
751
|
"""
|
|
752
|
+
|
|
753
|
+
print(f"SDK Multi Enqueue {robot_model}, {action_id}, {predecessor_id}",flush=True)
|
|
745
754
|
# 1) RequestEnqueueActionT 객체 생성
|
|
746
755
|
req = RequestEnqueueActionT()
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
756
|
+
action = ActionEntryT()
|
|
757
|
+
action.actionId = action_id
|
|
758
|
+
action.predecessorId = predecessor_id
|
|
759
|
+
action.fromNode = from_node
|
|
760
|
+
action.toNode = to_node
|
|
761
|
+
req.action = action
|
|
751
762
|
|
|
752
763
|
# 2) 요청 전송
|
|
753
764
|
result = self.zenoh_client.query_one(
|
|
@@ -757,6 +768,7 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
757
768
|
flatbuffer_buf_size=125,
|
|
758
769
|
)
|
|
759
770
|
|
|
771
|
+
print(f"SDK Multi Enqueue Response {robot_model}, {result.get("dict_payload")}",flush=True)
|
|
760
772
|
# 3) 결과 처리 및 반환
|
|
761
773
|
if result["obj_payload"] is None:
|
|
762
774
|
raise RuntimeError("Call Multi Path failed: obj_payload is None")
|
{rainbow_rb_sdk-0.0.9.dev42 → rainbow_rb_sdk-0.0.9.dev44}/src/rainbow/rb_sdk/amr_sdk/amr_status.py
RENAMED
|
@@ -3,6 +3,7 @@ from typing import Any
|
|
|
3
3
|
from rainbow.rb_flat_buffers.SLAMNAV.LidarData import LidarDataT
|
|
4
4
|
from rainbow.rb_flat_buffers.SLAMNAV.MoveStatus import MoveStatusT
|
|
5
5
|
from rainbow.rb_flat_buffers.SLAMNAV.Path import PathT
|
|
6
|
+
from rainbow.rb_flat_buffers.SLAMNAV.ResponseGetInfoCategory import ResponseGetInfoCategoryT
|
|
6
7
|
from rainbow.rb_flat_buffers.SLAMNAV.Status import StatusT
|
|
7
8
|
from rainbow.rb_schemas.sdk import FlowManagerArgs
|
|
8
9
|
|
|
@@ -56,6 +57,25 @@ class RBAmrStatusSDK(RBBaseSDK):
|
|
|
56
57
|
|
|
57
58
|
return obj
|
|
58
59
|
|
|
60
|
+
def get_info_category(self, robot_model: str, flow_manager_args: FlowManagerArgs | None = None) -> ResponseGetInfoCategoryT:
|
|
61
|
+
result = self.zenoh_client.query_one(
|
|
62
|
+
f"amr/{robot_model}/info/category",
|
|
63
|
+
flatbuffer_res_T_class=ResponseGetInfoCategoryT,
|
|
64
|
+
flatbuffer_buf_size=2048
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# 3) 결과 처리 및 반환
|
|
68
|
+
if result.get("obj_payload") is None:
|
|
69
|
+
raise RuntimeError("Call Info Category failed: obj_payload is None")
|
|
70
|
+
|
|
71
|
+
if flow_manager_args is not None:
|
|
72
|
+
if result.get("dict_payload").get("result") == "accept" or result.get("dict_payload").get("result") == "success":
|
|
73
|
+
flow_manager_args.done()
|
|
74
|
+
else:
|
|
75
|
+
raise RuntimeError(result.get("dict_payload").get("message"))
|
|
76
|
+
|
|
77
|
+
return result["obj_payload"]
|
|
78
|
+
|
|
59
79
|
async def get_lidar2d(self, robot_model: str, flow_manager_args: FlowManagerArgs | None = None) -> dict[str, Any]:
|
|
60
80
|
"""
|
|
61
81
|
[라이다 2D 조회]
|
|
@@ -195,7 +195,7 @@ class RBBaseSDK:
|
|
|
195
195
|
# disconnect() 후 명시적 close 상태이면 auto-reconnect를 막는다.
|
|
196
196
|
# C++ manually_closed_ 플래그를 Python facade를 통해 확인.
|
|
197
197
|
zc = getattr(sdk_inst, "zenoh_client", None)
|
|
198
|
-
if zc is not None and getattr(zc, "manually_closed", False):
|
|
198
|
+
if zc is not None and getattr(zc, "manually_closed", False) is True:
|
|
199
199
|
raise RuntimeError(
|
|
200
200
|
"Zenoh session was explicitly closed via disconnect(). "
|
|
201
201
|
"Call connect() before using the SDK again."
|
|
@@ -239,7 +239,7 @@ class RBBaseSDK:
|
|
|
239
239
|
if args and isinstance(args[0], RBBaseSDK):
|
|
240
240
|
sdk_inst = args[0]
|
|
241
241
|
zc = getattr(sdk_inst, "zenoh_client", None)
|
|
242
|
-
if zc is not None and getattr(zc, "manually_closed", False):
|
|
242
|
+
if zc is not None and getattr(zc, "manually_closed", False) is True:
|
|
243
243
|
raise RuntimeError(
|
|
244
244
|
"Zenoh session was explicitly closed via disconnect(). "
|
|
245
245
|
"Call connect() before using the SDK again."
|
|
@@ -10,6 +10,7 @@ from .manipulate_sdk.manipulate_maintenance import RBManipulateMaintenanceSDK
|
|
|
10
10
|
from .manipulate_sdk.manipulate_move import RBManipulateMoveSDK
|
|
11
11
|
from .manipulate_sdk.manipulate_point import RBManipulatePointSDK
|
|
12
12
|
from .manipulate_sdk.manipulate_program import RBManipulateProgramSDK
|
|
13
|
+
from .manipulate_sdk.manipulate_safety import RBManipulateSafetySDK
|
|
13
14
|
from .manipulate_sdk.manipulate_service import RBManipulateServiceSDK
|
|
14
15
|
|
|
15
16
|
|
|
@@ -40,6 +41,9 @@ class RBManipulateSDK(RBBaseSDK):
|
|
|
40
41
|
maintenance: RBManipulateMaintenanceSDK
|
|
41
42
|
"""관리자 페이지 설정 집합"""
|
|
42
43
|
|
|
44
|
+
safety: RBManipulateSafetySDK
|
|
45
|
+
"""Safety 페이지 설정 집합"""
|
|
46
|
+
|
|
43
47
|
state: RBManipulateStateSDK
|
|
44
48
|
|
|
45
49
|
def __init__(self):
|
|
@@ -54,3 +58,4 @@ class RBManipulateSDK(RBBaseSDK):
|
|
|
54
58
|
self.point = RBManipulatePointSDK()
|
|
55
59
|
self.service = RBManipulateServiceSDK()
|
|
56
60
|
self.maintenance = RBManipulateMaintenanceSDK()
|
|
61
|
+
self.safety = RBManipulateSafetySDK()
|
|
@@ -23,6 +23,7 @@ from rainbow.rb_flat_buffers.IPC.Request_Save_User_Frame import Request_Save_Use
|
|
|
23
23
|
from rainbow.rb_flat_buffers.IPC.Request_Set_AsciiFunctionCall import Request_Set_AsciiFunctionCallT
|
|
24
24
|
from rainbow.rb_flat_buffers.IPC.Request_Set_DinFunctionMask import Request_Set_DinFunctionMaskT
|
|
25
25
|
from rainbow.rb_flat_buffers.IPC.Request_Set_DoutFunctionMask import Request_Set_DoutFunctionMaskT
|
|
26
|
+
from rainbow.rb_flat_buffers.IPC.Request_Set_ExternalAxisSync import Request_Set_ExternalAxisSyncT
|
|
26
27
|
from rainbow.rb_flat_buffers.IPC.Request_Set_Fixed_Speed_Mode import Request_Set_Fixed_Speed_ModeT
|
|
27
28
|
from rainbow.rb_flat_buffers.IPC.Request_Set_Free_Drive import Request_Set_Free_DriveT
|
|
28
29
|
from rainbow.rb_flat_buffers.IPC.Request_Set_JacobSpeedMode import Request_Set_JacobSpeedModeT
|
|
@@ -1630,3 +1631,41 @@ class RBManipulateConfigSDK(RBBaseSDK):
|
|
|
1630
1631
|
flow_manager_args.done()
|
|
1631
1632
|
|
|
1632
1633
|
return res["obj_payload"]
|
|
1634
|
+
|
|
1635
|
+
def set_external_axis_sync(
|
|
1636
|
+
self,
|
|
1637
|
+
*,
|
|
1638
|
+
robot_model: str,
|
|
1639
|
+
mode: int,
|
|
1640
|
+
flow_manager_args: FlowManagerArgs | None = None,
|
|
1641
|
+
) -> Response_FunctionsT:
|
|
1642
|
+
"""
|
|
1643
|
+
[Set External Axis Sync 호출 함수]
|
|
1644
|
+
|
|
1645
|
+
Args:
|
|
1646
|
+
robot_model: 로봇 모델명
|
|
1647
|
+
mode: 동기화 모드
|
|
1648
|
+
flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
|
|
1649
|
+
"""
|
|
1650
|
+
req = Request_Set_ExternalAxisSyncT()
|
|
1651
|
+
req.mode = mode
|
|
1652
|
+
|
|
1653
|
+
res = self.zenoh_client.query_one(
|
|
1654
|
+
f"{robot_model}/set_external_axis_sync",
|
|
1655
|
+
flatbuffer_req_obj=req,
|
|
1656
|
+
flatbuffer_res_T_class=Response_FunctionsT,
|
|
1657
|
+
flatbuffer_buf_size=8,
|
|
1658
|
+
timeout=3.0,
|
|
1659
|
+
)
|
|
1660
|
+
|
|
1661
|
+
if res["obj_payload"] is None:
|
|
1662
|
+
raise RuntimeError("Set External Axis Sync failed: obj_payload is None")
|
|
1663
|
+
|
|
1664
|
+
self.manipulate_return_value(
|
|
1665
|
+
"set_external_axis_sync", res["obj_payload"], flow_manager_args
|
|
1666
|
+
)
|
|
1667
|
+
|
|
1668
|
+
if flow_manager_args is not None:
|
|
1669
|
+
flow_manager_args.done()
|
|
1670
|
+
|
|
1671
|
+
return res["obj_payload"]
|
|
@@ -63,7 +63,6 @@ from rainbow.rb_flat_buffers.IPC.Response_Functions import Response_FunctionsT
|
|
|
63
63
|
from rainbow.rb_flat_buffers.IPC.State_Core import State_Core
|
|
64
64
|
from rainbow.rb_schemas.fbs_models.manipulate.v1.common_struct_models import MoveInput_TargetPD
|
|
65
65
|
from rainbow.rb_schemas.sdk import FlowManagerArgs
|
|
66
|
-
from rainbow.rb_utils.flow_manager import eval_value
|
|
67
66
|
from rainbow.rb_utils.manipulate import validate_single_return_value
|
|
68
67
|
from rainbow.rb_zenoh.client import CongestionControl, Priority, QueryResult
|
|
69
68
|
from rainbow.rb_zenoh.schema import OverflowPolicy, SubscribeOptions
|
|
@@ -142,12 +141,10 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
142
141
|
async def _on_state(*, mv=None, unsubscribe=None, **_):
|
|
143
142
|
nonlocal start_timestamp_u_sec_mono
|
|
144
143
|
|
|
145
|
-
# print("awdawdaw adaw dawd aw awd awd awda awdadwa ad", flush=True)
|
|
146
|
-
|
|
147
144
|
if state["finished"] or mv is None:
|
|
148
145
|
return
|
|
149
146
|
|
|
150
|
-
obj_payload = State_Core.GetRootAs(mv, 0)
|
|
147
|
+
obj_payload = State_Core.GetRootAs(mv, 0) # state_core의 flatbuffer payload 파싱
|
|
151
148
|
|
|
152
149
|
# timestampUsecMono가 없으면 int의 최대값으로 비교
|
|
153
150
|
timestamp_u_sec_mono = obj_payload.TimestampUsecMono()
|
|
@@ -173,18 +170,10 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
173
170
|
flow_manager_args.ctx.update_local_variables({variable_name: carte_x_ref})
|
|
174
171
|
|
|
175
172
|
if finish_at is not None:
|
|
176
|
-
parsed_finish_at = eval_value(
|
|
177
|
-
finish_at,
|
|
178
|
-
variables=flow_manager_args.ctx.variables,
|
|
179
|
-
get_global_variable=flow_manager_args.ctx.get_global_variable,
|
|
180
|
-
)
|
|
173
|
+
parsed_finish_at = flow_manager_args.ctx.eval_value(finish_at)
|
|
181
174
|
|
|
182
175
|
if parsed_finish_at:
|
|
183
|
-
parsed_stop_time = eval_value(
|
|
184
|
-
stop_time,
|
|
185
|
-
variables=flow_manager_args.ctx.variables,
|
|
186
|
-
get_global_variable=flow_manager_args.ctx.get_global_variable,
|
|
187
|
-
)
|
|
176
|
+
parsed_stop_time = flow_manager_args.ctx.eval_value(stop_time)
|
|
188
177
|
|
|
189
178
|
if not isinstance(parsed_stop_time, float | int):
|
|
190
179
|
raise RuntimeError("stop_time must be a number")
|
|
@@ -239,6 +228,7 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
239
228
|
target: MoveInputTargetSchema,
|
|
240
229
|
reference_value: list[float | int] | None = None,
|
|
241
230
|
speed: MoveInputSpeedSchema | None = None,
|
|
231
|
+
ext_axis: list[float] | None = None,
|
|
242
232
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
243
233
|
) -> Response_FunctionsT:
|
|
244
234
|
"""
|
|
@@ -299,6 +289,9 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
299
289
|
req.target = move_input_target
|
|
300
290
|
req.speed = move_input_speed
|
|
301
291
|
|
|
292
|
+
if ext_axis is not None:
|
|
293
|
+
req.extAxis = ext_axis
|
|
294
|
+
|
|
302
295
|
# 명령 전송
|
|
303
296
|
res = self.zenoh_client.query_one(
|
|
304
297
|
f"{robot_model}/call_move_j",
|
|
@@ -319,10 +312,13 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
319
312
|
target: MoveInputTargetSchema,
|
|
320
313
|
reference_value: list[float | int] | None = None,
|
|
321
314
|
speed: MoveInputSpeedSchema | None = None,
|
|
315
|
+
ext_axis: list[float] | None = None,
|
|
322
316
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
323
317
|
) -> Response_FunctionsT | None:
|
|
324
318
|
"""
|
|
325
319
|
[협동로봇이 직선 공간 이동을 시작하는 명령 전송 함수]
|
|
320
|
+
7축 모델일 경우 target["tar_values"]에 마지막 7번째 값으로 aa(ArmAngle)이 들어간다.
|
|
321
|
+
|
|
326
322
|
|
|
327
323
|
Args:
|
|
328
324
|
robot_model: 로봇 모델명
|
|
@@ -376,6 +372,9 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
376
372
|
req.speed.spdVelPara = speed.get("spd_vel_para", 250)
|
|
377
373
|
req.speed.spdAccPara = speed.get("spd_acc_para", 1000)
|
|
378
374
|
|
|
375
|
+
if ext_axis is not None:
|
|
376
|
+
req.extAxis = ext_axis
|
|
377
|
+
|
|
379
378
|
res = self.zenoh_client.query_one(
|
|
380
379
|
f"{robot_model}/call_move_l",
|
|
381
380
|
flatbuffer_req_obj=req,
|
|
@@ -422,6 +421,7 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
422
421
|
reference_value: list[float | int] | None = None,
|
|
423
422
|
speed: MoveInputSpeedSchema | None = None,
|
|
424
423
|
blend_type: MoveInputTypeSchema,
|
|
424
|
+
ext_axis: list[float] | None = None,
|
|
425
425
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
426
426
|
) -> Response_FunctionsT:
|
|
427
427
|
"""
|
|
@@ -489,6 +489,9 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
489
489
|
req.speed = move_input_speed
|
|
490
490
|
req.type = move_input_type
|
|
491
491
|
|
|
492
|
+
if ext_axis is not None:
|
|
493
|
+
req.extAxis = ext_axis
|
|
494
|
+
|
|
492
495
|
res = self.zenoh_client.query_one(
|
|
493
496
|
f"{robot_model}/call_move_jb_add",
|
|
494
497
|
flatbuffer_req_obj=req,
|
|
@@ -563,6 +566,7 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
563
566
|
reference_value: list[float | int] | None = None,
|
|
564
567
|
speed: MoveInputSpeedSchema | None = None,
|
|
565
568
|
blend_type: MoveInputTypeSchema,
|
|
569
|
+
ext_axis: list[float] | None = None,
|
|
566
570
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
567
571
|
) -> Response_FunctionsT:
|
|
568
572
|
"""
|
|
@@ -628,6 +632,9 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
628
632
|
req.speed = move_input_speed
|
|
629
633
|
req.type = move_input_type
|
|
630
634
|
|
|
635
|
+
if ext_axis is not None:
|
|
636
|
+
req.extAxis = ext_axis
|
|
637
|
+
|
|
631
638
|
res = self.zenoh_client.query_one(
|
|
632
639
|
f"{robot_model}/call_move_lb_add",
|
|
633
640
|
flatbuffer_req_obj=req,
|
|
@@ -781,6 +788,7 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
781
788
|
*,
|
|
782
789
|
robot_model: str,
|
|
783
790
|
target: MoveInputTargetSchema,
|
|
791
|
+
ext_axis: list[float] | None = None,
|
|
784
792
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
785
793
|
) -> Response_FunctionsT:
|
|
786
794
|
"""
|
|
@@ -798,6 +806,9 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
798
806
|
req.target.tarFrame = target["tar_frame"]
|
|
799
807
|
req.target.tarUnit = target["tar_unit"]
|
|
800
808
|
|
|
809
|
+
if ext_axis is not None:
|
|
810
|
+
req.extAxis = ext_axis
|
|
811
|
+
|
|
801
812
|
res = self.zenoh_client.query_one(
|
|
802
813
|
f"{robot_model}/call_smoothjog_j",
|
|
803
814
|
flatbuffer_req_obj=req,
|
|
@@ -890,6 +901,7 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
890
901
|
robot_model: str,
|
|
891
902
|
target: MoveInputTargetSchema,
|
|
892
903
|
speed: MoveInputSpeedSchema,
|
|
904
|
+
ext_axis: list[float] | None = None,
|
|
893
905
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
894
906
|
) -> Response_FunctionsT:
|
|
895
907
|
"""
|
|
@@ -909,12 +921,13 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
909
921
|
req.target.tarFrame = target["tar_frame"]
|
|
910
922
|
req.target.tarUnit = target["tar_unit"]
|
|
911
923
|
|
|
912
|
-
req.speed = MoveInput_SpeedT()
|
|
913
|
-
|
|
914
924
|
req.speed.spdMode = speed.get("spd_mode", 1)
|
|
915
925
|
req.speed.spdVelPara = speed.get("spd_vel_para", 60)
|
|
916
926
|
req.speed.spdAccPara = speed.get("spd_acc_para", 120)
|
|
917
927
|
|
|
928
|
+
if ext_axis is not None:
|
|
929
|
+
req.extAxis = ext_axis
|
|
930
|
+
|
|
918
931
|
res = self.zenoh_client.query_one(
|
|
919
932
|
f"{robot_model}/call_tickjog_j",
|
|
920
933
|
flatbuffer_req_obj=req,
|
|
@@ -1292,7 +1305,7 @@ class RBManipulateMoveSDK(RBBaseSDK):
|
|
|
1292
1305
|
conv_type: int,
|
|
1293
1306
|
conv_speed: float,
|
|
1294
1307
|
conv_acc_time_sec: float,
|
|
1295
|
-
conv_ref_points: list[
|
|
1308
|
+
conv_ref_points: list[list[float]],
|
|
1296
1309
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
1297
1310
|
) -> Response_FunctionsT:
|
|
1298
1311
|
"""
|
|
@@ -38,6 +38,7 @@ class RBManipulatePointSDK(RBBaseSDK):
|
|
|
38
38
|
spd_mode: int,
|
|
39
39
|
spd_vel_para: float,
|
|
40
40
|
spd_acc_para: float,
|
|
41
|
+
ext_axis: list[float] | None = None,
|
|
41
42
|
method: int | None = None,
|
|
42
43
|
tcp_num: int = -1,
|
|
43
44
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
@@ -57,6 +58,7 @@ class RBManipulatePointSDK(RBBaseSDK):
|
|
|
57
58
|
spd_mode: 속도 측정 설정 방식 (0: %기반 설정, 1: 절대값(물리값))
|
|
58
59
|
spd_vel_para: 속도
|
|
59
60
|
spd_acc_para: 가속도
|
|
61
|
+
ext_axis: 부가축 좌표 정보 (기본값: None)
|
|
60
62
|
method: 메서드 (0: 기본값, 1: 툴 좌표계 사용)
|
|
61
63
|
tcp_num: TCP 번호 (-1: 기본값)
|
|
62
64
|
flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
|
|
@@ -81,6 +83,7 @@ class RBManipulatePointSDK(RBBaseSDK):
|
|
|
81
83
|
target=target,
|
|
82
84
|
reference_value=tar_frame_reference_point,
|
|
83
85
|
speed=speed,
|
|
86
|
+
ext_axis=ext_axis,
|
|
84
87
|
flow_manager_args=flow_manager_args,
|
|
85
88
|
)
|
|
86
89
|
elif move_type == "L":
|
|
@@ -89,6 +92,7 @@ class RBManipulatePointSDK(RBBaseSDK):
|
|
|
89
92
|
target=target,
|
|
90
93
|
reference_value=tar_frame_reference_point,
|
|
91
94
|
speed=speed,
|
|
95
|
+
ext_axis=ext_axis,
|
|
92
96
|
flow_manager_args=flow_manager_args,
|
|
93
97
|
)
|
|
94
98
|
elif move_type == "JB":
|
|
@@ -104,6 +108,7 @@ class RBManipulatePointSDK(RBBaseSDK):
|
|
|
104
108
|
pnt_type=pnt_type,
|
|
105
109
|
pnt_para=pnt_para,
|
|
106
110
|
),
|
|
111
|
+
ext_axis=ext_axis,
|
|
107
112
|
flow_manager_args=flow_manager_args,
|
|
108
113
|
)
|
|
109
114
|
elif move_type == "LB":
|
|
@@ -119,6 +124,7 @@ class RBManipulatePointSDK(RBBaseSDK):
|
|
|
119
124
|
pnt_type=pnt_type,
|
|
120
125
|
pnt_para=pnt_para,
|
|
121
126
|
),
|
|
127
|
+
ext_axis=ext_axis,
|
|
122
128
|
flow_manager_args=flow_manager_args,
|
|
123
129
|
)
|
|
124
130
|
elif move_type == "XB":
|
|
@@ -24,6 +24,7 @@ from rainbow.rb_schemas.fbs_models.manipulate.v1.func_set_models import (
|
|
|
24
24
|
Request_Set_AsciiFunctionCallPD,
|
|
25
25
|
Request_Set_DinFunctionMaskPD,
|
|
26
26
|
Request_Set_DoutFunctionMaskPD,
|
|
27
|
+
Request_Set_ExternalAxisSyncPD,
|
|
27
28
|
Request_Set_Free_DrivePD,
|
|
28
29
|
Request_Set_JacobSpeedModePD,
|
|
29
30
|
Request_Set_Joint_ImpedancePD,
|
|
@@ -179,7 +180,9 @@ class RBManipulateProgramSDK(RBBaseSDK):
|
|
|
179
180
|
)
|
|
180
181
|
|
|
181
182
|
if res["obj_payload"] is None:
|
|
182
|
-
raise RuntimeError(
|
|
183
|
+
raise RuntimeError(
|
|
184
|
+
f"Call Program After failed: obj_payload is None => {robot_model}"
|
|
185
|
+
)
|
|
183
186
|
|
|
184
187
|
return res["obj_payload"]
|
|
185
188
|
except (ZenohNoReply, ZenohReplyError) as e:
|
|
@@ -513,6 +516,7 @@ class RBManipulateProgramSDK(RBBaseSDK):
|
|
|
513
516
|
vibration_motion_based: Request_Wrapper_VibrationMotion_OnPD
|
|
514
517
|
| Request_Wrapper_VibrationMotion_OffPD
|
|
515
518
|
| None = None,
|
|
519
|
+
external_axis_sync: Request_Set_ExternalAxisSyncPD | None = None,
|
|
516
520
|
flow_manager_args: FlowManagerArgs | None = None,
|
|
517
521
|
) -> Response_FunctionsT:
|
|
518
522
|
"""
|
|
@@ -541,6 +545,7 @@ class RBManipulateProgramSDK(RBBaseSDK):
|
|
|
541
545
|
jacobian_based_speed_control: 자코비안 기반 속도 제어
|
|
542
546
|
self_vibration_mode: 토크 기반 진동 제어
|
|
543
547
|
vibration_motion_based: 모션 기반 진동 제어
|
|
548
|
+
external_axis_sync: 부가 축 동기화
|
|
544
549
|
flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
|
|
545
550
|
"""
|
|
546
551
|
|
|
@@ -852,6 +857,16 @@ class RBManipulateProgramSDK(RBBaseSDK):
|
|
|
852
857
|
else:
|
|
853
858
|
raise RuntimeError("Unknown vibration motion type")
|
|
854
859
|
|
|
860
|
+
elif option == "EXTERNAL_AXIS_SYNC":
|
|
861
|
+
if external_axis_sync is None:
|
|
862
|
+
raise RuntimeError("External Axis Sync failed: external_axis_sync is required")
|
|
863
|
+
|
|
864
|
+
self._manipulate_config_sdk.set_external_axis_sync(
|
|
865
|
+
robot_model=robot_model,
|
|
866
|
+
mode=external_axis_sync["mode"],
|
|
867
|
+
flow_manager_args=flow_manager_args,
|
|
868
|
+
)
|
|
869
|
+
|
|
855
870
|
def call_coredata_pub_frequency(
|
|
856
871
|
self, *, robot_model: str, frequency: int
|
|
857
872
|
) -> Response_FunctionsT:
|