def test_fill_controls_data(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) factory = SensorDataFactory(aircraft) protocol = factory.buildProtocol(("127.0.0.1", 12345)) sensor_data_response = fdm_pb2.SensorDataResponse() protocol.fill_controls_data(sensor_data_response) self.assertAlmostEqual(sensor_data_response.controls.aileron, aircraft.controls.aileron) self.assertAlmostEqual(sensor_data_response.controls.elevator, aircraft.controls.elevator) self.assertAlmostEqual(sensor_data_response.controls.rudder, aircraft.controls.rudder) self.assertAlmostEqual(sensor_data_response.controls.throttle, aircraft.controls.throttle) self.assertEqual(sensor_data_response.type, fdm_pb2.CONTROLS_REQUEST)
def test_gyroscope(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() gyroscope = Gyroscope(fdmexec) self.assertAlmostEqual(gyroscope.true_roll_rate, math.degrees(fdmexec.GetPropagate().GetPQR(1)), 3) self.assertAlmostEqual(gyroscope.true_pitch_rate, math.degrees(fdmexec.GetPropagate().GetPQR(2)), 3) self.assertAlmostEqual(gyroscope.true_yaw_rate, math.degrees(fdmexec.GetPropagate().GetPQR(3)), 3) self.assertAlmostEqual( gyroscope.roll_rate, gyroscope.true_roll_rate + gyroscope._roll_rate_measurement_noise, 3) self.assertAlmostEqual( gyroscope.pitch_rate, gyroscope.true_pitch_rate + gyroscope._pitch_rate_measurement_noise, 3) self.assertAlmostEqual( gyroscope.yaw_rate, gyroscope.true_yaw_rate + gyroscope._yaw_rate_measurement_noise, 3)
def test_fill_gps_data(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) factory = SensorDataFactory(aircraft) protocol = factory.buildProtocol(("127.0.0.1", 12345)) sensor_data_response = fdm_pb2.SensorDataResponse() protocol.fill_gps_data(sensor_data_response) self.assertAlmostEqual(sensor_data_response.gps.latitude, aircraft.instruments.gps.latitude) self.assertAlmostEqual(sensor_data_response.gps.longitude, aircraft.instruments.gps.longitude) self.assertAlmostEqual(sensor_data_response.gps.altitude, aircraft.instruments.gps.altitude) self.assertAlmostEqual(sensor_data_response.gps.airspeed, aircraft.instruments.gps.airspeed) self.assertAlmostEqual(sensor_data_response.gps.heading, aircraft.instruments.gps.heading) self.assertEqual(sensor_data_response.type, fdm_pb2.GPS_REQUEST)
def test_fill_gyroscope_data(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) factory = SensorDataFactory(aircraft) protocol = factory.buildProtocol(("127.0.0.1", 12345)) sensor_data_response = fdm_pb2.SensorDataResponse() protocol.fill_gyroscope_data(sensor_data_response) self.assertAlmostEqual(sensor_data_response.gyroscope.roll_rate, aircraft.sensors.gyroscope.roll_rate) self.assertAlmostEqual(sensor_data_response.gyroscope.pitch_rate, aircraft.sensors.gyroscope.pitch_rate) self.assertAlmostEqual(sensor_data_response.gyroscope.yaw_rate, aircraft.sensors.gyroscope.yaw_rate) self.assertEqual(sensor_data_response.type, fdm_pb2.GYROSCOPE_REQUEST)
def test_datagram_received(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) controls_protocol = ControlsProtocol(fdmexec) aileron = 0.1 elevator = 0.2 rudder = 0.3 throttle = 0.4 controls = fdm_pb2.Controls() controls.aileron = aileron controls.elevator = elevator controls.rudder = rudder controls.throttle = throttle controls_datagram = controls.SerializeToString() host = "127.0.0.1" port = 12345 controls_protocol.datagramReceived(controls_datagram, (host, port)) self.assertAlmostEqual(aircraft.controls.aileron, aileron, 3) self.assertAlmostEqual(aircraft.controls.elevator, elevator, 3) self.assertAlmostEqual(aircraft.controls.rudder, rudder, 3) self.assertAlmostEqual(aircraft.controls.throttle, throttle, 3)
def test_inertialNavigationSystem(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() sensors = Sensors(fdmexec) self.assertAlmostEqual(sensors.inertial_navigation_system.true_roll, fdmexec.GetPropagate().GetEulerDeg(1), 3) self.assertAlmostEqual(sensors.inertial_navigation_system.true_pitch, fdmexec.GetPropagate().GetEulerDeg(2), 3) self.assertAlmostEqual( sensors.inertial_navigation_system.true_latitude, fdmexec.GetPropagate().GetLatitudeDeg(), 3) self.assertAlmostEqual( sensors.inertial_navigation_system.true_longitude, fdmexec.GetPropagate().GetLongitudeDeg(), 3) self.assertAlmostEqual( sensors.inertial_navigation_system.true_altitude, fdmexec.GetPropagate().GetAltitudeASLmeters(), 3) self.assertAlmostEqual( sensors.inertial_navigation_system.true_airspeed, convert_jsbsim_velocity(fdmexec.GetAuxiliary().GetVtrueFPS()), 3) self.assertAlmostEqual( sensors.inertial_navigation_system.true_heading, math.degrees(fdmexec.GetPropagate().GetEuler(3)), 3)
def test_handle_sensor_data_request(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) factory = SensorDataFactory(aircraft) protocol = factory.buildProtocol(("127.0.0.1", 12345)) protocol.send_response_string = MagicMock() sensor_data_request = fdm_pb2.SensorDataRequest() sensor_data_request.type = fdm_pb2.GPS_REQUEST protocol.handle_sensor_data_request(sensor_data_request) expected_sensor_data_response = fdm_pb2.SensorDataResponse() expected_sensor_data_response.type = fdm_pb2.GPS_REQUEST expected_sensor_data_response.gps.latitude = aircraft.instruments.gps.latitude expected_sensor_data_response.gps.longitude = aircraft.instruments.gps.longitude expected_sensor_data_response.gps.altitude = aircraft.instruments.gps.altitude expected_sensor_data_response.gps.airspeed = aircraft.instruments.gps.airspeed expected_sensor_data_response.gps.heading = aircraft.instruments.gps.heading protocol.send_response_string.assert_called_once_with( expected_sensor_data_response.SerializeToString())
def test_fill_accelerometer_data(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) factory = SensorDataFactory(aircraft) protocol = factory.buildProtocol(("127.0.0.1", 12345)) sensor_data_response = fdm_pb2.SensorDataResponse() protocol.fill_accelerometer_data(sensor_data_response) self.assertAlmostEqual(sensor_data_response.accelerometer.x, aircraft.sensors.accelerometer.x) self.assertAlmostEqual(sensor_data_response.accelerometer.y, aircraft.sensors.accelerometer.y) self.assertAlmostEqual(sensor_data_response.accelerometer.z, aircraft.sensors.accelerometer.z) self.assertEqual(sensor_data_response.type, fdm_pb2.ACCELEROMETER_REQUEST)
def test_fill_ins_data(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) factory = SensorDataFactory(aircraft) protocol = factory.buildProtocol(("127.0.0.1", 12345)) sensor_data_response = fdm_pb2.SensorDataResponse() protocol.fill_ins_data(sensor_data_response) self.assertAlmostEqual( sensor_data_response.ins.roll, aircraft.sensors.inertial_navigation_system.roll) self.assertAlmostEqual( sensor_data_response.ins.pitch, aircraft.sensors.inertial_navigation_system.pitch) self.assertEqual(sensor_data_response.type, fdm_pb2.INS_REQUEST)
def test_ins_meaurement_noise_update(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() ins = InertialNavigationSystem(fdmexec) ins._roll_measurement_noise = 0.0 ins._pitch_measurement_noise = 0.0 ins._heading_measurement_noise = 0.0 ins._latitude_measurement_noise = 0.0 ins._longitude_measurement_noise = 0.0 ins._altitude_measurement_noise = 0.0 ins._airspeed_measurement_noise = 0.0 fdmexec.Run() self.assertEqual(ins._roll_measurement_noise, 0.0) self.assertEqual(ins.roll_measurement_noise, 0.0) self.assertEqual(ins._pitch_measurement_noise, 0.0) self.assertEqual(ins.pitch_measurement_noise, 0.0) self.assertEqual(ins._heading_measurement_noise, 0.0) self.assertEqual(ins.heading_measurement_noise, 0.0) self.assertEqual(ins._latitude_measurement_noise, 0.0) self.assertEqual(ins.latitude_measurement_noise, 0.0) self.assertEqual(ins._longitude_measurement_noise, 0.0) self.assertEqual(ins.longitude_measurement_noise, 0.0) self.assertEqual(ins._airspeed_measurement_noise, 0.0) self.assertEqual(ins.airspeed_measurement_noise, 0.0) self.assertEqual(ins._altitude_measurement_noise, 0.0) self.assertEqual(ins.altitude_measurement_noise, 0.0) run_until = fdmexec.GetSimTime() + (1.0 / ins.update_rate) + 1.0 while fdmexec.GetSimTime() < run_until: fdmexec.Run() self.assertNotEqual(ins.roll_measurement_noise, 0.0) self.assertEqual(ins._roll_measurement_noise, ins.roll_measurement_noise) self.assertNotEqual(ins.pitch_measurement_noise, 0.0) self.assertEqual(ins._pitch_measurement_noise, ins.pitch_measurement_noise) self.assertNotEqual(ins.heading_measurement_noise, 0.0) self.assertEqual(ins._heading_measurement_noise, ins.heading_measurement_noise) self.assertNotEqual(ins.latitude_measurement_noise, 0.0) self.assertEqual(ins._latitude_measurement_noise, ins.latitude_measurement_noise) self.assertNotEqual(ins.longitude_measurement_noise, 0.0) self.assertEqual(ins._longitude_measurement_noise, ins.longitude_measurement_noise) self.assertNotEqual(ins.altitude_measurement_noise, 0.0) self.assertEqual(ins._altitude_measurement_noise, ins.altitude_measurement_noise) self.assertNotEqual(ins.airspeed_measurement_noise, 0.0) self.assertEqual(ins._airspeed_measurement_noise, ins.airspeed_measurement_noise)
def test_engine(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() engine = Engine(fdmexec) self.assertAlmostEqual(engine.thrust, convert_jsbsim_force(fdmexec.GetPropulsion().GetEngine(0).GetThruster().GetThrust())) self.assertAlmostEqual(engine.throttle, fdmexec.GetFCS().GetThrottleCmd(0))
def test_step(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() simulator = Simulator(fdmexec) result = simulator.step() self.assertTrue(result)
def test_set_rudder(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) fdmexec.GetFCS().SetDrCmd(0.178) self.assertAlmostEqual(aircraft.controls.rudder, 0.178, 0.0)
def test_presure_sensor(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() sensors = Sensors(fdmexec) self.assertAlmostEqual( sensors.pressure_sensor.true_pressure, convert_jsbsim_pressure(fdmexec.GetAtmosphere().GetPressure()))
def test_set_throttle(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) fdmexec.GetFCS().SetThrottleCmd(0, 0.198) self.assertAlmostEqual(aircraft.controls.throttle, 0.198)
def test_pitot_tube(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() sensors = Sensors(fdmexec) self.assertAlmostEqual( sensors.pitot_tube.true_pressure, convert_jsbsim_pressure(fdmexec.GetAuxiliary().GetTotalPressure()))
def test_accelerations(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() velocities = Velocities(fdmexec) velocity = fdmexec.GetPropagate().GetPQR(1) expected_velocity = convert_jsbsim_angular_velocity(velocity) self.assertAlmostEqual(velocities.p, expected_velocity, 3) velocity = fdmexec.GetPropagate().GetPQR(2) expected_velocity = convert_jsbsim_angular_velocity(velocity) self.assertAlmostEqual(velocities.q, expected_velocity, 3) velocity = fdmexec.GetPropagate().GetPQR(3) expected_velocity = convert_jsbsim_angular_velocity(velocity) self.assertAlmostEqual(velocities.r, expected_velocity, 3) airspeed = fdmexec.GetAuxiliary().GetVtrueFPS() expected_airspeed = convert_jsbsim_velocity(airspeed) self.assertAlmostEqual(velocities.true_airspeed, expected_airspeed, 3) climb_rate = -fdmexec.GetPropagate().GetVel(3) expected_climb_rate = convert_jsbsim_velocity(climb_rate) self.assertAlmostEqual(velocities.climb_rate, expected_climb_rate, 3) velocity = fdmexec.GetPropagate().GetUVW(1) expected_velocity = convert_jsbsim_velocity(velocity) self.assertAlmostEqual(velocities.u, expected_velocity, 3) velocity = fdmexec.GetPropagate().GetUVW(2) expected_velocity = convert_jsbsim_velocity(velocity) self.assertAlmostEqual(velocities.v, expected_velocity, 3) velocity = fdmexec.GetPropagate().GetUVW(3) expected_velocity = convert_jsbsim_velocity(velocity) self.assertAlmostEqual(velocities.w, expected_velocity, 3) airspeed = fdmexec.GetAuxiliary().GetVcalibratedFPS() expected_airspeed = convert_jsbsim_velocity(airspeed) self.assertAlmostEqual(velocities.calibrated_airspeed, expected_airspeed, 3) airspeed = fdmexec.GetAuxiliary().GetVequivalentFPS() expected_airspeed = convert_jsbsim_velocity(airspeed) self.assertAlmostEqual(velocities.equivalent_airspeed, expected_airspeed, 3)
def main(): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() with open("fdm_properties.txt", "r") as f, open("fdm_property_values.txt", "w") as o: for line in f: property_name = line.strip() property_value = fdmexec.GetPropertyValue(property_name) print("%s\t%f" % (property_name, property_value)) o.write("%s\t%f\n" % (property_name, property_value))
def test_gyroscope(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() sensors = Sensors(fdmexec) self.assertAlmostEqual(sensors.gyroscope.true_roll_rate, math.degrees(fdmexec.GetPropagate().GetPQR(1))) self.assertAlmostEqual(sensors.gyroscope.true_pitch_rate, math.degrees(fdmexec.GetPropagate().GetPQR(2))) self.assertAlmostEqual(sensors.gyroscope.true_yaw_rate, math.degrees(fdmexec.GetPropagate().GetPQR(3)))
def test_pitot_tube(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() pitot_tube = PitotTube(fdmexec) self.assertAlmostEqual( pitot_tube.true_pressure, convert_jsbsim_pressure(fdmexec.GetAuxiliary().GetTotalPressure()), 3) self.assertAlmostEqual( pitot_tube.pressure, pitot_tube.true_pressure + pitot_tube.measurement_noise, 3)
def test_thermometer(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() thermometer = Thermometer(fdmexec) self.assertAlmostEqual( thermometer.true_temperature, convert_jsbsim_temperature( fdmexec.GetAtmosphere().GetTemperature())) self.assertAlmostEqual( thermometer.temperature, thermometer.true_temperature + thermometer.measurement_noise)
def test_inertialNavigationSystem(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() ins = InertialNavigationSystem(fdmexec) self.assertAlmostEqual(ins.true_roll, fdmexec.GetPropagate().GetEulerDeg(1), 3) self.assertAlmostEqual(ins.true_pitch, fdmexec.GetPropagate().GetEulerDeg(2), 3) self.assertAlmostEqual(ins.true_latitude, fdmexec.GetPropagate().GetLatitudeDeg(), 3) self.assertAlmostEqual(ins.true_longitude, fdmexec.GetPropagate().GetLongitudeDeg(), 3) self.assertAlmostEqual(ins.true_altitude, fdmexec.GetPropagate().GetAltitudeASLmeters(), 3) self.assertAlmostEqual( ins.true_airspeed, convert_jsbsim_velocity(fdmexec.GetAuxiliary().GetVtrueFPS()), 3) self.assertAlmostEqual( ins.true_heading, math.degrees(fdmexec.GetPropagate().GetEuler(3)), 3) self.assertAlmostEqual(ins.roll, ins.true_roll + ins.roll_measurement_noise, 3) self.assertAlmostEqual(ins.pitch, ins.true_pitch + ins.pitch_measurement_noise, 3) self.assertAlmostEqual( ins.latitude, ins.true_latitude + ins.latitude_measurement_noise, 3) self.assertAlmostEqual( ins.longitude, ins.true_longitude + ins.longitude_measurement_noise, 3) self.assertAlmostEqual( ins.altitude, ins.true_altitude + ins.altitude_measurement_noise, 3) self.assertAlmostEqual( ins.airspeed, ins.true_airspeed + ins.airspeed_measurement_noise, 3) self.assertAlmostEqual( ins.heading, ins.true_heading + ins.heading_measurement_noise, 3)
def test_run_for(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() simulator = Simulator(fdmexec) time_to_run = 1.0 start_time = simulator.simulation_time expected_end_time = start_time + time_to_run result = simulator.run_for(time_to_run) self.assertTrue(result) self.assertAlmostEqual(expected_end_time, simulator.simulation_time, 2)
def test_aircraft_position(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() position = Position(fdmexec) self.assertAlmostEqual(position.latitude, fdmexec.GetPropagate().GetLatitudeDeg(), 3) self.assertAlmostEqual(position.longitude, fdmexec.GetPropagate().GetLongitudeDeg(), 3) self.assertAlmostEqual(position.altitude, fdmexec.GetPropagate().GetAltitudeASLmeters(), 3) self.assertAlmostEqual( position.heading, math.degrees(fdmexec.GetPropagate().GetEuler(3)), 3)
def test_gps(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() gps = GPS(fdmexec) self.assertAlmostEqual(gps.latitude, fdmexec.GetPropagate().GetLatitudeDeg()) self.assertAlmostEqual(gps.longitude, fdmexec.GetPropagate().GetLongitudeDeg()) self.assertAlmostEqual(gps.altitude, fdmexec.GetPropagate().GetAltitudeASLmeters()) self.assertAlmostEqual( gps.airspeed, convert_jsbsim_velocity(fdmexec.GetAuxiliary().GetVtrueFPS())) self.assertAlmostEqual( gps.heading, math.degrees(fdmexec.GetPropagate().GetEuler(3)))
def test_run_with_real_fdmexec(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() self.assertIsNotNone(fdmexec) simulator = Simulator(fdmexec) start_time = simulator.simulation_time simulator.resume() #run_result = aircraft.run() simulator.run() self.assertAlmostEqual(simulator.simulation_time, start_time + configuration.DT, 6)
def test_fill_pitot_tube_data(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() aircraft = Aircraft(fdmexec) factory = SensorDataFactory(aircraft) protocol = factory.buildProtocol(("127.0.0.1", 12345)) sensor_data_response = fdm_pb2.SensorDataResponse() protocol.fill_pitot_tube_data(sensor_data_response) self.assertAlmostEqual(sensor_data_response.pitot_tube.pressure, aircraft.sensors.pitot_tube.pressure) self.assertEqual(sensor_data_response.type, fdm_pb2.PITOT_TUBE_REQUEST)
def test_accelerometer(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() sensors = Sensors(fdmexec) self.assertAlmostEqual( sensors.accelerometer.true_x, convert_jsbsim_acceleration( fdmexec.GetAuxiliary().GetPilotAccel(1))) self.assertAlmostEqual( sensors.accelerometer.true_y, convert_jsbsim_acceleration( fdmexec.GetAuxiliary().GetPilotAccel(2))) self.assertAlmostEqual( sensors.accelerometer.true_z, convert_jsbsim_acceleration( fdmexec.GetAuxiliary().GetPilotAccel(3)))
def test_schedule_update(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() update_rate = 50 sensor = MockSensor(fdmexec, update_rate) sensor._update_sensor = MagicMock() data = sensor.value sensor._update_sensor.assert_not_called() while fdmexec.GetSimTime() < sensor._update_at + 0.1: fdmexec.Run() data = sensor.value sensor._update_sensor.assert_called_once()
def test_pitot_tube_meaurement_noise_update(self): huginn_data_path = configuration.get_data_path() fdm_builder = FDMBuilder(huginn_data_path) fdm_builder.aircraft = "Rascal" fdmexec = fdm_builder.create_fdm() pitot_tube = PitotTube(fdmexec) pitot_tube._measurement_noise = 0.0 fdmexec.Run() self.assertEqual(pitot_tube._measurement_noise, 0.0) self.assertEqual(pitot_tube.measurement_noise, 0.0) run_until = fdmexec.GetSimTime() + (1.0 / pitot_tube.update_rate) + 1.0 while fdmexec.GetSimTime() < run_until: fdmexec.Run() self.assertNotEqual(pitot_tube.measurement_noise, 0.0) self.assertEqual(pitot_tube.measurement_noise, pitot_tube._measurement_noise)