diff --git a/Tools/autotest/ArduPlane_Tests/DeadreckoningNoAirSpeed/flaps.txt b/Tools/autotest/ArduPlane_Tests/DeadreckoningNoAirSpeed/flaps.txt new file mode 100644 index 0000000000..93d0726c86 --- /dev/null +++ b/Tools/autotest/ArduPlane_Tests/DeadreckoningNoAirSpeed/flaps.txt @@ -0,0 +1,13 @@ +QGC WPL 110 +0 0 0 16 0.000000 0.000000 0.000000 0.000000 -35.363262 149.165237 584.390015 1 +1 0 3 22 15.000000 0.000000 0.000000 0.000000 -35.361279 149.164230 30.000000 1 +2 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.361229 149.163025 80.000000 1 +3 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.364563 149.163773 80.000000 1 +4 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.364384 149.164795 80.000000 1 +5 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.361027 149.164093 80.000000 1 +6 0 0 177 2.000000 3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1 +7 0 3 189 0.000000 0.000000 0.000000 0.000000 -35.362915 149.162613 60.000000 1 +8 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.363136 149.162750 60.000000 1 +9 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.365467 149.164215 55.000000 1 +10 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.365009 149.165482 39.889999 1 +11 0 3 21 0.000000 0.000000 0.000000 1.000000 -35.363041 149.165222 0.000000 1 diff --git a/Tools/autotest/arduplane.py b/Tools/autotest/arduplane.py index 4b6c14e221..c9f35ae6a4 100644 --- a/Tools/autotest/arduplane.py +++ b/Tools/autotest/arduplane.py @@ -1537,13 +1537,16 @@ class AutoTestPlane(AutoTest): return divergence = self.get_distance_int(self.gpi, self.simstate) max_allowed_divergence = 200 - if time.time() - self.last_print > 1: + if (time.time() - self.last_print > 1 or + divergence > self.max_divergence): self.progress("position-estimate-divergence=%fm" % (divergence,)) self.last_print = time.time() - if divergence > max_allowed_divergence: - raise NotAchievedException("global-position-int diverged from simstate by >%fm" % (max_allowed_divergence,)) if divergence > self.max_divergence: self.max_divergence = divergence + if divergence > max_allowed_divergence: + raise NotAchievedException( + "global-position-int diverged from simstate by %fm (max=%fm" % + (divergence, max_allowed_divergence,)) self.install_message_hook(validate_global_position_int_against_simstate) @@ -1557,8 +1560,7 @@ class AutoTestPlane(AutoTest): self.takeoff(50) loc = self.mav.location() - loc.lat = -35.35690712 - loc.lng = 149.17083386 + self.location_offset_ne(loc, 500, 500) self.run_cmd_int( mavutil.mavlink.MAV_CMD_DO_REPOSITION, 0, @@ -1588,6 +1590,8 @@ class AutoTestPlane(AutoTest): def deadreckoning(self): self.deadreckoning_main() + + def deadreckoning_no_airspeed_sensor(self): self.deadreckoning_main(disable_airspeed_sensor=True) def rtl_climb_min(self): @@ -2785,6 +2789,10 @@ class AutoTestPlane(AutoTest): "Test deadreckoning support", self.deadreckoning), + ("DeadreckoningNoAirSpeed", + "Test deadreckoning support with no airspeed sensor", + self.deadreckoning_no_airspeed_sensor), + ("EKFlaneswitch", "Test EKF3 Affinity and Lane Switching", self.ekf_lane_switch),