Skip to content

Commit

Permalink
autotest: add QuadPlane.RealFlightTitanCobraHover
Browse files Browse the repository at this point in the history
  • Loading branch information
robertlong13 committed Nov 20, 2024
1 parent c3f0da1 commit 44ea5b9
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 1 deletion.
5 changes: 5 additions & 0 deletions Tools/autotest/autotest.py
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,8 @@ def run_step(step):
}
if opts.speedup is not None:
fly_opts["speedup"] = opts.speedup
if opts.realflight_address is not None:
fly_opts["realflight_address"] = opts.realflight_address

# handle "test.Copter" etc:
if step in tester_class_map:
Expand Down Expand Up @@ -1017,6 +1019,9 @@ def format_epilog(self, formatter):
group_sim.add_option("", "--replay",
action='store_true',
help="enable replay logging for tests")
group_sim.add_option("--realflight-address",
default=None,
help="IP address of RealFlight simulator")
parser.add_option_group(group_sim)

group_completion = optparse.OptionGroup(parser, "Completion helpers")
Expand Down
99 changes: 99 additions & 0 deletions Tools/autotest/default_params/realflight-titan-cobra.parm
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Titan Cobra RealFlight ArduPilot 4.5
AIRSPEED_CRUISE,12.4
AIRSPEED_MAX,18
AIRSPEED_MIN,11
ARMING_RUDDER,2
ARSPD_OFFSET,2013
ARSPD_SKIP_CAL,1
ARSPD_USE,1
BATT_ARM_VOLT,14.7
BATT_CAPACITY,10800
BATT_CRT_VOLT,14
BATT_LOW_VOLT,14.4
FLIGHT_OPTIONS,1026
FLTMODE_CH,8
FLTMODE1,17
FLTMODE2,17
FLTMODE3,19
FLTMODE4,19
FLTMODE5,5
FLTMODE6,5
INS_GYRO_FILTER,36
NAVL1_PERIOD,9
PTCH_LIM_MIN_DEG,-14
PTCH_RATE_D,0.00903
PTCH_RATE_FF,1.042
PTCH_RATE_FLTD,18
PTCH_RATE_FLTT,2.122
PTCH_RATE_I,1.042
PTCH_RATE_P,0.806
PTCH_TRIM_DEG,4.2
PTCH2SRV_RMAX_DN,75
PTCH2SRV_RMAX_UP,75
PTCH2SRV_TCONST,0.75
Q_A_ACCEL_P_MAX,53000
Q_A_ACCEL_R_MAX,49000
Q_A_ACCEL_Y_MAX,4500
Q_A_ANG_PIT_P,6
Q_A_ANG_RLL_P,6
Q_A_ANG_YAW_P,1.8
Q_A_RAT_PIT_D,0.00527
Q_A_RAT_PIT_FLTD,18
Q_A_RAT_PIT_FLTT,18
Q_A_RAT_PIT_I,0.328
Q_A_RAT_PIT_P,0.328
Q_A_RAT_RLL_D,0.00707
Q_A_RAT_RLL_FLTD,18
Q_A_RAT_RLL_FLTT,18
Q_A_RAT_RLL_I,0.385
Q_A_RAT_RLL_P,0.385
Q_A_RAT_YAW_FLTE,5
Q_A_RAT_YAW_FLTT,18
Q_A_RAT_YAW_I,0.2
Q_A_RAT_YAW_P,2
Q_A_THR_MIX_MAN,0.5
Q_ACRO_PIT_RATE,100
Q_ACRO_RLL_RATE,100
Q_ACRO_YAW_RATE,50
Q_ASSIST_SPEED,9
Q_ENABLE,1
Q_M_BAT_VOLT_MAX,16.8
Q_M_BAT_VOLT_MIN,13.2
Q_M_THST_EXPO,0.67
Q_M_THST_HOVER,0.322
Q_OPTIONS,16384
Q_P_ACCZ_I,0.656
Q_P_ACCZ_P,0.328
Q_P_VELXY_P,4
Q_PILOT_SPD_DN,1.5
Q_PLT_Y_RATE,50
Q_TRANS_DECEL,0.8
Q_VFWD_ALT,5
Q_VFWD_GAIN,0.1
Q_WVANE_ANG_MIN,0.5
Q_WVANE_GAIN,4
Q_WVANE_HGT_MIN,2
RC3_DZ,80
RLL_RATE_D,0.00625
RLL_RATE_FF,0.387
RLL_RATE_FLTD,18
RLL_RATE_FLTT,3.183
RLL_RATE_I,0.251
RLL_RATE_P,0.251
RLL2SRV_RMAX,75
SERVO2_FUNCTION,80
SERVO2_TRIM,1600
SERVO4_FUNCTION,79
SERVO4_TRIM,1600
STAB_PITCH_DOWN,2.5
TECS_CLMB_MAX,5.6
TECS_PITCH_MAX,0
TECS_RLL2THR,7
TECS_SINK_MAX,3
TECS_SINK_MIN,1.5
THROTTLE_NUDGE,0
TRIM_THROTTLE,47
WP_LOITER_RAD,70
WP_RADIUS,70
SIM_FTAX_OPTS,25
LOG_BITMASK,0x10FFFF
52 changes: 51 additions & 1 deletion Tools/autotest/quadplane.py
Original file line number Diff line number Diff line change
Expand Up @@ -703,12 +703,21 @@ def default_mode(self):
return "MANUAL"

def disabled_tests(self):
return {
tests = {
"FRSkyPassThrough": "Currently failing",
"CPUFailsafe": "servo channel values not scaled like ArduPlane",
"GyroFFT": "flapping test",
"ConfigErrorLoop": "failing because RC values not settable",
}
for test in self.tests():
name = ""
if isinstance(test, Test):
name = test.name
else:
name = test.__name__
if name.lower().startswith("realflight"):
tests[name] = "needs RealFlight"
return tests

def BootInAUTO(self):
'''Test behaviour when booting in auto'''
Expand Down Expand Up @@ -2072,6 +2081,46 @@ def WindEstimateConsistency(self):
self.progress("Wind estimates correlated")
break

def RealFlightTitanHover(self):
'''Test the RealFlight Titan Cobra'''
frame = "flightaxis"
if self.realflight_address is not None:
frame += f":{self.realflight_address}"
self.customise_SITL_commandline(
[
"--home", "40.0594626,-88.5513292,206.0,0",
],
frame,
wipe=True,
defaults_filepath="Tools/autotest/default_params/realflight-titan-cobra.parm"
)
self.wait_ready_to_arm()
self.change_mode("QLOITER")
self.arm_vehicle()
self.set_rc(3, 2000)
self.wait_altitude(8, 12, relative=True)
self.set_rc(3, 1500)
stick_deflections = [
(2000, 1500, "roll right"),
(1500, 1500, "center"),
(1000, 1500, "roll left"),
(1500, 1500, "center"),
(1500, 2000, "pitch forward"),
(1500, 1500, "center"),
(1500, 1000, "pitch back"),
(1500, 1500, "center"),
]
n_iterations = 10
for i in range(n_iterations):
print(f"Control input cycle: {i+1}/{n_iterations}")
for roll, pitch, msg in stick_deflections:
print(f"{msg}")
self.set_rc(1, roll)
self.set_rc(2, pitch)
self.delay_sim_time(0.5)
self.change_mode("QLAND")
self.wait_disarmed(timeout=120)

def tests(self):
'''return list of all tests'''

Expand Down Expand Up @@ -2123,5 +2172,6 @@ def tests(self):
self.RTL_AUTOLAND_1, # as in fly-home then go to landing sequence
self.RTL_AUTOLAND_1_FROM_GUIDED, # as in fly-home then go to landing sequence
self.AHRSFlyForwardFlag,
self.RealFlightTitanHover,
])
return ret
2 changes: 2 additions & 0 deletions Tools/autotest/vehicle_test_suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -1906,6 +1906,7 @@ def __init__(self,
dronecan_tests=False,
generate_junit=False,
enable_fgview=False,
realflight_address=None,
build_opts={}):

self.start_time = time.time()
Expand Down Expand Up @@ -1973,6 +1974,7 @@ def __init__(self,
self.in_drain_mav = False
self.tlog = None
self.enable_fgview = enable_fgview
self.realflight_address = realflight_address

self.rc_thread = None
self.rc_thread_should_quit = False
Expand Down

0 comments on commit 44ea5b9

Please sign in to comment.