MAVLINKHUD

MANUAL Mode (Plane)

Executive Summary

MANUAL Mode provides a direct pass-through connection between the pilot's RC sticks and the aircraft's control surfaces. It bypasses all stabilization, navigation, and fly-by-wire limiters. It is the only mode that allows the pilot to override the autopilot completely, making it critical for recovering from sensor failures or bad tunes.

Theory & Concepts

1. Direct Control Surface Authority

In Manual mode, you are the autopilot.

  • The Physics: Every degree of stick movement corresponds to a degree of servo movement (or a specific PWM change).
  • The Aerodynamics: You must manage the Stability Derivative of the plane. If you bank too much without adding elevator, the nose will drop (Spiral instability). If you pull up too much, the wings will stall.

2. The Fallback State

In computer science, this is the Fail-Safe or Limp Mode. By design, MANUAL mode is the simplest possible logic path. By minimizing the number of code lines between the RC receiver and the Servos, ArduPilot ensures that even if the CPU is under heavy load or the EKF has crashed, you can still steer the aircraft.

Hardware Dependency Matrix

This mode works even if the autopilot brain is partially failing.

Sensor Requirement Code Implementation Notes
RC Receiver CRITICAL Required to read stick inputs.
Servo Output CRITICAL Required to drive the surfaces.
Gyro/Accel/GPS NONE Not used. If the AHRS tumbles or the EKF blows up, MANUAL mode will still fly perfectly fine (assuming the pilot is skilled).

Control Architecture (Engineer's View)

The logic is a simple assignment loop.

  1. Input Conditioning:
    • Pilot inputs are read and scaled (-1 to +1).
    • Expo: ArduPlane applies specific exponential curves defined by MAN_EXPO_ROLL, MAN_EXPO_PITCH, and MAN_EXPO_RUDDER.
    • Note: This allows you to soften the feel of the manual plane without changing the settings on your transmitter.
  2. Output Mapping:
    • The conditioned input is sent directly to the SRV_Channels library (k_aileron, k_elevator, k_throttle, k_rudder).
    • Mixing: The Servo Output library handles the physical mixing (e.g., V-Tail, Elevon, Flaperon) downstream of the mode logic. So even in MANUAL, your V-Tail mixer works correctly.
    • Code Path: ModeManual::update().
  3. Controller Reset:
    • The code explicitly calls reset_controllers() to ensure that when you switch back to a stabilized mode, the integrators (I-terms) are zeroed out, preventing a sudden "jump" or wind-up release.

Pilot Interaction

  • Total Authority: You can stall, spin, or over-stress the airframe. The autopilot will not stop you.
  • Trimming: You must mechanically trim the aircraft or use the transmitter trims. (Note: Transmitter trims should be reset/zeroed before switching back to FBWA/stabilized modes to avoid confusing the controller).

Failsafe Logic

  • None: MANUAL mode is the failsafe.

Key Parameters

Parameter Default Description
MAN_EXPO_ROLL 0 (0-100%) Exponential curve for Roll stick.
MAN_EXPO_PITCH 0 (0-100%) Exponential curve for Pitch stick.
MAN_EXPO_RUDDER 0 (0-100%) Exponential curve for Rudder stick.

Source Code Reference