mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
Tools: autotest: Plane: add loiter terrain following test
This commit is contained in:
parent
8764d69e2c
commit
aa72b7da46
13
Tools/autotest/ArduPlane_Tests/Terrain-loiter/flaps.txt
Normal file
13
Tools/autotest/ArduPlane_Tests/Terrain-loiter/flaps.txt
Normal file
@ -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
|
@ -2184,6 +2184,36 @@ class AutoTestPlane(AutoTest):
|
|||||||
|
|
||||||
self.fly_mission("ap-terrain.txt", mission_timeout=600)
|
self.fly_mission("ap-terrain.txt", mission_timeout=600)
|
||||||
|
|
||||||
|
def test_loiter_terrain(self):
|
||||||
|
default_rad = self.get_parameter("WP_LOITER_RAD")
|
||||||
|
self.set_parameter("TERRAIN_FOLLOW", 1) # enable terrain following in loiter
|
||||||
|
self.set_parameter("WP_LOITER_RAD", 2000) # set very large loiter rad to get some terrain changes
|
||||||
|
alt = 200
|
||||||
|
self.takeoff(alt*0.9, alt*1.1)
|
||||||
|
self.set_rc(3, 1500)
|
||||||
|
self.change_mode("LOITER")
|
||||||
|
self.progress("loitering at %um" % alt)
|
||||||
|
tstart = self.get_sim_time()
|
||||||
|
while True:
|
||||||
|
now = self.get_sim_time_cached()
|
||||||
|
if now - tstart > 60*15: # enough time to do one and a bit circles
|
||||||
|
break
|
||||||
|
terrain = self.mav.recv_match(
|
||||||
|
type='TERRAIN_REPORT',
|
||||||
|
blocking=True,
|
||||||
|
timeout=1
|
||||||
|
)
|
||||||
|
if terrain is None:
|
||||||
|
raise NotAchievedException("Did not get TERRAIN_REPORT message")
|
||||||
|
rel_alt = terrain.current_height
|
||||||
|
self.progress("%um above terrain" % rel_alt)
|
||||||
|
if rel_alt > alt*1.2 or rel_alt < alt * 0.8:
|
||||||
|
raise NotAchievedException("Not terrain following")
|
||||||
|
self.progress("Returning home")
|
||||||
|
self.set_parameter("TERRAIN_FOLLOW", 0)
|
||||||
|
self.set_parameter("WP_LOITER_RAD", default_rad)
|
||||||
|
self.fly_home_land_and_disarm(240)
|
||||||
|
|
||||||
def fly_external_AHRS(self):
|
def fly_external_AHRS(self):
|
||||||
"""Fly with external AHRS (VectorNav)"""
|
"""Fly with external AHRS (VectorNav)"""
|
||||||
self.customise_SITL_commandline(["--uartE=sim:VectorNav"])
|
self.customise_SITL_commandline(["--uartE=sim:VectorNav"])
|
||||||
@ -2921,6 +2951,10 @@ class AutoTestPlane(AutoTest):
|
|||||||
"Test terrain following in mission",
|
"Test terrain following in mission",
|
||||||
self.fly_terrain_mission),
|
self.fly_terrain_mission),
|
||||||
|
|
||||||
|
("Terrain-loiter",
|
||||||
|
"Test terrain following in loiter",
|
||||||
|
self.test_loiter_terrain),
|
||||||
|
|
||||||
("ExternalAHRS",
|
("ExternalAHRS",
|
||||||
"Test external AHRS support",
|
"Test external AHRS support",
|
||||||
self.fly_external_AHRS),
|
self.fly_external_AHRS),
|
||||||
@ -2965,4 +2999,5 @@ class AutoTestPlane(AutoTest):
|
|||||||
|
|
||||||
def disabled_tests(self):
|
def disabled_tests(self):
|
||||||
return {
|
return {
|
||||||
|
"Terrain-loiter": "Loading of terrain data is not reliable",
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user