hex-zmq-servers 0.3.3__py3-none-any.whl → 0.3.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. hex_zmq_servers/__init__.py +5 -3
  2. hex_zmq_servers/cam/berxel/cam_berxel.py +8 -10
  3. hex_zmq_servers/cam/berxel/cam_berxel_cli.py +1 -0
  4. hex_zmq_servers/cam/cam_base.py +40 -10
  5. hex_zmq_servers/cam/dummy/cam_dummy.py +7 -7
  6. hex_zmq_servers/cam/dummy/cam_dummy_cli.py +1 -0
  7. hex_zmq_servers/cam/realsense/cam_realsense.py +9 -9
  8. hex_zmq_servers/cam/realsense/cam_realsense_cli.py +1 -0
  9. hex_zmq_servers/cam/rgb/cam_rgb.py +33 -7
  10. hex_zmq_servers/cam/rgb/cam_rgb_cli.py +11 -0
  11. hex_zmq_servers/config/cam_rgb.json +8 -0
  12. hex_zmq_servers/config/mujoco_archer_y6.json +1 -1
  13. hex_zmq_servers/config/mujoco_e3_desktop.json +1 -1
  14. hex_zmq_servers/config/robot_hexarm.json +1 -1
  15. hex_zmq_servers/device_base.py +3 -2
  16. hex_zmq_servers/mujoco/archer_y6/model/scene.xml +1 -1
  17. hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py +28 -22
  18. hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py +42 -0
  19. hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py +16 -14
  20. hex_zmq_servers/mujoco/e3_desktop/model/scene.xml +1 -1
  21. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py +50 -40
  22. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py +148 -33
  23. hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py +39 -35
  24. hex_zmq_servers/mujoco/mujoco_base.py +101 -64
  25. hex_zmq_servers/robot/dummy/robot_dummy.py +11 -7
  26. hex_zmq_servers/robot/dummy/robot_dummy_cli.py +1 -0
  27. hex_zmq_servers/robot/gello/robot_gello.py +11 -7
  28. hex_zmq_servers/robot/gello/robot_gello_cli.py +1 -0
  29. hex_zmq_servers/robot/hexarm/robot_hexarm.py +56 -22
  30. hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py +1 -0
  31. hex_zmq_servers/robot/robot_base.py +40 -10
  32. hex_zmq_servers/zmq_base.py +92 -31
  33. {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/METADATA +1 -1
  34. {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/RECORD +37 -37
  35. {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/WHEEL +0 -0
  36. {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/licenses/LICENSE +0 -0
  37. {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/top_level.txt +0 -0
@@ -8,12 +8,13 @@
8
8
 
9
9
  import threading
10
10
  import numpy as np
11
+ from collections import deque
11
12
  from abc import abstractmethod
12
13
 
13
14
  from ..device_base import HexDeviceBase
14
15
  from ..zmq_base import (
15
16
  hex_zmq_ts_now,
16
- HexSafeValue,
17
+ HexRate,
17
18
  HexZMQClientBase,
18
19
  HexZMQServerBase,
19
20
  )
@@ -82,7 +83,7 @@ class HexRobotBase(HexDeviceBase):
82
83
  return normed_rads
83
84
 
84
85
  @abstractmethod
85
- def work_loop(self, hex_values: list[HexSafeValue | threading.Event]):
86
+ def work_loop(self, hex_queues: list[deque | threading.Event]):
86
87
  raise NotImplementedError(
87
88
  "`work_loop` should be implemented by the child class")
88
89
 
@@ -98,6 +99,8 @@ class HexRobotClientBase(HexZMQClientBase):
98
99
  HexZMQClientBase.__init__(self, net_config)
99
100
  self._states_seq = 0
100
101
  self._cmds_seq = 0
102
+ self._states_queue = deque(maxlen=10)
103
+ self._cmds_queue = deque(maxlen=10)
101
104
 
102
105
  def __del__(self):
103
106
  HexZMQClientBase.__del__(self)
@@ -114,7 +117,17 @@ class HexRobotClientBase(HexZMQClientBase):
114
117
  _, limits = self.request({"cmd": "get_limits"})
115
118
  return limits
116
119
 
117
- def get_states(self):
120
+ def get_states(self, newest: bool = False):
121
+ try:
122
+ return self._states_queue.popleft(
123
+ ) if not newest else self._states_queue[-1]
124
+ except IndexError:
125
+ return None, None
126
+
127
+ def set_cmds(self, cmds: np.ndarray):
128
+ self._cmds_queue.append(cmds)
129
+
130
+ def _get_states_inner(self):
118
131
  hdr, states = self.request({
119
132
  "cmd":
120
133
  "get_states",
@@ -134,7 +147,7 @@ class HexRobotClientBase(HexZMQClientBase):
134
147
  print(f"\033[91mget_states failed: {e}\033[0m")
135
148
  return None, None
136
149
 
137
- def set_cmds(self, cmds: np.ndarray) -> bool:
150
+ def _set_cmds_inner(self, cmds: np.ndarray) -> bool:
138
151
  hdr, _ = self.request(
139
152
  {
140
153
  "cmd": "set_cmds",
@@ -158,14 +171,29 @@ class HexRobotClientBase(HexZMQClientBase):
158
171
  print(f"\033[91mset_cmds failed: {e}\033[0m")
159
172
  return False
160
173
 
174
+ def _recv_loop(self):
175
+ rate = HexRate(2000)
176
+ while self._recv_flag:
177
+ hdr, states = self._get_states_inner()
178
+ if hdr is not None:
179
+ self._states_queue.append((hdr, states))
180
+
181
+ try:
182
+ cmds = self._cmds_queue.popleft()
183
+ _ = self._set_cmds_inner(cmds)
184
+ except IndexError:
185
+ pass
186
+
187
+ rate.sleep()
188
+
161
189
 
162
190
  class HexRobotServerBase(HexZMQServerBase):
163
191
 
164
192
  def __init__(self, net_config: dict = NET_CONFIG):
165
193
  HexZMQServerBase.__init__(self, net_config)
166
194
  self._device: HexDeviceBase = None
167
- self._states_value = HexSafeValue()
168
- self._cmds_value = HexSafeValue()
195
+ self._states_queue = deque(maxlen=10)
196
+ self._cmds_queue = deque(maxlen=10)
169
197
  self._cmds_seq = -1
170
198
  self._seq_clear_flag = False
171
199
 
@@ -176,8 +204,8 @@ class HexRobotServerBase(HexZMQServerBase):
176
204
  def work_loop(self):
177
205
  try:
178
206
  self._device.work_loop([
179
- self._states_value,
180
- self._cmds_value,
207
+ self._states_queue,
208
+ self._cmds_queue,
181
209
  self._stop_event,
182
210
  ])
183
211
  finally:
@@ -195,7 +223,9 @@ class HexRobotServerBase(HexZMQServerBase):
195
223
  return {"cmd": f"{recv_hdr['cmd']}_failed"}, None
196
224
 
197
225
  try:
198
- ts, count, states = self._states_value.get()
226
+ ts, count, states = self._states_queue.popleft()
227
+ except IndexError:
228
+ return {"cmd": f"{recv_hdr['cmd']}_failed"}, None
199
229
  except Exception as e:
200
230
  print(f"\033[91m{recv_hdr['cmd']} failed: {e}\033[0m")
201
231
  return {"cmd": f"{recv_hdr['cmd']}_failed"}, None
@@ -221,7 +251,7 @@ class HexRobotServerBase(HexZMQServerBase):
221
251
  delta = (seq - self._cmds_seq) % self._max_seq_num
222
252
  if delta >= 0 and delta < 1e6:
223
253
  self._cmds_seq = seq
224
- self._cmds_value.set((recv_hdr["ts"], seq, recv_buf))
254
+ self._cmds_queue.append((recv_hdr["ts"], seq, recv_buf))
225
255
  return self.no_ts_hdr(recv_hdr, True), None
226
256
  else:
227
257
  return self.no_ts_hdr(recv_hdr, False), None
@@ -6,11 +6,10 @@
6
6
  # Date : 2025-09-12
7
7
  ################################################################
8
8
 
9
- import os, signal
10
- import time
11
- import zmq
9
+ import os, signal, json
10
+ import time, ctypes, ctypes.util
12
11
  import threading
13
- import json
12
+ import zmq
14
13
  import numpy as np
15
14
  from abc import ABC, abstractmethod
16
15
 
@@ -21,14 +20,73 @@ MAX_SEQ_NUM = int(1e12)
21
20
  ################################################################
22
21
 
23
22
 
24
- def hex_zmq_ts_now() -> dict:
25
- t_ns = time.time_ns()
23
+ class SingletonMeta(type):
24
+ _instances = {}
25
+
26
+ def __call__(cls, *args, **kwargs):
27
+ if cls not in cls._instances:
28
+ cls._instances[cls] = super().__call__(*args, **kwargs)
29
+ return cls._instances[cls]
30
+
31
+
32
+ class HexTimeManager(metaclass=SingletonMeta):
33
+
34
+ class timespec(ctypes.Structure):
35
+ _fields_ = [("tv_sec", ctypes.c_long), ("tv_nsec", ctypes.c_long)]
36
+
37
+ def __init__(self):
38
+ self.__use_ptp = False
39
+ ptp_path = os.getenv("HEX_PTP_CLOCK", None)
40
+ if ptp_path is not None:
41
+ self.__fd = os.open(ptp_path, os.O_RDONLY | os.O_CLOEXEC)
42
+ self.__clock_id = ((~self.__fd) << 3) | 3
43
+ self.__libc = ctypes.CDLL(
44
+ ctypes.util.find_library("c"),
45
+ use_errno=True,
46
+ )
47
+ self.__use_ptp = True
48
+ print(f"Using PTP clock from {ptp_path}")
49
+ else:
50
+ print("Using system clock")
51
+
52
+ def __del__(self):
53
+ if self.__use_ptp:
54
+ os.close(self.__fd)
55
+
56
+ def get_now_ns(self) -> int:
57
+ if self.__use_ptp:
58
+ ts = self.timespec()
59
+ if self.__libc.clock_gettime(self.__clock_id,
60
+ ctypes.byref(ts)) != 0:
61
+ err = ctypes.get_errno()
62
+ raise OSError(err, os.strerror(err))
63
+ return ts.tv_sec * 1_000_000_000 + ts.tv_nsec
64
+ else:
65
+ return time.perf_counter_ns()
66
+
67
+
68
+ _HEX_TIME_MANAGER = HexTimeManager()
69
+
70
+
71
+ def hex_zmq_ts_to_ns(ts: dict) -> int:
72
+ return ts['s'] * 1_000_000_000 + ts['ns']
73
+
74
+
75
+ def ns_to_hex_zmq_ts(ns: int) -> dict:
26
76
  return {
27
- "s": t_ns // 1_000_000_000,
28
- "ns": t_ns % 1_000_000_000,
77
+ "s": ns // 1_000_000_000,
78
+ "ns": ns % 1_000_000_000,
29
79
  }
30
80
 
31
81
 
82
+ def hex_ns_now() -> int:
83
+ return _HEX_TIME_MANAGER.get_now_ns()
84
+
85
+
86
+ def hex_zmq_ts_now() -> dict:
87
+ return ns_to_hex_zmq_ts(hex_ns_now())
88
+
89
+
32
90
  def hex_zmq_ts_delta_ms(curr_ts, hdr_ts) -> float:
33
91
  try:
34
92
  return (curr_ts['s'] - hdr_ts['s']) * 1_000 + (
@@ -52,7 +110,7 @@ class HexRate:
52
110
 
53
111
  @staticmethod
54
112
  def __now_ns() -> int:
55
- return time.perf_counter_ns()
113
+ return hex_ns_now()
56
114
 
57
115
  def reset(self):
58
116
  self.__next_ns = self.__now_ns() + self.__period_ns
@@ -85,28 +143,6 @@ class HexRate:
85
143
  # ZMQ Related
86
144
  ################################################################
87
145
 
88
-
89
- class HexSafeValue:
90
-
91
- def __init__(self):
92
- self.__value = None
93
- self.__ready = threading.Event()
94
- self.__lock = threading.Lock()
95
-
96
- def set(self, value):
97
- with self.__lock:
98
- self.__value = value
99
- self.__ready.set()
100
-
101
- def get(self, timeout_s=1.0):
102
- if (not self.__ready.is_set()) and timeout_s > 0.0:
103
- print(f"no value yet, waiting for {timeout_s}s")
104
- self.__ready.wait(timeout_s)
105
-
106
- with self.__lock:
107
- return self.__value
108
-
109
-
110
146
  NET_CONFIG = {
111
147
  "ip": "127.0.0.1",
112
148
  "port": 12345,
@@ -137,6 +173,13 @@ class HexZMQClientBase(ABC):
137
173
  self._lock = threading.Lock()
138
174
  self.__make_socket()
139
175
 
176
+ # receive thread
177
+ self._recv_thread = threading.Thread(
178
+ target=self._recv_loop,
179
+ daemon=True,
180
+ )
181
+ self._recv_flag = False
182
+
140
183
  def __del__(self):
141
184
  self.close()
142
185
 
@@ -223,12 +266,30 @@ class HexZMQClientBase(ABC):
223
266
  return None, None
224
267
 
225
268
  def close(self):
269
+ self._recv_flag = False
270
+ self._recv_thread.join()
226
271
  if self._socket is not None:
227
272
  try:
228
273
  self._socket.close(0)
229
274
  except Exception:
230
275
  pass
231
276
 
277
+ def _wait_for_working(self, timeout: float = 5.0):
278
+ for _ in range(int(timeout * 10)):
279
+ if self.is_working():
280
+ if hasattr(self, "seq_clear"):
281
+ self.seq_clear()
282
+ break
283
+ else:
284
+ time.sleep(0.1)
285
+ self._recv_flag = True
286
+ self._recv_thread.start()
287
+
288
+ @abstractmethod
289
+ def _recv_loop(self):
290
+ raise NotImplementedError(
291
+ "`_receive_thread` should be implemented by the child class")
292
+
232
293
 
233
294
  class HexZMQServerBase(ABC):
234
295
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hex_zmq_servers
3
- Version: 0.3.3
3
+ Version: 0.3.4
4
4
  Summary: HEXFELLOW ZMQ Servers
5
5
  Author-email: Dong Zhaorui <joray.dong@hexfellow.com>
6
6
  Maintainer-email: jecjune <zejun.chen@hexfellow.com>, Dong Zhaorui <joray.dong@hexfellow.com>
@@ -1,43 +1,43 @@
1
- hex_zmq_servers/__init__.py,sha256=edsNJOblJm0e7v-qnPpdVVP5JIrrDEg_Nk6AJpyfqks,5346
2
- hex_zmq_servers/device_base.py,sha256=NGVQvLZFw3l2ZC55tHuKHLVXppEoYHt1eK_q-zm5eGA,1182
1
+ hex_zmq_servers/__init__.py,sha256=1dnB9YTRq5uAFHo_3dMp1t1UxS4ZrcuZ_7CzBwqAfEM,5426
2
+ hex_zmq_servers/device_base.py,sha256=dABpeUg84Au-vtbVzvnv1Tmn_898CNOkIvH2UDUnV3I,1191
3
3
  hex_zmq_servers/hex_launch.py,sha256=opS_WwntAzV3UjOCVBo7FaLVW_dP3jlO40q-gFSBy68,17543
4
- hex_zmq_servers/zmq_base.py,sha256=DR5T7PSHtHAUluOclZRDXsXDt7EFT0EqBSdMXzHt8BU,14465
4
+ hex_zmq_servers/zmq_base.py,sha256=RFRvl95oci6d-urP5n-qGDh5090pZ5q7Oy8_vNPqJxI,16380
5
5
  hex_zmq_servers/cam/__init__.py,sha256=hZ4NTEaO9uxcBua-nyJTpXxmk_GiIAcK2uWz3QQbwvE,1408
6
- hex_zmq_servers/cam/cam_base.py,sha256=QtiuaXRrg1bhFDgwnKAaVVWxhvRpulNc_4rB3i_696Q,4110
6
+ hex_zmq_servers/cam/cam_base.py,sha256=3INQUYzzue4B0EiLEuo8IZDfLTifjmqXpXIkPaNA7dY,5134
7
7
  hex_zmq_servers/cam/berxel/__init__.py,sha256=3fK06RWAS_q8a_3z-RxFTv32e99og-4dMZTxH08TOcY,508
8
- hex_zmq_servers/cam/berxel/cam_berxel.py,sha256=emy6lFcJOPsKp0hW0GGuXV6wOx0GT0Ihyn3d9CQu3pw,9033
9
- hex_zmq_servers/cam/berxel/cam_berxel_cli.py,sha256=oWRiKJIbVBF8e3cKROlTUj4l11IPBWa4mg6oMiwE7aw,778
8
+ hex_zmq_servers/cam/berxel/cam_berxel.py,sha256=l7SGnMUsM4D8HqHrJM9_QSyvLeNSRSDb37-_tSNHF-c,9035
9
+ hex_zmq_servers/cam/berxel/cam_berxel_cli.py,sha256=ZbtZ4fjO0MCjqstfCxJwH1sMAtHKFKFIg9QI1zxplMQ,811
10
10
  hex_zmq_servers/cam/berxel/cam_berxel_srv.py,sha256=8QPhPpRsYnbbIFTQAT3sZA1nRTq1XpKg-GmD6ERUu9w,2311
11
11
  hex_zmq_servers/cam/dummy/__init__.py,sha256=EziQ8H8d9Vm1AYw4YryIumTXpx-lwEnlfzTl7VAnKHM,499
12
- hex_zmq_servers/cam/dummy/cam_dummy.py,sha256=HjQG_uiAXLxRv3FucitH23XLAv1PbPvsDNWu1QgtFoE,1887
13
- hex_zmq_servers/cam/dummy/cam_dummy_cli.py,sha256=PJoQQBk0I3GUrdxUe0FfFKRfQINNoE_pnNUmaWvCoVs,657
12
+ hex_zmq_servers/cam/dummy/cam_dummy.py,sha256=pWw0ceVCcKS9BJdD3JjGAAtSc1sqmYsL2UyGhmwVI7M,1898
13
+ hex_zmq_servers/cam/dummy/cam_dummy_cli.py,sha256=kA5eJiF4VRcOTFFB0rdtXBT0SuT2fb9GMK7J8vGkafw,690
14
14
  hex_zmq_servers/cam/dummy/cam_dummy_srv.py,sha256=rUcTA00cSi3Hju1NrT8dp-8WRp7rYcREgVRESC8na0U,1986
15
15
  hex_zmq_servers/cam/realsense/__init__.py,sha256=huwWPmO3ACxg6vMvjul6Ty0HDdwwfk886M4-DU5Z_04,535
16
- hex_zmq_servers/cam/realsense/cam_realsense.py,sha256=TQ9t6JLfGsxO6x0nUL6yEpH9OEPTzi6Ec69TonF2SKk,5134
17
- hex_zmq_servers/cam/realsense/cam_realsense_cli.py,sha256=tKVMV982dLZmj0z2XHhEl2rI28cQGqxMtfSsbIEOqHI,781
16
+ hex_zmq_servers/cam/realsense/cam_realsense.py,sha256=NIMjVDgLVFGGbNOcckfEukYoX1BThRxFqgg7mef38T8,5147
17
+ hex_zmq_servers/cam/realsense/cam_realsense_cli.py,sha256=qKx0PvsWtKbxYd-SOaEWFkpIHhPP8QDRzvTuUA9QKoc,814
18
18
  hex_zmq_servers/cam/realsense/cam_realsense_srv.py,sha256=2NqXp96pu-LvBs91rNM-BJgbznD_COPcc8ZFeNxdGdw,2320
19
19
  hex_zmq_servers/cam/rgb/__init__.py,sha256=cBrms_3YOQAp2ZtfvHkuaxqameSG1bALDgUcNrDpEQA,481
20
- hex_zmq_servers/cam/rgb/cam_rgb.py,sha256=pOCo5l9zXy1KYPFE9EINu5Az0ZU7iVD4CpR2-41jDu4,3407
21
- hex_zmq_servers/cam/rgb/cam_rgb_cli.py,sha256=JX7F3nqx7xHnb8Q5FrDxQy0FrWZYImU-TxzvXd6iqXM,775
20
+ hex_zmq_servers/cam/rgb/cam_rgb.py,sha256=qYIfJS2bCckAXkn1lsw4XBvb4e2BbGtkhTVR6GvJZcA,4784
21
+ hex_zmq_servers/cam/rgb/cam_rgb_cli.py,sha256=fWshI38ShDCML6Mu9WmLI543as_kxBmP0nj8LBhM7FI,1084
22
22
  hex_zmq_servers/cam/rgb/cam_rgb_srv.py,sha256=gsJBpcboRMGDZ1jviHDhFNhw8UWKzGsAY92dNzizW6Q,2266
23
23
  hex_zmq_servers/config/cam_berxel.json,sha256=G-eps3r7seBEMQEzxk1p1ObsBxmvageGbPdvtZ8gRe4,340
24
24
  hex_zmq_servers/config/cam_dummy.json,sha256=T6vCG9__Gos9M5seK7w43xbqttAI6P1iyjcB_W0AOu8,191
25
25
  hex_zmq_servers/config/cam_realsense.json,sha256=hEQw-fdzC0w49kgcaqf_VwLj_RKB27PGOupQ2f2ig_k,321
26
- hex_zmq_servers/config/cam_rgb.json,sha256=3VTKASzhYaDlkeSn7XyGNFnQUFZck8ODbD-NP2M_7tc,349
27
- hex_zmq_servers/config/mujoco_archer_y6.json,sha256=UPNc4toeU6NtEoA8GmPJi5lmMdJHih9bpOjl4weF_C8,668
28
- hex_zmq_servers/config/mujoco_e3_desktop.json,sha256=iMc3JlZpr0b81OcgrxbjcYuIoboO2JwGuB13LqJLL0Q,734
26
+ hex_zmq_servers/config/cam_rgb.json,sha256=EDPE9xYBRVqPiw5x_0F_zR1It9Q5Uo3HSV6PW9lsu28,491
27
+ hex_zmq_servers/config/mujoco_archer_y6.json,sha256=okinjE_oFpXeII9hDzoBJivTkwJ-8XLUq6XUms00lGc,669
28
+ hex_zmq_servers/config/mujoco_e3_desktop.json,sha256=IVvGgGOEbrU1cQmXuCdsgpvyyzKhTFAgVccG_8Lxnoc,735
29
29
  hex_zmq_servers/config/robot_dummy.json,sha256=mBKWmLz4S7K6fP0zYDImKPfnR6lerRjEv6Ore0jYQMQ,2963
30
30
  hex_zmq_servers/config/robot_gello.json,sha256=pXPAng92M_-dhnLbh1R_LXKeskSapSnoJhNS-u2dhvo,1157
31
- hex_zmq_servers/config/robot_hexarm.json,sha256=4D4D3auDl3h-Mw8U1jN8U1ZbnVUt5kBXpPSbBgxDM9M,689
31
+ hex_zmq_servers/config/robot_hexarm.json,sha256=VckqMsZ9aeYVxkNHWBPYIIMKsQHDc3gSYLptP5aFLzg,690
32
32
  hex_zmq_servers/config/zmq_dummy.json,sha256=T6vCG9__Gos9M5seK7w43xbqttAI6P1iyjcB_W0AOu8,191
33
33
  hex_zmq_servers/mujoco/__init__.py,sha256=OKG7aJ2BACpob_DuAvikLiRo4M_3DO9Ffapwen87k_0,870
34
- hex_zmq_servers/mujoco/mujoco_base.py,sha256=WHPbnrwfpfHMYBUiRH9sgrm21CnD2ERwerVkUwa47jQ,10283
34
+ hex_zmq_servers/mujoco/mujoco_base.py,sha256=e3QkZfxlE8MHPse1nKgTlCHvV-mNYfMMuZ7PtmyVVsA,11752
35
35
  hex_zmq_servers/mujoco/archer_y6/__init__.py,sha256=v1vApZ-qBLEcqFjDN0eff5kvkzO3s8QHBO4AitBODfc,559
36
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py,sha256=0Nuh1dLwxNazwXw7uwKG9gRJtTdbBTauAM1cTA3F5so,11847
37
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py,sha256=9FmNspbtepcJxAlQHOgJ66910EMx6wMfUTSWXn2nbT8,675
38
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py,sha256=djEJPKdMiiRwmFcsfZNMNq0x7GJFKjWCQU2QnoZcQmg,4905
36
+ hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py,sha256=viZI_bVbnWbhow86mKQ10Sb8PAfsriw5uNFhRgGwR4U,12073
37
+ hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py,sha256=xNn_tF1U49ECjYvhy3xq1KizXZ5qJyqCNdPtBEVJyTU,2074
38
+ hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py,sha256=Pn51_bXLAa40cTMKpCvqU7aT1jpR_r9pMrW2subLHAs,4987
39
39
  hex_zmq_servers/mujoco/archer_y6/model/robot.xml,sha256=U6Rrpfb0jhd8UMuZzY6YmmZVF6QFrU4vVJqQ7MoRsgI,8172
40
- hex_zmq_servers/mujoco/archer_y6/model/scene.xml,sha256=X3BQtpHmZhjus-4iclolqKAQCeJjpPuG2KGnj0uOaBg,2122
40
+ hex_zmq_servers/mujoco/archer_y6/model/scene.xml,sha256=00mk4AMmgE0vhHdxuZ6MkKqOBu0Nf17T7GudlpJNI1I,2122
41
41
  hex_zmq_servers/mujoco/archer_y6/model/setting.xml,sha256=4jhxau8xeYtnnMmvy6B79B8-w2HbK_PTGDHyIelDEQs,1997
42
42
  hex_zmq_servers/mujoco/archer_y6/model/assets/arm_base_link.STL,sha256=JUr1vVN2qyB05yAJHwEKXQ1zpZ4m7_Cw-LbVaC9_gEE,413584
43
43
  hex_zmq_servers/mujoco/archer_y6/model/assets/arm_link_1.STL,sha256=4tx8OgJT-yNsHLAUUU6G2sfnNlVy36G2OrLmy9jcJ_0,304784
@@ -56,11 +56,11 @@ hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_link_1.STL,sha256=fj
56
56
  hex_zmq_servers/mujoco/archer_y6/model/assets/gripper_right_link_2.STL,sha256=ucyn656VxBpRx3sshxLxMPJIUZfNfEQ90P-9b8sR0xg,80284
57
57
  hex_zmq_servers/mujoco/archer_y6/model/assets/table_link.STL,sha256=dqFXHRqjZSDyvYHCaJkbmYFsKngZRk1xjg_Zl2_jDc4,684
58
58
  hex_zmq_servers/mujoco/e3_desktop/__init__.py,sha256=pMLKpJGBHgc9IU142NcM7ubwdXq9E422k6Giui1A8i4,565
59
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py,sha256=9__44dxAWiMdhwf4kUZrMAdgkTWD_UIpbYTTRQ3lW6o,17560
60
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py,sha256=cyeelj4PL20cupPxvpoWne-b7hoe4-Cgmg7saFgMNdc,3385
61
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py,sha256=H26KCzZCaFpQcNG6MhUZTxkq1izQSegjVQVif85Q_Nw,8761
59
+ hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py,sha256=kLHb7HIevv7j4S-gwFJJ1G0XWN6eIa6rq8tXYHI7IzE,17918
60
+ hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py,sha256=AHmsX3cZx4iZX7q8itFVqvCGeiy_JQ4AsTzdyXLCR9E,7790
61
+ hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py,sha256=dFGGmwHihrMDzAD1uptL91O9W1l7mKZRUlEWLkAZ7xU,8953
62
62
  hex_zmq_servers/mujoco/e3_desktop/model/robot.xml,sha256=hLp385sG037rw2bAPu6tKoa5XYQLwWb4YawijYr7Ebs,17030
63
- hex_zmq_servers/mujoco/e3_desktop/model/scene.xml,sha256=Qzeun0ohjx-nAcQ8mHXLmZMiBN-GbWjseRydVZu4PgE,2222
63
+ hex_zmq_servers/mujoco/e3_desktop/model/scene.xml,sha256=8zs5vCf_RvB1wUlD9ymVMpxyU2Eq0XzqEQnXm_wHhdA,2222
64
64
  hex_zmq_servers/mujoco/e3_desktop/model/setting.xml,sha256=Y-GIwzWi46SJsBQZs0g0G7MDuzQmCGbHaVmdPZGYL14,4472
65
65
  hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_base_link.STL,sha256=JUr1vVN2qyB05yAJHwEKXQ1zpZ4m7_Cw-LbVaC9_gEE,413584
66
66
  hex_zmq_servers/mujoco/e3_desktop/model/assets/arm_link_1.STL,sha256=4tx8OgJT-yNsHLAUUU6G2sfnNlVy36G2OrLmy9jcJ_0,304784
@@ -80,18 +80,18 @@ hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_1.STL,sha256=f
80
80
  hex_zmq_servers/mujoco/e3_desktop/model/assets/gripper_right_link_2.STL,sha256=ucyn656VxBpRx3sshxLxMPJIUZfNfEQ90P-9b8sR0xg,80284
81
81
  hex_zmq_servers/mujoco/e3_desktop/model/assets/table_link.STL,sha256=dqFXHRqjZSDyvYHCaJkbmYFsKngZRk1xjg_Zl2_jDc4,684
82
82
  hex_zmq_servers/robot/__init__.py,sha256=PqzGhsdbaeyYa7EZpAYMvT9myYhCO3OTbSPXVp1uiUM,1026
83
- hex_zmq_servers/robot/robot_base.py,sha256=od6KXOcRW7OlT0DBR7MJtBWD986giqYeeitnQz0uBG8,7119
83
+ hex_zmq_servers/robot/robot_base.py,sha256=-or25jU3x7kJaIx2c7l83nPLqb93yL4IHIWjfDGkivo,8064
84
84
  hex_zmq_servers/robot/dummy/__init__.py,sha256=_lDtPH-JQ1ltPB8JzD7wLu77iwNOgEZ3fJkz8MNKXrw,517
85
- hex_zmq_servers/robot/dummy/robot_dummy.py,sha256=6bRgpKmExjTq_glDdNyELzRYcLTXgfbeRBMxCEcCpEY,2565
86
- hex_zmq_servers/robot/dummy/robot_dummy_cli.py,sha256=ZZ1a0ABE173oZ1elLY-gINpMUxI7vM-zfMO9g1M0nt0,667
85
+ hex_zmq_servers/robot/dummy/robot_dummy.py,sha256=vZTrEvIFsW5ne123hEGoynLGnQH2T-jxLBVww6LEwfM,2665
86
+ hex_zmq_servers/robot/dummy/robot_dummy_cli.py,sha256=kjugt5By71Nj0wFb2tnQgRdSyYYZeUomwh96UCCR-No,699
87
87
  hex_zmq_servers/robot/dummy/robot_dummy_srv.py,sha256=E0a0arRgAQiCfEXnrJ1l6TP8Cijy497WfX--padg7B8,2576
88
88
  hex_zmq_servers/robot/gello/__init__.py,sha256=7xSTc8ZB-bQODyEo6pzPz3ILZ1eAgVSsy6BmF2ECKeQ,517
89
- hex_zmq_servers/robot/gello/robot_gello.py,sha256=S2CZ5N9tRXP_vvlR_RPSUMLzxkhhYl1Ag9HpiltEOAc,13000
90
- hex_zmq_servers/robot/gello/robot_gello_cli.py,sha256=xQuSrkzwAr4tuXW1P-rRtSXH3A8RRX2eJmIvihAgEkI,667
89
+ hex_zmq_servers/robot/gello/robot_gello.py,sha256=DyMELg490HykRYdbs4QVluR8oC7KAYWAju0OEmaowPE,13100
90
+ hex_zmq_servers/robot/gello/robot_gello_cli.py,sha256=wnbRVrpIEE8G4ZzfjuSJA5TMPig-2I1oLJE-6b0kFSY,699
91
91
  hex_zmq_servers/robot/gello/robot_gello_srv.py,sha256=vCWgKpsO4MhZLspdaG45uHj8EB0gnptuj2SuxCaoEVI,2841
92
92
  hex_zmq_servers/robot/hexarm/__init__.py,sha256=07EUc2fCKqxYZbUUcDeD_AXvCAWI6r1qBjpWJ58_AcY,1414
93
- hex_zmq_servers/robot/hexarm/robot_hexarm.py,sha256=TdUxRjkNfqOpPYWbdiCARhrpPRSpBfIzXXUC5HMVsn0,8991
94
- hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py,sha256=0L5RDIWn16qtZMKfIg2VkSYF46H3FJEyZLiUF6sm3KY,820
93
+ hex_zmq_servers/robot/hexarm/robot_hexarm.py,sha256=dUd_6JSHvlEIxkYLF1xCBZTOOcxt_VcfS2qcb-vEkgU,10364
94
+ hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py,sha256=KO-I_CCjWwdckRKlxX7gIxUgsUKW3rcOycBo1nAxFEY,852
95
95
  hex_zmq_servers/robot/hexarm/robot_hexarm_srv.py,sha256=PE_WyLRXV_DbYVVQ0Wd60KlZZ37vfoEJVEhf2_4xADQ,2759
96
96
  hex_zmq_servers/robot/hexarm/urdf/archer_l6y/empty.urdf,sha256=g7Yn_uIM_ddb_K32FnDgHWSsvxH08oaPDiMb0yUb0Lg,7808
97
97
  hex_zmq_servers/robot/hexarm/urdf/archer_l6y/gp100.urdf,sha256=YJ_S1Hfwg_PV1nr5QZJuikuCO18GqNu6RDA3gEwG-Pk,7620
@@ -103,8 +103,8 @@ hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100.urdf,sha256=i8vpARxlQpYskLmTZ7
103
103
  hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_handle.urdf,sha256=Tpii1Wk26jRtMqLWI2knrqBTIh7hCjpgGySlrBgdvpA,7458
104
104
  hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_p050.urdf,sha256=6Zzc_PXDwtxw9xQEXQOH0hu_moaiQzeMC22hUqAQS9s,7459
105
105
  hex_zmq_servers/robot/hexarm/urdf/archer_y6/gp100_p050_handle.urdf,sha256=HNa7wweNYUj8YtSUfx87ASeNEIPIjB-gZ4O7RyHng6g,7456
106
- hex_zmq_servers-0.3.3.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
107
- hex_zmq_servers-0.3.3.dist-info/METADATA,sha256=wRuKzDa2xF7__jvz0agYhQeum8ddTe9nwYqPU9n370E,4750
108
- hex_zmq_servers-0.3.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
- hex_zmq_servers-0.3.3.dist-info/top_level.txt,sha256=lPH1DfgMrQOe0Grh8zSZopf6LmnLvb_aStVmZ41PyAg,16
110
- hex_zmq_servers-0.3.3.dist-info/RECORD,,
106
+ hex_zmq_servers-0.3.4.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
107
+ hex_zmq_servers-0.3.4.dist-info/METADATA,sha256=vlE6l40uTHq955ndiXzA52hwcjhW7CvLfbPxwVx7Y6c,4750
108
+ hex_zmq_servers-0.3.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
+ hex_zmq_servers-0.3.4.dist-info/top_level.txt,sha256=lPH1DfgMrQOe0Grh8zSZopf6LmnLvb_aStVmZ41PyAg,16
110
+ hex_zmq_servers-0.3.4.dist-info/RECORD,,