mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
autotest: test poshold bounceback
This commit is contained in:
parent
528c880244
commit
85f9179b57
@ -995,6 +995,61 @@ class AutoTestSub(vehicle_test_suite.TestSuite):
|
|||||||
}, epsilon=10) # allow rounding
|
}, epsilon=10) # allow rounding
|
||||||
seen_3 = True
|
seen_3 = True
|
||||||
|
|
||||||
|
def wait_for_stop(self):
|
||||||
|
"""Watch the sub slow down and stop"""
|
||||||
|
tstart = self.get_sim_time_cached()
|
||||||
|
lstart = self.mav.location()
|
||||||
|
|
||||||
|
dmax = 0
|
||||||
|
dprev = 0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
self.delay_sim_time(1)
|
||||||
|
|
||||||
|
dcurr = self.get_distance(lstart, self.mav.location())
|
||||||
|
|
||||||
|
if dcurr - dmax < -0.2:
|
||||||
|
raise NotAchievedException("Bounced back from %.2fm to %.2fm" % (dmax, dcurr))
|
||||||
|
if dcurr > dmax:
|
||||||
|
dmax = dcurr
|
||||||
|
|
||||||
|
if abs(dcurr - dprev) < 0.1:
|
||||||
|
self.progress("Stopping distance %.2fm, less than %.2fs" % (dcurr, self.get_sim_time_cached() - tstart))
|
||||||
|
return
|
||||||
|
|
||||||
|
if self.get_sim_time_cached() - tstart > 10:
|
||||||
|
raise NotAchievedException("Took to long to stop")
|
||||||
|
|
||||||
|
dprev = dcurr
|
||||||
|
|
||||||
|
def PosHoldBounceBack(self):
|
||||||
|
"""Test for bounce back in POSHOLD mode"""
|
||||||
|
self.wait_ready_to_arm()
|
||||||
|
self.arm_vehicle()
|
||||||
|
|
||||||
|
# dive a little
|
||||||
|
self.set_rc(Joystick.Throttle, 1300)
|
||||||
|
self.delay_sim_time(3)
|
||||||
|
self.set_rc(Joystick.Throttle, 1500)
|
||||||
|
self.delay_sim_time(2)
|
||||||
|
|
||||||
|
# hold position
|
||||||
|
self.change_mode('POSHOLD')
|
||||||
|
|
||||||
|
for pilot_speed in range(50, 251, 100):
|
||||||
|
# set max speed
|
||||||
|
self.set_parameter('PILOT_SPEED', pilot_speed)
|
||||||
|
|
||||||
|
# try different stick values, resulting speed is ~ max_speed * effort * gain
|
||||||
|
for pwm in range(1700, 1901, 100):
|
||||||
|
self.progress('PILOT_SPEED %d, forward pwm %d' % (pilot_speed, pwm))
|
||||||
|
self.set_rc(Joystick.Forward, pwm)
|
||||||
|
self.delay_sim_time(3)
|
||||||
|
self.set_rc(Joystick.Forward, 1500)
|
||||||
|
self.wait_for_stop()
|
||||||
|
|
||||||
|
self.disarm_vehicle()
|
||||||
|
|
||||||
def tests(self):
|
def tests(self):
|
||||||
'''return list of all tests'''
|
'''return list of all tests'''
|
||||||
ret = super(AutoTestSub, self).tests()
|
ret = super(AutoTestSub, self).tests()
|
||||||
@ -1027,6 +1082,7 @@ class AutoTestSub(vehicle_test_suite.TestSuite):
|
|||||||
self.BackupOrigin,
|
self.BackupOrigin,
|
||||||
self.FuseMag,
|
self.FuseMag,
|
||||||
self.INA3221,
|
self.INA3221,
|
||||||
|
self.PosHoldBounceBack,
|
||||||
])
|
])
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
Loading…
Reference in New Issue
Block a user