Quadrotor Control: Attitude and Position Cascade
A quadrotor cannot push sideways directly. To move right, it must tilt right so part of its thrust points that way. So its controller is a cascade: an outer position loop decides what tilt it wants, and a fast inner attitude loop makes the drone reach that tilt.
Click to set a new waypoint.
Two nested loops
In a side view with horizontal position \(y\), height \(z\), and tilt \(\phi\), thrust \(T\) gives \(\ddot y = -\tfrac{T}{m}\sin\phi\) and \(\ddot z = \tfrac{T}{m}\cos\phi - g\). The cascade is
What to notice
Click a waypoint to the side. The drone first tilts toward it, then accelerates, then tilts the other way to brake. The amber line is the tilt the outer loop asks for, and the navy line is the tilt the inner loop delivers. If the inner loop is not much faster than the outer loop, the drone cannot deliver the tilts in time, and it overshoots and wobbles. Drone autopilots such as PX4 and ArduPilot use this structure, often with a rate loop inside the attitude loop too.