Good day,


I am currently working on an autonomous quadcopter project. I have currently implemented a cascaded PID controller consisting of two loops. The inner rate loop takes the angular velocity from the gyroscope as measurements. The outer stabilize/angle loop takes in angle measurements from the complementary filter (gyroscope + accelerometer angles).


I would like to ask if it is effective to cascade a Lateral Velocity (X and Y - axis) PID controller to the the Angle Controller (Roll and Pitch) to control drift along the X-Y plane. For the outermost PID controller, the setpoint is 0 m/s with the measured velocities obtained from integrating linear accelerations from the accelerometer. This then controls the PID controller responsible for the Pitch (if Y velocity PID) and Roll (if X velocity PID).


1 Answer 1


Your setup as is will certainly not work. Roll and Pitch do not map to X and Y one-to-one. You will need to use linear algebra to convert demanded XY (see this stack overflow question on how) into roll, pitch, and yaw for control. Moving only one will not move the other.

For your general question about cascaded PID controllers, that part of your strategy is on the right track. It is possible to cascade PID controllers, and PID controllers are frequently used in cases where an inner loop or plant is unmodelable.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.