Skip to content

Commit b0b53fe

Browse files
Maarrkzyromskij
andcommitted
Tools: enable soaring in LOITER and GUIDED modes. Maintain altitude on exit.
Co-authored-by: Julian <53869112+zyromskij@users.noreply.github.com> Reviewed-by: Peter Barker <pbarker@barker.dropbear.id.au>
1 parent 5966f6b commit b0b53fe

1 file changed

Lines changed: 51 additions & 1 deletion

File tree

Tools/autotest/arduplane.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2597,9 +2597,15 @@ def Soaring(self):
25972597
self.change_mode('FBWB')
25982598
self.delay_sim_time(5)
25992599

2600+
# Descent to some in-between altitude
2601+
alt_mid = (alt_min + alt_ctf) / 2
2602+
self.wait_altitude(alt_mid-10, alt_mid, timeout=600, relative=True)
2603+
26002604
# Now disable soaring (should hold altitude)
26012605
self.set_parameter("SOAR_ENABLE", 0)
26022606
self.delay_sim_time(10)
2607+
# Ensure the altitude is maintained (immediate check with wider margin)
2608+
self.wait_altitude(alt_mid-15, alt_mid+5, timeout=1, relative=True)
26032609

26042610
# And re-enable. This should force throttle-down
26052611
self.set_parameter("SOAR_ENABLE", 1)
@@ -2608,7 +2614,51 @@ def Soaring(self):
26082614
# Now wait for descent and check throttle up
26092615
self.wait_altitude(alt_min-10, alt_min, timeout=600, relative=True)
26102616

2611-
self.progress("Waiting for climb")
2617+
self.progress("Waiting for climb in FBWB")
2618+
self.wait_altitude(alt_ctf-10, alt_ctf, timeout=600, relative=True)
2619+
2620+
# Now set GUIDED mode and go to a nearby location
2621+
self.change_mode("GUIDED")
2622+
loc = self.mav.location()
2623+
self.location_offset_ne(loc, 350, 0)
2624+
self.run_cmd_int(
2625+
mavutil.mavlink.MAV_CMD_DO_REPOSITION,
2626+
p5=int(loc.lat * 1e7),
2627+
p6=int(loc.lng * 1e7),
2628+
p7=alt_ctf,
2629+
frame=mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT,
2630+
)
2631+
2632+
# GUIDED should glide en route to target
2633+
self.wait_servo_channel_value(3, 1200, timeout=5, comparator=operator.lt)
2634+
self.wait_altitude(alt_mid-10, alt_mid, timeout=600, relative=True)
2635+
2636+
# Maintain current altitude on soaring disable
2637+
self.set_parameter("SOAR_ENABLE", 0)
2638+
self.delay_sim_time(10)
2639+
self.wait_altitude(alt_mid-15, alt_mid+5, timeout=1, relative=True)
2640+
self.set_parameter("SOAR_ENABLE", 1)
2641+
2642+
self.progress("Waiting for climb in GUIDED")
2643+
self.wait_altitude(alt_ctf-10, alt_ctf, timeout=600, relative=True)
2644+
2645+
# Now set LOITER mode
2646+
self.change_mode("LOITER")
2647+
self.delay_sim_time(5)
2648+
2649+
# Loiter should also glide around target
2650+
self.wait_servo_channel_value(3, 1200, timeout=5, comparator=operator.lt)
2651+
self.wait_altitude(alt_min-10, alt_min, timeout=600, relative=True)
2652+
2653+
# Check altitude hold also in climb
2654+
self.wait_altitude(alt_mid-10, alt_mid, timeout=600, relative=True)
2655+
# Maintain current altitude on soaring disable
2656+
self.set_parameter("SOAR_ENABLE", 0)
2657+
self.delay_sim_time(10)
2658+
self.wait_altitude(alt_mid-15, alt_mid+5, timeout=1, relative=True)
2659+
self.set_parameter("SOAR_ENABLE", 1)
2660+
2661+
self.progress("Waiting for climb in LOITER")
26122662
self.wait_altitude(alt_ctf-10, alt_ctf, timeout=600, relative=True)
26132663

26142664
# Back to auto

0 commit comments

Comments
 (0)