Re-export everything
Deploy / deploy (push) Successful in 5s

This commit is contained in:
tdehaeze committed 2026-10-12 14:10:30 +02:00
1 parent 665774dd08
commit 432702d1a4
40 files changed
+397 -646

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

@@ -4,20 +4,16 @@ author = ["Dehaeze Thomas"]
draft = false
+++
<hr>
<p>This report is also available as a <a href="./index.pdf">pdf</a>.</p>
<hr>
This document gathers the Matlab code used to for the conference paper (<a href="#citeproc_bib_item_1">Dehaeze and Collette 2020</a>) and the journal paper (<a href="#citeproc_bib_item_3">Dehaeze and Collette 2021</a>).
It is structured in several sections:
- Section : presents a simple model of a rotating suspended platform that will be used throughout this study.
- Section : explains how the unconditional stability of IFF is lost due to Gyroscopic effects induced by the rotation.
- Section : suggests a simple modification of the control law such that damping can be added to the suspension modes in a robust way.
- Section : proposes to add springs in parallel with the force sensors to regain the unconditional stability of IFF.
- Section : compares both proposed modifications to the classical IFF in terms of damping authority and closed-loop system behavior.
- Section : contains the notations used for both the Matlab code and the paper
- Section [System Description and Analysis](#sec:system_description): presents a simple model of a rotating suspended platform that will be used throughout this study.
- Section [Problem with pure Integral Force Feedback](#sec:iff_pure_int): explains how the unconditional stability of IFF is lost due to Gyroscopic effects induced by the rotation.
- Section [Integral Force Feedback with an High Pass Filter](#sec:iff_pseudo_int): suggests a simple modification of the control law such that damping can be added to the suspension modes in a robust way.
- Section [IFF with a stiffness in parallel with the force sensor](#sec:iff_parallel_stiffness): proposes to add springs in parallel with the force sensors to regain the unconditional stability of IFF.
- Section [Comparison](#sec:comparison): compares both proposed modifications to the classical IFF in terms of damping authority and closed-loop system behavior.
- Section [Notations](#sec:notations): contains the notations used for both the Matlab code and the paper
The matlab code is accessible on [Zonodo](https://zenodo.org/record/3894343) and [Github](https://github.com/tdehaeze/dehaeze20_contr_stewa_platf) (<a href="#citeproc_bib_item_2">Dehaeze 2020</a>). It can also be download as a `.zip` file [here](https://git.tdehaeze.xyz/tdehaeze/dehaeze21_activ_dampin_rotat_platf_using/archive/master.zip).
@@ -28,27 +24,25 @@ To run the Matlab code, go in the `matlab` directory and run the following Matla
Paper's sections and corresponding Matlab files
</div>
| Sections | Matlab File |
|----------|----------------------------|
| Section | `s1_system_description.m` |
| Section | `s2_iff_pure_int.m` |
| Section | `s3_iff_hpf.m` |
| Section | `s4_iff_kp.m` |
| Section | `s5_act_damp_comparison.m` |
| Sections | Matlab File |
|-----------------------------------------------------------------------------------------------|----------------------------|
| Section [System Description and Analysis](#sec:system_description) | `s1_system_description.m` |
| Section [Problem with pure Integral Force Feedback](#sec:iff_pure_int) | `s2_iff_pure_int.m` |
| Section [Integral Force Feedback with an High Pass Filter](#sec:iff_pseudo_int) | `s3_iff_hpf.m` |
| Section [IFF with a stiffness in parallel with the force sensor](#sec:iff_parallel_stiffness) | `s4_iff_kp.m` |
| Section [Comparison](#sec:comparison) | `s5_act_damp_comparison.m` |
## System Description and Analysis {#system-description-and-analysis}
<span class="org-target" id="org-target--sec-system-description"></span>
## System Description and Analysis {#sec:system_description}
### System description {#system-description}
The system consists of one 2 degree of freedom translation stage on top of a spindle (figure [Figure 1](#figure--fig:system)).
The system consists of one 2 degree of freedom translation stage on top of a spindle ([Figure 1](#figure--fig:system)).
<a id="figure--fig:system"></a>
{{< figure src="figs-paper/system.png" caption="<span class='figure-number'>Figure 1: </span>Schematic of the studied system" >}}
{{< figure src="figs/fig04.png" caption="<span class='figure-number'>Figure 1: </span>Schematic of the studied system" >}}
The control inputs are the forces applied by the actuators of the translation stage (\\(F\_u\\) and \\(F\_v\\)).
As the translation stage is rotating around the Z axis due to the spindle, the forces are applied along \\(\vec{i}\_u\\) and \\(\vec{i}\_v\\).
@@ -56,7 +50,7 @@ As the translation stage is rotating around the Z axis due to the spindle, the f
### Equations {#equations}
Based on the Figure [Figure 1](#figure--fig:system), the equations of motions are:
Based on the [Figure 1](#figure--fig:system), the equations of motions are:
<div class="important">
@@ -161,7 +155,7 @@ The same transfer function from \\([F\_u, F\_v]\\) to \\([d\_u, d\_v]\\) is writ
-2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)];
```
Both transfer functions are compared in Figure [Figure 4](#figure--fig:plant-simscape-analytical) and are found to perfectly match.
Both transfer functions are compared in [Figure 4](#figure--fig:plant-simscape-analytical) and are found to perfectly match.
<a id="figure--fig:plant-simscape-analytical"></a>
@@ -199,17 +193,15 @@ They are compared in Figures [Figure 5](#figure--fig:plant-compare-rotating-spee
{{< figure src="figs/plant_compare_rotating_speed_coupling.png" caption="<span class='figure-number'>Figure 6: </span>Comparison of the transfer functions from \\([F\_u, F\_v]\\) to \\([d\_u, d\_v]\\) for several rotating speed - Coupling Terms" >}}
## Problem with pure Integral Force Feedback {#problem-with-pure-integral-force-feedback}
## Problem with pure Integral Force Feedback {#sec:iff_pure_int}
<span class="org-target" id="org-target--sec-iff-pure-int"></span>
Force sensors are added in series with the two actuators (Figure [Figure 7](#figure--fig:system-iff)).
Force sensors are added in series with the two actuators ([Figure 7](#figure--fig:system-iff)).
Two identical controllers \\(K\_F\\) are used to feedback each of the sensed force to its associated actuator.
<a id="figure--fig:system-iff"></a>
{{< figure src="figs-paper/system_iff.png" caption="<span class='figure-number'>Figure 7: </span>System with added Force Sensor in series with the actuators" >}}
{{< figure src="figs/fig01.png" caption="<span class='figure-number'>Figure 7: </span>System with added Force Sensor in series with the actuators" >}}
### Plant Parameters {#plant-parameters}
@@ -311,7 +303,7 @@ The same transfer function from \\([F\_u, F\_v]\\) to \\([f\_u, f\_v]\\) is writ
(2*xi*s/w0 + 1)*2*W*s/(w0^2), (s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))+ (2*W*s/(w0^2))^2];
```
The two are compared in Figure [Figure 8](#figure--fig:plant-iff-comp-simscape-analytical) and found to perfectly match.
The two are compared in [Figure 8](#figure--fig:plant-iff-comp-simscape-analytical) and found to perfectly match.
<a id="figure--fig:plant-iff-comp-simscape-analytical"></a>
@@ -338,7 +330,7 @@ The transfer functions from \\([F\_u, F\_v]\\) to \\([f\_u, f\_v]\\) are identif
end
```
The obtained transfer functions are shown in Figure [Figure 9](#figure--fig:plant-iff-compare-rotating-speed).
The obtained transfer functions are shown in [Figure 9](#figure--fig:plant-iff-compare-rotating-speed).
<a id="figure--fig:plant-iff-compare-rotating-speed"></a>
@@ -356,7 +348,7 @@ The decentralized IFF controller consists of pure integrators:
\end{bmatrix}
\end{equation}
The Root Locus (evolution of the poles of the closed loop system in the complex plane as a function of \\(g\\)) is shown in Figure [Figure 10](#figure--fig:root-locus-pure-iff).
The Root Locus (evolution of the poles of the closed loop system in the complex plane as a function of \\(g\\)) is shown in [Figure 10](#figure--fig:root-locus-pure-iff).
It is shown that for non-null rotating speed, one pole is bound to the right-half plane, and thus the closed loop system is unstable.
<a id="figure--fig:root-locus-pure-iff"></a>
@@ -364,9 +356,7 @@ It is shown that for non-null rotating speed, one pole is bound to the right-hal
{{< figure src="figs/root_locus_pure_iff.png" caption="<span class='figure-number'>Figure 10: </span>Root Locus for the Decentralized Integral Force Feedback controller. Several rotating speed are shown." >}}
## Integral Force Feedback with an High Pass Filter {#integral-force-feedback-with-an-high-pass-filter}
<span class="org-target" id="org-target--sec-iff-pseudo-int"></span>
## Integral Force Feedback with an High Pass Filter {#sec:iff_pseudo_int}
### Plant Parameters {#plant-parameters}
@@ -413,7 +403,7 @@ And the following rotating speed.
(2*xi*s/w0 + 1)*2*W*s/(w0^2), (s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))+ (2*W*s/(w0^2))^2];
```
The obtained Loop Gain is shown in Figure [Figure 11](#figure--fig:loop-gain-modified-iff).
The obtained Loop Gain is shown in [Figure 11](#figure--fig:loop-gain-modified-iff).
<a id="figure--fig:loop-gain-modified-iff"></a>
@@ -422,7 +412,7 @@ The obtained Loop Gain is shown in Figure [Figure 11](#figure--fig:loop-gain-mod
### Root Locus {#root-locus}
As shown in the Root Locus plot (Figure [Figure 12](#figure--fig:root-locus-modified-iff)), for some value of the gain, the system remains stable.
As shown in the Root Locus plot ([Figure 12](#figure--fig:root-locus-modified-iff)), for some value of the gain, the system remains stable.
<a id="figure--fig:root-locus-modified-iff"></a>
@@ -435,7 +425,7 @@ As shown in the Root Locus plot (Figure [Figure 12](#figure--fig:root-locus-modi
### What is the optimal \\(\omega\_i\\) and \\(g\\)? {#what-is-the-optimal-omega-i-and-g}
In order to visualize the effect of \\(\omega\_i\\) on the attainable damping, the Root Locus is displayed in Figure [Figure 14](#figure--fig:root-locus-wi-modified-iff) for the following \\(\omega\_i\\):
In order to visualize the effect of \\(\omega\_i\\) on the attainable damping, the Root Locus is displayed in [Figure 14](#figure--fig:root-locus-wi-modified-iff) for the following \\(\omega\_i\\):
```matlab
wis = [0.01, 0.1, 0.5, 1]*w0; % [rad/s]
@@ -464,10 +454,10 @@ The gain at which the system becomes unstable is
g\_\text{max} = \omega\_i \left( \frac{{\omega\_0}^2}{\Omega^2} - 1 \right) \label{eq:iff\_gmax}
\end{equation}
While it seems that small \\(\omega\_i\\) do allow more damping to be added to the system (Figure [Figure 14](#figure--fig:root-locus-wi-modified-iff)), the control gains may be limited to small values due to \ref{eq:iff\_gmax} thus reducing the attainable damping.
While it seems that small \\(\omega\_i\\) do allow more damping to be added to the system ([Figure 14](#figure--fig:root-locus-wi-modified-iff)), the control gains may be limited to small values due to \eqref{eq:iff\_gmax} thus reducing the attainable damping.
There must be an optimum for \\(\omega\_i\\).
To find the optimum, the gain that maximize the simultaneous damping of the mode is identified for a wide range of \\(\omega\_i\\) (Figure [Figure 16](#figure--fig:mod-iff-damping-wi)).
To find the optimum, the gain that maximize the simultaneous damping of the mode is identified for a wide range of \\(\omega\_i\\) ([Figure 16](#figure--fig:mod-iff-damping-wi)).
```matlab
wis = logspace(-2, 1, 100)*w0; % [rad/s]
@@ -492,9 +482,7 @@ To find the optimum, the gain that maximize the simultaneous damping of the mode
{{< figure src="figs/mod_iff_damping_wi.png" caption="<span class='figure-number'>Figure 16: </span>Simultaneous attainable damping of the closed loop poles as a function of \\(\omega\_i\\)" >}}
## IFF with a stiffness in parallel with the force sensor {#iff-with-a-stiffness-in-parallel-with-the-force-sensor}
<span class="org-target" id="org-target--sec-iff-parallel-stiffness"></span>
## IFF with a stiffness in parallel with the force sensor {#sec:iff_parallel_stiffness}
### Schematic {#schematic}
@@ -503,7 +491,7 @@ In this section additional springs in parallel with the force sensors are added
<a id="figure--fig:system-parallel-springs"></a>
{{< figure src="figs-paper/system_parallel_springs.png" caption="<span class='figure-number'>Figure 17: </span>Studied system with additional springs in parallel with the actuators and force sensors" >}}
{{< figure src="figs/fig12.png" caption="<span class='figure-number'>Figure 17: </span>Studied system with additional springs in parallel with the actuators and force sensors" >}}
In order to keep the overall stiffness \\(k = k\_a + k\_p\\) constant, a scalar parameter \\(\alpha\\) (\\(0 \le \alpha < 1\\)) is defined to describe the fraction of the total stiffness in parallel with the actuator and force sensor
@@ -627,7 +615,7 @@ And the IFF plant (transfer function from \\([F\_u, F\_v]\\) to \\([f\_u, f\_v]\
- with a small parallel stiffness \\(k\_p < m \Omega^2\\)
- with a large parallel stiffness \\(k\_p > m \Omega^2\\)
The results are shown in Figure [Figure 19](#figure--fig:plant-iff-kp).
The results are shown in [Figure 19](#figure--fig:plant-iff-kp).
One can see that for \\(k\_p > m \Omega^2\\), the systems shows alternating complex conjugate poles and zeros.
@@ -673,7 +661,7 @@ One can see that for \\(k\_p > m \Omega^2\\), the systems shows alternating comp
### IFF when adding a spring in parallel {#iff-when-adding-a-spring-in-parallel}
In Figure [Figure 20](#figure--fig:root-locus-iff-kp) is displayed the Root Locus in the three considered cases with
In [Figure 20](#figure--fig:root-locus-iff-kp) is displayed the Root Locus in the three considered cases with
\begin{equation}
K\_{\text{IFF}} = \frac{g}{s} \begin{bmatrix}
@@ -703,7 +691,7 @@ Thus, decentralized IFF controller with pure integrators can be used if:
However, having large values of \\(k\_p\\) may decrease the attainable damping.
To study the second point, Root Locus plots for the following values of \\(k\_p\\) are shown in Figure [Figure 22](#figure--fig:root-locus-iff-kps).
To study the second point, Root Locus plots for the following values of \\(k\_p\\) are shown in [Figure 22](#figure--fig:root-locus-iff-kps).
```matlab
kps = [2, 20, 40]*m*W^2;
@@ -747,9 +735,7 @@ It is shown that large values of \\(k\_p\\) decreases the attainable damping.
{{< figure src="figs/opt_damp_alpha.png" caption="<span class='figure-number'>Figure 23: </span>Attainable damping ratio and corresponding controller gain for different parameter \\(\alpha\\)" >}}
## Comparison {#comparison}
<span class="org-target" id="org-target--sec-comparison"></span>
## Comparison {#sec:comparison}
Two modifications to adapt the IFF control strategy to rotating platforms have been proposed.
These two methods are now compared in terms of added damping, closed-loop compliance and transmissibility.
@@ -839,9 +825,7 @@ Critical Damping corresponds to to \\(\xi = 1\\), and thus:
```
### Transmissibility And Compliance {#transmissibility-and-compliance}
<span class="org-target" id="org-target--sec-comp-transmissibilty"></span>
### Transmissibility And Compliance {#sec:comp_transmissibilty}
```matlab
open('rotating_frame.slx');
@@ -929,9 +913,7 @@ Critical Damping corresponds to to \\(\xi = 1\\), and thus:
{{< figure src="figs/comp_compliance.png" caption="<span class='figure-number'>Figure 26: </span>Comparison of the obtained Compliance" >}}
## Notations {#notations}
<span class="org-target" id="org-target--sec-notations"></span>
## Notations {#sec:notations}
| | Mathematical Notation | Matlab | Unit |
|---------------------------------------|----------------------------------|---------------|---------|