diff --git a/tools/sim/bridge/carla.py b/tools/sim/bridge/carla.py index df25734e19..a202cb1d3f 100644 --- a/tools/sim/bridge/carla.py +++ b/tools/sim/bridge/carla.py @@ -110,6 +110,9 @@ class CarlaWorld(World): def tick(self): self.world.tick() + def reset(self): + pass + class CarlaBridge(SimulatorBridge): TICKS_PER_FRAME = 5 diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 360fdc0e68..4e800226fb 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -127,6 +127,8 @@ class SimulatorBridge(ABC): self.simulator_state.cruise_button = CruiseButtons.MAIN elif m[0] == "ignition": self.simulator_state.ignition = not self.simulator_state.ignition + elif m[0] == "reset": + self.world.reset() elif m[0] == "quit": break diff --git a/tools/sim/bridge/metadrive.py b/tools/sim/bridge/metadrive.py index f7b937359e..5814364be1 100644 --- a/tools/sim/bridge/metadrive.py +++ b/tools/sim/bridge/metadrive.py @@ -81,8 +81,11 @@ class MetaDriveWorld(World): obs, _, terminated, _, info = self.env.step(self.vc) if terminated: - self.env.reset() - self.reset_time = time.monotonic() + self.reset() + + def reset(self): + self.env.reset() + self.reset_time = time.monotonic() def close(self): pass diff --git a/tools/sim/lib/common.py b/tools/sim/lib/common.py index 3de89f39fc..19012b1c2d 100644 --- a/tools/sim/lib/common.py +++ b/tools/sim/lib/common.py @@ -83,4 +83,8 @@ class World(ABC): @abstractmethod def close(self): + pass + + @abstractmethod + def reset(self): pass \ No newline at end of file diff --git a/tools/sim/lib/keyboard_ctrl.py b/tools/sim/lib/keyboard_ctrl.py index 57d5834026..f8b3517fde 100644 --- a/tools/sim/lib/keyboard_ctrl.py +++ b/tools/sim/lib/keyboard_ctrl.py @@ -55,6 +55,8 @@ def keyboard_poll_thread(q: 'Queue[str]'): q.put("steer_%f" % -0.15) elif c == 'i': q.put("ignition") + elif c == 'r': + q.put("reset") elif c == 'q': q.put("quit") break