From bf2ad1f49dbf0c5f656a7ce0aa3cc9d1b2ef7cd3 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 12 Jun 2026 14:25:44 +1000 Subject: [PATCH] Tools: add heli-quad SITL frame information and default parameters The default parameters use a symmetric collective range so the zero-thrust point lands on mid-PWM, matching the SITL heli-quad model's flat-pitch point. Co-Authored-By: Claude Fable 5 --- Tools/autotest/arducopter.py | 1 + .../default_params/copter-heliquad.parm | 11 ++++ Tools/autotest/models/heliquad.json | 64 +++++++++++++++++++ Tools/autotest/pysim/vehicleinfo.json | 16 +++++ 4 files changed, 92 insertions(+) create mode 100644 Tools/autotest/default_params/copter-heliquad.parm create mode 100644 Tools/autotest/models/heliquad.json diff --git a/Tools/autotest/arducopter.py b/Tools/autotest/arducopter.py index ef5ff3fbb6f..2e30dc50d30 100644 --- a/Tools/autotest/arducopter.py +++ b/Tools/autotest/arducopter.py @@ -12864,6 +12864,7 @@ class AutoTestCopter(vehicle_test_suite.TestSuite): 'heli-blade360': "wrong binary, different takeoff regime", 'heli-ddvptail': "wrong binary, different takeoff regime", 'heli-ddfptail': "wrong binary, different takeoff regime", + 'heli-quad': "wrong binary, different takeoff regime", "quad-can" : "needs CAN periph", } for frame in sorted(copter_vinfo_options["frames"].keys()): diff --git a/Tools/autotest/default_params/copter-heliquad.parm b/Tools/autotest/default_params/copter-heliquad.parm new file mode 100644 index 00000000000..70eef345914 --- /dev/null +++ b/Tools/autotest/default_params/copter-heliquad.parm @@ -0,0 +1,11 @@ +FRAME_CLASS 13 +# symmetric collective so the zero-thrust point lands on mid-PWM +# (1500), matching the SITL heli-quad model's flat-pitch point +H_COL_MIN 1000 +H_COL_MAX 2000 +H_COL_ANG_MIN -10 +H_COL_ANG_MAX 10 +H_COL_ZERO_THRST 0 +H_COL_LAND_MIN -2 +# no tail rotor, so no roll trim required in hover +ATC_HOVR_ROL_TRM 0 diff --git a/Tools/autotest/models/heliquad.json b/Tools/autotest/models/heliquad.json new file mode 100644 index 00000000000..c04e19371cf --- /dev/null +++ b/Tools/autotest/models/heliquad.json @@ -0,0 +1,64 @@ +# collective pitch quadcopter (heliquad) +# +# only the upper half of the collective range gives positive thrust, +# so hoverThrOut is lower than for a fixed-pitch quad + +{ + # total vehicle mass in kg + "mass" : 3.0, + + # vehicle diameter + "diagonal_size" : 0.35, + + # the ref parameters should be taken from a test + # with the copter flying at constant speed in zero wind. This is used + # to estimate the drag coefficient + "refSpd" : 15.08, # m/s + "refAngle" : 45.0, # degrees + "refVoltage" : 12.09, # volts + "refCurrent" : 15.0, # Amps + "refAlt" : 593, # meters AMSL + "refTempC" : 25, # degrees C + "refBatRes" : 0.01, # BAT.Res from log + + # full battery voltage + "maxVoltage" : 12.6, + + # full battery capacity, Ah + # 0 means unlimited + "battCapacityAh" : 0, + + # thrust is roughly linear in blade pitch + "propExpo" : 0.3, + + # approximate maximum yaw rate in deg/sec + "refRotRate" : 120, + + # hover throttle from 0 to 1 + "hoverThrOut" : 0.2, + + # MOT_PWM_MIN + "pwmMin" : 1000, + + # MOT_PWM_MAX + "pwmMax" : 2000, + + # MOT_SPIN_MIN + "spin_min" : 0.15, + + # MOT_SPIN_MAX + "spin_max" : 0.95, + + # maximum motor slew rate, or zero to disable + "slew_max" : 150, + + # total effective disc area in sq m for 4 x 0.35m diameter rotors + "disc_area" : 0.385, + + # momentum drag coefficient + # ratio of momentum drag relative to a ducted rotor of the same effective disc area + "mdrag_coef" : 0.2, + + # number of motors + "num_motors" : 4 +} diff --git a/Tools/autotest/pysim/vehicleinfo.json b/Tools/autotest/pysim/vehicleinfo.json index 926006dfefe..853d6bdd97b 100644 --- a/Tools/autotest/pysim/vehicleinfo.json +++ b/Tools/autotest/pysim/vehicleinfo.json @@ -242,6 +242,14 @@ "default_params/copter-heli.parm" ] }, + "heli-quad": { + "model": "heli-quad:@ROMFS/models/heliquad.json", + "waf_target": "bin/arducopter-heli", + "default_params_filename": [ + "default_params/copter-heli.parm", + "default_params/copter-heliquad.parm" + ] + }, "singlecopter": { "waf_target": "bin/arducopter", "default_params_filename": "default_params/copter-single.parm" @@ -348,6 +356,14 @@ "default_params_filename": [ "default_params/copter-heli.parm" ] + }, + "heli-quad": { + "model": "heli-quad:@ROMFS/models/heliquad.json", + "waf_target": "bin/arducopter-heli", + "default_params_filename": [ + "default_params/copter-heli.parm", + "default_params/copter-heliquad.parm" + ] } } },