rainbow-rb-sdk 0.0.9.dev29__tar.gz → 0.0.9.dev32__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.dev29 → rainbow_rb_sdk-0.0.9.dev32}/PKG-INFO +6 -6
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/pyproject.toml +6 -6
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr.py +5 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_accessory.py +1 -1
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_control.py +17 -63
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_localization.py +12 -15
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_map.py +17 -20
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_move.py +51 -19
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_program.py +44 -37
- rainbow_rb_sdk-0.0.9.dev32/src/rainbow/rb_sdk/amr_sdk/amr_sensor.py +169 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_setting.py +143 -134
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/base.py +95 -4
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_move.py +194 -18
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_program.py +2 -2
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_service.py +191 -1
- rainbow_rb_sdk-0.0.9.dev32/src/rainbow/rb_sdk/program_sdk/__init__.py +39 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/program_sdk/program_interface.py +33 -1
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/rby1.py +20 -7
- rainbow_rb_sdk-0.0.9.dev32/src/rainbow/rb_sdk/rby1_sdk/base.py +354 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/rby1_sdk/config.py +4 -1
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/rby1_sdk/control.py +63 -38
- rainbow_rb_sdk-0.0.9.dev32/src/rainbow/rb_sdk/rby1_sdk/state.py +168 -0
- rainbow_rb_sdk-0.0.9.dev32/src/rainbow/rb_sdk/schema/rby1_schema.py +119 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow_rb_sdk.egg-info/PKG-INFO +6 -6
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow_rb_sdk.egg-info/SOURCES.txt +2 -0
- rainbow_rb_sdk-0.0.9.dev32/src/rainbow_rb_sdk.egg-info/requires.txt +6 -0
- rainbow_rb_sdk-0.0.9.dev29/src/rainbow/rb_sdk/rby1_sdk/base.py +0 -165
- rainbow_rb_sdk-0.0.9.dev29/src/rainbow/rb_sdk/rby1_sdk/state.py +0 -80
- rainbow_rb_sdk-0.0.9.dev29/src/rainbow/rb_sdk/schema/__init__.py +0 -0
- rainbow_rb_sdk-0.0.9.dev29/src/rainbow_rb_sdk.egg-info/requires.txt +0 -6
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/README.md +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/setup.cfg +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_capability.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_file.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_status.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/schema/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/base_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/base_sdk/base_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_config.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_get_data.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_io.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_maintenance.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_point.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_state.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/schema/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_config_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_io_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_move_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_program_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/program_sdk/client_modules.pyi +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/program_sdk/program.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/program_sdk/test_binding.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/rby1_sdk/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/rby1_sdk/client.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/rby1_sdk/exceptions.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29/src/rainbow/rb_sdk/program_sdk → rainbow_rb_sdk-0.0.9.dev32/src/rainbow/rb_sdk/schema}/__init__.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/schema/amr_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/schema/base_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/schema/manipulate_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/schema/program_schema.py +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow_rb_sdk.egg-info/dependency_links.txt +0 -0
- {rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/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.dev32
|
|
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.dev32
|
|
9
|
+
Requires-Dist: rainbow-rb-zenoh==0.0.9.dev32
|
|
10
|
+
Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev32
|
|
11
|
+
Requires-Dist: rainbow-rb-schemas==0.0.9.dev32
|
|
12
|
+
Requires-Dist: rainbow-rb-log==0.0.9.dev32
|
|
13
13
|
Requires-Dist: rby1-sdk>=0.9.1
|
|
14
14
|
|
|
15
15
|
# rb_sdk
|
|
@@ -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.dev32"
|
|
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.dev32",
|
|
17
|
+
"rainbow-rb-zenoh==0.0.9.dev32",
|
|
18
|
+
"rainbow-rb-flat-buffers==0.0.9.dev32",
|
|
19
|
+
"rainbow-rb-schemas==0.0.9.dev32",
|
|
20
|
+
"rainbow-rb-log==0.0.9.dev32",
|
|
21
21
|
"rby1-sdk>=0.9.1",
|
|
22
22
|
]
|
|
23
23
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from rainbow.rb_sdk.amr_sdk.amr_capability import RBAmrCapabilitySDK
|
|
4
4
|
from rainbow.rb_sdk.amr_sdk.amr_program import RBAmrProgramSDK
|
|
5
|
+
from rainbow.rb_sdk.amr_sdk.amr_sensor import RBAmrSensorSDK
|
|
5
6
|
|
|
6
7
|
from .amr_sdk.amr_control import RBAmrControlSDK
|
|
7
8
|
from .amr_sdk.amr_file import RBAmrFileSDK
|
|
@@ -43,6 +44,9 @@ class RBAmrSDK(RBBaseSDK):
|
|
|
43
44
|
program: RBAmrProgramSDK
|
|
44
45
|
"""AMR 프로그램 관련 SDK 집합"""
|
|
45
46
|
|
|
47
|
+
sensor: RBAmrSensorSDK
|
|
48
|
+
"""AMR 센서 관련 SDK 집합"""
|
|
49
|
+
|
|
46
50
|
def __init__(self):
|
|
47
51
|
super().__init__(server="amr")
|
|
48
52
|
|
|
@@ -55,3 +59,4 @@ class RBAmrSDK(RBBaseSDK):
|
|
|
55
59
|
self.status = RBAmrStatusSDK()
|
|
56
60
|
self.capability = RBAmrCapabilitySDK()
|
|
57
61
|
self.program = RBAmrProgramSDK()
|
|
62
|
+
self.sensor = RBAmrSensorSDK()
|
{rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_control.py
RENAMED
|
@@ -14,7 +14,6 @@ from rainbow.rb_flat_buffers.SLAMNAV.RequestGetSafetyField import RequestGetSafe
|
|
|
14
14
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestGetSafetyFlag import RequestGetSafetyFlagT
|
|
15
15
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestGetSafetyIo import RequestGetSafetyIoT
|
|
16
16
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetAvoid import RequestSetAvoidT
|
|
17
|
-
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetDetectMode import RequestSetDetectModeT
|
|
18
17
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetJog import RequestSetJogT
|
|
19
18
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetLed import RequestSetLedT
|
|
20
19
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestSetMotor import RequestSetMotorT
|
|
@@ -32,7 +31,6 @@ from rainbow.rb_flat_buffers.SLAMNAV.ResponseGetSafetyField import ResponseGetSa
|
|
|
32
31
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseGetSafetyFlag import ResponseGetSafetyFlagT
|
|
33
32
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseGetSafetyIo import ResponseGetSafetyIoT
|
|
34
33
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetAvoid import ResponseSetAvoidT
|
|
35
|
-
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetDetectMode import ResponseSetDetectModeT
|
|
36
34
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetJog import ResponseSetJogT
|
|
37
35
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetLed import ResponseSetLedT
|
|
38
36
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseSetMotor import ResponseSetMotorT
|
|
@@ -76,7 +74,7 @@ class RBAmrControlSDK(RBBaseSDK):
|
|
|
76
74
|
if req_id is None:
|
|
77
75
|
req_id = str(uuid.uuid4())
|
|
78
76
|
|
|
79
|
-
done_event =
|
|
77
|
+
done_event = self._zenoh_subs_done_event()
|
|
80
78
|
state: dict[str, Any] = {
|
|
81
79
|
"finished": False,
|
|
82
80
|
"error": "",
|
|
@@ -138,7 +136,7 @@ class RBAmrControlSDK(RBBaseSDK):
|
|
|
138
136
|
done_event.set()
|
|
139
137
|
return
|
|
140
138
|
|
|
141
|
-
|
|
139
|
+
async with self._zenoh_sub_with_close(
|
|
142
140
|
f"amr/{robot_model}/status",
|
|
143
141
|
_on_status,
|
|
144
142
|
flatbuffer_obj_t=StatusT,
|
|
@@ -147,25 +145,23 @@ class RBAmrControlSDK(RBBaseSDK):
|
|
|
147
145
|
overflow=OverflowPolicy.LATEST_ONLY,
|
|
148
146
|
parse_dict_payload=False,
|
|
149
147
|
),
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
try:
|
|
154
|
-
await done_event.wait()
|
|
155
|
-
if state["error"] != "":
|
|
156
|
-
raise RuntimeError(state["error"])
|
|
157
|
-
except asyncio.CancelledError:
|
|
158
|
-
pass
|
|
159
|
-
except Exception as e:
|
|
160
|
-
all_stop(flow_manager_args=flow_manager_args)
|
|
161
|
-
raise RuntimeError(str(e)) from e
|
|
162
|
-
finally:
|
|
163
|
-
watchdog_task.cancel()
|
|
148
|
+
):
|
|
149
|
+
watchdog_task = asyncio.create_task(_watchdog())
|
|
164
150
|
try:
|
|
165
|
-
await
|
|
151
|
+
await done_event.wait()
|
|
152
|
+
if state["error"] != "":
|
|
153
|
+
raise RuntimeError(state["error"])
|
|
166
154
|
except asyncio.CancelledError:
|
|
167
|
-
|
|
168
|
-
|
|
155
|
+
pass
|
|
156
|
+
except Exception as e:
|
|
157
|
+
all_stop(flow_manager_args=flow_manager_args)
|
|
158
|
+
raise RuntimeError(str(e)) from e
|
|
159
|
+
finally:
|
|
160
|
+
watchdog_task.cancel()
|
|
161
|
+
try:
|
|
162
|
+
await watchdog_task
|
|
163
|
+
except asyncio.CancelledError:
|
|
164
|
+
print("WATCHDOG CANCELLED", flush=True)
|
|
169
165
|
|
|
170
166
|
return None
|
|
171
167
|
|
|
@@ -936,48 +932,6 @@ class RBAmrControlSDK(RBBaseSDK):
|
|
|
936
932
|
|
|
937
933
|
return result["obj_payload"]
|
|
938
934
|
|
|
939
|
-
def control_set_detect_mode(
|
|
940
|
-
self,
|
|
941
|
-
robot_model: str,
|
|
942
|
-
switch: bool,
|
|
943
|
-
req_id: str | None = None,
|
|
944
|
-
flow_manager_args: FlowManagerArgs | None = None,
|
|
945
|
-
) -> ResponseSetDetectModeT:
|
|
946
|
-
"""
|
|
947
|
-
[탐지 모드 제어]
|
|
948
|
-
- req_id: 요청 ID
|
|
949
|
-
- switch: 탐지 모드 켜기/끄기 (True: 켜기, False: 끄기)
|
|
950
|
-
- ResponseSetDetectModeT 객체 반환
|
|
951
|
-
"""
|
|
952
|
-
|
|
953
|
-
if req_id is None:
|
|
954
|
-
req_id = str(uuid.uuid4())
|
|
955
|
-
|
|
956
|
-
# 1) RequestSetDetectModeT 객체 생성
|
|
957
|
-
req = RequestSetDetectModeT()
|
|
958
|
-
req.id = req_id
|
|
959
|
-
req.switch = switch
|
|
960
|
-
|
|
961
|
-
# 2) 요청 전송
|
|
962
|
-
result = self.zenoh_client.query_one(
|
|
963
|
-
f"amr/{robot_model}/control/setDetectMode",
|
|
964
|
-
flatbuffer_req_obj=req,
|
|
965
|
-
flatbuffer_res_T_class=ResponseSetDetectModeT,
|
|
966
|
-
flatbuffer_buf_size=125,
|
|
967
|
-
timeout=3,
|
|
968
|
-
)
|
|
969
|
-
|
|
970
|
-
# 3) 결과 처리 및 반환
|
|
971
|
-
if result.get("obj_payload") is None:
|
|
972
|
-
raise RuntimeError("Call Control Motor failed: obj_payload is None")
|
|
973
|
-
|
|
974
|
-
if flow_manager_args is not None:
|
|
975
|
-
if result["dict_payload"].get("result") == "accept":
|
|
976
|
-
flow_manager_args.done()
|
|
977
|
-
else:
|
|
978
|
-
raise RuntimeError(result["dict_payload"].get("message"))
|
|
979
|
-
|
|
980
|
-
return result["obj_payload"]
|
|
981
935
|
|
|
982
936
|
# def control_sensor_mode(self, robot_model: str, req_id: str, command: str, control: bool, frequency: int) -> ResponseSensorModeT:
|
|
983
937
|
# """
|
|
@@ -43,7 +43,7 @@ class RBAmrLocalizationSDK(RBBaseSDK):
|
|
|
43
43
|
if req_id is None:
|
|
44
44
|
req_id = str(uuid.uuid4())
|
|
45
45
|
|
|
46
|
-
done_event =
|
|
46
|
+
done_event = self._zenoh_subs_done_event()
|
|
47
47
|
state: dict[str, Any] = {"finished": False, "error": ""}
|
|
48
48
|
|
|
49
49
|
def all_stop(*, flow_manager_args: FlowManagerArgs | None = None):
|
|
@@ -85,7 +85,7 @@ class RBAmrLocalizationSDK(RBBaseSDK):
|
|
|
85
85
|
done_event.set()
|
|
86
86
|
raise e
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
async with self._zenoh_sub_with_close(
|
|
89
89
|
f"amr/{robot_model}/status",
|
|
90
90
|
_on_status,
|
|
91
91
|
flatbuffer_obj_t=StatusT,
|
|
@@ -94,19 +94,16 @@ class RBAmrLocalizationSDK(RBBaseSDK):
|
|
|
94
94
|
overflow=OverflowPolicy.LATEST_ONLY,
|
|
95
95
|
parse_dict_payload=False,
|
|
96
96
|
),
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
raise RuntimeError(str(e)) from e
|
|
108
|
-
finally:
|
|
109
|
-
sub_handle.close()
|
|
97
|
+
):
|
|
98
|
+
try:
|
|
99
|
+
await done_event.wait()
|
|
100
|
+
if state["error"] != "":
|
|
101
|
+
raise RuntimeError(state["error"])
|
|
102
|
+
except asyncio.CancelledError:
|
|
103
|
+
pass
|
|
104
|
+
except Exception as e:
|
|
105
|
+
all_stop(flow_manager_args=flow_manager_args)
|
|
106
|
+
raise RuntimeError(str(e)) from e
|
|
110
107
|
|
|
111
108
|
return None
|
|
112
109
|
|
{rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_map.py
RENAMED
|
@@ -56,7 +56,7 @@ class RBAmrMapSDK(RBBaseSDK):
|
|
|
56
56
|
if flow_manager_args is None:
|
|
57
57
|
return None
|
|
58
58
|
|
|
59
|
-
done_event =
|
|
59
|
+
done_event = self._zenoh_subs_done_event()
|
|
60
60
|
state: dict[str, Any] = {
|
|
61
61
|
"finished": False,
|
|
62
62
|
"error": "",
|
|
@@ -114,7 +114,7 @@ class RBAmrMapSDK(RBBaseSDK):
|
|
|
114
114
|
done_event.set()
|
|
115
115
|
return
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
async with self._zenoh_sub_with_close(
|
|
118
118
|
f"amr/{robot_model}/status",
|
|
119
119
|
_on_status,
|
|
120
120
|
flatbuffer_obj_t=StatusT,
|
|
@@ -123,26 +123,23 @@ class RBAmrMapSDK(RBBaseSDK):
|
|
|
123
123
|
overflow=OverflowPolicy.LATEST_ONLY,
|
|
124
124
|
parse_dict_payload=False,
|
|
125
125
|
),
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
try:
|
|
131
|
-
await done_event.wait()
|
|
132
|
-
if state["error"] != "":
|
|
133
|
-
raise RuntimeError(state["error"])
|
|
134
|
-
except asyncio.CancelledError:
|
|
135
|
-
pass
|
|
136
|
-
except Exception as e:
|
|
137
|
-
all_stop(flow_manager_args=flow_manager_args)
|
|
138
|
-
raise RuntimeError(str(e)) from e
|
|
139
|
-
finally:
|
|
140
|
-
watchdog_task.cancel()
|
|
126
|
+
):
|
|
127
|
+
watchdog_task = asyncio.create_task(_watchdog())
|
|
141
128
|
try:
|
|
142
|
-
await
|
|
129
|
+
await done_event.wait()
|
|
130
|
+
if state["error"] != "":
|
|
131
|
+
raise RuntimeError(state["error"])
|
|
143
132
|
except asyncio.CancelledError:
|
|
144
|
-
|
|
145
|
-
|
|
133
|
+
pass
|
|
134
|
+
except Exception as e:
|
|
135
|
+
all_stop(flow_manager_args=flow_manager_args)
|
|
136
|
+
raise RuntimeError(str(e)) from e
|
|
137
|
+
finally:
|
|
138
|
+
watchdog_task.cancel()
|
|
139
|
+
try:
|
|
140
|
+
await watchdog_task
|
|
141
|
+
except asyncio.CancelledError:
|
|
142
|
+
print("WATCHDOG CANCELLED", flush=True)
|
|
146
143
|
|
|
147
144
|
return None
|
|
148
145
|
|
{rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_move.py
RENAMED
|
@@ -7,6 +7,7 @@ from typing import Any
|
|
|
7
7
|
from rainbow.rb_flat_buffers.SLAMNAV.MoveJog import MoveJogT
|
|
8
8
|
from rainbow.rb_flat_buffers.SLAMNAV.MovePose import MovePoseT
|
|
9
9
|
from rainbow.rb_flat_buffers.SLAMNAV.MoveStatus import MoveStatusT
|
|
10
|
+
from rainbow.rb_flat_buffers.SLAMNAV.RequestEnqueueAction import RequestEnqueueActionT
|
|
10
11
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestMoveCircular import RequestMoveCircularT
|
|
11
12
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestMoveGoal import RequestMoveGoalT
|
|
12
13
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestMovePause import RequestMovePauseT
|
|
@@ -18,6 +19,7 @@ from rainbow.rb_flat_buffers.SLAMNAV.RequestMoveXLinear import RequestMoveXLinea
|
|
|
18
19
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestMoveYLinear import RequestMoveYLinearT
|
|
19
20
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestMultiPath import RequestMultiPathT
|
|
20
21
|
from rainbow.rb_flat_buffers.SLAMNAV.RequestMultiVobs import RequestMultiVobsT
|
|
22
|
+
from rainbow.rb_flat_buffers.SLAMNAV.ResponseEnqueueAction import ResponseEnqueueActionT
|
|
21
23
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseMoveCircular import ResponseMoveCircularT
|
|
22
24
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseMoveGoal import ResponseMoveGoalT
|
|
23
25
|
from rainbow.rb_flat_buffers.SLAMNAV.ResponseMovePause import ResponseMovePauseT
|
|
@@ -58,7 +60,7 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
58
60
|
if flow_manager_args is None:
|
|
59
61
|
return None
|
|
60
62
|
|
|
61
|
-
done_event =
|
|
63
|
+
done_event = self._zenoh_subs_done_event()
|
|
62
64
|
state: dict[str, Any] = {
|
|
63
65
|
"finished": False,
|
|
64
66
|
"error": "",
|
|
@@ -118,7 +120,7 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
118
120
|
|
|
119
121
|
await asyncio.sleep(interval_sec)
|
|
120
122
|
|
|
121
|
-
|
|
123
|
+
async with self._zenoh_sub_with_close(
|
|
122
124
|
f"amr/{robot_model}/moveStatus",
|
|
123
125
|
_on_move_status,
|
|
124
126
|
flatbuffer_obj_t=MoveStatusT,
|
|
@@ -127,25 +129,23 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
127
129
|
overflow=OverflowPolicy.LATEST_ONLY,
|
|
128
130
|
parse_dict_payload=False,
|
|
129
131
|
),
|
|
130
|
-
)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
try:
|
|
134
|
-
await done_event.wait()
|
|
135
|
-
if state["error"] != "":
|
|
136
|
-
raise RuntimeError(state["error"])
|
|
137
|
-
except asyncio.CancelledError:
|
|
138
|
-
pass
|
|
139
|
-
except Exception as e:
|
|
140
|
-
all_stop(flow_manager_args=flow_manager_args)
|
|
141
|
-
raise RuntimeError(str(e)) from e
|
|
142
|
-
finally:
|
|
143
|
-
watchdog_task.cancel()
|
|
132
|
+
):
|
|
133
|
+
watchdog_task = asyncio.create_task(_watchdog())
|
|
144
134
|
try:
|
|
145
|
-
await
|
|
135
|
+
await done_event.wait()
|
|
136
|
+
if state["error"] != "":
|
|
137
|
+
raise RuntimeError(state["error"])
|
|
146
138
|
except asyncio.CancelledError:
|
|
147
|
-
|
|
148
|
-
|
|
139
|
+
pass
|
|
140
|
+
except Exception as e:
|
|
141
|
+
all_stop(flow_manager_args=flow_manager_args)
|
|
142
|
+
raise RuntimeError(str(e)) from e
|
|
143
|
+
finally:
|
|
144
|
+
watchdog_task.cancel()
|
|
145
|
+
try:
|
|
146
|
+
await watchdog_task
|
|
147
|
+
except asyncio.CancelledError:
|
|
148
|
+
print("WATCHDOG CANCELLED", flush=True)
|
|
149
149
|
return None
|
|
150
150
|
|
|
151
151
|
|
|
@@ -730,3 +730,35 @@ class RBAmrMoveSDK(RBBaseSDK):
|
|
|
730
730
|
)
|
|
731
731
|
|
|
732
732
|
return result["obj_payload"]
|
|
733
|
+
|
|
734
|
+
def send_multi_enqueue(self, robot_model: str, action_id: str, predecessor_id: str, from_node: str, to_node: str) -> ResponseEnqueueActionT:
|
|
735
|
+
"""
|
|
736
|
+
[멀티 edgeAction을 추가]
|
|
737
|
+
- robot_model: 로봇
|
|
738
|
+
- action_id: 액션 ID (UUID)
|
|
739
|
+
- predecessor_id: 로봇 현재 tail의 action_id
|
|
740
|
+
- from_node:
|
|
741
|
+
- to_node:
|
|
742
|
+
- flow_manager_args: FlowManagerArgs 객체
|
|
743
|
+
- ResponseMultiPathT 객체 반환
|
|
744
|
+
"""
|
|
745
|
+
# 1) RequestEnqueueActionT 객체 생성
|
|
746
|
+
req = RequestEnqueueActionT()
|
|
747
|
+
req.action_id = action_id
|
|
748
|
+
req.predecessor_id = predecessor_id
|
|
749
|
+
req.from_node = from_node
|
|
750
|
+
req.to_node = to_node
|
|
751
|
+
|
|
752
|
+
# 2) 요청 전송
|
|
753
|
+
result = self.zenoh_client.query_one(
|
|
754
|
+
f"amr/{robot_model}/multi/enqueue",
|
|
755
|
+
flatbuffer_req_obj=req,
|
|
756
|
+
flatbuffer_res_T_class=ResponseEnqueueActionT,
|
|
757
|
+
flatbuffer_buf_size=125,
|
|
758
|
+
)
|
|
759
|
+
|
|
760
|
+
# 3) 결과 처리 및 반환
|
|
761
|
+
if result["obj_payload"] is None:
|
|
762
|
+
raise RuntimeError("Call Multi Path failed: obj_payload is None")
|
|
763
|
+
|
|
764
|
+
return result["obj_payload"]
|
{rainbow_rb_sdk-0.0.9.dev29 → rainbow_rb_sdk-0.0.9.dev32}/src/rainbow/rb_sdk/amr_sdk/amr_program.py
RENAMED
|
@@ -4,8 +4,7 @@ from rainbow.rb_flat_buffers.IPC.Request_MotionResume import Request_MotionResum
|
|
|
4
4
|
from rainbow.rb_flat_buffers.IPC.Request_ProgramAfter import Request_ProgramAfterT
|
|
5
5
|
from rainbow.rb_flat_buffers.IPC.Request_ProgramBefore import Request_ProgramBeforeT
|
|
6
6
|
from rainbow.rb_flat_buffers.IPC.Response_Functions import Response_FunctionsT
|
|
7
|
-
from rainbow.
|
|
8
|
-
from rainbow.rb_zenoh.exception import ZenohNoReply, ZenohReplyError
|
|
7
|
+
from rainbow.rb_flat_buffers.SLAMNAV.ResponseCurrentVersion import ResponseCurrentVersionT
|
|
9
8
|
|
|
10
9
|
from rainbow.rb_sdk.base import RBBaseSDK
|
|
11
10
|
|
|
@@ -74,25 +73,20 @@ class RBAmrProgramSDK(RBBaseSDK):
|
|
|
74
73
|
option: 프로그램 옵션
|
|
75
74
|
"""
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
req.option = option
|
|
76
|
+
req = Request_ProgramBeforeT()
|
|
77
|
+
req.option = option
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
res = self.zenoh_client.query_one(
|
|
80
|
+
f"amr/{robot_model}/call_program_before",
|
|
81
|
+
flatbuffer_req_obj=req,
|
|
82
|
+
flatbuffer_res_T_class=Response_FunctionsT,
|
|
83
|
+
flatbuffer_buf_size=2,
|
|
84
|
+
)
|
|
87
85
|
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
if res["obj_payload"] is None:
|
|
87
|
+
raise RuntimeError("Call Program Before failed: obj_payload is None")
|
|
90
88
|
|
|
91
|
-
|
|
92
|
-
except (ZenohNoReply, ZenohReplyError) as e:
|
|
93
|
-
rb_log.error(f"Call Program Before failed: {e}")
|
|
94
|
-
except Exception as e:
|
|
95
|
-
raise e
|
|
89
|
+
return res["obj_payload"]
|
|
96
90
|
|
|
97
91
|
def call_program_after(self, robot_model: str, option: int) -> Response_FunctionsT:
|
|
98
92
|
"""
|
|
@@ -102,22 +96,35 @@ class RBAmrProgramSDK(RBBaseSDK):
|
|
|
102
96
|
robot_model: 로봇 모델명
|
|
103
97
|
option: 프로그램 옵션
|
|
104
98
|
"""
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
99
|
+
req = Request_ProgramAfterT()
|
|
100
|
+
req.option = option
|
|
101
|
+
|
|
102
|
+
res = self.zenoh_client.query_one(
|
|
103
|
+
f"amr/{robot_model}/call_program_after",
|
|
104
|
+
flatbuffer_req_obj=req,
|
|
105
|
+
flatbuffer_res_T_class=Response_FunctionsT,
|
|
106
|
+
flatbuffer_buf_size=2,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
if res["obj_payload"] is None:
|
|
110
|
+
raise RuntimeError("Call Program After failed: obj_payload is None")
|
|
111
|
+
|
|
112
|
+
return res["obj_payload"]
|
|
113
|
+
|
|
114
|
+
def get_program_version(self, robot_model: str) -> ResponseCurrentVersionT:
|
|
115
|
+
"""
|
|
116
|
+
[프로그램 버전 조회 함수]
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
robot_model: 로봇 모델명
|
|
120
|
+
"""
|
|
121
|
+
res = self.zenoh_client.query_one(
|
|
122
|
+
f"amr/{robot_model}/program/getVersion",
|
|
123
|
+
flatbuffer_res_T_class=ResponseCurrentVersionT,
|
|
124
|
+
flatbuffer_buf_size=2,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
if res["obj_payload"] is None:
|
|
128
|
+
raise RuntimeError("Get Program Version failed: obj_payload is None")
|
|
129
|
+
|
|
130
|
+
return res["obj_payload"]
|