rainbow-rb-sdk 0.0.9.dev28__tar.gz → 0.0.9.dev31__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.dev28 → rainbow_rb_sdk-0.0.9.dev31}/PKG-INFO +6 -6
  2. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/pyproject.toml +6 -6
  3. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/base.py +24 -20
  4. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_move.py +178 -0
  5. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow_rb_sdk.egg-info/PKG-INFO +6 -6
  6. rainbow_rb_sdk-0.0.9.dev31/src/rainbow_rb_sdk.egg-info/requires.txt +6 -0
  7. rainbow_rb_sdk-0.0.9.dev28/src/rainbow_rb_sdk.egg-info/requires.txt +0 -6
  8. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/README.md +0 -0
  9. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/setup.cfg +0 -0
  10. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/__init__.py +0 -0
  11. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr.py +0 -0
  12. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/__init__.py +0 -0
  13. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_accessory.py +0 -0
  14. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_capability.py +0 -0
  15. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_control.py +0 -0
  16. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_file.py +0 -0
  17. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_localization.py +0 -0
  18. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_map.py +0 -0
  19. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_move.py +0 -0
  20. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_program.py +0 -0
  21. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_setting.py +0 -0
  22. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/amr_status.py +0 -0
  23. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/amr_sdk/schema/__init__.py +0 -0
  24. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/base_sdk/__init__.py +0 -0
  25. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/base_sdk/base_schema.py +0 -0
  26. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate.py +0 -0
  27. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/__init__.py +0 -0
  28. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_config.py +0 -0
  29. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_get_data.py +0 -0
  30. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_io.py +0 -0
  31. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_maintenance.py +0 -0
  32. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_point.py +0 -0
  33. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_program.py +0 -0
  34. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_service.py +0 -0
  35. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_state.py +0 -0
  36. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/schema/__init__.py +0 -0
  37. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_config_schema.py +0 -0
  38. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_io_schema.py +0 -0
  39. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_move_schema.py +0 -0
  40. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_program_schema.py +0 -0
  41. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/program_sdk/__init__.py +0 -0
  42. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/program_sdk/client_modules.pyi +0 -0
  43. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/program_sdk/program.py +0 -0
  44. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/program_sdk/program_interface.py +0 -0
  45. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/program_sdk/test_binding.py +0 -0
  46. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1.py +0 -0
  47. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1_sdk/__init__.py +0 -0
  48. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1_sdk/base.py +0 -0
  49. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1_sdk/client.py +0 -0
  50. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1_sdk/config.py +0 -0
  51. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1_sdk/control.py +0 -0
  52. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1_sdk/exceptions.py +0 -0
  53. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/rby1_sdk/state.py +0 -0
  54. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/schema/__init__.py +0 -0
  55. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/schema/amr_schema.py +0 -0
  56. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/schema/base_schema.py +0 -0
  57. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/schema/manipulate_schema.py +0 -0
  58. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow/rb_sdk/schema/program_schema.py +0 -0
  59. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow_rb_sdk.egg-info/SOURCES.txt +0 -0
  60. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/src/rainbow_rb_sdk.egg-info/dependency_links.txt +0 -0
  61. {rainbow_rb_sdk-0.0.9.dev28 → rainbow_rb_sdk-0.0.9.dev31}/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.dev28
3
+ Version: 0.0.9.dev31
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.dev28
9
- Requires-Dist: rainbow-rb-zenoh==0.0.9.dev28
10
- Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev28
11
- Requires-Dist: rainbow-rb-schemas==0.0.9.dev28
12
- Requires-Dist: rainbow-rb-log==0.0.9.dev28
8
+ Requires-Dist: rainbow-rb-utils==0.0.9.dev31
9
+ Requires-Dist: rainbow-rb-zenoh==0.0.9.dev31
10
+ Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev31
11
+ Requires-Dist: rainbow-rb-schemas==0.0.9.dev31
12
+ Requires-Dist: rainbow-rb-log==0.0.9.dev31
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.dev28"
7
+ version = "0.0.9.dev31"
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.dev28",
17
- "rainbow-rb-zenoh==0.0.9.dev28",
18
- "rainbow-rb-flat-buffers==0.0.9.dev28",
19
- "rainbow-rb-schemas==0.0.9.dev28",
20
- "rainbow-rb-log==0.0.9.dev28",
16
+ "rainbow-rb-utils==0.0.9.dev31",
17
+ "rainbow-rb-zenoh==0.0.9.dev31",
18
+ "rainbow-rb-flat-buffers==0.0.9.dev31",
19
+ "rainbow-rb-schemas==0.0.9.dev31",
20
+ "rainbow-rb-log==0.0.9.dev31",
21
21
  "rby1-sdk>=0.9.1",
22
22
  ]
23
23
 
@@ -307,7 +307,8 @@ class RBBaseSDK:
307
307
  self._peer_id: str | None = None
308
308
  self._peer_common_url: str | None = None
309
309
  self._peer_token: str | None = None
310
- self._heartbeat_task: asyncio.Task | None = None
310
+ self._heartbeat_task: threading.Thread | None = None
311
+ self._heartbeat_stop: threading.Event = threading.Event()
311
312
 
312
313
  self._initialized = True
313
314
 
@@ -680,9 +681,16 @@ class RBBaseSDK:
680
681
  self._peer_token = token
681
682
 
682
683
  interval = heartbeat if heartbeat is not None else max(1.0, ttl / 2)
683
- self._heartbeat_task = asyncio.create_task(
684
- self._heartbeat_loop(peer_id, ttl=ttl, interval=interval)
684
+ self._heartbeat_stop = threading.Event()
685
+ hb_thread = threading.Thread(
686
+ target=self._heartbeat_loop,
687
+ args=(peer_id,),
688
+ kwargs={"ttl": ttl, "interval": interval},
689
+ daemon=True,
690
+ name=f"sdk-heartbeat-{peer_id[:8]}",
685
691
  )
692
+ hb_thread.start()
693
+ self._heartbeat_task = hb_thread
686
694
 
687
695
  try:
688
696
  await self._wait_for_zenoh_echo(
@@ -693,10 +701,7 @@ class RBBaseSDK:
693
701
  interval=mesh_probe_interval,
694
702
  )
695
703
  except BaseException:
696
- if self._heartbeat_task and not self._heartbeat_task.done():
697
- self._heartbeat_task.cancel()
698
- with contextlib.suppress(asyncio.CancelledError):
699
- await self._heartbeat_task
704
+ self._heartbeat_stop.set()
700
705
  self._heartbeat_task = None
701
706
  self._peer_id = None
702
707
  self._peer_common_url = None
@@ -720,11 +725,11 @@ class RBBaseSDK:
720
725
  if peer_id is None:
721
726
  return False
722
727
 
723
- # heartbeat 먼저 중단
724
- if self._heartbeat_task and not self._heartbeat_task.done():
725
- self._heartbeat_task.cancel()
726
- with contextlib.suppress(asyncio.CancelledError):
727
- await self._heartbeat_task
728
+ # heartbeat 스레드 중단
729
+ if hasattr(self, "_heartbeat_stop"):
730
+ self._heartbeat_stop.set()
731
+ if self._heartbeat_task and self._heartbeat_task.is_alive():
732
+ self._heartbeat_task.join(timeout=2.0)
728
733
  self._heartbeat_task = None
729
734
 
730
735
  url = self._peer_common_url
@@ -757,16 +762,15 @@ class RBBaseSDK:
757
762
 
758
763
  return True
759
764
 
760
- async def _heartbeat_loop(self, peer_id: str, *, ttl: int, interval: float) -> None:
761
- """common에 주기적으로 heartbeat를 전송해 브리지 세션의 TTL을 연장한다."""
762
- while True:
763
- await asyncio.sleep(interval)
765
+ def _heartbeat_loop(self, peer_id: str, *, ttl: int, interval: float) -> None:
766
+ """별도 스레드에서 heartbeat를 전송한다. asyncio 이벤트 루프와 무관하게 동작."""
767
+ stop: threading.Event = getattr(self, "_heartbeat_stop", threading.Event())
768
+ while not stop.wait(timeout=interval):
764
769
  if self._peer_common_url is None or self._peer_token is None:
765
770
  break
766
771
  headers = {"Authorization": f"Bearer {self._peer_token}"}
767
772
  try:
768
- resp_data = await asyncio.to_thread(
769
- self._http_json,
773
+ resp_data = self._http_json(
770
774
  "POST",
771
775
  f"{self._peer_common_url}/zenoh/peer/{peer_id}/heartbeat",
772
776
  {"ttl": ttl},
@@ -775,8 +779,8 @@ class RBBaseSDK:
775
779
  )
776
780
  if not resp_data.get("ok"):
777
781
  print(f"[SDK] heartbeat rejected for peer {peer_id}, closing session", flush=True)
778
- self._heartbeat_task = None # 자기 자신이므로 cancel/await 스킵
779
- await self.disconnect()
782
+ self._heartbeat_task = None # 자기 자신이므로 join 스킵
783
+ self._run_coro_blocking(self.disconnect(), timeout=5)
780
784
  return
781
785
  except Exception as e:
782
786
  print(f"[SDK] heartbeat error for peer {peer_id}: {e}", flush=True)
@@ -25,6 +25,7 @@ from rainbow.rb_flat_buffers.IPC.Request_Move_SmoothJogL import Request_Move_Smo
25
25
  from rainbow.rb_flat_buffers.IPC.Request_Move_SmoothJogStop import Request_Move_SmoothJogStopT
26
26
  from rainbow.rb_flat_buffers.IPC.Request_Move_TickJogJ import Request_Move_TickJogJT
27
27
  from rainbow.rb_flat_buffers.IPC.Request_Move_TickJogL import Request_Move_TickJogLT
28
+ from rainbow.rb_flat_buffers.IPC.Request_Move_Wait import Request_Move_WaitT
28
29
  from rainbow.rb_flat_buffers.IPC.Request_Move_XB_ADD import Request_Move_XB_ADDT
29
30
  from rainbow.rb_flat_buffers.IPC.Request_Move_XB_CLR import Request_Move_XB_CLRT
30
31
  from rainbow.rb_flat_buffers.IPC.Request_Move_XB_RUN import Request_Move_XB_RUNT
@@ -54,10 +55,13 @@ from rainbow.rb_flat_buffers.IPC.Request_Wrapper_ArcSensing_On import Request_Wr
54
55
  from rainbow.rb_flat_buffers.IPC.Request_Wrapper_Conveyor_Off import Request_Wrapper_Conveyor_OffT
55
56
  from rainbow.rb_flat_buffers.IPC.Request_Wrapper_Conveyor_On import Request_Wrapper_Conveyor_OnT
56
57
  from rainbow.rb_flat_buffers.IPC.Request_Wrapper_Conveyor_Speed import Request_Wrapper_Conveyor_SpeedT
58
+ from rainbow.rb_flat_buffers.IPC.Request_Wrapper_ServoL_Off import Request_Wrapper_ServoL_OffT
59
+ from rainbow.rb_flat_buffers.IPC.Request_Wrapper_ServoL_On import Request_Wrapper_ServoL_OnT
57
60
  from rainbow.rb_flat_buffers.IPC.Request_Wrapper_TcpWeave_Off import Request_Wrapper_TcpWeave_OffT
58
61
  from rainbow.rb_flat_buffers.IPC.Request_Wrapper_TcpWeave_On import Request_Wrapper_TcpWeave_OnT
59
62
  from rainbow.rb_flat_buffers.IPC.Response_Functions import Response_FunctionsT
60
63
  from rainbow.rb_flat_buffers.IPC.State_Core import State_Core
64
+ from rainbow.rb_schemas.fbs_models.manipulate.v1.common_struct_models import MoveInput_TargetPD
61
65
  from rainbow.rb_schemas.sdk import FlowManagerArgs
62
66
  from rainbow.rb_utils.flow_manager import eval_value
63
67
  from rainbow.rb_utils.manipulate import validate_single_return_value
@@ -2634,3 +2638,177 @@ class RBManipulateMoveSDK(RBBaseSDK):
2634
2638
 
2635
2639
  if flow_manager_args is not None:
2636
2640
  flow_manager_args.done()
2641
+
2642
+ def call_wrapper_servo_l_on(
2643
+ self,
2644
+ robot_model: str,
2645
+ target: MoveInput_TargetPD,
2646
+ time_gap: float,
2647
+ filter: float,
2648
+ flow_manager_args: FlowManagerArgs | None = None,
2649
+ ) -> Response_FunctionsT:
2650
+ """
2651
+ [Wrapper ServoL On 호출 함수]
2652
+ Args:
2653
+ robot_model: 로봇 모델명
2654
+ target: 목표 위치 및 프레임 정보
2655
+ time_gap: 타임갭 값 (초)
2656
+ filter: 필터 값 (0~1 사이)
2657
+ flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
2658
+ """
2659
+ req = Request_Wrapper_ServoL_OnT()
2660
+ req.target = MoveInput_TargetT()
2661
+ req.target.tarValues = target.get("tar_values")
2662
+ req.target.tarFrame = target.get("tar_frame", 0)
2663
+ req.target.tarUnit = target.get("tar_unit", 0)
2664
+ req.filter = filter
2665
+ req.timeGap = time_gap
2666
+
2667
+ res = self.zenoh_client.query_one(
2668
+ f"{robot_model}/call_wrapper_servo_l_on",
2669
+ flatbuffer_req_obj=req,
2670
+ flatbuffer_res_T_class=Response_FunctionsT,
2671
+ flatbuffer_buf_size=8,
2672
+ timeout=15,
2673
+ )
2674
+
2675
+ if res["obj_payload"] is None:
2676
+ raise RuntimeError("Wrapper ServoL On: obj_payload is None")
2677
+
2678
+ self.manipulate_return_value(
2679
+ "call_wrapper_servo_l_on", res["obj_payload"], flow_manager_args
2680
+ )
2681
+
2682
+ if flow_manager_args is not None:
2683
+ flow_manager_args.done()
2684
+
2685
+ return res["obj_payload"]
2686
+
2687
+ def call_wrapper_servo_l_off(
2688
+ self,
2689
+ robot_model: str,
2690
+ flow_manager_args: FlowManagerArgs | None = None,
2691
+ ) -> Response_FunctionsT:
2692
+ """
2693
+ [Wrapper ServoL Off 호출 함수]
2694
+ Args:
2695
+ robot_model: 로봇 모델명
2696
+ flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
2697
+ """
2698
+ req = Request_Wrapper_ServoL_OffT()
2699
+
2700
+ res = self.zenoh_client.query_one(
2701
+ f"{robot_model}/call_wrapper_servo_l_off",
2702
+ flatbuffer_req_obj=req,
2703
+ flatbuffer_res_T_class=Response_FunctionsT,
2704
+ flatbuffer_buf_size=8,
2705
+ timeout=15,
2706
+ )
2707
+
2708
+ if res["obj_payload"] is None:
2709
+ raise RuntimeError("Wrapper ServoL Off: obj_payload is None")
2710
+
2711
+ self.manipulate_return_value(
2712
+ "call_wrapper_servo_l_off", res["obj_payload"], flow_manager_args
2713
+ )
2714
+
2715
+ if flow_manager_args is not None:
2716
+ flow_manager_args.done()
2717
+
2718
+ return res["obj_payload"]
2719
+
2720
+ def pub_wrapper_servo_l_on(
2721
+ self,
2722
+ robot_model: str,
2723
+ target: MoveInput_TargetPD,
2724
+ time_gap: float,
2725
+ filter: float,
2726
+ flow_manager_args: FlowManagerArgs | None = None,
2727
+ ):
2728
+ """
2729
+ [Wrapper ServoL On Publish 함수]
2730
+ Args:
2731
+ robot_model: 로봇 모델명
2732
+ target: 목표 위치 및 프레임 정보
2733
+ time_gap: 타임갭 값 (초)
2734
+ filter: 필터 값 (0~1 사이)
2735
+ flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
2736
+ """
2737
+ req = Request_Wrapper_ServoL_OnT()
2738
+ req.target = MoveInput_TargetT()
2739
+ req.target.tarValues = target.get("tar_values")
2740
+ req.target.tarFrame = target.get("tar_frame", 0)
2741
+ req.target.tarUnit = target.get("tar_unit", 0)
2742
+ req.filter = filter
2743
+ req.timeGap = time_gap
2744
+
2745
+ self.zenoh_client.publish(
2746
+ f"{robot_model}/pub_wrapper_servo_l_on",
2747
+ flatbuffer_req_obj=req,
2748
+ flatbuffer_buf_size=80,
2749
+ congestion_control=CongestionControl.DROP,
2750
+ priority=Priority.REAL_TIME,
2751
+ express=True,
2752
+ )
2753
+
2754
+ if flow_manager_args is not None:
2755
+ flow_manager_args.done()
2756
+
2757
+ def pub_wrapper_servo_l_off(
2758
+ self,
2759
+ robot_model: str,
2760
+ flow_manager_args: FlowManagerArgs | None = None,
2761
+ ):
2762
+ """
2763
+ [Wrapper ServoL Off Publish 함수]
2764
+ Args:
2765
+ robot_model: 로봇 모델명
2766
+ flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
2767
+ """
2768
+ req = Request_Wrapper_ServoL_OffT()
2769
+
2770
+ self.zenoh_client.publish(
2771
+ f"{robot_model}/pub_wrapper_servo_l_off",
2772
+ flatbuffer_req_obj=req,
2773
+ flatbuffer_buf_size=80,
2774
+ congestion_control=CongestionControl.DROP,
2775
+ priority=Priority.REAL_TIME,
2776
+ express=True,
2777
+ )
2778
+
2779
+ if flow_manager_args is not None:
2780
+ flow_manager_args.done()
2781
+
2782
+ def call_move_wait(
2783
+ self,
2784
+ robot_model: str,
2785
+ timeout_sec: float,
2786
+ flow_manager_args: FlowManagerArgs | None = None,
2787
+ ) -> Response_FunctionsT:
2788
+ """
2789
+ [Move Wait 호출 함수]
2790
+ Args:
2791
+ robot_model: 로봇 모델명
2792
+ timeout_sec: 타임아웃 시간 (초) : -1 는 무한대기
2793
+ flow_manager_args: RB PFM을 쓸때 전달된 Flow Manager 인자 (done 콜백 등)
2794
+ """
2795
+ req = Request_Move_WaitT()
2796
+ req.timeoutSec = timeout_sec
2797
+
2798
+ res = self.zenoh_client.query_one(
2799
+ f"{robot_model}/call_move_wait",
2800
+ flatbuffer_req_obj=req,
2801
+ flatbuffer_res_T_class=Response_FunctionsT,
2802
+ flatbuffer_buf_size=8,
2803
+ timeout=timeout_sec + 3 if timeout_sec > 0 else None,
2804
+ )
2805
+
2806
+ if res["obj_payload"] is None:
2807
+ raise RuntimeError("Move Wait: obj_payload is None")
2808
+
2809
+ self.manipulate_return_value("call_move_wait", res["obj_payload"], flow_manager_args)
2810
+
2811
+ if flow_manager_args is not None:
2812
+ flow_manager_args.done()
2813
+
2814
+ return res["obj_payload"]
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rainbow-rb-sdk
3
- Version: 0.0.9.dev28
3
+ Version: 0.0.9.dev31
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.dev28
9
- Requires-Dist: rainbow-rb-zenoh==0.0.9.dev28
10
- Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev28
11
- Requires-Dist: rainbow-rb-schemas==0.0.9.dev28
12
- Requires-Dist: rainbow-rb-log==0.0.9.dev28
8
+ Requires-Dist: rainbow-rb-utils==0.0.9.dev31
9
+ Requires-Dist: rainbow-rb-zenoh==0.0.9.dev31
10
+ Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev31
11
+ Requires-Dist: rainbow-rb-schemas==0.0.9.dev31
12
+ Requires-Dist: rainbow-rb-log==0.0.9.dev31
13
13
  Requires-Dist: rby1-sdk>=0.9.1
14
14
 
15
15
  # rb_sdk
@@ -0,0 +1,6 @@
1
+ rainbow-rb-utils==0.0.9.dev31
2
+ rainbow-rb-zenoh==0.0.9.dev31
3
+ rainbow-rb-flat-buffers==0.0.9.dev31
4
+ rainbow-rb-schemas==0.0.9.dev31
5
+ rainbow-rb-log==0.0.9.dev31
6
+ rby1-sdk>=0.9.1
@@ -1,6 +0,0 @@
1
- rainbow-rb-utils==0.0.9.dev28
2
- rainbow-rb-zenoh==0.0.9.dev28
3
- rainbow-rb-flat-buffers==0.0.9.dev28
4
- rainbow-rb-schemas==0.0.9.dev28
5
- rainbow-rb-log==0.0.9.dev28
6
- rby1-sdk>=0.9.1