Acro Mode (Copter)
Executive Summary
Acro (Acrobatic) mode is the purest form of flight control, providing direct "Rate" control over the vehicle's angular velocity. Unlike Stabilize or Loiter, the stick inputs command rotation speed (degrees per second), not an angle or position. It is the primary mode for FPV racing and freestyle flying.
Theory & Concepts
1. Rate Control vs. Angle Control
- Angle Control (Stabilize): If you push the stick 50% Right, the drone tilts 22 degrees Right and stops. When you let go, it levels itself.
- Rate Control (Acro): If you push the stick 50% Right, the drone starts rolling Right at 180 deg/s and continues rolling until you center the stick. When you let go, it stays at whatever angle it was at.
- Analogy: Angle control is like a steering wheel (turn 10 degrees, car turns 10 degrees). Rate control is like a joystick in a fighter jet (push right to roll, center to stop rolling).
2. Body Frame Physics
In Acro mode, rotation is calculated in the Body Frame.
- The Effect: If you are pitched 90 degrees forward (nose down) and you apply Yaw, the drone spins around its own vertical axis, which looks like a "Roll" relative to the ground.
- Why? This is essential for 3D maneuvers like "Power Loops" and "Matty Flips," where the pilot needs the drone to rotate relative to its own cockpit, not the Earth's horizon.
Hardware Dependency Matrix
Acro is the most robust flight mode because it requires the absolute minimum sensor set.
| Sensor | Requirement | Code Implementation Notes |
|---|---|---|
| Gyroscope | CRITICAL | The core rate controller relies entirely on gyro feedback to maintain the requested angular velocity. |
| Accelerometer | OPTIONAL | Only required if ACRO_TRAINER is enabled (for leveling) or for "AirMode" throttle boosting (which uses vertical acceleration estimates). Pure rate mode works without it. |
| GPS | NONE | Completely ignored. |
| Compass | NONE | Heading is maintained via gyro integration (drift is possible over long periods). |
| Barometer | OPTIONAL | Used for altitude stabilization if throttle is centered, but throttle is largely manual. |
Control Architecture (Engineer's View)
Acro operates in the Body Frame. This is a crucial distinction from "Earth Frame" modes like Stabilize or Sport.
- Input Shaper:
- Pilot sticks (normalized -1 to 1) are converted to target Angular Rates (deg/s).
- Code Path:
get_pilot_desired_angle_rates(). - Expo & Super Rates: The input is shaped by
ACRO_RP_EXPOandACRO_RP_RATE(orATC_INPUT_TC) to define the feel.
- Acro Trainer (Virtual Flybar):
- If
ACRO_TRAINERis enabled, the code calculates a "Leveling Rate" proportional to the current lean angle error. - This leveling rate is mixed with the pilot's request.
- Logic: As you move the stick further, the pilot's rate request overrides the leveling request. At center stick, the leveling request dominates, bringing the vehicle flat.
- If
- Rate Controller:
- The target rates are fed into the PID loop (
ATC_RAT_RLL_P/I/D, etc.). - The PID controller drives the motors to match the gyro rate to the target rate.
- The target rates are fed into the PID loop (
Pilot Interaction
- Stick Center: The vehicle maintains its current attitude (it stays tilted). If
ACRO_TRAINERis on, it slowly levels out. - Stick Deflection: The vehicle rotates at a speed proportional to stick deflection. Full stick =
ACRO_RP_RATE(e.g., 360 deg/s). - Throttle: Manual control. However, if "AirMode" is active (via
ATC_THR_MIX_MANorACRO_OPTIONS), the mixer will prioritize attitude control over throttle, potentially spooling up motors even at zero throttle to maintain stability during maneuvers.
Failsafe Logic
Acro is often the target of a failsafe, rather than having failsafes of its own.
- GPS/Compass Loss: No effect. Acro continues to function perfectly.
- GCS Failsafe: Standard throttle failsafe applies (usually RTL or Land).
- Crash Detection: If the crash check logic detects a crash (high accel, no rotation), it may disarm the vehicle to prevent damage.
Key Parameters
| Parameter | Default | Description |
|---|---|---|
ACRO_RP_RATE |
360 | Maximum rotation rate (deg/s) for Roll/Pitch at full stick. |
ACRO_Y_RATE |
202.5 | Maximum rotation rate (deg/s) for Yaw. |
ACRO_TRAINER |
2 | 0=Disabled (Pure Rate), 1=Leveling, 2=Leveling & Limited (prevents flipping). |
ACRO_BAL_ROLL |
1.0 | "Virtual Flybar" strength. Higher values make it level faster when sticks are released (if Trainer is active). |
ATC_THR_MIX_MAN |
0.1 | Defines how much authority the attitude controller has over the throttle. Higher values (0.5+) create "AirMode" behavior for hang-time stability. |
Tuning & Troubleshooting
| Symptom | Probable Cause | Corrective Action |
|---|---|---|
| Bounce-back after Flip | D-Term too low or P-Term too high. | Increase ATC_RAT_RLL_D / ATC_RAT_PIT_D slightly to dampen the stop. |
| Sluggish Response | Low Rate or high Filtering. | Increase ACRO_RP_RATE. Check INS_GYRO_FILTER (ensure it's not too low, e.g., < 40Hz). |
| Drift when Level | Accelerometer trim or Gyro bias. | Perform Accel Calibration (AHRS_TRIM_X/Y). In pure Acro, some drift is expected over time. |
| Wobble on Descent | Prop wash. | Increase ATC_THR_MIX_MAN (AirMode) to keep PID loops active at low throttle. |
Source Code Reference
- Mode Logic:
ardupilot/ArduCopter/mode_acro.cpp - Rate & Trainer Logic:
ModeAcro::get_pilot_desired_angle_rates() - Control Loop:
ModeAcro::run()
Practical Guide: Unlocking FPV Potential
The defaults are safe for a DJI clone, but terrible for a 5" racer.
1. Enable True Acro
- Set
ACRO_TRAINER = 0. - The default (2) limits your roll angle and auto-levels the drone. This prevents flips and rolls. Disable it immediately for freestyle.
2. Increase the Rates
- Parameter:
ACRO_RP_RATE - Default: 360 deg/s.
- FPV Standard: 667 (approx Betaflight 1.0) or 900.
- Max: 1080 deg/s.
3. Enable AirMode
- Parameter:
ATC_THR_MIX_MAN - Default: 0.1 (10% authority).
- Tuning: Increase to 0.5 (50%).
- Why? When you chop the throttle to zero to dive a building, the PID loop needs authority to keep the drone stable. Without this, the drone tumbles.
Training with AR
Learning Acro mode can be disorienting because you have no self-leveling reference. Pilots often lose track of their horizon or altitude.
Using Supported AR Glasses with MAVLink HUD allows you to keep a virtual artificial horizon and altitude tape in your field of view while maintaining line-of-sight with the drone. This "Training Wheels" approach significantly reduces crash risk during the learning phase by giving you an objective reference for "Level".