[PX4 Tuning Series 3] Manual PID Tuning for Beginners: Achieving Perfect Harmony with Your Drone
Hello again to all university students, graduate students, and researchers dedicating yourselves to the study of aerospace engineering and autonomous drones!
Through [Series 1] and [Series 2], we eliminated mechanical play in our hardware, minimized control latency, and successfully completed “Filter Tuning” by analyzing flight logs to block out vibrations. Now, your drone is in its absolute peak physical condition, ready to react instantaneously to controller commands without being hindered by mechanical noise.
In Series 3 today, we will dive deeply into the brain of the drone and the core of flight stability: Manual PID Tuning (Basic Tuning). While PX4 offers an excellent ‘Auto-tuning’ feature, a profound understanding of manual tuning is absolutely essential when you are building specialized research vehicles or when you need fine-grained optimization. Through this post, we will guide you through the principles and procedures of manual tuning in a friendly and intuitive way.
1. Understanding PID Controller Architecture and Tuning Order
A drone’s control algorithm is not a single, flat structure. Instead, it is layered in a “Cascade” format. The PX4 controllers pass their results from the highest level down to the lowest level. It starts from the lowest-level (innermost) Rate Controller, moves out to the Attitude Controller, and finally to the outermost Velocity & Position Controller.

When tuning, you must always start with the innermost loop—the Rate Controller—and work your way outwards. If the rate controller is poorly tuned, upper-level controllers like Position mode will suffer from twitches or fail to hold their position perfectly in the air. Therefore, it is no exaggeration to say that the beginning and end of all drone tuning depend on the Rate Controller.
2. Essential Pre-Tuning Preparation: Disabling Airmode and Basic Setup
Before we take off for actual tuning, there are a few critical settings you must configure in QGroundControl (QGC).
① Disable Airmode (MC_AIRMODE)
During tuning, you must disable Airmode. Airmode is a fantastic feature that maintains attitude control even when your throttle is at zero. However, on an untuned, unstable vehicle, it can amplify vibrations and cause the drone to shoot up into the sky unexpectedly.
② Configure the Thrust Curve (THR_MDL_FAC)
To account for the non-linearity between the motor control signal and the actual thrust produced, we must set the thrust curve value:
- When using standard PWM ESCs: Set the value to
0.3(a good starting point for power-based controllers). - When using RPM-based ESCs like DShot: Set the value to
1.0(RPM-based setups already have a quadratic thrust curve, so no further compensation is needed).
③ Use a High-Rate Telemetry Link
To view the real-time tuning graphs without delay on the PID tuning screen, it is highly recommended to use a Wi-Fi connection or a similar high-rate telemetry link. Typical low-range telemetry radios (like 915MHz modules) do not have the bandwidth for smooth real-time plotting.
3. Hands-on Rate Controller Tuning: Mastering QGroundControl
Now, we are ready to take off. In a wide, safe area, take off in Altitude Mode or Stabilized Mode and hover at a safe altitude (around 1 to 2 meters).
- Open QGC and navigate to the [Vehicle Setup] > [PID Tuning] menu.
- Select the [Rate Controller] tab at the top.
- Select Roll as the first axis to tune (for symmetrical quadcopters, Roll and Pitch gains will be almost identical).
- Click the Start button at the bottom of the screen. You will see the tuning graphs start plotting in real-time.

The ultimate goal of tuning is to adjust your parameters so that the Response curve (the vehicle’s actual movement) tracks the Setpoint curve (your desired target commanded by the RC stick) as quickly and accurately as possible, without overshooting.
3-1. Applying Step-Inputs
To properly evaluate the responsiveness on the graph, you must apply a Step-input. Quickly “flick” the roll stick to one side to its maximum range and let it snap back to the center. This generates a sharp, square-like pulse on the setpoint graph. By observing how the response curve reacts to this sudden change, you can adjust the P, I, and D gains.
3-2. The Roles of P, I, D Gains and How to Adjust Them
Adjusting P (Proportional) / K Gain: The P gain determines how quickly and responsively the vehicle reacts to your target setpoint.
- When to increase: If the vehicle reacts too slowly, feels sluggish, or if the Response curve lags far behind the Setpoint curve on the graph.
- When to decrease: If the P gain is too high, you will see high-frequency oscillations (rapid shaking), and the response curve will shoot past the target value, causing an Overshoot. Decrease the value if this happens.
Adjusting D (Derivative) Gain: The D gain acts as a brake or a damper. It suppresses the overshoots and oscillations caused by the P gain.
- When to increase: When you want to dampen overshoots and oscillations after pushing the P gain higher.
- When to decrease (Caution): The D term inherently amplifies sensor noise. If the D gain is too high, the motors will become twitchy and generate excessive heat. If your motors get too hot to touch, stop tuning immediately and lower the D gain!
Adjusting I (Integral) Gain: The I gain maintains a memory of the error over time to eliminate steady-state errors.
- When to increase: If there is a constant offset where the response curve never quite reaches the setpoint (for example, due to wind). Also, in Acro mode, if you tilt the vehicle 45 degrees and it slowly drifts back toward level, the I gain is too low.
- When to decrease: If the I gain is set too high, you will experience slow, heavy oscillations.

3-3. Sequential Tuning: Roll, Pitch, and Yaw
Once you have maximized responsiveness by raising the P gain on the Roll axis, slightly raised the D gain to catch overshoots, and fine-tuned the steady-state error with the I gain, click the [Save to Clipboard] button in QGC. Next, switch the tuning axis to Pitch, click [Reset from Clipboard] to apply the exact same values as Roll, and then apply step-inputs to the Pitch axis to make minor adjustments. Finally, tune the Yaw axis. Because the yaw axis responds much slower by physical design, you can generally leave the D gain at 0 and tune only the P and I gains.
4. Attitude Controller and Velocity/Position Controller Tuning
If you have perfectly tuned the Rate Controller, you have essentially finished 90% of the hard work!
Attitude Controller Tuning: Tuning the attitude controller is much easier. Move to the [Attitude Controller] tab in QGC, fly in Stabilized mode, and move the sticks around. Gradually increase the P gains (MC_ROLL_P, MC_PITCH_P, MC_YAW_P). If you start seeing oscillations or overshoots, the gains are too high, so dial them back. In most cases, the default values work wonderfully.
Velocity & Position Controller Tuning: This controller determines how sharply the vehicle holds its position against external forces like wind. To tune this, switch to Position mode. In the QGC tuning screen, check the Simple position control option. This translates your stick inputs directly into unsmoothed velocity setpoints. Apply hard stick inputs up, down, left, and right, and verify that the vehicle reaches the target velocities crisply, just as you did during rate tuning.
5. Conclusion and Teaser for the Next Series
Congratulations! You have just successfully manually tuned the most critical flight controller—the Rate PID—while analyzing real-time data. Your drone will now feel totally ‘locked-in’, acting as a direct extension of your RC transmitter.
Before you finish, do not forget to re-enable MC_AIRMODE! Having Airmode enabled is vital for maintaining stable attitude control even when you drop the throttle to zero during rapid descents.
However, our journey is not over. The values we tuned today work perfectly around the ‘Hover Thrust’ point, but you might still encounter unexpected oscillations when pushing the motors to maximum output (Full throttle). To solve this, in our next post, [Series 4: Advanced PID Tuning and Flight Optimization], we will dive deeper into the non-linear thrust curve compensation (THR_MDL_FAC) and explore the advanced Standard and Parallel PID controller architectures.
Congratulations on a successful tuning session, and safe flying on your next lab test flight!
YouTube Tutorial

Author: maponarooo, CEO of QUAD Drone Lab
Date: March 6, 2026
