rainbow-rb-sdk 0.0.9.dev10__tar.gz → 0.0.9.dev11__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.
Files changed (61) hide show
  1. rainbow_rb_sdk-0.0.9.dev10/README.md → rainbow_rb_sdk-0.0.9.dev11/PKG-INFO +33 -63
  2. rainbow_rb_sdk-0.0.9.dev10/src/rainbow_rb_sdk.egg-info/PKG-INFO → rainbow_rb_sdk-0.0.9.dev11/README.md +19 -77
  3. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/pyproject.toml +6 -6
  4. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11/src/rainbow_rb_sdk.egg-info}/PKG-INFO +25 -69
  5. rainbow_rb_sdk-0.0.9.dev11/src/rainbow_rb_sdk.egg-info/requires.txt +6 -0
  6. rainbow_rb_sdk-0.0.9.dev10/src/rainbow_rb_sdk.egg-info/requires.txt +0 -6
  7. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/setup.cfg +0 -0
  8. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/__init__.py +0 -0
  9. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr.py +0 -0
  10. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/__init__.py +0 -0
  11. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_accessory.py +0 -0
  12. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_capability.py +0 -0
  13. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_control.py +0 -0
  14. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_file.py +0 -0
  15. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_localization.py +0 -0
  16. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_map.py +0 -0
  17. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_move.py +0 -0
  18. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_program.py +0 -0
  19. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_setting.py +0 -0
  20. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/amr_status.py +0 -0
  21. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/amr_sdk/schema/__init__.py +0 -0
  22. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/base.py +0 -0
  23. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/base_sdk/__init__.py +0 -0
  24. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/base_sdk/base_schema.py +0 -0
  25. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate.py +0 -0
  26. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/__init__.py +0 -0
  27. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_config.py +0 -0
  28. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_get_data.py +0 -0
  29. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_io.py +0 -0
  30. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_maintenance.py +0 -0
  31. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_move.py +0 -0
  32. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_point.py +0 -0
  33. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_program.py +0 -0
  34. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_service.py +0 -0
  35. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_state.py +0 -0
  36. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/schema/__init__.py +0 -0
  37. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_config_schema.py +0 -0
  38. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_io_schema.py +0 -0
  39. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_move_schema.py +0 -0
  40. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_program_schema.py +0 -0
  41. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/program_sdk/__init__.py +0 -0
  42. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/program_sdk/client_modules.pyi +0 -0
  43. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/program_sdk/program.py +0 -0
  44. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/program_sdk/program_interface.py +0 -0
  45. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/program_sdk/test_binding.py +0 -0
  46. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1.py +0 -0
  47. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1_sdk/__init__.py +0 -0
  48. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1_sdk/base.py +0 -0
  49. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1_sdk/client.py +0 -0
  50. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1_sdk/config.py +0 -0
  51. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1_sdk/control.py +0 -0
  52. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1_sdk/exceptions.py +0 -0
  53. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/rby1_sdk/state.py +0 -0
  54. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/schema/__init__.py +0 -0
  55. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/schema/amr_schema.py +0 -0
  56. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/schema/base_schema.py +0 -0
  57. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/schema/manipulate_schema.py +0 -0
  58. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow/rb_sdk/schema/program_schema.py +0 -0
  59. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow_rb_sdk.egg-info/SOURCES.txt +0 -0
  60. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow_rb_sdk.egg-info/dependency_links.txt +0 -0
  61. {rainbow_rb_sdk-0.0.9.dev10 → rainbow_rb_sdk-0.0.9.dev11}/src/rainbow_rb_sdk.egg-info/top_level.txt +0 -0
@@ -1,3 +1,17 @@
1
+ Metadata-Version: 2.4
2
+ Name: rainbow-rb-sdk
3
+ Version: 0.0.9.dev11
4
+ Summary: Rainbow Robotics 통합 Python SDK — AMR, 매니퓰레이터, RB-Y1 휴머노이드와 Rainbow Robot Service(common) 연동
5
+ Author-email: Derek <dfd1123@rainbow-robotics.com>
6
+ Requires-Python: <3.13,>=3.12
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: rainbow-rb-utils==0.0.9.dev11
9
+ Requires-Dist: rainbow-rb-zenoh==0.0.9.dev11
10
+ Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev11
11
+ Requires-Dist: rainbow-rb-schemas==0.0.9.dev11
12
+ Requires-Dist: rainbow-rb-log==0.0.9.dev11
13
+ Requires-Dist: rby1-sdk>=0.9.1
14
+
1
15
  # rb_sdk
2
16
 
3
17
  Rainbow Robotics 통합 Python SDK. AMR · Manipulator · RB-Y1 휴머노이드 제어와 Rainbow Robot Service(common) 연동을 단일 API로 제공합니다.
@@ -17,15 +31,6 @@ Rainbow Robotics 통합 Python SDK. AMR · Manipulator · RB-Y1 휴머노이드
17
31
 
18
32
  ## 1. 설치
19
33
 
20
- ### 워크스페이스(rby2 모노레포 내부)
21
-
22
- ```bash
23
- cd /path/to/rby2/backend
24
- uv add rb_sdk --package your_package
25
- ```
26
-
27
- ### PyPI 설치
28
-
29
34
  ```bash
30
35
  pip install rb_sdk
31
36
  # RB-Y1 휴머노이드 제어가 필요하면 함께 설치
@@ -41,7 +46,7 @@ pip install rby1-sdk
41
46
  `common` 서비스와 같은 PC에서 실행되는 스크립트라면 추가 설정 없이 그대로 사용 가능합니다.
42
47
 
43
48
  ```python
44
- from rb_sdk import RBAmrSDK, RBManipulateSDK
49
+ from rainbow.rb_sdk import RBAmrSDK, RBManipulateSDK
45
50
 
46
51
  amr = RBAmrSDK()
47
52
  manipulate = RBManipulateSDK()
@@ -53,38 +58,23 @@ manipulate.move.call_move_j(
53
58
  )
54
59
  ```
55
60
 
56
- `rb_sdk`는 lazy import 지원: `from rb_sdk import ...` 한 줄로 가져옵니다.
57
-
58
61
  ---
59
62
 
60
63
  ## 3. 외부 PC에서 사용 (Remote Connect)
61
64
 
62
- 개발용 노트북, 태블릿 등 **로봇 본체와 다른 머신**에서 SDK를 사용하는 경우, 가지를 함께 해야 합니다.
63
-
64
- ### 3-1. Zenoh 메시 연결 (필수)
65
-
66
- ZenohClient가 remote common에 붙도록 환경변수 설정:
67
-
68
- ```bash
69
- export ZENOH_PEER_CONNECT_ENDPOINTS=tcp/<common_host_ip>:7447
70
- python my_script.py
71
- ```
72
-
73
- ### 3-2. common 측 peer 등록 (권장) — `sdk.connect()`
74
-
75
- 서버에서 외부 peer를 추적하고 끊김 감지가 필요하면 SDK의 `connect()`를 호출합니다.
65
+ 개발용 노트북 등 **로봇 본체와 다른 머신**에서 로봇과 통신하고 싶다면 `sdk.connect()`를 호출합니다.
76
66
 
77
67
  ```python
78
68
  import asyncio
79
- from rb_sdk import RBManipulateSDK
69
+ from rainbow.rb_sdk import RBManipulateSDK
80
70
 
81
71
  async def main():
82
72
  sdk = RBManipulateSDK()
83
73
 
84
- # common 서비스에 peer 등록 + 자동 heartbeat 시작
74
+ # 로봇(common 서비스)에 외부 peer 등록 + 자동 heartbeat 시작
85
75
  peer_id = await sdk.connect(
86
- token="<JWT 토큰>", # common 서비스 인증 토큰
87
- host="192.168.1.100", # common이 떠 있는 PC IP
76
+ token="외부 서비스 Token", # Muscat이 생성한 서비스 Token
77
+ host="192.168.1.100", # 로봇 IP
88
78
  ttl=30, # 서버 측 세션 TTL(초). heartbeat 끊기면 자동 해제
89
79
  # zenoh_port=None, # None → OS가 빈 포트 자동 배정 (충돌 없음)
90
80
  # heartbeat_interval=15.0, # 기본: ttl / 2
@@ -100,7 +90,7 @@ asyncio.run(main())
100
90
 
101
91
  #### 주요 특징
102
92
 
103
- - **로컬 IP 자동 감지**: `host` 방향의 라우팅 인터페이스 IP를 자동으로 찾아 common에 알림
93
+ - **로컬 IP 자동 감지**: `host` 방향의 라우팅 인터페이스 IP를 자동으로 찾아 로봇에 알림
104
94
  - **포트 자동 배정**: 별도 지정 없이 OS가 빈 포트를 잡아주므로 포트 충돌 없음
105
95
  - **자동 heartbeat**: 주기적으로 TTL 연장. 스크립트 종료 / 크래시 시 TTL 만료로 서버 측 정리
106
96
  - **같은 PC 자동 감지**: `host`가 localhost거나 자기 IP인 경우 `connect()`는 아무것도 하지 않고 `None` 반환 (이미 메시 안에 있음)
@@ -110,18 +100,20 @@ asyncio.run(main())
110
100
  | 인자 | 타입 | 기본 | 설명 |
111
101
  |---|---|---|---|
112
102
  | `token` | `str` | (필수) | common 서비스 JWT |
113
- | `host` | `str` | (필수) | common이 실행 중인 PC IP |
114
- | `common_port` | `int` | `8000` | common HTTP 포트 |
103
+ | `host` | `str` | (필수) | common이 실행 중인 로봇 IP |
115
104
  | `zenoh_port` | `int \| None` | `None` | 로컬 Zenoh listen 포트. `None`이면 자동 |
116
105
  | `ttl` | `int` | `30` | 서버 측 세션 TTL(초) |
117
106
  | `heartbeat_interval` | `float \| None` | `None` | heartbeat 주기. `None`이면 `ttl/2` |
107
+ | `mesh_timeout` | `float \| None` | `None` | mesh 형성 대기 최대 시간(초). `None`이면 무제한 대기 |
108
+ | `mesh_probe_timeout` | `float` | `1.0` | probe query 1회 timeout(초) |
109
+ | `mesh_probe_interval` | `float` | `0.5` | probe 재시도 간격(초) |
118
110
 
119
111
  ---
120
112
 
121
113
  ## 4. AMR SDK (`RBAmrSDK`)
122
114
 
123
115
  ```python
124
- from rb_sdk import RBAmrSDK
116
+ from rainbow.rb_sdk import RBAmrSDK
125
117
 
126
118
  sdk = RBAmrSDK()
127
119
  ```
@@ -141,7 +133,7 @@ sdk = RBAmrSDK()
141
133
  ## 5. Manipulate SDK (`RBManipulateSDK`)
142
134
 
143
135
  ```python
144
- from rb_sdk import RBManipulateSDK
136
+ from rainbow.rb_sdk import RBManipulateSDK
145
137
 
146
138
  sdk = RBManipulateSDK()
147
139
  ```
@@ -165,7 +157,7 @@ sdk = RBManipulateSDK()
165
157
  공식 `rby1-sdk` 래퍼.
166
158
 
167
159
  ```python
168
- from rb_sdk import RBRby1SDK
160
+ from rainbow.rb_sdk import RBRby1SDK
169
161
 
170
162
  sdk = RBRby1SDK(endpoint="192.168.30.1:50051", model=None, auto_connect=True)
171
163
 
@@ -178,48 +170,26 @@ sdk.control.servo_on()
178
170
  state = sdk.state.get_state()
179
171
  print(state)
180
172
 
181
- sdk.disconnect()
182
173
  ```
183
174
 
184
- > ⚠️ `RBRby1SDK.connect()` / `disconnect()`는 RB-Y1 gRPC endpoint 전용 메서드로, `RBBaseSDK.connect()`(common HTTP 등록)와 별개입니다. 자세한 차이는 클래스 docstring 참조.
185
-
186
175
  지원 메서드:
187
176
 
188
177
  - 공통: `connect()`, `disconnect()`, `whoami()`, `call(method, *args, **kwargs)`
189
178
  - 제어: `control.invoke(...)`, `control.power_on()`, `control.servo_on()`
190
179
  - 상태: `state.get_state()`
191
180
 
192
- ---
193
-
194
- ## 7. Flow Manager (PyFM) 연동
195
-
196
- 여러 SDK 메서드는 `flow_manager_args`를 받아 Step 실행 완료 시 `done()` 콜백을 호출합니다.
197
-
198
- ```python
199
- from rb_schemas.sdk import FlowManagerArgs
200
- from rb_sdk import RBManipulateSDK
201
-
202
- sdk = RBManipulateSDK()
203
-
204
- def step_func(flow_manager_args: FlowManagerArgs | None = None):
205
- sdk.move.call_move_j(
206
- robot_model="C500920",
207
- target={"tar_values": [0]*6, "tar_frame": 0, "tar_unit": 0},
208
- flow_manager_args=flow_manager_args,
209
- )
210
- ```
211
181
 
212
182
  ---
213
183
 
214
- ## 8. 주의사항
184
+ ## 7. 주의사항
215
185
 
216
186
  - `RBBaseSDK`는 프로세스 단위 싱글톤 + 공유 ZenohClient 구조입니다. 같은 프로세스에서 여러 번 `RBManipulateSDK()`를 호출해도 동일 인스턴스가 반환됩니다.
217
187
  - `RBRby1SDK`는 최초 `endpoint/model` 기준으로 세션이 공유됩니다.
218
- - 연결 대상(zenoh, rby1 endpoint, common HTTP)이 준비되지 않으면 런타임 예외가 발생합니다.
219
- - 외부 PC에서 SDK 사용 시 **방화벽이 7447/TCP(zenoh)와 8000/TCP(common HTTP)을 양방향으로 허용**해야 합니다.
188
+ - 연결 대상(zenoh, rby1 endpoint, Muscat HTTP)이 준비되지 않으면 런타임 예외가 발생합니다.
189
+ - 외부 PC에서 SDK 사용 시 **방화벽이 7447/TCP(zenoh)와 8000/TCP을 양방향으로 허용**해야 합니다.
220
190
 
221
191
  ---
222
192
 
223
- ## 9. 라이선스 / 문의
193
+ ## 8. 라이선스 / 문의
224
194
 
225
- © Rainbow Robotics. 내부 이슈/문의: [GitHub Issues](https://github.com/rainbowrobotics/rby2/issues)
195
+ © Rainbow Robotics. 내부 이슈/문의: [GitHub Issues](https://github.com/rainbow-mobile/rainbow-release-apps/issues)
@@ -1,17 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: rainbow-rb-sdk
3
- Version: 0.0.9.dev10
4
- Summary: Rainbow Robotics 통합 Python SDK — AMR, 매니퓰레이터, RB-Y1 휴머노이드와 Rainbow Robot Service(common) 연동
5
- Author-email: Derek <dfd1123@rainbow-robotics.com>
6
- Requires-Python: <3.13,>=3.12
7
- Description-Content-Type: text/markdown
8
- Requires-Dist: rainbow-rb-utils==0.0.9.dev10
9
- Requires-Dist: rainbow-rb-zenoh==0.0.9.dev10
10
- Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev10
11
- Requires-Dist: rainbow-rb-schemas==0.0.9.dev10
12
- Requires-Dist: rainbow-rb-log==0.0.9.dev10
13
- Requires-Dist: rby1-sdk>=0.9.1
14
-
15
1
  # rb_sdk
16
2
 
17
3
  Rainbow Robotics 통합 Python SDK. AMR · Manipulator · RB-Y1 휴머노이드 제어와 Rainbow Robot Service(common) 연동을 단일 API로 제공합니다.
@@ -31,15 +17,6 @@ Rainbow Robotics 통합 Python SDK. AMR · Manipulator · RB-Y1 휴머노이드
31
17
 
32
18
  ## 1. 설치
33
19
 
34
- ### 워크스페이스(rby2 모노레포 내부)
35
-
36
- ```bash
37
- cd /path/to/rby2/backend
38
- uv add rb_sdk --package your_package
39
- ```
40
-
41
- ### PyPI 설치
42
-
43
20
  ```bash
44
21
  pip install rb_sdk
45
22
  # RB-Y1 휴머노이드 제어가 필요하면 함께 설치
@@ -55,7 +32,7 @@ pip install rby1-sdk
55
32
  `common` 서비스와 같은 PC에서 실행되는 스크립트라면 추가 설정 없이 그대로 사용 가능합니다.
56
33
 
57
34
  ```python
58
- from rb_sdk import RBAmrSDK, RBManipulateSDK
35
+ from rainbow.rb_sdk import RBAmrSDK, RBManipulateSDK
59
36
 
60
37
  amr = RBAmrSDK()
61
38
  manipulate = RBManipulateSDK()
@@ -67,38 +44,23 @@ manipulate.move.call_move_j(
67
44
  )
68
45
  ```
69
46
 
70
- `rb_sdk`는 lazy import 지원: `from rb_sdk import ...` 한 줄로 가져옵니다.
71
-
72
47
  ---
73
48
 
74
49
  ## 3. 외부 PC에서 사용 (Remote Connect)
75
50
 
76
- 개발용 노트북, 태블릿 등 **로봇 본체와 다른 머신**에서 SDK를 사용하는 경우, 가지를 함께 해야 합니다.
77
-
78
- ### 3-1. Zenoh 메시 연결 (필수)
79
-
80
- ZenohClient가 remote common에 붙도록 환경변수 설정:
81
-
82
- ```bash
83
- export ZENOH_PEER_CONNECT_ENDPOINTS=tcp/<common_host_ip>:7447
84
- python my_script.py
85
- ```
86
-
87
- ### 3-2. common 측 peer 등록 (권장) — `sdk.connect()`
88
-
89
- 서버에서 외부 peer를 추적하고 끊김 감지가 필요하면 SDK의 `connect()`를 호출합니다.
51
+ 개발용 노트북 등 **로봇 본체와 다른 머신**에서 로봇과 통신하고 싶다면 `sdk.connect()`를 호출합니다.
90
52
 
91
53
  ```python
92
54
  import asyncio
93
- from rb_sdk import RBManipulateSDK
55
+ from rainbow.rb_sdk import RBManipulateSDK
94
56
 
95
57
  async def main():
96
58
  sdk = RBManipulateSDK()
97
59
 
98
- # common 서비스에 peer 등록 + 자동 heartbeat 시작
60
+ # 로봇(common 서비스)에 외부 peer 등록 + 자동 heartbeat 시작
99
61
  peer_id = await sdk.connect(
100
- token="<JWT 토큰>", # common 서비스 인증 토큰
101
- host="192.168.1.100", # common이 떠 있는 PC IP
62
+ token="외부 서비스 Token", # Muscat이 생성한 서비스 Token
63
+ host="192.168.1.100", # 로봇 IP
102
64
  ttl=30, # 서버 측 세션 TTL(초). heartbeat 끊기면 자동 해제
103
65
  # zenoh_port=None, # None → OS가 빈 포트 자동 배정 (충돌 없음)
104
66
  # heartbeat_interval=15.0, # 기본: ttl / 2
@@ -114,7 +76,7 @@ asyncio.run(main())
114
76
 
115
77
  #### 주요 특징
116
78
 
117
- - **로컬 IP 자동 감지**: `host` 방향의 라우팅 인터페이스 IP를 자동으로 찾아 common에 알림
79
+ - **로컬 IP 자동 감지**: `host` 방향의 라우팅 인터페이스 IP를 자동으로 찾아 로봇에 알림
118
80
  - **포트 자동 배정**: 별도 지정 없이 OS가 빈 포트를 잡아주므로 포트 충돌 없음
119
81
  - **자동 heartbeat**: 주기적으로 TTL 연장. 스크립트 종료 / 크래시 시 TTL 만료로 서버 측 정리
120
82
  - **같은 PC 자동 감지**: `host`가 localhost거나 자기 IP인 경우 `connect()`는 아무것도 하지 않고 `None` 반환 (이미 메시 안에 있음)
@@ -124,18 +86,20 @@ asyncio.run(main())
124
86
  | 인자 | 타입 | 기본 | 설명 |
125
87
  |---|---|---|---|
126
88
  | `token` | `str` | (필수) | common 서비스 JWT |
127
- | `host` | `str` | (필수) | common이 실행 중인 PC IP |
128
- | `common_port` | `int` | `8000` | common HTTP 포트 |
89
+ | `host` | `str` | (필수) | common이 실행 중인 로봇 IP |
129
90
  | `zenoh_port` | `int \| None` | `None` | 로컬 Zenoh listen 포트. `None`이면 자동 |
130
91
  | `ttl` | `int` | `30` | 서버 측 세션 TTL(초) |
131
92
  | `heartbeat_interval` | `float \| None` | `None` | heartbeat 주기. `None`이면 `ttl/2` |
93
+ | `mesh_timeout` | `float \| None` | `None` | mesh 형성 대기 최대 시간(초). `None`이면 무제한 대기 |
94
+ | `mesh_probe_timeout` | `float` | `1.0` | probe query 1회 timeout(초) |
95
+ | `mesh_probe_interval` | `float` | `0.5` | probe 재시도 간격(초) |
132
96
 
133
97
  ---
134
98
 
135
99
  ## 4. AMR SDK (`RBAmrSDK`)
136
100
 
137
101
  ```python
138
- from rb_sdk import RBAmrSDK
102
+ from rainbow.rb_sdk import RBAmrSDK
139
103
 
140
104
  sdk = RBAmrSDK()
141
105
  ```
@@ -155,7 +119,7 @@ sdk = RBAmrSDK()
155
119
  ## 5. Manipulate SDK (`RBManipulateSDK`)
156
120
 
157
121
  ```python
158
- from rb_sdk import RBManipulateSDK
122
+ from rainbow.rb_sdk import RBManipulateSDK
159
123
 
160
124
  sdk = RBManipulateSDK()
161
125
  ```
@@ -179,7 +143,7 @@ sdk = RBManipulateSDK()
179
143
  공식 `rby1-sdk` 래퍼.
180
144
 
181
145
  ```python
182
- from rb_sdk import RBRby1SDK
146
+ from rainbow.rb_sdk import RBRby1SDK
183
147
 
184
148
  sdk = RBRby1SDK(endpoint="192.168.30.1:50051", model=None, auto_connect=True)
185
149
 
@@ -192,48 +156,26 @@ sdk.control.servo_on()
192
156
  state = sdk.state.get_state()
193
157
  print(state)
194
158
 
195
- sdk.disconnect()
196
159
  ```
197
160
 
198
- > ⚠️ `RBRby1SDK.connect()` / `disconnect()`는 RB-Y1 gRPC endpoint 전용 메서드로, `RBBaseSDK.connect()`(common HTTP 등록)와 별개입니다. 자세한 차이는 클래스 docstring 참조.
199
-
200
161
  지원 메서드:
201
162
 
202
163
  - 공통: `connect()`, `disconnect()`, `whoami()`, `call(method, *args, **kwargs)`
203
164
  - 제어: `control.invoke(...)`, `control.power_on()`, `control.servo_on()`
204
165
  - 상태: `state.get_state()`
205
166
 
206
- ---
207
-
208
- ## 7. Flow Manager (PyFM) 연동
209
-
210
- 여러 SDK 메서드는 `flow_manager_args`를 받아 Step 실행 완료 시 `done()` 콜백을 호출합니다.
211
-
212
- ```python
213
- from rb_schemas.sdk import FlowManagerArgs
214
- from rb_sdk import RBManipulateSDK
215
-
216
- sdk = RBManipulateSDK()
217
-
218
- def step_func(flow_manager_args: FlowManagerArgs | None = None):
219
- sdk.move.call_move_j(
220
- robot_model="C500920",
221
- target={"tar_values": [0]*6, "tar_frame": 0, "tar_unit": 0},
222
- flow_manager_args=flow_manager_args,
223
- )
224
- ```
225
167
 
226
168
  ---
227
169
 
228
- ## 8. 주의사항
170
+ ## 7. 주의사항
229
171
 
230
172
  - `RBBaseSDK`는 프로세스 단위 싱글톤 + 공유 ZenohClient 구조입니다. 같은 프로세스에서 여러 번 `RBManipulateSDK()`를 호출해도 동일 인스턴스가 반환됩니다.
231
173
  - `RBRby1SDK`는 최초 `endpoint/model` 기준으로 세션이 공유됩니다.
232
- - 연결 대상(zenoh, rby1 endpoint, common HTTP)이 준비되지 않으면 런타임 예외가 발생합니다.
233
- - 외부 PC에서 SDK 사용 시 **방화벽이 7447/TCP(zenoh)와 8000/TCP(common HTTP)을 양방향으로 허용**해야 합니다.
174
+ - 연결 대상(zenoh, rby1 endpoint, Muscat HTTP)이 준비되지 않으면 런타임 예외가 발생합니다.
175
+ - 외부 PC에서 SDK 사용 시 **방화벽이 7447/TCP(zenoh)와 8000/TCP을 양방향으로 허용**해야 합니다.
234
176
 
235
177
  ---
236
178
 
237
- ## 9. 라이선스 / 문의
179
+ ## 8. 라이선스 / 문의
238
180
 
239
- © Rainbow Robotics. 내부 이슈/문의: [GitHub Issues](https://github.com/rainbowrobotics/rby2/issues)
181
+ © Rainbow Robotics. 내부 이슈/문의: [GitHub Issues](https://github.com/rainbow-mobile/rainbow-release-apps/issues)
@@ -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.dev10"
7
+ version = "0.0.9.dev11"
8
8
  requires-python = ">=3.12,<3.13"
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.dev10",
17
- "rainbow-rb-zenoh==0.0.9.dev10",
18
- "rainbow-rb-flat-buffers==0.0.9.dev10",
19
- "rainbow-rb-schemas==0.0.9.dev10",
20
- "rainbow-rb-log==0.0.9.dev10",
16
+ "rainbow-rb-utils==0.0.9.dev11",
17
+ "rainbow-rb-zenoh==0.0.9.dev11",
18
+ "rainbow-rb-flat-buffers==0.0.9.dev11",
19
+ "rainbow-rb-schemas==0.0.9.dev11",
20
+ "rainbow-rb-log==0.0.9.dev11",
21
21
  "rby1-sdk>=0.9.1",
22
22
  ]
23
23
 
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rainbow-rb-sdk
3
- Version: 0.0.9.dev10
3
+ Version: 0.0.9.dev11
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.13,>=3.12
7
7
  Description-Content-Type: text/markdown
8
- Requires-Dist: rainbow-rb-utils==0.0.9.dev10
9
- Requires-Dist: rainbow-rb-zenoh==0.0.9.dev10
10
- Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev10
11
- Requires-Dist: rainbow-rb-schemas==0.0.9.dev10
12
- Requires-Dist: rainbow-rb-log==0.0.9.dev10
8
+ Requires-Dist: rainbow-rb-utils==0.0.9.dev11
9
+ Requires-Dist: rainbow-rb-zenoh==0.0.9.dev11
10
+ Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev11
11
+ Requires-Dist: rainbow-rb-schemas==0.0.9.dev11
12
+ Requires-Dist: rainbow-rb-log==0.0.9.dev11
13
13
  Requires-Dist: rby1-sdk>=0.9.1
14
14
 
15
15
  # rb_sdk
@@ -31,15 +31,6 @@ Rainbow Robotics 통합 Python SDK. AMR · Manipulator · RB-Y1 휴머노이드
31
31
 
32
32
  ## 1. 설치
33
33
 
34
- ### 워크스페이스(rby2 모노레포 내부)
35
-
36
- ```bash
37
- cd /path/to/rby2/backend
38
- uv add rb_sdk --package your_package
39
- ```
40
-
41
- ### PyPI 설치
42
-
43
34
  ```bash
44
35
  pip install rb_sdk
45
36
  # RB-Y1 휴머노이드 제어가 필요하면 함께 설치
@@ -55,7 +46,7 @@ pip install rby1-sdk
55
46
  `common` 서비스와 같은 PC에서 실행되는 스크립트라면 추가 설정 없이 그대로 사용 가능합니다.
56
47
 
57
48
  ```python
58
- from rb_sdk import RBAmrSDK, RBManipulateSDK
49
+ from rainbow.rb_sdk import RBAmrSDK, RBManipulateSDK
59
50
 
60
51
  amr = RBAmrSDK()
61
52
  manipulate = RBManipulateSDK()
@@ -67,38 +58,23 @@ manipulate.move.call_move_j(
67
58
  )
68
59
  ```
69
60
 
70
- `rb_sdk`는 lazy import 지원: `from rb_sdk import ...` 한 줄로 가져옵니다.
71
-
72
61
  ---
73
62
 
74
63
  ## 3. 외부 PC에서 사용 (Remote Connect)
75
64
 
76
- 개발용 노트북, 태블릿 등 **로봇 본체와 다른 머신**에서 SDK를 사용하는 경우, 가지를 함께 해야 합니다.
77
-
78
- ### 3-1. Zenoh 메시 연결 (필수)
79
-
80
- ZenohClient가 remote common에 붙도록 환경변수 설정:
81
-
82
- ```bash
83
- export ZENOH_PEER_CONNECT_ENDPOINTS=tcp/<common_host_ip>:7447
84
- python my_script.py
85
- ```
86
-
87
- ### 3-2. common 측 peer 등록 (권장) — `sdk.connect()`
88
-
89
- 서버에서 외부 peer를 추적하고 끊김 감지가 필요하면 SDK의 `connect()`를 호출합니다.
65
+ 개발용 노트북 등 **로봇 본체와 다른 머신**에서 로봇과 통신하고 싶다면 `sdk.connect()`를 호출합니다.
90
66
 
91
67
  ```python
92
68
  import asyncio
93
- from rb_sdk import RBManipulateSDK
69
+ from rainbow.rb_sdk import RBManipulateSDK
94
70
 
95
71
  async def main():
96
72
  sdk = RBManipulateSDK()
97
73
 
98
- # common 서비스에 peer 등록 + 자동 heartbeat 시작
74
+ # 로봇(common 서비스)에 외부 peer 등록 + 자동 heartbeat 시작
99
75
  peer_id = await sdk.connect(
100
- token="<JWT 토큰>", # common 서비스 인증 토큰
101
- host="192.168.1.100", # common이 떠 있는 PC IP
76
+ token="외부 서비스 Token", # Muscat이 생성한 서비스 Token
77
+ host="192.168.1.100", # 로봇 IP
102
78
  ttl=30, # 서버 측 세션 TTL(초). heartbeat 끊기면 자동 해제
103
79
  # zenoh_port=None, # None → OS가 빈 포트 자동 배정 (충돌 없음)
104
80
  # heartbeat_interval=15.0, # 기본: ttl / 2
@@ -114,7 +90,7 @@ asyncio.run(main())
114
90
 
115
91
  #### 주요 특징
116
92
 
117
- - **로컬 IP 자동 감지**: `host` 방향의 라우팅 인터페이스 IP를 자동으로 찾아 common에 알림
93
+ - **로컬 IP 자동 감지**: `host` 방향의 라우팅 인터페이스 IP를 자동으로 찾아 로봇에 알림
118
94
  - **포트 자동 배정**: 별도 지정 없이 OS가 빈 포트를 잡아주므로 포트 충돌 없음
119
95
  - **자동 heartbeat**: 주기적으로 TTL 연장. 스크립트 종료 / 크래시 시 TTL 만료로 서버 측 정리
120
96
  - **같은 PC 자동 감지**: `host`가 localhost거나 자기 IP인 경우 `connect()`는 아무것도 하지 않고 `None` 반환 (이미 메시 안에 있음)
@@ -124,18 +100,20 @@ asyncio.run(main())
124
100
  | 인자 | 타입 | 기본 | 설명 |
125
101
  |---|---|---|---|
126
102
  | `token` | `str` | (필수) | common 서비스 JWT |
127
- | `host` | `str` | (필수) | common이 실행 중인 PC IP |
128
- | `common_port` | `int` | `8000` | common HTTP 포트 |
103
+ | `host` | `str` | (필수) | common이 실행 중인 로봇 IP |
129
104
  | `zenoh_port` | `int \| None` | `None` | 로컬 Zenoh listen 포트. `None`이면 자동 |
130
105
  | `ttl` | `int` | `30` | 서버 측 세션 TTL(초) |
131
106
  | `heartbeat_interval` | `float \| None` | `None` | heartbeat 주기. `None`이면 `ttl/2` |
107
+ | `mesh_timeout` | `float \| None` | `None` | mesh 형성 대기 최대 시간(초). `None`이면 무제한 대기 |
108
+ | `mesh_probe_timeout` | `float` | `1.0` | probe query 1회 timeout(초) |
109
+ | `mesh_probe_interval` | `float` | `0.5` | probe 재시도 간격(초) |
132
110
 
133
111
  ---
134
112
 
135
113
  ## 4. AMR SDK (`RBAmrSDK`)
136
114
 
137
115
  ```python
138
- from rb_sdk import RBAmrSDK
116
+ from rainbow.rb_sdk import RBAmrSDK
139
117
 
140
118
  sdk = RBAmrSDK()
141
119
  ```
@@ -155,7 +133,7 @@ sdk = RBAmrSDK()
155
133
  ## 5. Manipulate SDK (`RBManipulateSDK`)
156
134
 
157
135
  ```python
158
- from rb_sdk import RBManipulateSDK
136
+ from rainbow.rb_sdk import RBManipulateSDK
159
137
 
160
138
  sdk = RBManipulateSDK()
161
139
  ```
@@ -179,7 +157,7 @@ sdk = RBManipulateSDK()
179
157
  공식 `rby1-sdk` 래퍼.
180
158
 
181
159
  ```python
182
- from rb_sdk import RBRby1SDK
160
+ from rainbow.rb_sdk import RBRby1SDK
183
161
 
184
162
  sdk = RBRby1SDK(endpoint="192.168.30.1:50051", model=None, auto_connect=True)
185
163
 
@@ -192,48 +170,26 @@ sdk.control.servo_on()
192
170
  state = sdk.state.get_state()
193
171
  print(state)
194
172
 
195
- sdk.disconnect()
196
173
  ```
197
174
 
198
- > ⚠️ `RBRby1SDK.connect()` / `disconnect()`는 RB-Y1 gRPC endpoint 전용 메서드로, `RBBaseSDK.connect()`(common HTTP 등록)와 별개입니다. 자세한 차이는 클래스 docstring 참조.
199
-
200
175
  지원 메서드:
201
176
 
202
177
  - 공통: `connect()`, `disconnect()`, `whoami()`, `call(method, *args, **kwargs)`
203
178
  - 제어: `control.invoke(...)`, `control.power_on()`, `control.servo_on()`
204
179
  - 상태: `state.get_state()`
205
180
 
206
- ---
207
-
208
- ## 7. Flow Manager (PyFM) 연동
209
-
210
- 여러 SDK 메서드는 `flow_manager_args`를 받아 Step 실행 완료 시 `done()` 콜백을 호출합니다.
211
-
212
- ```python
213
- from rb_schemas.sdk import FlowManagerArgs
214
- from rb_sdk import RBManipulateSDK
215
-
216
- sdk = RBManipulateSDK()
217
-
218
- def step_func(flow_manager_args: FlowManagerArgs | None = None):
219
- sdk.move.call_move_j(
220
- robot_model="C500920",
221
- target={"tar_values": [0]*6, "tar_frame": 0, "tar_unit": 0},
222
- flow_manager_args=flow_manager_args,
223
- )
224
- ```
225
181
 
226
182
  ---
227
183
 
228
- ## 8. 주의사항
184
+ ## 7. 주의사항
229
185
 
230
186
  - `RBBaseSDK`는 프로세스 단위 싱글톤 + 공유 ZenohClient 구조입니다. 같은 프로세스에서 여러 번 `RBManipulateSDK()`를 호출해도 동일 인스턴스가 반환됩니다.
231
187
  - `RBRby1SDK`는 최초 `endpoint/model` 기준으로 세션이 공유됩니다.
232
- - 연결 대상(zenoh, rby1 endpoint, common HTTP)이 준비되지 않으면 런타임 예외가 발생합니다.
233
- - 외부 PC에서 SDK 사용 시 **방화벽이 7447/TCP(zenoh)와 8000/TCP(common HTTP)을 양방향으로 허용**해야 합니다.
188
+ - 연결 대상(zenoh, rby1 endpoint, Muscat HTTP)이 준비되지 않으면 런타임 예외가 발생합니다.
189
+ - 외부 PC에서 SDK 사용 시 **방화벽이 7447/TCP(zenoh)와 8000/TCP을 양방향으로 허용**해야 합니다.
234
190
 
235
191
  ---
236
192
 
237
- ## 9. 라이선스 / 문의
193
+ ## 8. 라이선스 / 문의
238
194
 
239
- © Rainbow Robotics. 내부 이슈/문의: [GitHub Issues](https://github.com/rainbowrobotics/rby2/issues)
195
+ © Rainbow Robotics. 내부 이슈/문의: [GitHub Issues](https://github.com/rainbow-mobile/rainbow-release-apps/issues)
@@ -0,0 +1,6 @@
1
+ rainbow-rb-utils==0.0.9.dev11
2
+ rainbow-rb-zenoh==0.0.9.dev11
3
+ rainbow-rb-flat-buffers==0.0.9.dev11
4
+ rainbow-rb-schemas==0.0.9.dev11
5
+ rainbow-rb-log==0.0.9.dev11
6
+ rby1-sdk>=0.9.1
@@ -1,6 +0,0 @@
1
- rainbow-rb-utils==0.0.9.dev10
2
- rainbow-rb-zenoh==0.0.9.dev10
3
- rainbow-rb-flat-buffers==0.0.9.dev10
4
- rainbow-rb-schemas==0.0.9.dev10
5
- rainbow-rb-log==0.0.9.dev10
6
- rby1-sdk>=0.9.1