|  |  |  | #!/usr/bin/env python3
 | 
					
						
							|  |  |  | import argparse
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from typing import Any
 | 
					
						
							|  |  |  | 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.')
 | 
					
						
							|  |  |  |   parser.add_argument('--joystick', action='store_true')
 | 
					
						
							|  |  |  |   parser.add_argument('--high_quality', action='store_true')
 | 
					
						
							|  |  |  |   parser.add_argument('--dual_camera', action='store_true')
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return parser.parse_args(add_args)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__":
 | 
					
						
							|  |  |  |   args = parse_args()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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(queue)
 | 
					
						
							|  |  |  |   else:
 | 
					
						
							|  |  |  |     # start input poll for keyboard
 | 
					
						
							|  |  |  |     from openpilot.tools.sim.lib.keyboard_ctrl import keyboard_poll_thread
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     keyboard_poll_thread(queue)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   simulator_bridge.shutdown()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   simulator_process.join()
 |