autotest: add baro i2c drivers autotest

This commit is contained in:
Peter Barker 2021-07-13 18:12:51 +10:00 committed by Andrew Tridgell
parent 78e0e52542
commit 2ae6030f0c
2 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,14 @@
QGC WPL 110
0 1 0 16 0.000000 0.000000 0.000000 0.000000 -35.362881 149.165222 582.000000 1
1 0 3 22 0.000000 0.000000 0.000000 0.000000 -35.362881 149.165222 20.000000 1
2 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.364652 149.163501 0.000000 1
3 0 3 115 640.000000 20.000000 1.000000 1.000000 0.000000 0.000000 0.000000 1
4 0 3 19 5.000000 0.000000 0.000000 1.000000 0.000000 0.000000 20.000000 1
5 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.365361 149.163501 0.000000 1
6 0 3 16 1.000000 0.000000 0.000000 0.000000 -35.365361 149.163995 40.000000 1
7 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.365361 149.164563 20.000000 1
8 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.364652 149.164531 20.000000 1
9 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.364652 149.163995 20.000000 1
10 0 3 177 8.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
11 0 3 16 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
12 0 3 20 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1

View File

@ -6821,6 +6821,63 @@ class AutoTestCopter(AutoTest):
if not ok:
raise NotAchievedException("check_replay failed")
def BaroDrivers(self):
sensors = [
("MS5611", 2),
]
for (name, bus) in sensors:
self.context_push()
if bus is not None:
self.set_parameter("BARO_EXT_BUS", bus)
self.set_parameter("BARO_PROBE_EXT", 1 << 2)
self.reboot_sitl()
self.wait_ready_to_arm()
self.arm_vehicle()
# insert listener to compare airspeeds:
messages = [None, None, None]
global count
count = 0
def check_pressure(mav, m):
global count
m_type = m.get_type()
count += 1
# if count > 500:
# if press_abs[0] is None or press_abs[1] is None:
# raise NotAchievedException("Not receiving messages")
if m_type == 'SCALED_PRESSURE3':
off = 2
elif m_type == 'SCALED_PRESSURE2':
off = 1
elif m_type == 'SCALED_PRESSURE':
off = 0
else:
return
messages[off] = m
# FIXME: make the numbers we use in the i2c simulated
# baros closer to the ones from AP_Baro_SITL
if None in messages:
return
first = messages[0]
for msg in messages[1:]:
delta_press_abs = abs(first.press_abs - msg.press_abs)
if delta_press_abs > 5:
raise NotAchievedException("Press_Abs mismatch (press1=%s press2=%s)" % (first, msg))
delta_temperature = abs(first.temperature - msg.temperature)
if delta_temperature > 1000: # that's 10-degrees leeway
raise NotAchievedException("Temperature mismatch (t1=%s t2=%s)" % (first, msg))
self.install_message_hook_context(check_pressure)
self.fly_mission("copter_mission.txt", strict=False)
if None in messages:
raise NotAchievedException("Missing a message")
self.context_pop()
self.reboot_sitl()
def test_copter_gps_zero(self):
# https://github.com/ArduPilot/ardupilot/issues/14236
self.progress("arm the vehicle and takeoff in Guided")
@ -7331,6 +7388,10 @@ class AutoTestCopter(AutoTest):
"Test RangeFinder Basic Functionality",
self.test_rangefinder), # 23s
("BaroDrivers",
"Test Baro Drivers",
self.BaroDrivers),
("SurfaceTracking",
"Test Surface Tracking",
self.test_surface_tracking), # 45s