luckyrobots 0.1.73__py3-none-any.whl → 0.1.74__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.
luckyrobots/client.py CHANGED
@@ -18,6 +18,8 @@ try:
18
18
  from .grpc.generated import agent_pb2 # type: ignore
19
19
  from .grpc.generated import agent_pb2_grpc # type: ignore
20
20
  from .grpc.generated import common_pb2 # type: ignore
21
+ from .grpc.generated import debug_pb2 # type: ignore
22
+ from .grpc.generated import debug_pb2_grpc # type: ignore
21
23
  from .grpc.generated import mujoco_pb2 # type: ignore
22
24
  from .grpc.generated import mujoco_pb2_grpc # type: ignore
23
25
  from .grpc.generated import scene_pb2 # type: ignore
@@ -87,6 +89,7 @@ class LuckyEngineClient:
87
89
  self._scene = None
88
90
  self._mujoco = None
89
91
  self._agent = None
92
+ self._debug = None
90
93
 
91
94
  # Cached agent schemas: agent_name -> (observation_names, action_names)
92
95
  self._schema_cache: dict[str, tuple[list[str], list[str]]] = {}
@@ -97,6 +100,7 @@ class LuckyEngineClient:
97
100
  scene=scene_pb2,
98
101
  mujoco=mujoco_pb2,
99
102
  agent=agent_pb2,
103
+ debug=debug_pb2,
100
104
  )
101
105
 
102
106
  def connect(self) -> None:
@@ -122,6 +126,7 @@ class LuckyEngineClient:
122
126
  self._scene = scene_pb2_grpc.SceneServiceStub(self._channel)
123
127
  self._mujoco = mujoco_pb2_grpc.MujocoServiceStub(self._channel)
124
128
  self._agent = agent_pb2_grpc.AgentServiceStub(self._channel)
129
+ self._debug = debug_pb2_grpc.DebugServiceStub(self._channel)
125
130
 
126
131
  logger.info(f"Channel opened to {target} (server not verified yet)")
127
132
 
@@ -136,6 +141,7 @@ class LuckyEngineClient:
136
141
  self._scene = None
137
142
  self._mujoco = None
138
143
  self._agent = None
144
+ self._debug = None
139
145
  logger.info("gRPC channel closed")
140
146
 
141
147
  def is_connected(self) -> bool:
@@ -231,6 +237,13 @@ class LuckyEngineClient:
231
237
  raise GrpcConnectionError("Not connected. Call connect() first.")
232
238
  return self._agent
233
239
 
240
+ @property
241
+ def debug(self) -> Any:
242
+ """DebugService stub."""
243
+ if self._debug is None:
244
+ raise GrpcConnectionError("Not connected. Call connect() first.")
245
+ return self._debug
246
+
234
247
  def get_mujoco_info(self, robot_name: str = "", timeout: Optional[float] = None):
235
248
  """Get MuJoCo model information (joint names, limits, etc.)."""
236
249
  timeout = timeout or self.timeout
@@ -524,3 +537,141 @@ class LuckyEngineClient:
524
537
  proto_kwargs["terrain_difficulty"] = terrain_diff
525
538
 
526
539
  return self.pb.agent.DomainRandomizationConfig(**proto_kwargs)
540
+
541
+ def draw_velocity_command(
542
+ self,
543
+ origin: tuple[float, float, float],
544
+ lin_vel_x: float,
545
+ lin_vel_y: float,
546
+ ang_vel_z: float,
547
+ scale: float = 1.0,
548
+ clear_previous: bool = True,
549
+ timeout: Optional[float] = None,
550
+ ) -> bool:
551
+ """
552
+ Draw velocity command visualization in LuckyEngine.
553
+
554
+ Args:
555
+ origin: (x, y, z) position of the robot.
556
+ lin_vel_x: Forward velocity command.
557
+ lin_vel_y: Lateral velocity command.
558
+ ang_vel_z: Angular velocity command (yaw rate).
559
+ scale: Scale factor for visualization.
560
+ clear_previous: Clear previous debug draws before drawing.
561
+ timeout: RPC timeout in seconds.
562
+
563
+ Returns:
564
+ True if draw succeeded, False otherwise.
565
+ """
566
+ timeout = timeout or self.timeout
567
+
568
+ velocity_cmd = self.pb.debug.DebugVelocityCommand(
569
+ origin=self.pb.debug.DebugVector3(x=origin[0], y=origin[1], z=origin[2]),
570
+ lin_vel_x=lin_vel_x,
571
+ lin_vel_y=lin_vel_y,
572
+ ang_vel_z=ang_vel_z,
573
+ scale=scale,
574
+ )
575
+
576
+ request = self.pb.debug.DebugDrawRequest(
577
+ velocity_command=velocity_cmd,
578
+ clear_previous=clear_previous,
579
+ )
580
+
581
+ try:
582
+ resp = self.debug.Draw(request, timeout=timeout)
583
+ return resp.success
584
+ except Exception as e:
585
+ logger.debug(f"Debug draw failed: {e}")
586
+ return False
587
+
588
+ def draw_arrow(
589
+ self,
590
+ origin: tuple[float, float, float],
591
+ direction: tuple[float, float, float],
592
+ color: tuple[float, float, float, float] = (1.0, 0.0, 0.0, 1.0),
593
+ scale: float = 1.0,
594
+ clear_previous: bool = False,
595
+ timeout: Optional[float] = None,
596
+ ) -> bool:
597
+ """
598
+ Draw a debug arrow in LuckyEngine.
599
+
600
+ Args:
601
+ origin: (x, y, z) start position.
602
+ direction: (x, y, z) direction and magnitude.
603
+ color: (r, g, b, a) color values (0-1 range).
604
+ scale: Scale factor for visualization.
605
+ clear_previous: Clear previous debug draws before drawing.
606
+ timeout: RPC timeout in seconds.
607
+
608
+ Returns:
609
+ True if draw succeeded, False otherwise.
610
+ """
611
+ timeout = timeout or self.timeout
612
+
613
+ arrow = self.pb.debug.DebugArrow(
614
+ origin=self.pb.debug.DebugVector3(x=origin[0], y=origin[1], z=origin[2]),
615
+ direction=self.pb.debug.DebugVector3(
616
+ x=direction[0], y=direction[1], z=direction[2]
617
+ ),
618
+ color=self.pb.debug.DebugColor(
619
+ r=color[0], g=color[1], b=color[2], a=color[3]
620
+ ),
621
+ scale=scale,
622
+ )
623
+
624
+ request = self.pb.debug.DebugDrawRequest(
625
+ arrows=[arrow],
626
+ clear_previous=clear_previous,
627
+ )
628
+
629
+ try:
630
+ resp = self.debug.Draw(request, timeout=timeout)
631
+ return resp.success
632
+ except Exception as e:
633
+ logger.debug(f"Debug draw failed: {e}")
634
+ return False
635
+
636
+ def draw_line(
637
+ self,
638
+ start: tuple[float, float, float],
639
+ end: tuple[float, float, float],
640
+ color: tuple[float, float, float, float] = (1.0, 1.0, 1.0, 1.0),
641
+ clear_previous: bool = False,
642
+ timeout: Optional[float] = None,
643
+ ) -> bool:
644
+ """
645
+ Draw a debug line in LuckyEngine.
646
+
647
+ Args:
648
+ start: (x, y, z) start position.
649
+ end: (x, y, z) end position.
650
+ color: (r, g, b, a) color values (0-1 range).
651
+ clear_previous: Clear previous debug draws before drawing.
652
+ timeout: RPC timeout in seconds.
653
+
654
+ Returns:
655
+ True if draw succeeded, False otherwise.
656
+ """
657
+ timeout = timeout or self.timeout
658
+
659
+ line = self.pb.debug.DebugLine(
660
+ start=self.pb.debug.DebugVector3(x=start[0], y=start[1], z=start[2]),
661
+ end=self.pb.debug.DebugVector3(x=end[0], y=end[1], z=end[2]),
662
+ color=self.pb.debug.DebugColor(
663
+ r=color[0], g=color[1], b=color[2], a=color[3]
664
+ ),
665
+ )
666
+
667
+ request = self.pb.debug.DebugDrawRequest(
668
+ lines=[line],
669
+ clear_previous=clear_previous,
670
+ )
671
+
672
+ try:
673
+ resp = self.debug.Draw(request, timeout=timeout)
674
+ return resp.success
675
+ except Exception as e:
676
+ logger.debug(f"Debug draw failed: {e}")
677
+ return False
@@ -166,50 +166,62 @@ unitreego1:
166
166
  lower: -0.863
167
167
  upper: 0.863
168
168
  default: 0.1
169
+ scale: 0.3727530387083568
169
170
  - name: FR_thigh_joint
170
171
  lower: -0.686
171
172
  upper: 4.501
172
173
  default: 0.9
174
+ scale: 0.3727530387083568
173
175
  - name: FR_calf_joint
174
176
  lower: -2.818
175
177
  upper: -0.888
176
178
  default: -1.8
179
+ scale: 0.24850202580557115
177
180
  - name: FL_hip_joint
178
181
  lower: -0.863
179
182
  upper: 0.863
180
183
  default: -0.1
184
+ scale: 0.3727530387083568
181
185
  - name: FL_thigh_joint
182
186
  lower: -0.686
183
187
  upper: 4.501
184
188
  default: 0.9
189
+ scale: 0.3727530387083568
185
190
  - name: FL_calf_joint
186
191
  lower: -2.818
187
192
  upper: -0.888
188
193
  default: -1.8
194
+ scale: 0.24850202580557115
189
195
  - name: RR_hip_joint
190
196
  lower: -0.863
191
197
  upper: 0.863
192
198
  default: 0.1
199
+ scale: 0.3727530387083568
193
200
  - name: RR_thigh_joint
194
201
  lower: -0.686
195
202
  upper: 4.501
196
203
  default: 0.9
204
+ scale: 0.3727530387083568
197
205
  - name: RR_calf_joint
198
206
  lower: -2.818
199
207
  upper: -0.888
200
208
  default: -1.8
209
+ scale: 0.24850202580557115
201
210
  - name: RL_hip_joint
202
211
  lower: -0.863
203
212
  upper: 0.863
204
213
  default: -0.1
214
+ scale: 0.3727530387083568
205
215
  - name: RL_thigh_joint
206
216
  lower: -0.686
207
217
  upper: 4.501
208
218
  default: 0.9
219
+ scale: 0.3727530387083568
209
220
  - name: RL_calf_joint
210
221
  lower: -2.818
211
222
  upper: -0.888
212
223
  default: -1.8
224
+ scale: 0.24850202580557115
213
225
  observation_space:
214
226
  actuator_names:
215
227
  - FR_hip_joint
@@ -229,47 +241,59 @@ unitreego1:
229
241
  lower: -0.863
230
242
  upper: 0.863
231
243
  default: 0.1
244
+ scale: 0.3727530387083568
232
245
  - name: FR_thigh_joint
233
246
  lower: -0.686
234
247
  upper: 4.501
235
248
  default: 0.9
249
+ scale: 0.3727530387083568
236
250
  - name: FR_calf_joint
237
251
  lower: -2.818
238
252
  upper: -0.888
239
253
  default: -1.8
254
+ scale: 0.24850202580557115
240
255
  - name: FL_hip_joint
241
256
  lower: -0.863
242
257
  upper: 0.863
243
258
  default: -0.1
259
+ scale: 0.3727530387083568
244
260
  - name: FL_thigh_joint
245
261
  lower: -0.686
246
262
  upper: 4.501
247
263
  default: 0.9
264
+ scale: 0.3727530387083568
248
265
  - name: FL_calf_joint
249
266
  lower: -2.818
250
267
  upper: -0.888
251
268
  default: -1.8
269
+ scale: 0.24850202580557115
252
270
  - name: RR_hip_joint
253
271
  lower: -0.863
254
272
  upper: 0.863
255
273
  default: 0.1
274
+ scale: 0.3727530387083568
256
275
  - name: RR_thigh_joint
257
276
  lower: -0.686
258
277
  upper: 4.501
259
278
  default: 0.9
279
+ scale: 0.3727530387083568
260
280
  - name: RR_calf_joint
261
281
  lower: -2.818
262
282
  upper: -0.888
263
283
  default: -1.8
284
+ scale: 0.24850202580557115
264
285
  - name: RL_hip_joint
265
286
  lower: -0.863
266
287
  upper: 0.863
267
288
  default: -0.1
289
+ scale: 0.3727530387083568
268
290
  - name: RL_thigh_joint
269
291
  lower: -0.686
270
292
  upper: 4.501
271
293
  default: 0.9
294
+ scale: 0.3727530387083568
272
295
  - name: RL_calf_joint
273
296
  lower: -2.818
274
297
  upper: -0.888
275
298
  default: -1.8
299
+ scale: 0.24850202580557115
@@ -22,10 +22,10 @@ _runtime_version.ValidateProtobufRuntimeVersion(
22
22
  _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
- from . import common_pb2 as common__pb2
26
- from . import media_pb2 as media__pb2
27
- from . import mujoco_pb2 as mujoco__pb2
28
- from . import telemetry_pb2 as telemetry__pb2
25
+ import common_pb2 as common__pb2
26
+ import media_pb2 as media__pb2
27
+ import mujoco_pb2 as mujoco__pb2
28
+ import telemetry_pb2 as telemetry__pb2
29
29
 
30
30
 
31
31
  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0b\x61gent.proto\x12\thazel.rpc\x1a\x0c\x63ommon.proto\x1a\x0bmedia.proto\x1a\x0cmujoco.proto\x1a\x0ftelemetry.proto\"\x81\x01\n\x0b\x41gentSchema\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x19\n\x11observation_names\x18\x02 \x03(\t\x12\x14\n\x0c\x61\x63tion_names\x18\x03 \x03(\t\x12\x18\n\x10observation_size\x18\x04 \x01(\r\x12\x13\n\x0b\x61\x63tion_size\x18\x05 \x01(\r\"+\n\x15GetAgentSchemaRequest\x12\x12\n\nagent_name\x18\x01 \x01(\t\"@\n\x16GetAgentSchemaResponse\x12&\n\x06schema\x18\x01 \x01(\x0b\x32\x16.hazel.rpc.AgentSchema\"<\n\x12StreamAgentRequest\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x12\n\ntarget_fps\x18\x02 \x01(\r\"\xa1\x03\n\x19\x44omainRandomizationConfig\x12\x1b\n\x13pose_position_noise\x18\x01 \x03(\x02\x12\x1e\n\x16pose_orientation_noise\x18\x02 \x01(\x02\x12\x1c\n\x14joint_position_noise\x18\x03 \x01(\x02\x12\x1c\n\x14joint_velocity_noise\x18\x04 \x01(\x02\x12\x16\n\x0e\x66riction_range\x18\x05 \x03(\x02\x12\x19\n\x11restitution_range\x18\x06 \x03(\x02\x12\x18\n\x10mass_scale_range\x18\x07 \x03(\x02\x12\x18\n\x10\x63om_offset_range\x18\x08 \x03(\x02\x12\x1c\n\x14motor_strength_range\x18\t \x03(\x02\x12\x1a\n\x12motor_offset_range\x18\n \x03(\x02\x12\x1b\n\x13push_interval_range\x18\x0b \x03(\x02\x12\x1b\n\x13push_velocity_range\x18\x0c \x03(\x02\x12\x14\n\x0cterrain_type\x18\r \x01(\t\x12\x1a\n\x12terrain_difficulty\x18\x0e \x01(\x02\"`\n\x11ResetAgentRequest\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x37\n\tdr_config\x18\x02 \x01(\x0b\x32$.hazel.rpc.DomainRandomizationConfig\"6\n\x12ResetAgentResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x87\x01\n\nAgentFrame\x12\x14\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x12\x14\n\x0c\x66rame_number\x18\x02 \x01(\r\x12\x14\n\x0cobservations\x18\x03 \x03(\x02\x12\x0f\n\x07\x61\x63tions\x18\x04 \x03(\x02\x12\x12\n\nagent_name\x18\x05 \x01(\t\x12\x12\n\ntarget_fps\x18\x06 \x01(\r\"\x87\x01\n\x15GetCameraFrameRequest\x12!\n\x02id\x18\x01 \x01(\x0b\x32\x13.hazel.rpc.EntityIdH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x12\r\n\x05width\x18\x03 \x01(\r\x12\x0e\n\x06height\x18\x04 \x01(\r\x12\x0e\n\x06\x66ormat\x18\x05 \x01(\tB\x0c\n\nidentifier\"_\n\x17GetViewportFrameRequest\x12\x15\n\rviewport_name\x18\x01 \x01(\t\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0e\n\x06\x66ormat\x18\x04 \x01(\t\"\xfe\x01\n\x15GetObservationRequest\x12\x12\n\nrobot_name\x18\x01 \x01(\t\x12\x12\n\nagent_name\x18\x02 \x01(\t\x12\x1b\n\x13include_joint_state\x18\x03 \x01(\x08\x12\x1b\n\x13include_agent_frame\x18\x04 \x01(\x08\x12\x19\n\x11include_telemetry\x18\x05 \x01(\x08\x12\x31\n\x07\x63\x61meras\x18\x06 \x03(\x0b\x32 .hazel.rpc.GetCameraFrameRequest\x12\x35\n\tviewports\x18\x07 \x03(\x0b\x32\".hazel.rpc.GetViewportFrameRequest\"\xd4\x02\n\x16GetObservationResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x03 \x01(\x04\x12\x14\n\x0c\x66rame_number\x18\x04 \x01(\r\x12*\n\x0bjoint_state\x18\x05 \x01(\x0b\x32\x15.hazel.rpc.JointState\x12*\n\x0b\x61gent_frame\x18\x06 \x01(\x0b\x32\x15.hazel.rpc.AgentFrame\x12,\n\ttelemetry\x18\x07 \x01(\x0b\x32\x19.hazel.rpc.TelemetryFrame\x12\x31\n\rcamera_frames\x18\x08 \x03(\x0b\x32\x1a.hazel.rpc.NamedImageFrame\x12\x33\n\x0fviewport_frames\x18\t \x03(\x0b\x32\x1a.hazel.rpc.NamedImageFrame\"F\n\x0bStepRequest\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\x02\x12\x12\n\ntimeout_ms\x18\x03 \x01(\r\"~\n\x0cStepResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\x12*\n\x0bobservation\x18\x03 \x01(\x0b\x32\x15.hazel.rpc.AgentFrame\x12 \n\x18physics_step_duration_us\x18\x04 \x01(\x04\x32\x87\x03\n\x0c\x41gentService\x12U\n\x0eGetAgentSchema\x12 .hazel.rpc.GetAgentSchemaRequest\x1a!.hazel.rpc.GetAgentSchemaResponse\x12U\n\x0eGetObservation\x12 .hazel.rpc.GetObservationRequest\x1a!.hazel.rpc.GetObservationResponse\x12\x45\n\x0bStreamAgent\x12\x1d.hazel.rpc.StreamAgentRequest\x1a\x15.hazel.rpc.AgentFrame0\x01\x12I\n\nResetAgent\x12\x1c.hazel.rpc.ResetAgentRequest\x1a\x1d.hazel.rpc.ResetAgentResponse\x12\x37\n\x04Step\x12\x16.hazel.rpc.StepRequest\x1a\x17.hazel.rpc.StepResponseB\x03\xf8\x01\x01\x62\x06proto3')
@@ -3,7 +3,7 @@
3
3
  import grpc
4
4
  import warnings
5
5
 
6
- from . import agent_pb2 as agent__pb2
6
+ import agent_pb2 as agent__pb2
7
7
 
8
8
  GRPC_GENERATED_VERSION = '1.76.0'
9
9
  GRPC_VERSION = grpc.__version__
@@ -22,8 +22,8 @@ _runtime_version.ValidateProtobufRuntimeVersion(
22
22
  _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
- from . import common_pb2 as common__pb2
26
- from . import media_pb2 as media__pb2
25
+ import common_pb2 as common__pb2
26
+ import media_pb2 as media__pb2
27
27
 
28
28
 
29
29
  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63\x61mera.proto\x12\thazel.rpc\x1a\x0c\x63ommon.proto\x1a\x0bmedia.proto\";\n\nCameraInfo\x12\x1f\n\x02id\x18\x01 \x01(\x0b\x32\x13.hazel.rpc.EntityId\x12\x0c\n\x04name\x18\x02 \x01(\t\"\x14\n\x12ListCamerasRequest\"=\n\x13ListCamerasResponse\x12&\n\x07\x63\x61meras\x18\x01 \x03(\x0b\x32\x15.hazel.rpc.CameraInfo\"\x99\x01\n\x13StreamCameraRequest\x12!\n\x02id\x18\x01 \x01(\x0b\x32\x13.hazel.rpc.EntityIdH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x12\x12\n\ntarget_fps\x18\x03 \x01(\r\x12\r\n\x05width\x18\x04 \x01(\r\x12\x0e\n\x06height\x18\x05 \x01(\r\x12\x0e\n\x06\x66ormat\x18\x06 \x01(\tB\x0c\n\nidentifier2\xa6\x01\n\rCameraService\x12L\n\x0bListCameras\x12\x1d.hazel.rpc.ListCamerasRequest\x1a\x1e.hazel.rpc.ListCamerasResponse\x12G\n\x0cStreamCamera\x12\x1e.hazel.rpc.StreamCameraRequest\x1a\x15.hazel.rpc.ImageFrame0\x01\x42\x03\xf8\x01\x01\x62\x06proto3')
@@ -3,8 +3,8 @@
3
3
  import grpc
4
4
  import warnings
5
5
 
6
- from . import camera_pb2 as camera__pb2
7
- from . import media_pb2 as media__pb2
6
+ import camera_pb2 as camera__pb2
7
+ import media_pb2 as media__pb2
8
8
 
9
9
  GRPC_GENERATED_VERSION = '1.76.0'
10
10
  GRPC_VERSION = grpc.__version__
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: debug.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'debug.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0b\x64\x65\x62ug.proto\x12\thazel.rpc\"/\n\x0c\x44\x65\x62ugVector3\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"8\n\nDebugColor\x12\t\n\x01r\x18\x01 \x01(\x02\x12\t\n\x01g\x18\x02 \x01(\x02\x12\t\n\x01\x62\x18\x03 \x01(\x02\x12\t\n\x01\x61\x18\x04 \x01(\x02\"\x7f\n\tDebugLine\x12&\n\x05start\x18\x01 \x01(\x0b\x32\x17.hazel.rpc.DebugVector3\x12$\n\x03\x65nd\x18\x02 \x01(\x0b\x32\x17.hazel.rpc.DebugVector3\x12$\n\x05\x63olor\x18\x03 \x01(\x0b\x32\x15.hazel.rpc.DebugColor\"\x96\x01\n\nDebugArrow\x12\'\n\x06origin\x18\x01 \x01(\x0b\x32\x17.hazel.rpc.DebugVector3\x12*\n\tdirection\x18\x02 \x01(\x0b\x32\x17.hazel.rpc.DebugVector3\x12$\n\x05\x63olor\x18\x03 \x01(\x0b\x32\x15.hazel.rpc.DebugColor\x12\r\n\x05scale\x18\x04 \x01(\x02\"\x87\x01\n\x14\x44\x65\x62ugVelocityCommand\x12\'\n\x06origin\x18\x01 \x01(\x0b\x32\x17.hazel.rpc.DebugVector3\x12\x11\n\tlin_vel_x\x18\x02 \x01(\x02\x12\x11\n\tlin_vel_y\x18\x03 \x01(\x02\x12\x11\n\tang_vel_z\x18\x04 \x01(\x02\x12\r\n\x05scale\x18\x05 \x01(\x02\"\xb1\x01\n\x10\x44\x65\x62ugDrawRequest\x12#\n\x05lines\x18\x01 \x03(\x0b\x32\x14.hazel.rpc.DebugLine\x12%\n\x06\x61rrows\x18\x02 \x03(\x0b\x32\x15.hazel.rpc.DebugArrow\x12\x39\n\x10velocity_command\x18\x03 \x01(\x0b\x32\x1f.hazel.rpc.DebugVelocityCommand\x12\x16\n\x0e\x63lear_previous\x18\x04 \x01(\x08\"$\n\x11\x44\x65\x62ugDrawResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32Q\n\x0c\x44\x65\x62ugService\x12\x41\n\x04\x44raw\x12\x1b.hazel.rpc.DebugDrawRequest\x1a\x1c.hazel.rpc.DebugDrawResponseB\x03\xf8\x01\x01\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'debug_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ _globals['DESCRIPTOR']._loaded_options = None
34
+ _globals['DESCRIPTOR']._serialized_options = b'\370\001\001'
35
+ _globals['_DEBUGVECTOR3']._serialized_start=26
36
+ _globals['_DEBUGVECTOR3']._serialized_end=73
37
+ _globals['_DEBUGCOLOR']._serialized_start=75
38
+ _globals['_DEBUGCOLOR']._serialized_end=131
39
+ _globals['_DEBUGLINE']._serialized_start=133
40
+ _globals['_DEBUGLINE']._serialized_end=260
41
+ _globals['_DEBUGARROW']._serialized_start=263
42
+ _globals['_DEBUGARROW']._serialized_end=413
43
+ _globals['_DEBUGVELOCITYCOMMAND']._serialized_start=416
44
+ _globals['_DEBUGVELOCITYCOMMAND']._serialized_end=551
45
+ _globals['_DEBUGDRAWREQUEST']._serialized_start=554
46
+ _globals['_DEBUGDRAWREQUEST']._serialized_end=731
47
+ _globals['_DEBUGDRAWRESPONSE']._serialized_start=733
48
+ _globals['_DEBUGDRAWRESPONSE']._serialized_end=769
49
+ _globals['_DEBUGSERVICE']._serialized_start=771
50
+ _globals['_DEBUGSERVICE']._serialized_end=852
51
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,100 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+ import warnings
5
+
6
+ import debug_pb2 as debug__pb2
7
+
8
+ GRPC_GENERATED_VERSION = '1.76.0'
9
+ GRPC_VERSION = grpc.__version__
10
+ _version_not_supported = False
11
+
12
+ try:
13
+ from grpc._utilities import first_version_is_lower
14
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
15
+ except ImportError:
16
+ _version_not_supported = True
17
+
18
+ if _version_not_supported:
19
+ raise RuntimeError(
20
+ f'The grpc package installed is at version {GRPC_VERSION},'
21
+ + ' but the generated code in debug_pb2_grpc.py depends on'
22
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
23
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
24
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
25
+ )
26
+
27
+
28
+ class DebugServiceStub(object):
29
+ """Debug visualization service.
30
+ """
31
+
32
+ def __init__(self, channel):
33
+ """Constructor.
34
+
35
+ Args:
36
+ channel: A grpc.Channel.
37
+ """
38
+ self.Draw = channel.unary_unary(
39
+ '/hazel.rpc.DebugService/Draw',
40
+ request_serializer=debug__pb2.DebugDrawRequest.SerializeToString,
41
+ response_deserializer=debug__pb2.DebugDrawResponse.FromString,
42
+ _registered_method=True)
43
+
44
+
45
+ class DebugServiceServicer(object):
46
+ """Debug visualization service.
47
+ """
48
+
49
+ def Draw(self, request, context):
50
+ """Missing associated documentation comment in .proto file."""
51
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
52
+ context.set_details('Method not implemented!')
53
+ raise NotImplementedError('Method not implemented!')
54
+
55
+
56
+ def add_DebugServiceServicer_to_server(servicer, server):
57
+ rpc_method_handlers = {
58
+ 'Draw': grpc.unary_unary_rpc_method_handler(
59
+ servicer.Draw,
60
+ request_deserializer=debug__pb2.DebugDrawRequest.FromString,
61
+ response_serializer=debug__pb2.DebugDrawResponse.SerializeToString,
62
+ ),
63
+ }
64
+ generic_handler = grpc.method_handlers_generic_handler(
65
+ 'hazel.rpc.DebugService', rpc_method_handlers)
66
+ server.add_generic_rpc_handlers((generic_handler,))
67
+ server.add_registered_method_handlers('hazel.rpc.DebugService', rpc_method_handlers)
68
+
69
+
70
+ # This class is part of an EXPERIMENTAL API.
71
+ class DebugService(object):
72
+ """Debug visualization service.
73
+ """
74
+
75
+ @staticmethod
76
+ def Draw(request,
77
+ target,
78
+ options=(),
79
+ channel_credentials=None,
80
+ call_credentials=None,
81
+ insecure=False,
82
+ compression=None,
83
+ wait_for_ready=None,
84
+ timeout=None,
85
+ metadata=None):
86
+ return grpc.experimental.unary_unary(
87
+ request,
88
+ target,
89
+ '/hazel.rpc.DebugService/Draw',
90
+ debug__pb2.DebugDrawRequest.SerializeToString,
91
+ debug__pb2.DebugDrawResponse.FromString,
92
+ options,
93
+ channel_credentials,
94
+ insecure,
95
+ call_credentials,
96
+ compression,
97
+ wait_for_ready,
98
+ timeout,
99
+ metadata,
100
+ _registered_method=True)
@@ -22,17 +22,18 @@ _runtime_version.ValidateProtobufRuntimeVersion(
22
22
  _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
- from . import common_pb2 as common__pb2
26
- from . import scene_pb2 as scene__pb2
27
- from . import mujoco_pb2 as mujoco__pb2
28
- from . import telemetry_pb2 as telemetry__pb2
29
- from . import media_pb2 as media__pb2
30
- from . import agent_pb2 as agent__pb2
31
- from . import viewport_pb2 as viewport__pb2
32
- from . import camera_pb2 as camera__pb2
25
+ import common_pb2 as common__pb2
26
+ import scene_pb2 as scene__pb2
27
+ import mujoco_pb2 as mujoco__pb2
28
+ import telemetry_pb2 as telemetry__pb2
29
+ import media_pb2 as media__pb2
30
+ import agent_pb2 as agent__pb2
31
+ import viewport_pb2 as viewport__pb2
32
+ import camera_pb2 as camera__pb2
33
+ import debug_pb2 as debug__pb2
33
34
 
34
35
 
35
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fhazel_rpc.proto\x12\thazel.rpc\x1a\x0c\x63ommon.proto\x1a\x0bscene.proto\x1a\x0cmujoco.proto\x1a\x0ftelemetry.proto\x1a\x0bmedia.proto\x1a\x0b\x61gent.proto\x1a\x0eviewport.proto\x1a\x0c\x63\x61mera.protoB\x03\xf8\x01\x01\x62\x06proto3')
36
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fhazel_rpc.proto\x12\thazel.rpc\x1a\x0c\x63ommon.proto\x1a\x0bscene.proto\x1a\x0cmujoco.proto\x1a\x0ftelemetry.proto\x1a\x0bmedia.proto\x1a\x0b\x61gent.proto\x1a\x0eviewport.proto\x1a\x0c\x63\x61mera.proto\x1a\x0b\x64\x65\x62ug.protoB\x03\xf8\x01\x01\x62\x06proto3')
36
37
 
37
38
  _globals = globals()
38
39
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -3,7 +3,7 @@
3
3
  import grpc
4
4
  import warnings
5
5
 
6
- from . import mujoco_pb2 as mujoco__pb2
6
+ import mujoco_pb2 as mujoco__pb2
7
7
 
8
8
  GRPC_GENERATED_VERSION = '1.76.0'
9
9
  GRPC_VERSION = grpc.__version__
@@ -22,7 +22,7 @@ _runtime_version.ValidateProtobufRuntimeVersion(
22
22
  _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
- from . import common_pb2 as common__pb2
25
+ import common_pb2 as common__pb2
26
26
 
27
27
 
28
28
  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bscene.proto\x12\thazel.rpc\x1a\x0c\x63ommon.proto\"x\n\nEntityInfo\x12\x1f\n\x02id\x18\x01 \x01(\x0b\x32\x13.hazel.rpc.EntityId\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\'\n\ttransform\x18\x03 \x01(\x0b\x32\x14.hazel.rpc.Transform\x12\x12\n\ncomponents\x18\x04 \x03(\t\"\x15\n\x13GetSceneInfoRequest\"T\n\x14GetSceneInfoResponse\x12\x12\n\nscene_name\x18\x01 \x01(\t\x12\x12\n\nscene_path\x18\x02 \x01(\t\x12\x14\n\x0c\x65ntity_count\x18\x03 \x01(\r\"M\n\x13ListEntitiesRequest\x12\x1a\n\x12include_transforms\x18\x01 \x01(\x08\x12\x1a\n\x12include_components\x18\x02 \x01(\x08\"?\n\x14ListEntitiesResponse\x12\'\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x15.hazel.rpc.EntityInfo\"S\n\x10GetEntityRequest\x12!\n\x02id\x18\x01 \x01(\x0b\x32\x13.hazel.rpc.EntityIdH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x42\x0c\n\nidentifier\"I\n\x11GetEntityResponse\x12\r\n\x05\x66ound\x18\x01 \x01(\x08\x12%\n\x06\x65ntity\x18\x02 \x01(\x0b\x32\x15.hazel.rpc.EntityInfo\"e\n\x19SetEntityTransformRequest\x12\x1f\n\x02id\x18\x01 \x01(\x0b\x32\x13.hazel.rpc.EntityId\x12\'\n\ttransform\x18\x02 \x01(\x0b\x32\x14.hazel.rpc.Transform\">\n\x1aSetEntityTransformResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\"C\n\x18SetSimulationModeRequest\x12\'\n\x04mode\x18\x01 \x01(\x0e\x32\x19.hazel.rpc.SimulationMode\"n\n\x19SetSimulationModeResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\x12/\n\x0c\x63urrent_mode\x18\x03 \x01(\x0e\x32\x19.hazel.rpc.SimulationMode\"\x1a\n\x18GetSimulationModeRequest\"D\n\x19GetSimulationModeResponse\x12\'\n\x04mode\x18\x01 \x01(\x0e\x32\x19.hazel.rpc.SimulationMode*k\n\x0eSimulationMode\x12\x1c\n\x18SIMULATION_MODE_REALTIME\x10\x00\x12!\n\x1dSIMULATION_MODE_DETERMINISTIC\x10\x01\x12\x18\n\x14SIMULATION_MODE_FAST\x10\x02\x32\x9b\x04\n\x0cSceneService\x12O\n\x0cGetSceneInfo\x12\x1e.hazel.rpc.GetSceneInfoRequest\x1a\x1f.hazel.rpc.GetSceneInfoResponse\x12O\n\x0cListEntities\x12\x1e.hazel.rpc.ListEntitiesRequest\x1a\x1f.hazel.rpc.ListEntitiesResponse\x12\x46\n\tGetEntity\x12\x1b.hazel.rpc.GetEntityRequest\x1a\x1c.hazel.rpc.GetEntityResponse\x12\x61\n\x12SetEntityTransform\x12$.hazel.rpc.SetEntityTransformRequest\x1a%.hazel.rpc.SetEntityTransformResponse\x12^\n\x11SetSimulationMode\x12#.hazel.rpc.SetSimulationModeRequest\x1a$.hazel.rpc.SetSimulationModeResponse\x12^\n\x11GetSimulationMode\x12#.hazel.rpc.GetSimulationModeRequest\x1a$.hazel.rpc.GetSimulationModeResponseB\x03\xf8\x01\x01\x62\x06proto3')
@@ -3,7 +3,7 @@
3
3
  import grpc
4
4
  import warnings
5
5
 
6
- from . import scene_pb2 as scene__pb2
6
+ import scene_pb2 as scene__pb2
7
7
 
8
8
  GRPC_GENERATED_VERSION = '1.76.0'
9
9
  GRPC_VERSION = grpc.__version__
@@ -3,7 +3,7 @@
3
3
  import grpc
4
4
  import warnings
5
5
 
6
- from . import telemetry_pb2 as telemetry__pb2
6
+ import telemetry_pb2 as telemetry__pb2
7
7
 
8
8
  GRPC_GENERATED_VERSION = '1.76.0'
9
9
  GRPC_VERSION = grpc.__version__
@@ -22,7 +22,7 @@ _runtime_version.ValidateProtobufRuntimeVersion(
22
22
  _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
- from . import media_pb2 as media__pb2
25
+ import media_pb2 as media__pb2
26
26
 
27
27
 
28
28
  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0eviewport.proto\x12\thazel.rpc\x1a\x0bmedia.proto\"v\n\x1aStartViewportStreamRequest\x12\x15\n\rviewport_name\x18\x01 \x01(\t\x12\x12\n\ntarget_fps\x18\x02 \x01(\r\x12\r\n\x05width\x18\x03 \x01(\r\x12\x0e\n\x06height\x18\x04 \x01(\r\x12\x0e\n\x06\x66ormat\x18\x05 \x01(\t\"l\n\x14ViewportStreamConfig\x12\x11\n\tstreaming\x18\x01 \x01(\x08\x12\x15\n\rviewport_name\x18\x02 \x01(\t\x12\x0b\n\x03\x66ps\x18\x03 \x01(\r\x12\r\n\x05width\x18\x04 \x01(\r\x12\x0e\n\x06height\x18\x05 \x01(\r\"\x1b\n\x19StopViewportStreamRequest\"-\n\x1aStopViewportStreamResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\x18\n\x16GetViewportInfoRequest\"o\n\x17GetViewportInfoResponse\x12\x1b\n\x13\x61vailable_viewports\x18\x01 \x03(\t\x12\x37\n\x0e\x63urrent_config\x18\x02 \x01(\x0b\x32\x1f.hazel.rpc.ViewportStreamConfig2\xbd\x01\n\x0fViewportService\x12X\n\x0fGetViewportInfo\x12!.hazel.rpc.GetViewportInfoRequest\x1a\".hazel.rpc.GetViewportInfoResponse\x12P\n\x0eStreamViewport\x12%.hazel.rpc.StartViewportStreamRequest\x1a\x15.hazel.rpc.ImageFrame0\x01\x42\x03\xf8\x01\x01\x62\x06proto3')
@@ -3,8 +3,8 @@
3
3
  import grpc
4
4
  import warnings
5
5
 
6
- from . import media_pb2 as media__pb2
7
- from . import viewport_pb2 as viewport__pb2
6
+ import media_pb2 as media__pb2
7
+ import viewport_pb2 as viewport__pb2
8
8
 
9
9
  GRPC_GENERATED_VERSION = '1.76.0'
10
10
  GRPC_VERSION = grpc.__version__
@@ -0,0 +1,63 @@
1
+ syntax = "proto3";
2
+
3
+ // Debug visualization service for the LuckyEngine / Hazel ScriptCore gRPC API (v1).
4
+
5
+ package hazel.rpc;
6
+
7
+ option cc_enable_arenas = true;
8
+
9
+ // A 3D vector for debug drawing.
10
+ message DebugVector3 {
11
+ float x = 1;
12
+ float y = 2;
13
+ float z = 3;
14
+ }
15
+
16
+ // RGBA color (0-1 range).
17
+ message DebugColor {
18
+ float r = 1;
19
+ float g = 2;
20
+ float b = 3;
21
+ float a = 4;
22
+ }
23
+
24
+ // A debug line to draw.
25
+ message DebugLine {
26
+ DebugVector3 start = 1;
27
+ DebugVector3 end = 2;
28
+ DebugColor color = 3;
29
+ }
30
+
31
+ // A debug arrow (line with arrowhead).
32
+ message DebugArrow {
33
+ DebugVector3 origin = 1;
34
+ DebugVector3 direction = 2; // Direction and magnitude
35
+ DebugColor color = 3;
36
+ float scale = 4; // Scale factor for visualization
37
+ }
38
+
39
+ // Velocity command visualization.
40
+ message DebugVelocityCommand {
41
+ DebugVector3 origin = 1; // Robot position
42
+ float lin_vel_x = 2; // Forward velocity command
43
+ float lin_vel_y = 3; // Lateral velocity command
44
+ float ang_vel_z = 4; // Angular velocity command
45
+ float scale = 5; // Visualization scale
46
+ }
47
+
48
+ // Collection of debug primitives to draw for one frame.
49
+ message DebugDrawRequest {
50
+ repeated DebugLine lines = 1;
51
+ repeated DebugArrow arrows = 2;
52
+ DebugVelocityCommand velocity_command = 3;
53
+ bool clear_previous = 4; // Clear previous frame's debug draws
54
+ }
55
+
56
+ message DebugDrawResponse {
57
+ bool success = 1;
58
+ }
59
+
60
+ // Debug visualization service.
61
+ service DebugService {
62
+ rpc Draw(DebugDrawRequest) returns (DebugDrawResponse);
63
+ }
@@ -30,3 +30,4 @@ import "media.proto";
30
30
  import "agent.proto";
31
31
  import "viewport.proto";
32
32
  import "camera.proto";
33
+ import "debug.proto";
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: luckyrobots
3
- Version: 0.1.73
3
+ Version: 0.1.74
4
4
  Summary: Robotics-AI Training in Hyperrealistic Game Environments
5
5
  Project-URL: Homepage, https://github.com/luckyrobots/luckyrobots
6
6
  Project-URL: Documentation, https://luckyrobots.readthedocs.io
@@ -1,35 +1,38 @@
1
1
  luckyrobots/__init__.py,sha256=cjma4V6iH-1QWWkt9n9Y9JD8LZJgmTIXP7eE9RT2ylw,469
2
- luckyrobots/client.py,sha256=_OSK5WgMMcSUtSHwJRdmytB-WIJHYMazrwhkV5LSO0c,17667
2
+ luckyrobots/client.py,sha256=ueaJAZbr5mTMwVA5WPV8yNP0aBbQEdkmFWjB5S5Qv_o,22697
3
3
  luckyrobots/luckyrobots.py,sha256=-XkIt9h7si4GK_j5Wpknb7_h56CCWi8_d1woVMuIvxU,8957
4
4
  luckyrobots/utils.py,sha256=deh0OV3I6Tr6V1s0yWs4jtchsZK1vKySpUohLjqOF1I,1769
5
5
  luckyrobots/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- luckyrobots/config/robots.yaml,sha256=TevKlMzsZw-8k3PDf1aOG8zs18LedquS-ayVZeqyYdU,5968
6
+ luckyrobots/config/robots.yaml,sha256=-O39zJ_6lVfNnqdeVLpeY0no8EMlUQ2LpAopNc98XX4,6792
7
7
  luckyrobots/engine/__init__.py,sha256=OsyOgAnLtOfpRDHXa3Gzc1fRhJA8EfKvRkzijF6iRc8,403
8
8
  luckyrobots/engine/manager.py,sha256=8vxSevaoXo-lw2G6y74lVc-Ms8xIELK0yLswydMiOQY,13388
9
9
  luckyrobots/grpc/__init__.py,sha256=hPh-X_FEus2sxrfQB2fQjD754X5bMaUFTWm3mZmUhe0,153
10
10
  luckyrobots/grpc/generated/__init__.py,sha256=u69M4E_2LwRQSD_n4wvQyMX7dryBCrIdsho59c52Crk,732
11
- luckyrobots/grpc/generated/agent_pb2.py,sha256=5rXekXme6u5KCtEtwjkhHkUyxrfxpMKutG4KPZqNr1U,7195
12
- luckyrobots/grpc/generated/agent_pb2_grpc.py,sha256=M9ZsjS1qhBm57-DVy6il_u_XeTpb6Qbntm45Rqp_f1k,10909
13
- luckyrobots/grpc/generated/camera_pb2.py,sha256=2UDkgzMYdDZ53euPfLAndeI7k4wI9QH_Dvwkay6TAB4,2623
14
- luckyrobots/grpc/generated/camera_pb2_grpc.py,sha256=hUXzsf2qCE-ffZzkF8El2UuuLu6nxjKSYPukId2uFP8,5278
11
+ luckyrobots/grpc/generated/agent_pb2.py,sha256=_aLCb8E5k66XX4RLqU-YgJ7uEvyDSmZLkMmm3Vkn4K4,7167
12
+ luckyrobots/grpc/generated/agent_pb2_grpc.py,sha256=C6qSQMkxrERJsd5Rh_IHbOdURlgKlke8fKZ85edQa4I,10902
13
+ luckyrobots/grpc/generated/camera_pb2.py,sha256=qs436_cLtRx4OPV1WsUMvaJ7NvRnRkQUrDDIr1wmoAY,2609
14
+ luckyrobots/grpc/generated/camera_pb2_grpc.py,sha256=Lx3rmamWMWrkPIDN9tdQU_o4VKd3ETD9Z6h2WHSr7Aw,5264
15
15
  luckyrobots/grpc/generated/common_pb2.py,sha256=0eZTxqlsZdTrgp2hgLy-hdDNtac5U3kkS_D9UbVy0e8,2045
16
16
  luckyrobots/grpc/generated/common_pb2_grpc.py,sha256=MWix04c710srn9BtjDxa9-UkZz0wa-w8tB0EmYndSgg,886
17
- luckyrobots/grpc/generated/hazel_rpc_pb2.py,sha256=XB1nGSVTYhpulRpS8Ja44KaCV5s-l1t_FPV4DJ5_ak8,1716
17
+ luckyrobots/grpc/generated/debug_pb2.py,sha256=1kUalIszt1IA5G3DJzB7nlfQhjdoA9UodPOKFMPmyuM,3525
18
+ luckyrobots/grpc/generated/debug_pb2_grpc.py,sha256=aVlc6AAUuPhqzBOTV6KG5bA_n21eRcXNmTrCKUVvGGI,3310
19
+ luckyrobots/grpc/generated/hazel_rpc_pb2.py,sha256=hcT_OZjzlm1Jz6azZCxfHXn3RlcIXoCoc7CYCgf71RY,1719
18
20
  luckyrobots/grpc/generated/hazel_rpc_pb2_grpc.py,sha256=5bhVh5DmVDl2ZsdgN7mTnElDbgU142TOI1qm8a8eblw,889
19
21
  luckyrobots/grpc/generated/media_pb2.py,sha256=TtGdBub2Pj1vG_jJJIZnIZealLD0s98wZ4KgGIrcn2c,1827
20
22
  luckyrobots/grpc/generated/media_pb2_grpc.py,sha256=szeOZzqDnIBFEyjAtXEHNxytTb9hTvOkQj0PhvXumMM,885
21
23
  luckyrobots/grpc/generated/mujoco_pb2.py,sha256=Oq1AdZ0h-svs7ntlaDZ-zvQdTPsulnaE7YaINvBIBpM,3476
22
- luckyrobots/grpc/generated/mujoco_pb2_grpc.py,sha256=Rz8hyPvhB2nR-0Mej4Ly9ixbrdpPCxDafmL8H4x43Nk,8603
23
- luckyrobots/grpc/generated/scene_pb2.py,sha256=ZQyv_csWjB42WLfHNe8aQVMB5U9nQnJ7fY9enac9VGQ,5382
24
- luckyrobots/grpc/generated/scene_pb2_grpc.py,sha256=I7G2LqkKZwEPZV-gxWo_45ecBey-wuGZ26pwxlH0mGQ,12118
24
+ luckyrobots/grpc/generated/mujoco_pb2_grpc.py,sha256=xEqQ3jGUcAl2SreJgOPz9nb6We4j84OuIy2CysU0SS8,8596
25
+ luckyrobots/grpc/generated/scene_pb2.py,sha256=Qz31l9ietwNFuqTkmd8GsHc_lO4MacuEycxtsE6gJBc,5375
26
+ luckyrobots/grpc/generated/scene_pb2_grpc.py,sha256=ruawWs3hqZFQ_SoMqu75Sdn-v2YpjF5eajPkkcYUmfU,12111
25
27
  luckyrobots/grpc/generated/telemetry_pb2.py,sha256=LgVtxJv7ovtqlrgxG375aXADGt3qXwgpsIhIkJ3pLKE,2790
26
- luckyrobots/grpc/generated/telemetry_pb2_grpc.py,sha256=8TuCSc7rnQZFNqhEPXUoJsWAnwvEvyyEI5GaqQUCSSs,5463
27
- luckyrobots/grpc/generated/viewport_pb2.py,sha256=Z_5gBD23z7He_OACYkaIsi0o4LIESzOG7o_rO1lRLVs,3093
28
- luckyrobots/grpc/generated/viewport_pb2_grpc.py,sha256=BkJqREcjIa3ZdNgZUxH_MvBWOte9VJJGi-KlFgYepog,5436
28
+ luckyrobots/grpc/generated/telemetry_pb2_grpc.py,sha256=hS_ZJeM7DUlUQ4LERHWp704tCQV-0Dwa_M0sscUNxZI,5456
29
+ luckyrobots/grpc/generated/viewport_pb2.py,sha256=MV6QIFJUM-DxpZ8IpnBis4OUAcq8fu7FfROv_iguqb4,3086
30
+ luckyrobots/grpc/generated/viewport_pb2_grpc.py,sha256=xfqmEz_C0_XQl5LRkbxyB4ekyFkup99IbrlrB_S_2aE,5422
29
31
  luckyrobots/grpc/proto/agent.proto,sha256=SUVR9EqNz5gB5FNt3n54sNXv3SkvYgXKywlZmZh5vio,8506
30
32
  luckyrobots/grpc/proto/camera.proto,sha256=unLowpk4d0AGJgyKrbzTr1F_CxOV9dXRoXn-gO8eJVw,1097
31
33
  luckyrobots/grpc/proto/common.proto,sha256=zQPj-Z8b8mAE2_eHlJ0L2_-JH-CYY_OJcv8046fAtQM,772
32
- luckyrobots/grpc/proto/hazel_rpc.proto,sha256=gtFukd1B9WRbY2kWBgd5YQWSw4cobYf1YRYX6VEaULE,1229
34
+ luckyrobots/grpc/proto/debug.proto,sha256=AGo7r3dyYr1Z5h0U5ZFGBn4yZwRAjtew_eyfWgsfvf0,1558
35
+ luckyrobots/grpc/proto/hazel_rpc.proto,sha256=DV_fvdiXkxoiEWnqlrGvfnBCG6TfJ2ei9vZs9pJESCM,1251
33
36
  luckyrobots/grpc/proto/media.proto,sha256=3Rhmiaw1zceQBFdwxX1ViFgH-cSr7mBjNEGHPaFmTsk,836
34
37
  luckyrobots/grpc/proto/mujoco.proto,sha256=b7tBvYqqvcSjmqrEax6_75-P3fIHHZq63A1HVJKjx0U,1873
35
38
  luckyrobots/grpc/proto/scene.proto,sha256=ZypWsUzpgplGsQPP0FXJpyY4rSxgWYGsniM4vofhnak,3075
@@ -37,7 +40,7 @@ luckyrobots/grpc/proto/telemetry.proto,sha256=PZiUoA0bpwuvsBUdoQQdBNGWOuhlBMKAiB
37
40
  luckyrobots/grpc/proto/viewport.proto,sha256=gunF8cIrVgvoAX8FNER6gw_u-IlRWAR1Q6ts0zUuqr8,1324
38
41
  luckyrobots/models/__init__.py,sha256=h_PFZ1OgJnHXfQBqO8_ULB8szCKrGA4lMfmBGZgtIDc,126
39
42
  luckyrobots/models/observation.py,sha256=H45zargSOMR4c-zPupbXNplWBTBfGdG-oQbib203eCY,3620
40
- luckyrobots-0.1.73.dist-info/METADATA,sha256=GJY8BZbJzlwk_1VRViO_DmCZKoBxQjOxsAst7baVY38,8379
41
- luckyrobots-0.1.73.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
42
- luckyrobots-0.1.73.dist-info/licenses/LICENSE,sha256=xsPYvRJPH_fW_sofTUknI_KvZOsD4-BqjSOTZqI6Nmw,1069
43
- luckyrobots-0.1.73.dist-info/RECORD,,
43
+ luckyrobots-0.1.74.dist-info/METADATA,sha256=oQWvQJoYt3O_C2XQs1-lZbKamuJDAKQZhTIpvQJBq9w,8379
44
+ luckyrobots-0.1.74.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
45
+ luckyrobots-0.1.74.dist-info/licenses/LICENSE,sha256=xsPYvRJPH_fW_sofTUknI_KvZOsD4-BqjSOTZqI6Nmw,1069
46
+ luckyrobots-0.1.74.dist-info/RECORD,,