Dynamic Inversion for Multicopters


Hello guys!

I am part of the Vertical Lift Research Center of Excellence VLCOE http://www.vlrcoe.psu.edu/ And as a side project we would like to contribute to the px4 community with an implementation of a Dynamic Inversion controller for Multicopters.

We would probably need some help from px4 developers, in order to properly integrate this to the source code. We have some experience building custom Firmware for our AVIA lab https://www.aero.psu.edu/avia/ But again, having a contact to whom we could ask for help would be great.

Is this something interesting for you guys??



Hello @toopazo , that would be awesome!
Yes, we can help you to integrate it. Do you have some details more details on what you want to implement? Is is “standard” NDI or incremental NDI or something else? How many coefficients?


@toopazo In my opinion, it would make more appropriate to implement it on ROS as a offboard controller due to the limited computational resources on the drone.

I will be quite interested in seeing how the dynamic inversion controllers perform


@Jaeyoung-Lim If dynamic inversion is used to control the angular rates of the drone, I doubt that running it in offboard mode will work properly due to communication delays. In my opinion, relying on an offboard communication in order to simply stabilize the drone is way too dangerous. Furthermore, NDI doesn’t necessarily need a lot of resources to run.


@bresch I can see why you have your conserns, but I agree / disagree on the points you made.

  • Communication delay becomes a problem when commanding actuator commands, but as the low level controller handles angular rate control, sending angular rates on offboard mode works quite well from my experience. You don’t necessarily need high rate commands. Most lab setups using PX4 rely on offboard rate command inputs and are able to do quite aggressive maneuvers with it. If you are curious on where the limit is, you can try out my project.

  • About safety, this I definitely agree. However, for experimental / evaluation purposes this is a more faster and effective way to evaluate the controller as it bypasses most of the failsafe features that can influence the behavior of the vehicle. I think offboard mode controllers should never make it into a real product as it is largely unsafe, but I always find it a useful way on prototyping.

But yeah, it would be cool if we have the controller in the firmware. My comment was more on the fact that it would be faster to test it out in offboard mode.


@Jaeyoung-Lim By “used to control the angular rates of the drone” I meant : “using NDI as a rate controller”, not to provide setpoints to a rate controller.


@bresch Oh, right! In that case no, never use offboard :slight_smile: Sorry for the confusion

1 Like

Thank you @bresch and @Jaeyoung-Lim

I will replay to you by the end of this week with more details. But as a rough estimate we are talking about 30-40 parameters (gains). An outer loop that would have velocity commands as input and angles. And an inner loop that would have angle commands as inputs and throttle as outputs.

I will start working on this and keep you posted
Thank you guys!