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.
- hex_zmq_servers/__init__.py +5 -3
- hex_zmq_servers/cam/berxel/cam_berxel.py +8 -10
- hex_zmq_servers/cam/berxel/cam_berxel_cli.py +1 -0
- hex_zmq_servers/cam/cam_base.py +40 -10
- hex_zmq_servers/cam/dummy/cam_dummy.py +7 -7
- hex_zmq_servers/cam/dummy/cam_dummy_cli.py +1 -0
- hex_zmq_servers/cam/realsense/cam_realsense.py +9 -9
- hex_zmq_servers/cam/realsense/cam_realsense_cli.py +1 -0
- hex_zmq_servers/cam/rgb/cam_rgb.py +33 -7
- hex_zmq_servers/cam/rgb/cam_rgb_cli.py +11 -0
- hex_zmq_servers/config/cam_rgb.json +8 -0
- hex_zmq_servers/config/mujoco_archer_y6.json +1 -1
- hex_zmq_servers/config/mujoco_e3_desktop.json +1 -1
- hex_zmq_servers/config/robot_hexarm.json +1 -1
- hex_zmq_servers/device_base.py +3 -2
- hex_zmq_servers/mujoco/archer_y6/model/scene.xml +1 -1
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py +28 -22
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py +42 -0
- hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py +16 -14
- hex_zmq_servers/mujoco/e3_desktop/model/scene.xml +1 -1
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py +50 -40
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py +148 -33
- hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py +39 -35
- hex_zmq_servers/mujoco/mujoco_base.py +101 -64
- hex_zmq_servers/robot/dummy/robot_dummy.py +11 -7
- hex_zmq_servers/robot/dummy/robot_dummy_cli.py +1 -0
- hex_zmq_servers/robot/gello/robot_gello.py +11 -7
- hex_zmq_servers/robot/gello/robot_gello_cli.py +1 -0
- hex_zmq_servers/robot/hexarm/robot_hexarm.py +56 -22
- hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py +1 -0
- hex_zmq_servers/robot/robot_base.py +40 -10
- hex_zmq_servers/zmq_base.py +92 -31
- {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/METADATA +1 -1
- {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/RECORD +37 -37
- {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/WHEEL +0 -0
- {hex_zmq_servers-0.3.3.dist-info → hex_zmq_servers-0.3.4.dist-info}/licenses/LICENSE +0 -0
- {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
|
-
|
|
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,
|
|
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
|
|
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.
|
|
168
|
-
self.
|
|
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.
|
|
180
|
-
self.
|
|
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.
|
|
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.
|
|
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
|
hex_zmq_servers/zmq_base.py
CHANGED
|
@@ -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
|
|
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
|
-
|
|
25
|
-
|
|
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":
|
|
28
|
-
"ns":
|
|
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
|
|
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,43 +1,43 @@
|
|
|
1
|
-
hex_zmq_servers/__init__.py,sha256=
|
|
2
|
-
hex_zmq_servers/device_base.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
9
|
-
hex_zmq_servers/cam/berxel/cam_berxel_cli.py,sha256=
|
|
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=
|
|
13
|
-
hex_zmq_servers/cam/dummy/cam_dummy_cli.py,sha256=
|
|
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=
|
|
17
|
-
hex_zmq_servers/cam/realsense/cam_realsense_cli.py,sha256=
|
|
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=
|
|
21
|
-
hex_zmq_servers/cam/rgb/cam_rgb_cli.py,sha256=
|
|
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=
|
|
27
|
-
hex_zmq_servers/config/mujoco_archer_y6.json,sha256=
|
|
28
|
-
hex_zmq_servers/config/mujoco_e3_desktop.json,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
37
|
-
hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py,sha256=
|
|
38
|
-
hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_srv.py,sha256=
|
|
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=
|
|
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=
|
|
60
|
-
hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py,sha256=
|
|
61
|
-
hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_srv.py,sha256=
|
|
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=
|
|
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
|
|
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=
|
|
86
|
-
hex_zmq_servers/robot/dummy/robot_dummy_cli.py,sha256=
|
|
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=
|
|
90
|
-
hex_zmq_servers/robot/gello/robot_gello_cli.py,sha256=
|
|
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=
|
|
94
|
-
hex_zmq_servers/robot/hexarm/robot_hexarm_cli.py,sha256=
|
|
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.
|
|
107
|
-
hex_zmq_servers-0.3.
|
|
108
|
-
hex_zmq_servers-0.3.
|
|
109
|
-
hex_zmq_servers-0.3.
|
|
110
|
-
hex_zmq_servers-0.3.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|