Prototype ArduPlane TAKEOFF analyser — looking for user feedback

I’ve been developing a TAKEOFF analysis tool in my ArduPilotTools fork and would appreciate feedback from Plane users on whether the report is useful and what is missing.

It analyses firmware-owned Plane TAKEOFF executions rather than trying to infer physical hand release or liftoff. It is intended to work with conventional fixed-wing TAKEOFF mode generally — hand launch, rolling takeoff, catapult/bungee, etc. — without assuming the launch method.

The analyser currently reports:

  • detected TAKEOFF-mode executions and which contained a firmware launch trigger;
  • completed versus mode-exit-before-completion takeoffs;
  • trigger-relative takeoff timing;
  • airspeed and groundspeed at trigger;
  • time to configured AIRSPEED_MIN;
  • propulsion response to AIRSPEED_MIN, including throttle ramp, peak-throttle time and battery current;
  • pitch/roll response and altitude behaviour;
  • airspeed source (sensor/synthetic/unavailable);
  • the relevant trigger-time TAKEOFF parameters used for interpreting the flight.

Here is an example from one hand launch flight containing three triggered takeoffs:

Full APT TAKEOFF analysis
TAKEOFF ANALYSIS
======================================================================

TAKEOFF ANALYSIS
======================================================================

5 TAKEOFF-mode executions detected
3 triggered takeoffs analysed
2 non-trigger executions omitted

Summary
----------------------------------------------------------------------
No.  Status                       Time to AIRSPEED_MIN  Peak current  Max |roll|  Min altitude Δ  Endpoint altitude Δ
---  ---------------------------  --------------------  ------------  ----------  --------------  -------------------
1    Mode exit before completion  +1.581 s              20.4 A        8.31°       0.00 m          +22.17 m           
2    Completed                    +1.781 s              20.7 A        11.85°      -0.17 m         +28.02 m           
3    Mode exit before completion  +1.761 s              19.6 A        6.45°       -0.03 m         +26.68 m           


TAKEOFF 1
----------------------------------------------------------------------

Status                               Mode exit before completion

Timing
  Firmware trigger                   0.000 s
  Throttle unsuppressed              +0.063 s
  Target/course finalized            +0.120 s
  Mode exit                          +5.321 s

At trigger
  Airspeed source                    Sensor
  Airspeed                           2.72 m/s
  Groundspeed                        2.51 m/s
  Airspeed vs AIRSPEED_MIN           -8.28 m/s
  Pitch demand / achieved            17.77° / -2.84°
  Roll demand / achieved             0.00° / 6.37°

Airspeed build
  Time to AIRSPEED_MIN               +1.581 s
  Airspeed at AIRSPEED_MIN           11.26 m/s

Takeoff control
  Airspeed range                     2.72–14.37 m/s
  Largest pitch tracking error       +12.54°
  Maximum absolute roll              8.31°
  Minimum altitude delta             0.00 m
  Altitude delta at mode exit        +22.17 m

Propulsion to AIRSPEED_MIN
  Throttle at unsuppression              8.8%
  Peak throttle                          100.0%
  Throttle ramp to peak                  0.839 s
  Time at peak throttle                  0.680 s
  Throttle at AIRSPEED_MIN               100.0%
  Peak battery current                   20.4 A


TAKEOFF 2
----------------------------------------------------------------------

Status                               Completed

Timing
  Firmware trigger                   0.000 s
  Throttle unsuppressed              +0.142 s
  Target/course finalized            +0.260 s
  Takeoff control complete           +7.280 s
  Mode exit                          +8.100 s

At trigger
  Airspeed source                    Sensor
  Airspeed                           3.00 m/s
  Groundspeed                        2.03 m/s
  Airspeed vs AIRSPEED_MIN           -8.00 m/s
  Pitch demand / achieved            45.00° / -9.18°
  Roll demand / achieved             0.00° / 7.25°

Airspeed build
  Time to AIRSPEED_MIN               +1.781 s
  Airspeed at AIRSPEED_MIN           11.18 m/s

Takeoff control
  Airspeed range                     3.00–14.83 m/s
  Largest pitch tracking error       +54.41°
  Maximum absolute roll              11.85°
  Minimum altitude delta             -0.17 m
  Altitude gain at completion        +28.02 m

Propulsion to AIRSPEED_MIN
  Throttle at unsuppression              17.6%
  Peak throttle                          100.0%
  Throttle ramp to peak                  0.760 s
  Time at peak throttle                  0.879 s
  Throttle at AIRSPEED_MIN               100.0%
  Peak battery current                   20.7 A


TAKEOFF 3
----------------------------------------------------------------------

Status                               Mode exit before completion

Timing
  Firmware trigger                   0.000 s
  Throttle unsuppressed              +0.042 s
  Target/course finalized            +0.340 s
  Mode exit                          +7.820 s

At trigger
  Airspeed source                    Sensor
  Airspeed                           3.00 m/s
  Groundspeed                        1.79 m/s
  Airspeed vs AIRSPEED_MIN           -8.00 m/s
  Pitch demand / achieved            45.00° / 2.45°
  Roll demand / achieved             0.00° / 2.83°

Airspeed build
  Time to AIRSPEED_MIN               +1.761 s
  Airspeed at AIRSPEED_MIN           11.65 m/s

Takeoff control
  Airspeed range                     3.00–13.78 m/s
  Largest pitch tracking error       +41.92°
  Maximum absolute roll              6.45°
  Minimum altitude delta             -0.03 m
  Altitude delta at mode exit        +26.68 m

Propulsion to AIRSPEED_MIN
  Throttle at unsuppression              6.6%
  Peak throttle                          100.0%
  Throttle ramp to peak                  0.880 s
  Time at peak throttle                  0.839 s
  Throttle at AIRSPEED_MIN               100.0%
  Peak battery current                   19.6 A


TAKEOFF CONFIGURATION
======================================================================
Applies to TAKEOFF 1–3

Takeoff trigger conditions
  TKOFF_THR_MINACC             6.0 m/s²
  TKOFF_ACCEL_CNT              1
  TKOFF_THR_DELAY              0.0 s
  TKOFF_THR_MINSPD             0.0 m/s

Takeoff control
  TKOFF_ROTATE_SPD             0.0 m/s
  Rotation control             No speed-gated rotation
  TKOFF_GND_PITCH              5.0°
  TKOFF_LVL_PITCH              18.0°
  TKOFF_ALT                    30.0 m
  TKOFF_DIST                   75.0 m
  TKOFF_LVL_ALT                10.0 m

Throttle
  TKOFF_THR_MAX                100.0%
  TKOFF_THR_MAX_T              0.5 s
  TKOFF_THR_SLEW               110.0%/s
  TKOFF_OPTIONS                0
  THR_MAX                      100.0%

Pitch / roll
  PTCH_TRIM_DEG                0.0°
  KFF_THR2PTCH                 0.0
  PTCH_LIM_MAX_DEG             45.0°
  LEVEL_ROLL_LIMIT             5.0°
  ROLL_LIMIT_DEG               60.0°

Airspeed
  AIRSPEED_MIN                 11.0 m/s
  AIRSPEED_CRUISE              13.0 m/s
  ARSPD_USE                    1
  ARSPD_PRIMARY                0

The detailed report then shows each takeoff individually, followed by the relevant configuration.

This is still an APT development branch rather than an ArduPilot/AMC feature. I’m particularly interested in feedback on:

  • Is the summary useful at a glance?
  • What do you normally want to know after an automatic takeoff?
  • Is anything shown here unnecessary or confusing?
  • What information is missing for rolling takeoffs versus hand/catapult launches?
  • Are there particular logs or unusual TAKEOFF configurations that would be useful to test?

Branch: GitHub - nflyernz/ArdupilotTools at takeoff-analysis · GitHub

I’m happy to test additional 4.7.xx.bin logs if anyone has suitable Plane TAKEOFF examples.