Skip to content

Commit b24143b

Browse files
committed
fix real time sync in loop() method
- TODO: change hard code for control dt
1 parent aa03933 commit b24143b

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

src/physics_simulator/simulator/mujoco.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -342,24 +342,27 @@ def play(self):
342342

343343
def loop(self):
344344
"""Run the simulation loop."""
345-
last_time = time.time()
346-
while self._running:
347-
current_time = time.time()
348-
elapsed = current_time - last_time
349-
350-
num_steps = int(elapsed / self.config.mujoco_config.timestep)
345+
# TODO@Chenyu Cao: Hard code for control dt
346+
ctrl_dt = 0.004
347+
sim_dt = self.config.mujoco_config.timestep
351348

352-
# self.step(num_steps)
353-
self.step(num_steps=20)
349+
num_steps = int(ctrl_dt / sim_dt)
350+
351+
realtime_sync = self.config.mujoco_config.realtime_sync
352+
353+
while self._running:
354+
start_time = time.time()
355+
self.step(num_steps)
354356

355357
if self._physics_callbacks:
356358
callbacks = list(self._physics_callbacks.values())
357359
for callback in callbacks:
358360
callback()
359361

360-
last_time = current_time
361-
362-
time.sleep(self.config.mujoco_config.timestep)
362+
elapsed = time.time() - start_time
363+
if realtime_sync and elapsed < ctrl_dt:
364+
time.sleep(ctrl_dt - elapsed)
365+
363366
self.close()
364367

365368
def reset(self):

0 commit comments

Comments
 (0)