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.
