Multicopter Controller structure

Hello @bresch, i would like to read research article published related to controller of the multicopter, especially version 1.10 (stable). Is there any such document, there please give some reference of that.

I don’t know if there are research articles, but the docs we have are here: https://dev.px4.io/master/en/flight_stack/controller_diagrams.html

@bresch Would it be useful to add a section with technical references and useful reading? Or to put it another way, if you are able to respond with research articles, please let me know whether you think they would be useful to “general readers”, and if so we will add them.

Actually, just merged a PR update to these docs. The attitude controller has this information in the new versions “The controller is implemented from this article.”

Thanks a lot @hamishwillee, the documentation and the paper cleared a lot of things. After going through the documentation and the source code, i came across the following doubt. The following image is picture of the source code from “positioncontrol.cpp”.


Here, i came accross the line “AddifnotNan” function taking two parameters vel_sp_position and vel_sp. The function addifnotNan is shown addif not nana
the code shows that there is addition of vel_sp_position and Vel_sp at each iteration, this is not shown in documentation and where did vel_sp came from?
Is it coming from trajectory generator?
Please clear the doubt if possible.

@bresch YOu might want to take over here :slight_smile:

Yes, vel_sp is the feedforward from the trajectory generator we discussed in Position velocity control structure px4 release 1.10 (stable)) - #4 by bresch

hello @bresch, can you please tell me where in source code is the smooth trajectory generated from given setpoints. If i provide a step input of 2, then smooth ramp type intermediate setpoints are generated, so where in code is this happening or what is the mathematics behind it?