Skip to content
This repository was archived by the owner on Jun 22, 2026. It is now read-only.
This repository was archived by the owner on Jun 22, 2026. It is now read-only.

PID vs Dynamic Inversion #1

Description

@seanmcleod70

Feel free to ask questions if you have any!

Short of a Github Discussion option I guess the next best option is via Issues, even for questions/comments?

What if the proportoinal term in the PID (which is stable but wrong!) could be replaced with a term that computes the correct output location directly? Instead of fishing around to find the correct place to drive the output to zero, couldn't we just model the system and directly compute the correct output?

I happen to be reading up on the F-35's flight control law design - The F-35 Lightning II: From Concept to Cockpit and what you're describing is pretty similar to Dynamic Inversion for control.

$\dot{x} = Ax + Bu$

If you know the desired state rates, $\dot{x}_{des}$, plus the current state $x$, then you can solve for $u$.

$u = B^{-1} [ \dot{x}_{des} - Ax]$

This does imply that you've computed $A$, aircraft dynamics matrix (stability derivatives) and $B$, control effectiveness matrix.

Which I know you mentioned you're trying to avoid, i.e. having to come up with a full detailed model of the aircraft 😉 Typically done via some combination of CFD, wind-tunnel testing, and then fine-tuned with System Identification techniques from actual flight data.

In a sense you're describing a "small scale" System Identification from flight data.

So from raw flight test data we can directly derive a simple function that estimates the required aileron command to produce a specified roll rate given the current airspeed!

In the F-35 case they've implemented a Nonlinear Dynamic Inversion (NDI) based controller, with a very highly detailed aircraft model.

In terms of your initial roll rate example in terms of mapping a requested roll rate $p$ to an aileron deflection $\delta_a$ based on processing and sampling flight data don't you run the risk of the mapping being skewed depending on whether your flight data has enough periods of steady state roll rate $p_{ss}$ data?

For example take a look at A-4 - Skyhawk Roll Performance in terms of this graph plotting roll rate versus time and the roll rate acceleration versus the steady state roll rate.

Image

That plot is for a fixed aileron deflection at some dynamic pressure, showing the roll rate acceleration plus the effect of roll damping in terms of then settling down to a steady state roll rate.

If in your test flight data processing a large percentage of the samples were taken for the periods before reaching the steady state roll rate then your control system is going to be too 'twitchy' and always overshoot the steady state roll rate that the pilot is trying to achieve.

I am driving towards a real world demonstration with a small (RC scale) type fixed wing flying model.

How far along are you?

Cheers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions