No files matched your search
@@ -30,7 +30,7 @@ Because their are strong non-intuitive aspect of MIMO loop-shaping, the followin
|
|||||||
- **[Interaction Analysis]({{< relref "interaction_analysis.md" >}})**.
|
- **[Interaction Analysis]({{< relref "interaction_analysis.md" >}})**.
|
||||||
The goal is to identify two sided interactions in the plant dynamics.
|
The goal is to identify two sided interactions in the plant dynamics.
|
||||||
If there is no two sided interaction, then feedback design becomes a standard multi-loop SISO design problem.
|
If there is no two sided interaction, then feedback design becomes a standard multi-loop SISO design problem.
|
||||||
Two measured of the plant interaction are [Relative Gain Array]({{< relref "relative_gain_array.md" >}}) and [Structured Singular Value]({{< relref "structured_singular_value.md" >}}).
|
Two measured of the plant interaction are Relative Gain Array and Structured Singular Value.
|
||||||
- **Decoupling transformations**.
|
- **Decoupling transformations**.
|
||||||
To reduce interaction, one may redefine the input and output of the plant using a decoupling transformation.
|
To reduce interaction, one may redefine the input and output of the plant using a decoupling transformation.
|
||||||
For motion systems, most transformations are found on the basis of **kinematic model**.
|
For motion systems, most transformations are found on the basis of **kinematic model**.
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ The multi-loop control may not work in strongly coupled systems.
|
|||||||
Therefore, a methodology the access the degree of interaction between the loops is needed.
|
Therefore, a methodology the access the degree of interaction between the loops is needed.
|
||||||
|
|
||||||
|
|
||||||
### [Relative Gain Array]({{< relref "relative_gain_array.md" >}}) {#relative-gain-array--relative-gain-array-dot-md}
|
### Relative Gain Array {#relative-gain-array}
|
||||||
|
|
||||||
The Relative Gain Array (RGA) \\(\Lambda(s)\\) is defined as:
|
The Relative Gain Array (RGA) \\(\Lambda(s)\\) is defined as:
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,244 @@ category = "Signals and Systems"
|
|||||||
+++
|
+++
|
||||||
|
|
||||||
Tags
|
Tags
|
||||||
:
|
: [Discrete Transfer Functions]({{< relref "discrete_transfer_functions.md" >}})
|
||||||
|
|
||||||
|
Classical transfer functions in the Laplace domain, with the meaning of their parameters.
|
||||||
|
In all the examples, the frequency of interest is \\(\omega\_0 = 2\pi\\) rad/s (1 Hz) and is shown with a dashed line.
|
||||||
|
To obtain the equivalent digital filter, see [Discrete Transfer Functions]({{< relref "discrete_transfer_functions.md" >}}).
|
||||||
|
|
||||||
|
|
||||||
## Typical Transfer Functions {#typical-transfer-functions}
|
## First Order Low Pass Filter {#first-order-low-pass-filter}
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
H(s) = \frac{1}{1 + s/\omega\_0}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- \\(\omega\_0\\): cut-off frequency in [rad/s]
|
||||||
|
|
||||||
|
Characteristics:
|
||||||
|
|
||||||
|
- Low frequency gain of \\(1\\)
|
||||||
|
- At \\(\omega\_0\\): gain of \\(1/\sqrt{2}\\) (-3 dB) and phase of -45 deg
|
||||||
|
- High frequency roll-off of -20 dB/dec, phase tends to -90 deg
|
||||||
|
|
||||||
|
<!--listend-->
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
w0 = 2*pi; % Cut-off frequency [rad/s]
|
||||||
|
|
||||||
|
H = 1/(1 + s/w0);
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-low-pass-first-order"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_low_pass_first_order.png" caption="<span class='figure-number'>Figure 1: </span>First order low pass filter, effect of \\(\omega\_0\\) (dashed: \\(\omega\_0 = 2\pi\\) rad/s)" >}}
|
||||||
|
|
||||||
|
|
||||||
|
## First Order High Pass Filter {#first-order-high-pass-filter}
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
H(s) = \frac{s/\omega\_0}{1 + s/\omega\_0}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- \\(\omega\_0\\): cut-off frequency in [rad/s]
|
||||||
|
|
||||||
|
Characteristics:
|
||||||
|
|
||||||
|
- High frequency gain of \\(1\\)
|
||||||
|
- At \\(\omega\_0\\): gain of \\(1/\sqrt{2}\\) (-3 dB) and phase of +45 deg
|
||||||
|
- Low frequency slope of +20 dB/dec, phase tends to +90 deg
|
||||||
|
|
||||||
|
<!--listend-->
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
w0 = 2*pi; % Cut-off frequency [rad/s]
|
||||||
|
|
||||||
|
H = (s/w0)/(1 + s/w0);
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-high-pass-first-order"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_high_pass_first_order.png" caption="<span class='figure-number'>Figure 2: </span>First order high pass filter, effect of \\(\omega\_0\\) (dashed: \\(\omega\_0 = 2\pi\\) rad/s)" >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Second Order Low Pass Filter {#second-order-low-pass-filter}
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
H(s) = \frac{1}{1 + \frac{2 \zeta}{\omega\_0} s + \frac{s^2}{\omega\_0^2}}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- \\(\omega\_0\\): natural frequency in [rad/s]
|
||||||
|
- \\(\zeta\\): damping ratio
|
||||||
|
|
||||||
|
Characteristics:
|
||||||
|
|
||||||
|
- Low frequency gain of \\(1\\)
|
||||||
|
- High frequency roll-off of -40 dB/dec, phase tends to -180 deg
|
||||||
|
- Phase of -90 deg at \\(\omega\_0\\), whatever the damping
|
||||||
|
- Gain at \\(\omega\_0\\) equal to \\(1/(2\zeta)\\)
|
||||||
|
- For \\(\zeta < 1/\sqrt{2}\\) there is a resonance peak, for \\(\zeta \geq 1/\sqrt{2}\\) the magnitude is monotonically decreasing
|
||||||
|
- Smaller \\(\zeta\\) gives a sharper phase transition around \\(\omega\_0\\)
|
||||||
|
|
||||||
|
<!--listend-->
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
w0 = 2*pi; % Natural frequency [rad/s]
|
||||||
|
zeta = 0.1; % Damping ratio
|
||||||
|
|
||||||
|
H = 1/(1 + 2*zeta/w0*s + s^2/w0^2);
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-low-pass-second-order"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_low_pass_second_order.png" caption="<span class='figure-number'>Figure 3: </span>Second order low pass filter, effect of the damping ratio \\(\zeta\\)" >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Second Order High Pass Filter {#second-order-high-pass-filter}
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
H(s) = \frac{s^2/\omega\_0^2}{1 + \frac{2 \zeta}{\omega\_0} s + \frac{s^2}{\omega\_0^2}}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- \\(\omega\_0\\): natural frequency in [rad/s]
|
||||||
|
- \\(\zeta\\): damping ratio
|
||||||
|
|
||||||
|
Characteristics:
|
||||||
|
|
||||||
|
- High frequency gain of \\(1\\)
|
||||||
|
- Low frequency slope of +40 dB/dec, phase tends to +180 deg
|
||||||
|
- Phase of +90 deg at \\(\omega\_0\\), whatever the damping
|
||||||
|
- Gain at \\(\omega\_0\\) equal to \\(1/(2\zeta)\\), resonance peak for \\(\zeta < 1/\sqrt{2}\\)
|
||||||
|
|
||||||
|
<!--listend-->
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
w0 = 2*pi; % Natural frequency [rad/s]
|
||||||
|
zeta = 0.1; % Damping ratio
|
||||||
|
|
||||||
|
H = (s^2/w0^2)/(1 + 2*zeta/w0*s + s^2/w0^2);
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-high-pass-second-order"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_high_pass_second_order.png" caption="<span class='figure-number'>Figure 4: </span>Second order high pass filter, effect of the damping ratio \\(\zeta\\)" >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Notch Filter {#notch-filter}
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
H(s) = \frac{s^2 + 2 g\_c \zeta \omega\_n s + \omega\_n^2}{s^2 + 2 \zeta \omega\_n s + \omega\_n^2}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- \\(\omega\_n\\): frequency of the notch in [rad/s]
|
||||||
|
- \\(g\_c\\): gain at the notch frequency (\\(g\_c < 1\\) gives a notch, \\(g\_c > 1\\) gives a peak)
|
||||||
|
- \\(\zeta\\): damping ratio, sets the width of the notch
|
||||||
|
|
||||||
|
Characteristics:
|
||||||
|
|
||||||
|
- Unity gain at low and high frequency
|
||||||
|
- Gain of exactly \\(g\_c\\) at \\(\omega\_n\\), with a phase of 0 deg
|
||||||
|
- For \\(g\_c < 1\\): phase is negative below \\(\omega\_n\\) and positive above
|
||||||
|
- Larger \\(\zeta\\) gives a wider notch, and more phase lag/lead around it
|
||||||
|
|
||||||
|
<!--listend-->
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
wn = 2*pi; % Notch frequency [rad/s]
|
||||||
|
gc = 0.02; % Gain at the notch frequency
|
||||||
|
zeta = 0.2; % Damping ratio (notch width)
|
||||||
|
|
||||||
|
H = (s^2 + 2*gc*zeta*wn*s + wn^2)/(s^2 + 2*zeta*wn*s + wn^2);
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-notch-gc"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_notch_gc.png" caption="<span class='figure-number'>Figure 5: </span>Notch filter, effect of the gain at the notch frequency \\(g\_c\\)" >}}
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-notch-zeta"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_notch_zeta.png" caption="<span class='figure-number'>Figure 6: </span>Notch filter, effect of the damping ratio \\(\zeta\\) (notch width)" >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Lead Filter {#lead-filter}
|
||||||
|
|
||||||
|
A lead filter is usually used to add some phase lead at a particular frequency, at the expense of a reduction of the gain at low frequency and increase of the gain at high frequency.
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
H(s) = \frac{1}{\sqrt{a}} \frac{1 + \frac{s}{\omega\_c/\sqrt{a}}}{1 + \frac{s}{\omega\_c \sqrt{a}}}, \quad a > 1
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- \\(\omega\_c\\): frequency at which the phase lead is maximum, in [rad/s]
|
||||||
|
- \\(a\\): sets the amount of phase lead, and the gain increase between low and high frequency
|
||||||
|
|
||||||
|
Characteristics:
|
||||||
|
|
||||||
|
- Zero at \\(\omega\_c/\sqrt{a}\\) and pole at \\(\omega\_c \sqrt{a}\\), geometrically centered on \\(\omega\_c\\)
|
||||||
|
- Unity gain at \\(\omega\_c\\), low frequency gain of \\(1/\sqrt{a}\\), high frequency gain of \\(\sqrt{a}\\)
|
||||||
|
- Maximum phase lead, obtained at \\(\omega\_c\\), equal to (Figure [Figure 8](#figure--fig:filter-lead-effect-a-phase)):
|
||||||
|
\\[ \angle H(j\omega\_c) = \tan^{-1}(\sqrt{a}) - \tan^{-1}(1/\sqrt{a}) \\]
|
||||||
|
|
||||||
|
<!--listend-->
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
a = 3; % Amount of phase lead
|
||||||
|
wc = 2*pi; % Frequency of maximum phase lead [rad/s]
|
||||||
|
|
||||||
|
H = 1/sqrt(a)*(1 + s/(wc/sqrt(a)))/(1 + s/(wc*sqrt(a)));
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-lead"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_lead.png" caption="<span class='figure-number'>Figure 7: </span>Lead filter, effect of the parameter \\(a\\)" >}}
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-lead-effect-a-phase"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_lead_effect_a_phase.png" caption="<span class='figure-number'>Figure 8: </span>Maximum phase lead as a function of \\(a\\)" >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Lag Filter {#lag-filter}
|
||||||
|
|
||||||
|
A lag filter is usually used to add low frequency gain, at the expense of some phase lag.
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
H(s) = a \cdot \frac{1 + \frac{s}{\omega\_c \sqrt{a}}}{1 + \frac{s}{\omega\_c/\sqrt{a}}}, \quad a > 1
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- \\(\omega\_c\\): frequency at which the phase lag is maximum, in [rad/s]
|
||||||
|
- \\(a\\): sets the amount of phase lag, and the gain increase at low frequency (the low frequency gain is \\(a\\))
|
||||||
|
|
||||||
|
Characteristics:
|
||||||
|
|
||||||
|
- Zero at \\(\omega\_c \sqrt{a}\\) and pole at \\(\omega\_c/\sqrt{a}\\)
|
||||||
|
- Low frequency gain of \\(a\\), high frequency gain of \\(1\\) (unchanged), gain of \\(\sqrt{a}\\) at \\(\omega\_c\\)
|
||||||
|
- It is used to increase the low frequency gain (e.g. instead of a pure integrator), \\(\omega\_c\\) should be kept well below the crossover frequency to limit the phase lag there
|
||||||
|
|
||||||
|
<!--listend-->
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
a = 3; % Amount of phase lag
|
||||||
|
wc = 2*pi; % Frequency of maximum phase lag [rad/s]
|
||||||
|
|
||||||
|
H = a*(1 + s/(wc*sqrt(a)))/(1 + s/(wc/sqrt(a)));
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="figure--fig:filter-lag"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/filter_lag.png" caption="<span class='figure-number'>Figure 9: </span>Lag filter, effect of the parameter \\(a\\)" >}}
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
|||||||
@@ -10,6 +10,88 @@ Tags
|
|||||||
: [Multivariable Control]({{< relref "multivariable_control.md" >}})
|
: [Multivariable Control]({{< relref "multivariable_control.md" >}})
|
||||||
|
|
||||||
|
|
||||||
|
## Decoupling Control of Parallel Kinematics Robots {#decoupling-control-of-parallel-kinematics-robots}
|
||||||
|
|
||||||
|
Consider a rigid body (mass matrix \\(\bm{M}\\), stiffness matrix \\(\bm{K}\\)) suspended by actuators, with their forces \\(\bm{\tau}\\) and the change of length of the struts \\(\bm{\mathcal{L}}\\).
|
||||||
|
The Jacobian matrix \\(\bm{J}\\) relates the pose \\(\bm{\mathcal{X}}\\) of the body to the strut lengths, \\(\bm{\mathcal{L}} = \bm{J} \bm{\mathcal{X}}\\), and the actuator forces to the wrench \\(\bm{\mathcal{F}}\\) applied on the body, \\(\bm{\mathcal{F}} = \bm{J}^{\intercal} \bm{\tau}\\).
|
||||||
|
|
||||||
|
The transfer function in the actuator frame is:
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\bm{G}\_{\\{\mathcal{L}\\}}(s) = \frac{\bm{\mathcal{L}}}{\bm{\tau}} = \bm{J} \left( \bm{M} s^2 + \bm{C} s + \bm{K} \right)^{-1} \bm{J}^{\intercal}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Depending on the frequency range, the dynamics is dominated by the stiffness (low frequency) or the inertia (high frequency).
|
||||||
|
The best frame to decouple the system is not the same in the two cases.
|
||||||
|
|
||||||
|
|
||||||
|
### Control at the Center Of Mass {#control-at-the-center-of-mass}
|
||||||
|
|
||||||
|
For soft systems (for instance voice coil based), it makes sense to work at the Center of Mass (CoM).
|
||||||
|
Above the "suspension modes", the dynamics is dominated by inertia.
|
||||||
|
Therefore, the transfer function from forces and torques applied at the CoM to the translation and rotation of the suspended mass evaluated at the CoM is decoupled.
|
||||||
|
It is equal to the inverse of the mass matrix (diagonal when evaluated at the CoM) times \\(1/s^2\\):
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\bm{G}\_{\\{CoM\\}}(s) = \frac{\bm{\mathcal{X}}\_{\\{CoM\\}}}{\bm{\mathcal{F}}\_{\\{CoM\\}}} \approx \frac{1}{s^2} \bm{M}^{-1}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
To work at the CoM, the plant is pre- and post-multiplied by the Jacobian matrices as shown in Figure [Figure 1](#figure--fig:detail-control-decoupling-control-jacobian):
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\bm{G}\_{\\{CoM\\}}(s) = \bm{J}\_{\\{CoM\\}}^{-1} \\, \bm{G}\_{\\{\mathcal{L}\\}}(s) \\, \bm{J}\_{\\{CoM\\}}^{-\intercal}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
<a id="figure--fig:detail-control-decoupling-control-jacobian"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/detail_control_decoupling_control_jacobian.png" caption="<span class='figure-number'>Figure 1: </span>Plant with inputs \\(\bm{\tau}\\) and outputs \\(\bm{\mathcal{L}}\\), and the Jacobian matrices used to work with forces and displacements at the CoM" >}}
|
||||||
|
|
||||||
|
The animations below show a 3DoF suspended body above its suspension modes (1 Hz), when a force or a torque is applied at the CoM.
|
||||||
|
The three actuator forces are computed with \\(\bm{\tau} = \bm{J}\_{\\{CoM\\}}^{-\intercal} \bm{\mathcal{F}}\_{\\{CoM\\}}\\) (the darker the actuator, the larger its force).
|
||||||
|
|
||||||
|
**Force along \\(x\\) applied at the CoM**: the body only translates along \\(x\\).
|
||||||
|
|
||||||
|
<a id="figure--fig:decoupled-control-com-Fx"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/decoupled_control_com_Fx.gif" caption="<span class='figure-number'>Figure 2: </span>Force along \\(x\\) applied at the CoM (1 Hz): pure translation" >}}
|
||||||
|
|
||||||
|
**Torque about \\(z\\) applied at the CoM**: the body only rotates around its CoM.
|
||||||
|
|
||||||
|
<a id="figure--fig:decoupled-control-com-Mz"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/decoupled_control_com_Mz.gif" caption="<span class='figure-number'>Figure 3: </span>Torque about \\(z\\) applied at the CoM (1 Hz): pure rotation" >}}
|
||||||
|
|
||||||
|
|
||||||
|
### Control in the Actuator Frame {#control-in-the-actuator-frame}
|
||||||
|
|
||||||
|
For stiff parallel systems, the dynamics from \\(\bm{\tau}\\) to \\(\bm{\mathcal{L}}\\) is well decoupled at low frequency (well below the first resonance frequency).
|
||||||
|
At low frequency, the dynamics is dominated by the stiffness: with \\(\bm{K} = \bm{J}^{\intercal} \mathcal{K} \bm{J}\\), \\(\mathcal{k}\\) being the diagonal matrix of the actuator stiffnesses, the transfer function from \\(\bm{\tau}\\) to \\(\bm{\mathcal{L}}\\) is diagonal:
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\bm{G}\_{\\{\mathcal{L}\\}}(0) = \bm{J} \bm{K}^{-1} \bm{J}^{\intercal} = \mathcal{K}^{-1}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Each actuator then only changes the length of its own strut.
|
||||||
|
The control can be designed independently for each actuator, using the length of the strut as the sensor.
|
||||||
|
|
||||||
|
Below the suspension modes, actuating one actuator moves the body, but the lengths of the two other struts do not change.
|
||||||
|
Therefore, the plant in the frame of the actuators is decoupled.
|
||||||
|
|
||||||
|
<a id="figure--fig:decoupled-control-low-freq-act-1"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/decoupled_control_low_freq_act_1.gif" caption="<span class='figure-number'>Figure 4: </span>Left actuator at 0.1 Hz (below the suspension modes): only the strut of the actuated direction changes length" >}}
|
||||||
|
|
||||||
|
<a id="figure--fig:decoupled-control-low-freq-act-2"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/decoupled_control_low_freq_act_2.gif" caption="<span class='figure-number'>Figure 5: </span>Bottom left actuator at 0.1 Hz (below the suspension modes): only the strut of the actuated direction changes length" >}}
|
||||||
|
|
||||||
|
At higher frequency, the inertia becomes important and the system is coupled: using only the first actuator also excites the other directions and the other struts change length.
|
||||||
|
|
||||||
|
<a id="figure--fig:decoupled-control-high-freq-act-1"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/decoupled_control_high_freq_act_1.gif" caption="<span class='figure-number'>Figure 6: </span>Left actuator at 1 Hz (above the suspension modes): the system is coupled, the body translates and rotates" >}}
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||||
|
|||||||
@@ -11,8 +11,59 @@ Tags
|
|||||||
|
|
||||||
Two main ways to evaluate the interaction:
|
Two main ways to evaluate the interaction:
|
||||||
|
|
||||||
- [Relative Gain Array]({{< relref "relative_gain_array.md" >}})
|
- Relative Gain Array
|
||||||
- [Structured Singular Value]({{< relref "structured_singular_value.md" >}})
|
- Structured Singular Value
|
||||||
|
|
||||||
|
|
||||||
|
## Relative Gain Array {#relative-gain-array}
|
||||||
|
|
||||||
|
Imagine a 2x2 plant:
|
||||||
|
\\[ G(s) = \begin{bmatrix} g\_{11}(s) & g\_{12}(s)\\\ g\_{21}(s) & g\_{22}(s) \end{bmatrix} \\]
|
||||||
|
|
||||||
|
Now suppose a controller \\(k\_{1}(s)\\) is closed on the first loop.
|
||||||
|
The new transfer function from \\(u\_2\\) to \\(y\_2\\) (while the first loop is closed) is :
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
y\_2 = g\_{22} \left[ 1 - \underbrace{\frac{g\_{21}g\_{12}}{g\_{11}g\_{22}}}\_{\phi} \underbrace{\frac{g\_{11} k\_{11}}{1 + g\_{11}k\_{11}}}\_{T\_{11}} \right]
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
\\(\phi\\) is called the **interaction index**.
|
||||||
|
\\(T\_{11}\\) is the complementary sensitivity of the first loop (equal to 1 in the bandwidth of the first controller).
|
||||||
|
Therefore, we want \\(\phi \approx 0\\) to have no interaction.
|
||||||
|
|
||||||
|
Similarly, the **relative gain** is defined as:
|
||||||
|
\\[ \Lambda = \frac{1}{1 - \phi} \\]
|
||||||
|
And we want \\(\Lambda \approx 1\\) to have no interaction.
|
||||||
|
|
||||||
|
Note that the scaling of inputs or outputs of the MIMO plant has no effect on \\(\phi\\) or \\(\Lambda\\).
|
||||||
|
|
||||||
|
The **relative gain array** is defined as:
|
||||||
|
\\[ \Lambda(G) = G \star (G^{-1})^{T} \\]
|
||||||
|
where \\(\star\\) means element wise multiplication.
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
RGA = G.*pinv(G.')
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## RGA-number {#rga-number}
|
||||||
|
|
||||||
|
The RGA-number is a scalar measure of how far the RGA is from the identity matrix (i.e. from a plant without interaction):
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\text{RGA-number} = \\| \Lambda(G) - I \\|\_{\text{sum}} = \sum\_{i,j} \left| \Lambda\_{ij} - \delta\_{ij} \right|
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
with \\(\delta\_{ij}\\) the Kronecker delta, and \\(\\|\cdot\\|\_{\text{sum}}\\) the sum of the absolute values of all the elements.
|
||||||
|
|
||||||
|
The RGA-number should be small around the crossover frequency of the decentralized controller, as this is where the interaction matters most.
|
||||||
|
|
||||||
|
```matlab
|
||||||
|
RGA = G.*pinv(G.');
|
||||||
|
RGA_number = sum(sum(abs(RGA - eye(size(RGA)))));
|
||||||
|
```
|
||||||
|
|
||||||
|
For a plant evaluated over frequency, this is computed at each frequency point of the frequency response.
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
+++
|
|
||||||
title = "Model Predictive Control"
|
|
||||||
author = ["Dehaeze Thomas"]
|
|
||||||
draft = false
|
|
||||||
category = "Control Theory"
|
|
||||||
subcategory = "Advanced Control"
|
|
||||||
+++
|
|
||||||
|
|
||||||
Tags
|
|
||||||
:
|
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
|
||||||
|
|
||||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
|
||||||
</div>
|
|
||||||
@@ -465,7 +465,7 @@ Numbering can be continued by using `+n` option as shown below.
|
|||||||
```
|
```
|
||||||
<div class="src-block-caption">
|
<div class="src-block-caption">
|
||||||
<span class="src-block-number"><a href="#code-snippet--lst:tikz-test-general-control-names">Code Snippet 4</a>:</span>
|
<span class="src-block-number"><a href="#code-snippet--lst:tikz-test-general-control-names">Code Snippet 4</a>:</span>
|
||||||
Tikz code that is used to generate <a href="#org4a89346">5</a>
|
Tikz code that is used to generate <a href="#org587cbdd">5</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a id="figure--fig:test-general-control-names"></a>
|
<a id="figure--fig:test-general-control-names"></a>
|
||||||
@@ -632,9 +632,21 @@ It is approximately **12,742 km**
|
|||||||
|
|
||||||
## Videos {#videos}
|
## Videos {#videos}
|
||||||
|
|
||||||
|
|
||||||
|
### Youtube link {#youtube-link}
|
||||||
|
|
||||||
{{< youtube SzA2YODtgK4 >}}
|
{{< youtube SzA2YODtgK4 >}}
|
||||||
|
|
||||||
|
|
||||||
|
### GIF generated from Python {#gif-generated-from-python}
|
||||||
|
|
||||||
|
Animation of a 3DoF rigid body excited by the left actuator at 1 Hz, generated by the Python block below.
|
||||||
|
|
||||||
|
<a id="figure--fig:coupling-high-freq-1Hz"></a>
|
||||||
|
|
||||||
|
{{< figure src="/ox-hugo/coupling_high_freq_1Hz.gif" caption="<span class='figure-number'>Figure 7: </span>GIF generated from Python" >}}
|
||||||
|
|
||||||
|
|
||||||
## Bibliography {#bibliography}
|
## Bibliography {#bibliography}
|
||||||
|
|
||||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||||
|
|||||||
|
After Width: | Height: | Size: 835 KiB |
|
After Width: | Height: | Size: 762 KiB |
|
After Width: | Height: | Size: 801 KiB |
|
After Width: | Height: | Size: 835 KiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 112 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 112 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 88 KiB |