def simulation(self, cont_resp=10.): """ Run simulation Parameters ---------- waypoint_index : int Waypoint index (appears to be 0-based) that the response function input values will control latitude : float Waypoint latitude value to set longitude : float Waypoint longitude value to set """ NATS_SIMULATION_STATUS_PAUSE = NatsEnvironment.get_nats_constant( 'GNATS_SIMULATION_STATUS_PAUSE') NATS_SIMULATION_STATUS_ENDED = NatsEnvironment.get_nats_constant( 'GNATS_SIMULATION_STATUS_ENDED') AIRCRAFT_CLEARANCE_PUSHBACK = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_PUSHBACK") AIRCRAFT_CLEARANCE_TAXI_DEPARTING = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_TAXI_DEPARTING") AIRCRAFT_CLEARANCE_TAKEOFF = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_TAKEOFF") AIRCRAFT_CLEARANCE_ENTER_ARTC = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_ENTER_ARTC") AIRCRAFT_CLEARANCE_DESCENT_FROM_CRUISE = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_DESCENT_FROM_CRUISE") AIRCRAFT_CLEARANCE_ENTER_TRACON = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_ENTER_TRACON") AIRCRAFT_CLEARANCE_APPROACH = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_APPROACH") AIRCRAFT_CLEARANCE_TOUCHDOWN = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_TOUCHDOWN") AIRCRAFT_CLEARANCE_TAXI_LANDING = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_TAXI_LANDING") AIRCRAFT_CLEARANCE_RAMP_LANDING = NatsEnvironment.get_nats_clearance( "AIRCRAFT_CLEARANCE_RAMP_LANDING") acClearances = [ AIRCRAFT_CLEARANCE_PUSHBACK, AIRCRAFT_CLEARANCE_TAXI_DEPARTING, AIRCRAFT_CLEARANCE_TAKEOFF, AIRCRAFT_CLEARANCE_ENTER_ARTC, AIRCRAFT_CLEARANCE_DESCENT_FROM_CRUISE, AIRCRAFT_CLEARANCE_ENTER_TRACON, AIRCRAFT_CLEARANCE_APPROACH, AIRCRAFT_CLEARANCE_TOUCHDOWN, AIRCRAFT_CLEARANCE_TAXI_LANDING, AIRCRAFT_CLEARANCE_RAMP_LANDING ] natsStandalone = NatsEnvironment.get_nats_standalone() simulationInterface = natsStandalone.getSimulationInterface() entityInterface = natsStandalone.getEntityInterface() controllerInterface = entityInterface.getControllerInterface() pilotInterface = entityInterface.getPilotInterface() environmentInterface = natsStandalone.getEnvironmentInterface() equipmentInterface = natsStandalone.getEquipmentInterface() aircraftInterface = equipmentInterface.getAircraftInterface() if simulationInterface is None: natsStandalone.stop() raise RuntimeError("Can't get SimulationInterface") simulationInterface.clear_trajectory() DIR_share = NatsEnvironment.share_dir environmentInterface.load_rap(DIR_share + "/tg/rap") aircraftInterface.load_aircraft( NatsEnvironment.build_path(self.TRX_NAME), NatsEnvironment.build_path(self.MFL_NAME)) aclist = list(aircraftInterface.getAllAircraftId()) simulationInterface.setupSimulation(7200, 1) for ac in aclist: for acClearance in acClearances: controllerInterface.setDelayPeriod(ac, acClearance, cont_resp) simulationInterface.start() print('Running Simulation...') while True: runtime_sim_status = simulationInterface.get_runtime_sim_status() if (runtime_sim_status == NATS_SIMULATION_STATUS_ENDED): break else: time.sleep(1) # Store attribute for access by write_output and cleanup: self.simulationInterface = simulationInterface self.environmentInterface = environmentInterface self.aircraftInterface = aircraftInterface
def simulation(self, waypoint_index=4, latitude=34.362, longitude=-85.764): """ Run simulation Parameters ---------- waypoint_index : int Waypoint index (appears to be 0-based) that the response function input values will control latitude : float Waypoint latitude value to set longitude : float Waypoint longitude value to set """ NATS_SIMULATION_STATUS_PAUSE = NatsEnvironment.get_nats_constant( 'GNATS_SIMULATION_STATUS_PAUSE') NATS_SIMULATION_STATUS_ENDED = NatsEnvironment.get_nats_constant( 'GNATS_SIMULATION_STATUS_ENDED') natsStandalone = NatsEnvironment.get_nats_standalone() simulationInterface = natsStandalone.getSimulationInterface() entityInterface = natsStandalone.getEntityInterface() controllerInterface = entityInterface.getControllerInterface() pilotInterface = entityInterface.getPilotInterface() environmentInterface = natsStandalone.getEnvironmentInterface() equipmentInterface = natsStandalone.getEquipmentInterface() aircraftInterface = equipmentInterface.getAircraftInterface() if simulationInterface is None: natsStandalone.stop() raise RuntimeError("Can't get SimulationInterface") simulationInterface.clear_trajectory() DIR_share = NatsEnvironment.share_dir environmentInterface.load_rap(DIR_share + "/tg/rap") aircraftInterface.load_aircraft( NatsEnvironment.build_path('demo_2ac.trx'), NatsEnvironment.build_path('demo_2ac_mfl.trx')) aclist = aircraftInterface.getAllAircraftId() ac = aircraftInterface.select_aircraft(aclist[0]) ac.setFlight_plan_latitude_deg(waypoint_index, latitude) ac.setFlight_plan_longitude_deg(waypoint_index, longitude) # Useful print statements to either check the initial waypoint # coordinates or to verify that the setFlight_plan function is # working as expected # print('lat:', ac.getFlight_plan_latitude_array()) # print('long:', ac.getFlight_plan_longitude_array()) simulationInterface.setupSimulation(30000, 30) simulationInterface.start() while True: runtime_sim_status = simulationInterface.get_runtime_sim_status() if (runtime_sim_status == NATS_SIMULATION_STATUS_ENDED): break else: time.sleep(1) # Store attribute for access by write_output and cleanup: self.simulationInterface = simulationInterface self.environmentInterface = environmentInterface self.aircraftInterface = aircraftInterface