From c61f40c34fec475aaedf5d66b527940954b3e31d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 29 Jan 2024 13:11:02 -0500 Subject: [PATCH] Simulator: prepare to make bridge a PythonProcess (#31201) * sim services * clean old-commit-hash: e49eb4c54fcac8bd8a4a136d8e116b654efa73ba --- tools/sim/bridge/common.py | 6 +++--- .../sim/bridge/metadrive/metadrive_bridge.py | 4 ++-- tools/sim/run_bridge.py | 21 +++++++++++++------ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 35656f39f3..bdd53852c0 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -27,14 +27,14 @@ def rk_loop(function, hz, exit_event: threading.Event): class SimulatorBridge(ABC): TICKS_PER_FRAME = 5 - def __init__(self, arguments): + def __init__(self, dual_camera, high_quality): set_params_enabled() self.params = Params() self.rk = Ratekeeper(100, None) - self.dual_camera = arguments.dual_camera - self.high_quality = arguments.high_quality + self.dual_camera = dual_camera + self.high_quality = high_quality self._exit_event = threading.Event() self._threads = [] diff --git a/tools/sim/bridge/metadrive/metadrive_bridge.py b/tools/sim/bridge/metadrive/metadrive_bridge.py index 821af7c7f7..1b1e5ffea6 100644 --- a/tools/sim/bridge/metadrive/metadrive_bridge.py +++ b/tools/sim/bridge/metadrive/metadrive_bridge.py @@ -82,10 +82,10 @@ def create_map(track_size=60): class MetaDriveBridge(SimulatorBridge): TICKS_PER_FRAME = 5 - def __init__(self, args): + def __init__(self, dual_camera, high_quality): self.should_render = False - super(MetaDriveBridge, self).__init__(args) + super(MetaDriveBridge, self).__init__(dual_camera, high_quality) def spawn_world(self): sensors = { diff --git a/tools/sim/run_bridge.py b/tools/sim/run_bridge.py index 5f0f0d5e99..0992ef4bfe 100755 --- a/tools/sim/run_bridge.py +++ b/tools/sim/run_bridge.py @@ -6,6 +6,17 @@ from multiprocessing import Queue from openpilot.tools.sim.bridge.metadrive.metadrive_bridge import MetaDriveBridge +def create_bridge(dual_camera, high_quality): + queue: Any = Queue() + + simulator_bridge = MetaDriveBridge(dual_camera, high_quality) + simulator_process = simulator_bridge.run(queue) + + return queue, simulator_process, simulator_bridge + +def main(): + _, simulator_process, _ = create_bridge(True, False) + simulator_process.join() def parse_args(add_args=None): parser = argparse.ArgumentParser(description='Bridge between the simulator and openpilot.') @@ -16,23 +27,21 @@ def parse_args(add_args=None): return parser.parse_args(add_args) if __name__ == "__main__": - q: Any = Queue() args = parse_args() - simulator_bridge = MetaDriveBridge(args) - p = simulator_bridge.run(q) + queue, simulator_process, simulator_bridge = create_bridge(args.dual_camera, args.high_quality) if args.joystick: # start input poll for joystick from openpilot.tools.sim.lib.manual_ctrl import wheel_poll_thread - wheel_poll_thread(q) + wheel_poll_thread(queue) else: # start input poll for keyboard from openpilot.tools.sim.lib.keyboard_ctrl import keyboard_poll_thread - keyboard_poll_thread(q) + keyboard_poll_thread(queue) simulator_bridge.shutdown() - p.join() + simulator_process.join()