45 lines
4.7 KiB
Markdown

# Take 1
<mark style="background: #ABF7F7A6;"><mark style="background: #FFF3A3A6;">Controllers</mark> in the real world <mark style="background: #FFF3A3A6;">control</mark> plants that are not perfectly represented by a mathematical model. For this reason, <mark style="background: #FF5582A6;">controllers</mark> that operate in high-assurance environments must be evaluated to be robust.</mark>
<mark style="background: #FFB8EBA6;">Validation and verification of controller robustness is done today, but is a strenuous, manual task.</mark>
<mark style="background: #FFB86CA6;">Examining the robustness of a <mark style="background: #FFF3A3A6;">controller</mark> requires additional mathematical formalism of a system, and analysis of perturbations to a nominal plant model.</mark>
<mark style="background: #FF5582A6;">Perturbations can be considered as two forms--structured and unstructured perturbation.</mark>
<mark style="background: #ADCCFFA6;">Unstructured perturbation in particular allows the perturbation to take on any transfer function (or transfer matrix), such that the gain of the transfer function remains less than one.</mark>
If a <mark style="background: #FFB86CA6;">controlled system</mark> remains stable for the ~~nominal plant and all possible perturbations~~ all possible perturbations within the set[^1], it is considered robust.
To <mark style="background: #FF5582A6;">actually</mark> validate this statement with <mark style="background: #FFB86CA6;">actual</mark> perturbations is a difficult problem.
Generating perturbations is not trivial <mark style="background: #FFB86CA6;">because there is so much possibility for the form of an unstructured perturbation.</mark>
<mark style="background: #FFB86CA6;">For an engineer to accomplish this task today one of two things happens: </mark>
1. An engineer can randomly generate transfer functions as a perturbation and evaluate if their gain is less than one, or
2. An engineer creates a structured perturbation instead using some parameters (transfer function order, physical attributes, etc.)
[^2]
We suggest a different way of generating unstructured perturbations.
Instead of an engineer creating the perturbations, we suggest using a diffusion generative model to create perturbed plants directly.
To do this, the diffusion generative model is trained to create Bode plots of transfer functions from noise.
(WORD LIMIT) This model is then given a warm-start on a slightly-noisy nominal plant with which it will create a perturbed plant as it attempts to remove noise from the nominal plant.
This generated plant can then be analyzed using analytical fitting of a transfer function to the bode plot, and evaluated whether or not it is within the set of allowed perturbations.
Due to the ability of diffusion generative models to create novel samples, we can perform this process numerous times to collect a large number of perturbed plants.
We can then perform our validation using this subset of the unstructured perturbed set.
This method of perturbation generation can be very powerful for robust controller validation. Using a diffusion generative model, we can generate a limitless number of perturbed plants. We can also add some structure to this model if we like, specifying uncertainty with the amount of noise introduced to different sections of the Bode plot.
**STATS: 407 words. 157 too many.**
[[QE Abstract Take 1 Edits]]
[^1]:Likely need to introduce what the fuck the set is
[^2]: Honestly just rewrite this whole thing
# Take 2
## First thoughts
1. Introduce what a perturbation set is
2. Generating unstructured perturbations is hard, but maybe we can use diffusion to do it
3. Who gives a fuck about validation and verification. Why do we need to do actual samples?
## Attempt
Real world control systems do not operate on nominal plants, but instead control a physical plant that has similar but slightly different dynamics.
This discrepancy of dynamics is called a perturbation, and can affect controller performance.
The amount of perturbation that a control system can tolerate without violating performance or safety requirements is a crucial property to understand for high assurance systems.
The field of robust control and robustness analysis establishes bounds for the allowable amount of perturbation for a given controller and set of requirements.
We can know the set of allowable plants that our controller can command, and we can make guarantees about plants within those sets using robust control.
What we cannot do is easily validate our guarantees on a real controller.
While we have been able to find the set of perturbed plants for decades, being able to create and test a controller with elements from that set is by no means trivial.
The most common way of accomplishing this task today is by using structured uncertainty.