Simulator: prepare to make bridge a PythonProcess (#31201)

* sim services

* clean
old-commit-hash: e49eb4c54f
chrysler-long2
Justin Newberry 1 year ago committed by GitHub
parent 0a866b2618
commit c61f40c34f
  1. 6
      tools/sim/bridge/common.py
  2. 4
      tools/sim/bridge/metadrive/metadrive_bridge.py
  3. 21
      tools/sim/run_bridge.py

@ -27,14 +27,14 @@ def rk_loop(function, hz, exit_event: threading.Event):
class SimulatorBridge(ABC): class SimulatorBridge(ABC):
TICKS_PER_FRAME = 5 TICKS_PER_FRAME = 5
def __init__(self, arguments): def __init__(self, dual_camera, high_quality):
set_params_enabled() set_params_enabled()
self.params = Params() self.params = Params()
self.rk = Ratekeeper(100, None) self.rk = Ratekeeper(100, None)
self.dual_camera = arguments.dual_camera self.dual_camera = dual_camera
self.high_quality = arguments.high_quality self.high_quality = high_quality
self._exit_event = threading.Event() self._exit_event = threading.Event()
self._threads = [] self._threads = []

@ -82,10 +82,10 @@ def create_map(track_size=60):
class MetaDriveBridge(SimulatorBridge): class MetaDriveBridge(SimulatorBridge):
TICKS_PER_FRAME = 5 TICKS_PER_FRAME = 5
def __init__(self, args): def __init__(self, dual_camera, high_quality):
self.should_render = False self.should_render = False
super(MetaDriveBridge, self).__init__(args) super(MetaDriveBridge, self).__init__(dual_camera, high_quality)
def spawn_world(self): def spawn_world(self):
sensors = { sensors = {

@ -6,6 +6,17 @@ from multiprocessing import Queue
from openpilot.tools.sim.bridge.metadrive.metadrive_bridge import MetaDriveBridge 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): def parse_args(add_args=None):
parser = argparse.ArgumentParser(description='Bridge between the simulator and openpilot.') 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) return parser.parse_args(add_args)
if __name__ == "__main__": if __name__ == "__main__":
q: Any = Queue()
args = parse_args() args = parse_args()
simulator_bridge = MetaDriveBridge(args) queue, simulator_process, simulator_bridge = create_bridge(args.dual_camera, args.high_quality)
p = simulator_bridge.run(q)
if args.joystick: if args.joystick:
# start input poll for joystick # start input poll for joystick
from openpilot.tools.sim.lib.manual_ctrl import wheel_poll_thread from openpilot.tools.sim.lib.manual_ctrl import wheel_poll_thread
wheel_poll_thread(q) wheel_poll_thread(queue)
else: else:
# start input poll for keyboard # start input poll for keyboard
from openpilot.tools.sim.lib.keyboard_ctrl import keyboard_poll_thread from openpilot.tools.sim.lib.keyboard_ctrl import keyboard_poll_thread
keyboard_poll_thread(q) keyboard_poll_thread(queue)
simulator_bridge.shutdown() simulator_bridge.shutdown()
p.join() simulator_process.join()

Loading…
Cancel
Save