|  |  |  | #!/usr/bin/env python
 | 
					
						
							|  |  |  | import argparse
 | 
					
						
							|  |  |  | import os
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from typing import Any
 | 
					
						
							|  |  |  | from multiprocessing import Queue
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from openpilot.tools.sim.bridge.common import SimulatorBridge
 | 
					
						
							|  |  |  | from openpilot.tools.sim.bridge.carla.carla_bridge import CarlaBridge
 | 
					
						
							|  |  |  | from openpilot.tools.sim.bridge.metadrive.metadrive_bridge import MetaDriveBridge
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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')
 | 
					
						
							|  |  |  |   parser.add_argument('--simulator', dest='simulator', type=str, default='metadrive')
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Carla specific
 | 
					
						
							|  |  |  |   parser.add_argument('--town', type=str, default='Town04_Opt')
 | 
					
						
							|  |  |  |   parser.add_argument('--spawn_point', dest='num_selected_spawn_point', type=int, default=16)
 | 
					
						
							|  |  |  |   parser.add_argument('--host', dest='host', type=str, default=os.environ.get("CARLA_HOST", '127.0.0.1'))
 | 
					
						
							|  |  |  |   parser.add_argument('--port', dest='port', type=int, default=2000)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return parser.parse_args(add_args)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__":
 | 
					
						
							|  |  |  |   q: Any = Queue()
 | 
					
						
							|  |  |  |   args = parse_args()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   simulator_bridge: SimulatorBridge
 | 
					
						
							|  |  |  |   if args.simulator == "carla":
 | 
					
						
							|  |  |  |     simulator_bridge = CarlaBridge(args)
 | 
					
						
							|  |  |  |   elif args.simulator == "metadrive":
 | 
					
						
							|  |  |  |     simulator_bridge = MetaDriveBridge(args)
 | 
					
						
							|  |  |  |   else:
 | 
					
						
							|  |  |  |     raise AssertionError("simulator type not supported")
 | 
					
						
							|  |  |  |   p = simulator_bridge.run(q)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if args.joystick:
 | 
					
						
							|  |  |  |     # start input poll for joystick
 | 
					
						
							|  |  |  |     from openpilot.tools.sim.lib.manual_ctrl import wheel_poll_thread
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     wheel_poll_thread(q)
 | 
					
						
							|  |  |  |   else:
 | 
					
						
							|  |  |  |     # start input poll for keyboard
 | 
					
						
							|  |  |  |     from openpilot.tools.sim.lib.keyboard_ctrl import keyboard_poll_thread
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     keyboard_poll_thread(q)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   simulator_bridge.shutdown()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   p.join()
 |