Files
flix/tools/test.py
T

46 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
# Script for testing pyflix and the simulation.
from math import isclose, isnan, isfinite
from pyflix import Flix
print('=== Connect...')
flix = Flix()
print('=== Check initial state')
assert flix.connected
assert flix.mode == 'STAB'
assert not flix.armed
assert flix.landed
assert isnan(flix.voltage)
assert all(isclose(r, 0) for r in flix.rates)
assert isclose(flix.attitude[0], 0) and isclose(flix.attitude[1], 0) and isclose(flix.attitude[2], 0)
assert isclose(flix.attitude[3], 1)
assert all(isclose(a, 0) for a in flix.attitude_euler)
assert all(m == 0 for m in flix.motors)
assert all(isclose(a, 0) for a in flix.acc)
assert all(isclose(g, 0) for g in flix.gyro)
assert all(ch == 0 for ch in flix.channels)
print('=== Check console commands')
assert 'Time: ' in flix.cli('time')
assert 'Landed: 1' in flix.cli('imu')
print('=== Check parameters')
assert isfinite(flix.get_param('CTL_ATT_P_P'))
flix.set_param('CTL_ATT_P_P', 10.0)
print('=== Additional checks')
assert flix.wait('connected') is True
assert flix.wait('gyro') is not None
flix.wait('armed', False)
flix.wait('mode', 'STAB')
flix.wait('motors', lambda motors: not any(motors))
flix.set_armed(True)
flix.wait('armed', True)
flix.set_mode('ACRO')
flix.wait('mode', 'ACRO')
flix.set_mode('AUTO')
flix.wait('mode', 'AUTO')