STABILIZE Mode (Plane)
Executive Summary
STABILIZE Mode is the most basic assisted flight mode for fixed-wing aircraft. It automatically levels the wings and pitch when the pilot releases the sticks. However, unlike FBWA, it does not enforce bank or pitch angle limits. The pilot has full authority to roll the aircraft upside down, but the autopilot will constantly fight to return it to level flight.
Theory & Concepts
1. Stability Derivative Management
In aerospace engineering, Stability Derivatives describe how a plane naturally reacts to disturbances.
- A "Stable" Plane: If a gust hits the wing and rolls it, the plane's own shape (dihedral) will eventually roll it back.
- The Problem: Natural stability is slow.
- The Stabilize Mode: It uses the gyro to detect the gust before the plane rolls and applies immediate counter-servo movement. It effectively "increases" the natural stability of the aircraft.
2. Manual Authority over Stability
STABILIZE is a "Hybrid" mode.
- The autopilot works to keep the plane level (Stability).
- The pilot adds a direct servo offset (Authority).
- Result: You can loop the plane by holding full elevator. The autopilot fights you the whole time, but your stick "outvotes" the autopilot. This provides a safe way to fly aerobatics without the fear of the plane staying upside down when you let go.
Hardware Dependency Matrix
Stabilize requires only the core inertial sensors.
| Sensor | Requirement | Code Implementation Notes |
|---|---|---|
| Gyroscope | CRITICAL | Required for rate stabilization. |
| Accelerometer | CRITICAL | Required to determine "Level". |
| GPS | NONE | Not used. |
| Airspeed | RECOMMENDED | Helps scale PID gains for better performance at different speeds, but not strictly required. |
Control Architecture (Engineer's View)
Stabilize operates differently from FBWA. It uses Zero-Targeting with Direct Mixing.
- Targeting:
- The controller sets the Target Roll and Target Pitch to 0 degrees (Level).
- Code Path:
ModeStabilize::update()setsnav_roll_cd = 0.
- Stick Mixing (Direct):
- The pilot's stick input is added directly to the servo output, bypassing the angle limiter logic used in FBWA.
- Effect: If the plane is level and you hold full right aileron, the servo goes to full deflection. The plane will roll right. As it rolls, the autopilot sees an error (Target=0 vs Actual=Roll) and tries to counter-roll left.
- Result: You are fighting the autopilot. The further you deflect the stick, the more you override the leveling command. This allows you to loop and roll, but the plane will snap back to level the moment you release the stick.
Pilot Interaction
- Sticks Released: The plane aggressively returns to level flight.
- Sticks Held: You can fly in any attitude, including inverted.
- Throttle: Manual control (pass-through).
Comparison: STABILIZE vs FBWA
- FBWA: Stick = Command Angle (e.g., 30 deg). You cannot roll past the limit.
- STABILIZE: Stick = Servo Deflection + Leveling Fight. You can roll past the limit.
Failsafe Logic
- Attitude Loss: If the AHRS fails, the plane may try to "level" to a wrong horizon.
Key Parameters
| Parameter | Default | Description |
|---|---|---|
STAB_PITCH_DOWN |
2.0 | (deg) Pitch down trim at low throttle to prevent stalling during glide. |
RLL2SRV_P |
... | Roll P-gain. Determines how aggressively it self-levels. |
Source Code Reference
- Mode Logic:
ardupilot/ArduPlane/mode_stabilize.cpp - Control Loop:
ModeStabilize::run()