hex-zmq-servers 0.3.5__py3-none-any.whl → 0.3.7__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.
@@ -12,7 +12,7 @@ import numpy as np
12
12
  from collections import deque
13
13
 
14
14
  from ..cam_base import HexCamBase
15
- from ...zmq_base import hex_zmq_ts_now
15
+ from ...zmq_base import hex_ns_now, hex_zmq_ts_now
16
16
  from ...hex_launch import hex_log, HEX_LOG_LEVEL
17
17
  from berxel_py_wrapper import *
18
18
 
@@ -77,8 +77,21 @@ class HexCamBerxel(HexCamBase):
77
77
  depth_queue = hex_queues[1]
78
78
  stop_event = hex_queues[2]
79
79
 
80
+ # clean cache
81
+ clean_cnt = 0
82
+ while clean_cnt < 5:
83
+ hawk_rgb_frame = self.__device.readColorFrame(40)
84
+ hawk_depth_frame = self.__device.readDepthFrame(40)
85
+ if hawk_rgb_frame is not None:
86
+ self.__device.releaseFrame(hawk_rgb_frame)
87
+ if hawk_depth_frame is not None:
88
+ self.__device.releaseFrame(hawk_depth_frame)
89
+ clean_cnt += 1
90
+ time.sleep(0.01)
91
+
80
92
  rgb_count = 0
81
93
  depth_count = 0
94
+ bias_ns = hex_ns_now() - time.time_ns()
82
95
  while self._working.is_set() and not stop_event.is_set():
83
96
  # read frame
84
97
  hawk_rgb_frame = self.__device.readColorFrame(40)
@@ -86,13 +99,14 @@ class HexCamBerxel(HexCamBase):
86
99
 
87
100
  # collect rgb frame
88
101
  if hawk_rgb_frame is not None:
89
- ts, frame = self.__unpack_frame(hawk_rgb_frame, False)
102
+ ts, frame = self.__unpack_frame(hawk_rgb_frame, False, bias_ns)
90
103
  rgb_queue.append((ts, rgb_count, frame))
91
104
  rgb_count = (rgb_count + 1) % self._max_seq_num
92
105
 
93
106
  # collect depth frame
94
107
  if hawk_depth_frame is not None:
95
- ts, frame = self.__unpack_frame(hawk_depth_frame, True)
108
+ ts, frame = self.__unpack_frame(hawk_depth_frame, True,
109
+ bias_ns)
96
110
  depth_queue.append((ts, depth_count, frame))
97
111
  depth_count = (depth_count + 1) % self._max_seq_num
98
112
 
@@ -102,12 +116,17 @@ class HexCamBerxel(HexCamBase):
102
116
  # close
103
117
  self.close()
104
118
 
105
- def __unpack_frame(self, hawk_frame: BerxelHawkFrame, depth: bool = False):
119
+ def __unpack_frame(
120
+ self,
121
+ hawk_frame: BerxelHawkFrame,
122
+ depth: bool = False,
123
+ bias_ns: int = 0,
124
+ ):
106
125
  # common variables
107
- berxel_ts = hawk_frame.getTimeStamp()
126
+ berxel_ts_ns = bias_ns + int(hawk_frame.getTimeStamp() * 1_000)
108
127
  ts = {
109
- "s": berxel_ts // 1_000_000,
110
- "ns": berxel_ts % 1_000_000 * 1_000,
128
+ "s": berxel_ts_ns // 1_000_000_000,
129
+ "ns": berxel_ts_ns % 1_000_000_000,
111
130
  }
112
131
  width = hawk_frame.getWidth()
113
132
  height = hawk_frame.getHeight()
@@ -176,7 +195,8 @@ class HexCamBerxel(HexCamBase):
176
195
  device_idx = idx
177
196
  break
178
197
  if device_idx == -1:
179
- print(f"can not find device with serial number: {serial_number}")
198
+ print(
199
+ f"can not find device with serial number: {serial_number}")
180
200
  print("available device serial numbers:")
181
201
  for device in device_list:
182
202
  print(f"{device.serialNumber}")
@@ -196,7 +216,9 @@ class HexCamBerxel(HexCamBase):
196
216
  self.__device.setColorExposureGain(self.__exposure, self.__gain)
197
217
  self.__device.setRegistrationEnable(True)
198
218
  self.__device.setFrameSync(True)
199
- self.__device.setSystemClock()
219
+ while self.__device.setSystemClock() != 0:
220
+ print("set system clock failed")
221
+ time.sleep(0.1)
200
222
 
201
223
  intrinsic_params = self.__device.getDeviceIntriscParams()
202
224
  self.__intri[0] = intrinsic_params.colorIntrinsicParams.fx / 2
@@ -126,9 +126,6 @@ class HexMujocoArcherY6(HexMujocoBase):
126
126
  if not self.__headless:
127
127
  self.__viewer = viewer.launch_passive(self.__model, self.__data)
128
128
 
129
- # time init
130
- self.__bias_ns = hex_ns_now() - self.__data.time * 1_000_000_000
131
-
132
129
  # start work loop
133
130
  self._working.set()
134
131
 
@@ -163,6 +160,7 @@ class HexMujocoArcherY6(HexMujocoBase):
163
160
  rate = HexRate(self.__sim_rate)
164
161
  states_trig_count = 0
165
162
  img_trig_count = 0
163
+ self.__bias_ns = hex_ns_now() - self.__data.time * 1_000_000_000
166
164
  init_ts = self.__mujoco_ts() if self.__sens_ts else hex_zmq_ts_now()
167
165
  rgb_queue.append((init_ts, 0,
168
166
  np.zeros((self.__height, self.__width, 3),
@@ -148,9 +148,6 @@ class HexMujocoE3Desktop(HexMujocoBase):
148
148
  if not self.__headless:
149
149
  self.__viewer = viewer.launch_passive(self.__model, self.__data)
150
150
 
151
- # time init
152
- self.__bias_ns = hex_ns_now() - self.__data.time * 1_000_000_000
153
-
154
151
  # start work loop
155
152
  self._working.set()
156
153
 
@@ -198,6 +195,7 @@ class HexMujocoE3Desktop(HexMujocoBase):
198
195
  rate = HexRate(self.__sim_rate)
199
196
  states_trig_count = 0
200
197
  img_trig_count = 0
198
+ self.__bias_ns = hex_ns_now() - self.__data.time * 1_000_000_000
201
199
  init_ts = self.__mujoco_ts() if self.__sens_ts else hex_zmq_ts_now()
202
200
  head_rgb_queue.append((init_ts, 0,
203
201
  np.zeros((self.__height, self.__width, 3),
@@ -99,7 +99,7 @@ def hex_zmq_ts_delta_ms(curr_ts, hdr_ts) -> float:
99
99
 
100
100
  class HexRate:
101
101
 
102
- def __init__(self, hz: float, spin_threshold_ns: int = 1_000_000):
102
+ def __init__(self, hz: float, spin_threshold_ns: int = 10_000):
103
103
  if hz <= 0:
104
104
  raise ValueError("hz must be greater than 0")
105
105
  if spin_threshold_ns < 0:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hex_zmq_servers
3
- Version: 0.3.5
3
+ Version: 0.3.7
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,11 +1,11 @@
1
1
  hex_zmq_servers/__init__.py,sha256=1dnB9YTRq5uAFHo_3dMp1t1UxS4ZrcuZ_7CzBwqAfEM,5426
2
2
  hex_zmq_servers/device_base.py,sha256=dABpeUg84Au-vtbVzvnv1Tmn_898CNOkIvH2UDUnV3I,1191
3
3
  hex_zmq_servers/hex_launch.py,sha256=x-xCBhpjgK6yWHGk5o5kYsb5ef2GsdeLr8rX59EJR-0,17700
4
- hex_zmq_servers/zmq_base.py,sha256=RFRvl95oci6d-urP5n-qGDh5090pZ5q7Oy8_vNPqJxI,16380
4
+ hex_zmq_servers/zmq_base.py,sha256=lFMcPqmUEZnFxuUHlcHlZp3NgU1AVMyNksoviQanYMo,16377
5
5
  hex_zmq_servers/cam/__init__.py,sha256=hZ4NTEaO9uxcBua-nyJTpXxmk_GiIAcK2uWz3QQbwvE,1408
6
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=l7SGnMUsM4D8HqHrJM9_QSyvLeNSRSDb37-_tSNHF-c,9035
8
+ hex_zmq_servers/cam/berxel/cam_berxel.py,sha256=yC1-eBZHrwVjyinZyg3AWKmpE7WqNSAbeP10sTWZP24,9820
9
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
@@ -33,7 +33,7 @@ hex_zmq_servers/config/zmq_dummy.json,sha256=T6vCG9__Gos9M5seK7w43xbqttAI6P1iyjc
33
33
  hex_zmq_servers/mujoco/__init__.py,sha256=OKG7aJ2BACpob_DuAvikLiRo4M_3DO9Ffapwen87k_0,870
34
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=viZI_bVbnWbhow86mKQ10Sb8PAfsriw5uNFhRgGwR4U,12073
36
+ hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6.py,sha256=O4s-RXDsbu0yxiuvbIVbqBZ7GsSVmj-NCkisAmVium4,12052
37
37
  hex_zmq_servers/mujoco/archer_y6/mujoco_archer_y6_cli.py,sha256=xNn_tF1U49ECjYvhy3xq1KizXZ5qJyqCNdPtBEVJyTU,2074
38
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
@@ -56,7 +56,7 @@ 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=kLHb7HIevv7j4S-gwFJJ1G0XWN6eIa6rq8tXYHI7IzE,17918
59
+ hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop.py,sha256=0Z9DhYbFk3zaSiLHmJeuy0XEjuEHvfa0lgvLxyszGuQ,17897
60
60
  hex_zmq_servers/mujoco/e3_desktop/mujoco_e3_desktop_cli.py,sha256=AHmsX3cZx4iZX7q8itFVqvCGeiy_JQ4AsTzdyXLCR9E,7790
61
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
@@ -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.5.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
107
- hex_zmq_servers-0.3.5.dist-info/METADATA,sha256=pWHyhtxeT55koaopjmfwVYepxshDRCZl_O25MAalIUs,4750
108
- hex_zmq_servers-0.3.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
- hex_zmq_servers-0.3.5.dist-info/top_level.txt,sha256=lPH1DfgMrQOe0Grh8zSZopf6LmnLvb_aStVmZ41PyAg,16
110
- hex_zmq_servers-0.3.5.dist-info/RECORD,,
106
+ hex_zmq_servers-0.3.7.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
107
+ hex_zmq_servers-0.3.7.dist-info/METADATA,sha256=Nccgrs01lDSnIYMflp3x3icFqz1Z4HDglInfmg3kHVI,4750
108
+ hex_zmq_servers-0.3.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
+ hex_zmq_servers-0.3.7.dist-info/top_level.txt,sha256=lPH1DfgMrQOe0Grh8zSZopf6LmnLvb_aStVmZ41PyAg,16
110
+ hex_zmq_servers-0.3.7.dist-info/RECORD,,