Hello there. Hope you are all doing well.

I have created a dynamic quadcopter model on Simulink and designed a controller for it. So far, everything is going well. However, since I am going to be implementing my control algorithm on a real quadcopter, I wanted to incorporate some aerodynamic effects as well. I used "Modelling and control of quadcopter" paper by Teppo Luukkonen as reference.

On the paper he formulates the aerodynamic effects as shown below (he mentions that there are many effects which could have been included as well):

enter image description here

In another part of the paper; he assigns 0.25 kg/s for coefficients Ax, Ay, and Az. I just want to know how he calculated this matrix of Ax, Ay, and Az. Is there a formulation? Can it be generalized for any quadcopter? Can you show me a source where I can get this information?


1 Answer 1


A linear function of velocity is one of the simplest ways to model the drag force.

Finding good values for the three coefficients is usually determined by collecting data from a quadrotor, and picking those values for which this linear model predicts the acceleration closest to that measured from the real data. E.g. minimizing the sum of squares of the error over all the data points in a least squares fashion, this can be done using a large linear system.

This will only work well for modeling drag if the weight and thrust are well known and there are no other forces acting on the quadrotor. Even still, as mentioned, drag is not perfectly linear, and there are other forces due to the impact of air such as blade flapping.

In general, a dynamical model can be learned, using data collected from a real quadrotor, by optimizing a cost function capturing the difference between the model's prediction and the real trajectory, over some chosen set of parameters. In this case, the parameters are the three linear coefficients for velocity, but better models can be built using a more expressive parameterization. For example, a linear function of the quadrotor state vector projected onto some high dimensional feature space. See https://people.eecs.berkeley.edu/~brecht/papers/07.rah.rec.nips.pdf for this regression method.

In addition to using trajectory prediction error to optimize for unknown model parameters, you can also use trajectory tracking error. The principle is that, if your controller successfully inverts the dynamics model, then a low tracking error should imply low prediction error and vice-versa. That is, if you can predict well, you can control well.

See https://arxiv.org/pdf/1712.02402.pdf for a method that uses trajectory tracking error as a means of optimizing for the drag coefficients (Section VI).

There are many many other papers that model quadrotors and learn models from data; you can use the references in the above paper as a head start.

Hope this helps!

  • $\begingroup$ That is more than I could ask for. Thank you so much! $\endgroup$
    – kucar
    Sep 7, 2021 at 11:48

Your Answer

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

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