MAVLINKHUD

Overview

The PILOT parameter group defines how the pilot's stick inputs are interpreted in assisted and autonomous flight modes.

These parameters do not affect Manual/Stabilize modes. Instead, they control the "feel" of modes like AltHold, Loiter, and Auto when the pilot uses the sticks to override or guide the autopilot.

Key Concepts

1. Vertical Speed (PILOT_SPEED_UP / DN)

In modes with automated altitude control (AltHold, Loiter), the throttle stick no longer controls raw motor power. Instead, it commands a Climb or Descent rate.

  • PILOT_SPEED_UP: Maximum climb rate at full throttle (cm/s).
  • PILOT_SPEED_DN: Maximum descent rate at zero throttle (cm/s).

2. Vertical Smoothness (PILOT_ACCEL_Z)

Limits the vertical acceleration. A lower value makes the drone feel more "floaty" and smooth when starting or stopping a climb.

3. Takeoff Behavior (PILOT_TKOFF_ALT)

Defines the altitude (centimeters) the vehicle will automatically climb to when an automated takeoff is triggered via the pilot's stick.

Parameter Breakdown

  • PILOT_SPEED_UP: Climb rate (e.g., 250 = 2.5 m/s).
  • PILOT_ACCEL_Z: Vertical acceleration limit (cm/s/s).
  • PILOT_THR_BHV: Bitmask for throttle behaviors (e.g., feedback or spring-centered).

Integration Guide

  • Heavy Payloads: If your drone struggles to stop a descent, you may need to reduce PILOT_SPEED_DN or increase PILOT_ACCEL_Z.
  • Precision: If you find it hard to hover at a precise altitude, increase PILOT_THR_FILT to smooth out noisy RC sticks.

Developer Notes

  • Library: libraries/AC_AttitudeControl and vehicle main loops.

PILOT_ACCEL_Z

cm/s/s
Default 250
Range 50 500

Pilot vertical acceleration (PILOT_ACCEL_Z)

Description

PILOT_ACCEL_Z determines the "Snappiness" of the altitude control. It sets the limit for how fast the drone is allowed to change its vertical speed.

  • Low Value (e.g., 100): The drone will feel heavy and slow to respond. It will take several seconds to reach its full climb speed.
  • High Value (e.g., 500): The drone will feel very responsive and "locked-in," jumping immediately when you move the stick.

The Mathematics

This parameter limits the derivative of the vertical velocity command $\dot{V}\_z$:
$$ \left| \frac{dV\_z}{dt} \right| \leq \text{PILOT\_ACCEL\_Z} $$

Tuning & Behavior

  • Default Value: 250 cm/s/s
  • Recommendation:
    • Smooth Cinematic Flight: Reduce to 100 or 150.
    • Aggressive Acro/Racing: Increase to 400 or 500.
  • Vibration: If your drone has high vibration, setting this too high can cause "twitches" in altitude as the controller reacts too aggressively to sensor noise.

PILOT_SPEED_DN

cm/s
Default 0
Range 0 500

Pilot maximum vertical speed descending (PILOT_SPEED_DN)

Description

PILOT_SPEED_DN determines how fast your drone descends when you pull the throttle stick down in modes like AltHold or Loiter.

  • 0 (Default): Use the same value as PILOT_SPEED_UP (usually 250 cm/s).
  • Custom Value: Sets a specific limit for descent.

Warning: Rapid descents can be dangerous for multicopters. If you descend too fast through your own propeller wash, the drone can enter Vortex Ring State (VRS), causing it to wobble violently and potentially flip or crash.

Tuning & Behavior

  • Default Value: 0
  • Recommendation: Set to 150 or 200 if you want safer, slower descents. Never set this higher than 500 unless you have a high-speed racing drone and know how to recover from a stall.

PILOT_SPEED_UP

cm/s
Default 250
Range 50 500

Pilot maximum vertical speed ascending (PILOT_SPEED_UP)

Description

PILOT_SPEED_UP determines how fast your drone climbs when you push the throttle stick all the way up in modes like AltHold, Loiter, and PosHold.

  • 250 (Default): The drone will climb at 2.5 meters per second (m/s).

Unlike Stabilize mode (where the stick directly controls motor power), in autonomous modes, the stick controls the "Requested Vertical Velocity." This parameter acts as the speed limiter for that request.

The Engineer's View

Defined in ArduCopter/Parameters.cpp.
The vertical velocity controller in AC_PosControl takes the pilot's normalized stick input ($S \in [-1, 1]$) and maps it to a target velocity $V\_z$:
$$ V\_{z\_target} = S\_{throttle} \cdot \text{PILOT\_SPEED\_UP} $$

Tuning & Behavior

  • Default Value: 250 cm/s
  • Recommendation:
    • Cinematography: Reduce to 150 or 200 for smoother, more cinematic ascents.
    • Sport / Inspection: Increase to 400 or 500 for rapid altitude changes.
  • Note: If your drone is underpowered, setting this too high will cause it to lose stability during a climb as the motors hit their maximum output and can no longer maintain attitude (Tilt).

PILOT_STEER_TYPE

Default 0
Range 0 1

Pilot Steering Type (PILOT_STEER_TYPE)

Description

PILOT_STEER_TYPE defines how your transmitter sticks move the Rover or Boat.

  • 0: Default. The steering stick controls the vehicle's turn rate or wheel angle.
  • 1: Two-Paddle. (Used for skid-steer). Left stick controls the left motor, right stick controls the right motor. This provides a direct, "old-school" tank control feel.

Tuning & Behavior

  • Default: 0.
  • Recommendation: Use 0 for most vehicles, as it allows the autopilot to perform stabilization and speed control more effectively. Only use 1 if you are specifically trained on dual-throttle tank controls.

PILOT_THR_BHV

Default 0
Range 0 1

Pilot Throttle Behavior (PILOT_THR_BHV)

Description

PILOT_THR_BHV allows you to customize how the autopilot interprets your throttle stick, particularly useful for "Self-Centering" transmitters.

  • Bit 0 (1): Center-Thrust. Use this if your transmitter's throttle stick has a spring and always returns to the center (common on DJI-style or consumer controllers). When enabled, the drone assumes "Neutral" is in the middle of the stick's travel. This allows for easier altitude hold and prevents the drone from accidentally landing or jumping if you let go of the stick.

Tuning & Behavior

  • Default: 0 (Standard throttle - 0% at bottom).
  • Recommendation: Only enable if you have a physical spring on your throttle stick.

PILOT_THR_FILT

Hz
Default 0
Range 0 10.0

Pilot Throttle Filter (PILOT_THR_FILT)

Description

PILOT_THR_FILT smooths your manual throttle movements.

If you have "shaky" hands or a transmitter with noisy potentiometers, this filter prevents the drone's motors from reacting to every tiny, unintended vibration in the stick.

  • 0: Disabled (Default).
  • Value (Hz): Cutoff frequency. A value of 2.0 Hz provides good smoothing without making the throttle feel "laggy."

PILOT_TKOFF_ALT

cm
Default 0
Range 0 1000

Pilot Takeoff Altitude (PILOT_TKOFF_ALT)

Description

PILOT_TKOFF_ALT enables the "Automatic Launch" feature for manual flight modes.

Normally, in modes like Loiter or AltHold, you have to manually push the throttle stick up to lift the drone off the ground. With this parameter, you can simply arm the drone and push the throttle stick slightly above the center (or use a GCS button). The drone will then automatically climb to this specific height and wait for your next command.

  • Units: Centimeters.
  • 0 (Default): Feature is disabled. Standard manual throttle control for takeoff.
  • 200: The drone will automatically climb to 2 meters (6.5 ft) above the ground.

The Engineer's View

Defined in ArduCopter/Parameters.cpp.
When the drone is armed and landed in a semi-autonomous mode (Loiter, AltHold, PosHold, FlowHold), the position controller monitors the throttle stick. If the stick is moved above the THR_DZ (Deadzone) and PILOT_TKOFF_ALT is non-zero, the takeoff.start() function is called.

// ArduCopter/mode_loiter.cpp
if (ap.land_complete && throttle_stick > center_stick) {
    takeoff.start(constrain_float(g.pilot_takeoff_alt, 0.0f, 1000.0f));
}

The drone then executes a kinematically shaped vertical path to the target altitude, using the PSC_JERK_Z and PSC_ACCEL_Z limits.

Tuning & Behavior

  • Default Value: 0 (Manual Takeoff).
  • Recommendation: Set to 200 (2 meters). This is a safe "Head Height" that ensures the drone is clear of ground-effect turbulence and obstacles before the pilot takes over full manual control.
  • Safety: Always ensure the area above the drone is clear. If you trigger an automatic takeoff indoors, the drone will hit the ceiling if PILOT_TKOFF_ALT is set too high!

Troubleshooting

  • Scenario: My drone "jumps" into the air as soon as I move the throttle stick just a little bit.
    • Diagnosis: PILOT_TKOFF_ALT is set to a non-zero value, and you are triggering the auto-launch.
    • Fix: Set to 0 if you prefer manual throttle control during takeoff.