2021-11-30 11:28:07 +01:00
<?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2021-11-30 11:45:05 +01:00
<!-- 2021 - 11 - 30 mar. 11:44 -->
2021-11-30 11:28:07 +01:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > DCM - Dynamical Multi-Body Model< / title >
< meta name = "author" content = "Dehaeze Thomas" / >
< meta name = "generator" content = "Org Mode" / >
< link rel = "stylesheet" type = "text/css" href = "https://research.tdehaeze.xyz/css/style.css" / >
< script type = "text/javascript" src = "https://research.tdehaeze.xyz/js/script.js" > < / script >
< script >
MathJax = {
svg: {
scale: 1,
fontCache: "global"
},
tex: {
tags: "ams",
multlineWidth: "%MULTLINEWIDTH",
tagSide: "right",
macros: {bm: ["\\boldsymbol{#1}",1],},
tagIndent: ".8em"
}
};
< / script >
< script id = "MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">< / script >
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "../index.html" > UP < / a >
|
< a accesskey = "H" href = "../index.html" > HOME < / a >
< / div > < div id = "content" class = "content" >
< h1 class = "title" > DCM - Dynamical Multi-Body Model< / h1 >
< div id = "table-of-contents" role = "doc-toc" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" role = "doc-toc" >
< ul >
2021-11-30 11:45:05 +01:00
< li > < a href = "#orgcb7822a" > 1. System Kinematics< / a >
2021-11-30 11:28:07 +01:00
< ul >
2021-11-30 11:45:05 +01:00
< li > < a href = "#orgc4b429c" > 1.1. Bragg Angle< / a > < / li >
< li > < a href = "#orga30e667" > 1.2. Kinematics (111 Crystal)< / a >
2021-11-30 11:28:07 +01:00
< ul >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org390c6c1" > 1.2.1. Interferometers - 111 Crystal< / a > < / li >
< li > < a href = "#org4c00d94" > 1.2.2. Piezo - 111 Crystal< / a > < / li >
2021-11-30 11:28:07 +01:00
< / ul >
< / li >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org82434d5" > 1.3. Save Kinematics< / a > < / li >
2021-11-30 11:28:07 +01:00
< / ul >
< / li >
2021-11-30 11:45:05 +01:00
< li > < a href = "#orgd95f56d" > 2. Open Loop System Identification< / a >
2021-11-30 11:28:07 +01:00
< ul >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org49ca34a" > 2.1. Identification< / a > < / li >
< li > < a href = "#org170173c" > 2.2. Plant in the frame of the fastjacks< / a > < / li >
< li > < a href = "#orge372095" > 2.3. Plant in the frame of the crystal< / a > < / li >
2021-11-30 11:28:07 +01:00
< / ul >
< / li >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org00855cb" > 3. Active Damping Plant (Strain gauges)< / a >
2021-11-30 11:28:07 +01:00
< ul >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org6886aa9" > 3.1. Identification< / a > < / li >
< li > < a href = "#orgd1754c8" > 3.2. Relative Active Damping< / a > < / li >
< li > < a href = "#orgf6e5d1c" > 3.3. Damped Plant< / a > < / li >
2021-11-30 11:28:07 +01:00
< / ul >
< / li >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org3953e07" > 4. Active Damping Plant (Force Sensors)< / a >
2021-11-30 11:28:07 +01:00
< ul >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org243bdc3" > 4.1. Identification< / a > < / li >
< li > < a href = "#orga2bc3f0" > 4.2. Controller - Root Locus< / a > < / li >
< li > < a href = "#org63d6a74" > 4.3. Damped Plant< / a > < / li >
< li > < a href = "#org8c22e6e" > 4.4. Save< / a > < / li >
2021-11-30 11:28:07 +01:00
< / ul >
< / li >
2021-11-30 11:45:05 +01:00
< li > < a href = "#org053c75c" > 5. HAC-LAC (IFF) architecture< / a > < / li >
2021-11-30 11:28:07 +01:00
< / ul >
< / div >
< / div >
< hr >
< p > This report is also available as a < a href = "./dcm-simscape.pdf" > pdf< / a > .< / p >
< hr >
< p >
In this document, a Simscape (.e.g. multi-body) model of the ESRF Double Crystal Monochromator (DCM) is presented and used to develop and optimize the control strategy.
< / p >
< p >
It is structured as follow:
< / p >
< ul class = "org-ul" >
2021-11-30 11:45:05 +01:00
< li > Section < a href = "#org0fd3e9f" > 1< / a > : the kinematics of the DCM is presented, and Jacobian matrices which are used to solve the inverse and forward kinematics are computed.< / li >
< li > Section < a href = "#orgd4eb6dd" > 2< / a > : the system dynamics is identified in the absence of control.< / li >
< li > Section < a href = "#orgdb80cfb" > 3< / a > : it is studied whether if the strain gauges fixed to the piezoelectric actuators can be used to actively damp the plant.< / li >
< li > Section < a href = "#org8e736b1" > 4< / a > : piezoelectric force sensors are added in series with the piezoelectric actuators and are used to actively damp the plant using the Integral Force Feedback (IFF) control strategy.< / li >
< li > Section < a href = "#orga68bafc" > 5< / a > : the High Authority Control - Low Authority Control (HAC-LAC) strategy is tested on the Simscape model.< / li >
2021-11-30 11:28:07 +01:00
< / ul >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-orgcb7822a" class = "outline-2" >
< h2 id = "orgcb7822a" > < span class = "section-number-2" > 1.< / span > System Kinematics< / h2 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-2" id = "text-1" >
< p >
2021-11-30 11:45:05 +01:00
< a id = "org0fd3e9f" > < / a >
2021-11-30 11:28:07 +01:00
< / p >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-orgc4b429c" class = "outline-3" >
< h3 id = "orgc4b429c" > < span class = "section-number-3" > 1.1.< / span > Bragg Angle< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-1-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Tested bragg angles< / span >
bragg = linspace(5, 80, 1000); < span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Bragg angle [deg]< / span >
d_off = 10.5e< span class = "org-builtin" > -< / span > 3; < span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Wanted offset between x-rays [m]< / span >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Vertical Jack motion as a function of Bragg angle< / span >
dz = d_off< span class = "org-builtin" > ./< / span > (2< span class = "org-builtin" > *< / span > cos(bragg< span class = "org-builtin" > *< / span > < span class = "org-matlab-math" > pi< / span > < span class = "org-builtin" > /< / span > 180));
< / pre >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "org122820c" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/jack_motion_bragg_angle.png" alt = "jack_motion_bragg_angle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 1: < / span > Jack motion as a function of Bragg angle< / p >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Required Jack stroke< / span >
< span class = "org-matlab-math" > ans< / span > = 1e3< span class = "org-builtin" > *< / span > (dz(end) < span class = "org-builtin" > -< / span > dz(1))
< / pre >
< / div >
< pre class = "example" >
24.963
< / pre >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-orga30e667" class = "outline-3" >
< h3 id = "orga30e667" > < span class = "section-number-3" > 1.2.< / span > Kinematics (111 Crystal)< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-1-2" >
< p >
The reference frame is taken at the center of the 111 second crystal.
< / p >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org390c6c1" class = "outline-4" >
< h4 id = "org390c6c1" > < span class = "section-number-4" > 1.2.1.< / span > Interferometers - 111 Crystal< / h4 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-4" id = "text-1-2-1" >
< p >
Three interferometers are pointed to the bottom surface of the 111 crystal.
< / p >
< p >
2021-11-30 11:45:05 +01:00
The position of the measurement points are shown in Figure < a href = "#org7147d17" > 2< / a > as well as the origin where the motion of the crystal is computed.
2021-11-30 11:28:07 +01:00
< / p >
2021-11-30 11:45:05 +01:00
< div id = "org7147d17" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/sensor_111_crystal_points.png" alt = "sensor_111_crystal_points.png" / >
< / p >
< p > < span class = "figure-number" > Figure 2: < / span > Bottom view of the second crystal 111. Position of the measurement points.< / p >
< / div >
< p >
2021-11-30 11:45:05 +01:00
The inverse kinematics consisting of deriving the interferometer measurements from the motion of the crystal (see Figure < a href = "#org8e47ad4" > 3< / a > ):
2021-11-30 11:28:07 +01:00
< / p >
\begin{equation}
\begin{bmatrix}
x_1 \\ x_2 \\ x_3
\end{bmatrix}
=
\bm{J}_{s,111}
\begin{bmatrix}
d_z \\ r_y \\ r_x
\end{bmatrix}
\end{equation}
2021-11-30 11:45:05 +01:00
< div id = "org8e47ad4" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/schematic_sensor_jacobian_inverse_kinematics.png" alt = "schematic_sensor_jacobian_inverse_kinematics.png" / >
< / p >
< p > < span class = "figure-number" > Figure 3: < / span > Inverse Kinematics - Interferometers< / p >
< / div >
< p >
2021-11-30 11:45:05 +01:00
From the Figure < a href = "#org7147d17" > 2< / a > , the inverse kinematics can be solved as follow (for small motion):
2021-11-30 11:28:07 +01:00
< / p >
\begin{equation}
\bm{J}_{s,111}
=
\begin{bmatrix}
1 & 0.07 & -0.015 \\
1 & 0 & 0.015 \\
1 & -0.07 & -0.015
\end{bmatrix}
\end{equation}
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Sensor Jacobian matrix for 111 crystal< / span >
J_s_111 = [1, 0.07, < span class = "org-builtin" > -< / span > 0.015
1, 0, 0.015
1, < span class = "org-builtin" > -< / span > 0.07, < span class = "org-builtin" > -< / span > 0.015];
< / pre >
< / div >
2021-11-30 11:45:05 +01:00
< table id = "org8c13b9a" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2021-11-30 11:28:07 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > Sensor Jacobian \(\bm{J}_{s,111}\)< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 1.0< / td >
< td class = "org-right" > 0.07< / td >
< td class = "org-right" > -0.015< / td >
< / tr >
< tr >
< td class = "org-right" > 1.0< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.015< / td >
< / tr >
< tr >
< td class = "org-right" > 1.0< / td >
< td class = "org-right" > -0.07< / td >
< td class = "org-right" > -0.015< / td >
< / tr >
< / tbody >
< / table >
< p >
2021-11-30 11:45:05 +01:00
The forward kinematics is solved by inverting the Jacobian matrix (see Figure < a href = "#org700c4d4" > 4< / a > ).
2021-11-30 11:28:07 +01:00
< / p >
\begin{equation}
\begin{bmatrix}
d_z \\ r_y \\ r_x
\end{bmatrix}
=
\bm{J}_{s,111}^{-1}
\begin{bmatrix}
x_1 \\ x_2 \\ x_3
\end{bmatrix}
\end{equation}
2021-11-30 11:45:05 +01:00
< div id = "org700c4d4" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/schematic_sensor_jacobian_forward_kinematics.png" alt = "schematic_sensor_jacobian_forward_kinematics.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Forward Kinematics - Interferometers< / p >
< / div >
2021-11-30 11:45:05 +01:00
< table id = "org65d7338" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2021-11-30 11:28:07 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 2:< / span > Inverse of the sensor Jacobian \(\bm{J}_{s,111}^{-1}\)< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 0.25< / td >
< td class = "org-right" > 0.5< / td >
< td class = "org-right" > 0.25< / td >
< / tr >
< tr >
< td class = "org-right" > 7.14< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > -7.14< / td >
< / tr >
< tr >
< td class = "org-right" > -16.67< / td >
< td class = "org-right" > 33.33< / td >
< td class = "org-right" > -16.67< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org4c00d94" class = "outline-4" >
< h4 id = "org4c00d94" > < span class = "section-number-4" > 1.2.2.< / span > Piezo - 111 Crystal< / h4 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-4" id = "text-1-2-2" >
< p >
2021-11-30 11:45:05 +01:00
The location of the actuators with respect with the center of the 111 second crystal are shown in Figure < a href = "#orgd329873" > 5< / a > .
2021-11-30 11:28:07 +01:00
< / p >
2021-11-30 11:45:05 +01:00
< div id = "orgd329873" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/actuator_jacobian_111_points.png" alt = "actuator_jacobian_111_points.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Location of actuators with respect to the center of the 111 second crystal (bottom view)< / p >
< / div >
< p >
Inverse Kinematics consist of deriving the axial (z) motion of the 3 actuators from the motion of the crystal’ s center.
< / p >
\begin{equation}
\begin{bmatrix}
d_{u_r} \\ d_{u_h} \\ d_{d}
\end{bmatrix}
=
\bm{J}_{a,111}
\begin{bmatrix}
d_z \\ r_y \\ r_x
\end{bmatrix}
\end{equation}
2021-11-30 11:45:05 +01:00
< div id = "orga74633d" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/schematic_actuator_jacobian_inverse_kinematics.png" alt = "schematic_actuator_jacobian_inverse_kinematics.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Inverse Kinematics - Actuators< / p >
< / div >
< p >
2021-11-30 11:45:05 +01:00
Based on the geometry in Figure < a href = "#orgd329873" > 5< / a > , we obtain:
2021-11-30 11:28:07 +01:00
< / p >
\begin{equation}
\bm{J}_{a,111}
=
\begin{bmatrix}
1 & 0.14 & -0.1525 \\
1 & 0.14 & 0.0675 \\
1 & -0.14 & -0.0425
\end{bmatrix}
\end{equation}
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Actuator Jacobian - 111 crystal< / span >
J_a_111 = [1, 0.14, < span class = "org-builtin" > -< / span > 0.1525
1, 0.14, 0.0675
1, < span class = "org-builtin" > -< / span > 0.14, < span class = "org-builtin" > -< / span > 0.0425];
< / pre >
< / div >
2021-11-30 11:45:05 +01:00
< table id = "org363311b" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2021-11-30 11:28:07 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 3:< / span > Actuator Jacobian \(\bm{J}_{a,111}\)< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 1.0< / td >
< td class = "org-right" > 0.14< / td >
< td class = "org-right" > -0.1525< / td >
< / tr >
< tr >
< td class = "org-right" > 1.0< / td >
< td class = "org-right" > 0.14< / td >
< td class = "org-right" > 0.0675< / td >
< / tr >
< tr >
< td class = "org-right" > 1.0< / td >
< td class = "org-right" > -0.14< / td >
< td class = "org-right" > -0.0425< / td >
< / tr >
< / tbody >
< / table >
< p >
The forward Kinematics is solved by inverting the Jacobian matrix:
< / p >
\begin{equation}
\begin{bmatrix}
d_z \\ r_y \\ r_x
\end{bmatrix}
=
\bm{J}_{a,111}^{-1}
\begin{bmatrix}
d_{u_r} \\ d_{u_h} \\ d_{d}
\end{bmatrix}
\end{equation}
2021-11-30 11:45:05 +01:00
< div id = "orgeeec18d" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/schematic_actuator_jacobian_forward_kinematics.png" alt = "schematic_actuator_jacobian_forward_kinematics.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Forward Kinematics - Actuators for 111 crystal< / p >
< / div >
2021-11-30 11:45:05 +01:00
< table id = "org19c3313" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2021-11-30 11:28:07 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 4:< / span > Inverse of the actuator Jacobian \(\bm{J}_{a,111}^{-1}\)< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 0.0568< / td >
< td class = "org-right" > 0.4432< / td >
< td class = "org-right" > 0.5< / td >
< / tr >
< tr >
< td class = "org-right" > 1.7857< / td >
< td class = "org-right" > 1.7857< / td >
< td class = "org-right" > -3.5714< / td >
< / tr >
< tr >
< td class = "org-right" > -4.5455< / td >
< td class = "org-right" > 4.5455< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org82434d5" class = "outline-3" >
< h3 id = "org82434d5" > < span class = "section-number-3" > 1.3.< / span > Save Kinematics< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-1-3" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > save(< span class = "org-string" > 'mat/dcm_kinematics.mat'< / span > , < span class = "org-string" > 'J_a_111'< / span > , < span class = "org-string" > 'J_s_111'< / span > )
< / pre >
< / div >
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-orgd95f56d" class = "outline-2" >
< h2 id = "orgd95f56d" > < span class = "section-number-2" > 2.< / span > Open Loop System Identification< / h2 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-2" id = "text-2" >
< p >
2021-11-30 11:45:05 +01:00
< a id = "orgd4eb6dd" > < / a >
2021-11-30 11:28:07 +01:00
< / p >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org49ca34a" class = "outline-3" >
< h3 id = "org49ca34a" > < span class = "section-number-3" > 2.1.< / span > Identification< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-2-1" >
< p >
Let’ s considered the system \(\bm{G}(s)\) with:
< / p >
< ul class = "org-ul" >
< li > 3 inputs: force applied to the 3 fast jacks< / li >
< li > 3 outputs: measured displacement by the 3 interferometers pointing at the 111 second crystal< / li >
< / ul >
< p >
2021-11-30 11:45:05 +01:00
It is schematically shown in Figure < a href = "#org52a4b7c" > 8< / a > .
2021-11-30 11:28:07 +01:00
< / p >
2021-11-30 11:45:05 +01:00
< div id = "org52a4b7c" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/schematic_system_inputs_outputs.png" alt = "schematic_system_inputs_outputs.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Dynamical system with inputs and outputs< / p >
< / div >
< p >
The system is identified from the Simscape model.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Input/Output definition< / span >
clear io; io_i = 1;
< span class = "org-matlab-cellbreak" > %% Inputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Control Input {3x1} [N]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/control_system'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< span class = "org-matlab-cellbreak" > %% Outputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Interferometers {3x1} [m]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/DCM'< / span > ], 1, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Extraction of the dynamics< / span >
G = linearize(mdl, io);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > size(G)
< / pre >
< / div >
< pre class = "example" >
size(G)
State-space model with 3 outputs, 3 inputs, and 24 states.
< / pre >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org170173c" class = "outline-3" >
< h3 id = "org170173c" > < span class = "section-number-3" > 2.2.< / span > Plant in the frame of the fastjacks< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-2-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/dcm_kinematics.mat'< / span > );
< / pre >
< / div >
< p >
2021-11-30 11:45:05 +01:00
Using the forward and inverse kinematics, we can computed the dynamics from piezo forces to axial motion of the 3 fastjacks (see Figure < a href = "#orgf9b4903" > 9< / a > ).
2021-11-30 11:28:07 +01:00
< / p >
2021-11-30 11:45:05 +01:00
< div id = "orgf9b4903" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/schematic_jacobian_frame_fastjack.png" alt = "schematic_jacobian_frame_fastjack.png" / >
< / p >
< p > < span class = "figure-number" > Figure 9: < / span > Use of Jacobian matrices to obtain the system in the frame of the fastjacks< / p >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Compute the system in the frame of the fastjacks< / span >
G_pz = J_a_111< span class = "org-builtin" > *< / span > inv(J_s_111)< span class = "org-builtin" > *< / span > G;
< / pre >
< / div >
< p >
The DC gain of the new system shows that the system is well decoupled at low frequency.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > dcgain(G_pz)
< / pre >
< / div >
2021-11-30 11:45:05 +01:00
< table id = "org19e4a7e" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2021-11-30 11:28:07 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 5:< / span > DC gain of the plant in the frame of the fast jacks \(\bm{G}_{\text{fj}}\)< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 4.4407e-09< / td >
< td class = "org-right" > 2.7656e-12< / td >
< td class = "org-right" > 1.0132e-12< / td >
< / tr >
< tr >
< td class = "org-right" > 2.7656e-12< / td >
< td class = "org-right" > 4.4407e-09< / td >
< td class = "org-right" > 1.0132e-12< / td >
< / tr >
< tr >
< td class = "org-right" > 1.0109e-12< / td >
< td class = "org-right" > 1.0109e-12< / td >
< td class = "org-right" > 4.4424e-09< / td >
< / tr >
< / tbody >
< / table >
< p >
2021-11-30 11:45:05 +01:00
The bode plot of \(\bm{G}_{\text{fj}}(s)\) is shown in Figure < a href = "#org6777e66" > 10< / a > .
2021-11-30 11:28:07 +01:00
< / p >
2021-11-30 11:45:05 +01:00
< div id = "org6777e66" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/bode_plot_plant_fj.png" alt = "bode_plot_plant_fj.png" / >
< / p >
< p > < span class = "figure-number" > Figure 10: < / span > Bode plot of the diagonal and off-diagonal elements of the plant in the frame of the fast jacks< / p >
< / div >
2021-11-30 11:45:05 +01:00
< div class = "important" id = "orgcdf2cc1" >
2021-11-30 11:28:07 +01:00
< p >
Computing the system in the frame of the fastjack gives good decoupling at low frequency (until the first resonance of the system).
< / p >
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-orge372095" class = "outline-3" >
< h3 id = "orge372095" > < span class = "section-number-3" > 2.3.< / span > Plant in the frame of the crystal< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-2-3" >
2021-11-30 11:45:05 +01:00
< div id = "org4377a93" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/schematic_jacobian_frame_crystal.png" alt = "schematic_jacobian_frame_crystal.png" / >
< / p >
< p > < span class = "figure-number" > Figure 11: < / span > Use of Jacobian matrices to obtain the system in the frame of the crystal< / p >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > G_mr = inv(J_s_111)< span class = "org-builtin" > *< / span > G< span class = "org-builtin" > *< / span > inv(J_a_111< span class = "org-builtin" > '< / span > );
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > dcgain(G_mr)
< / pre >
< / div >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 1.9978e-09< / td >
< td class = "org-right" > 3.9657e-09< / td >
< td class = "org-right" > 7.7944e-09< / td >
< / tr >
< tr >
< td class = "org-right" > 3.9656e-09< / td >
< td class = "org-right" > 8.4979e-08< / td >
< td class = "org-right" > -1.5135e-17< / td >
< / tr >
< tr >
< td class = "org-right" > 7.7944e-09< / td >
< td class = "org-right" > -3.9252e-17< / td >
< td class = "org-right" > 1.834e-07< / td >
< / tr >
< / tbody >
< / table >
< p >
This results in a coupled system.
The main reason is that, as we map forces to the center of the 111 crystal and not at the center of mass/stiffness of the moving part, vertical forces will induce rotation and torques will induce vertical motion.
< / p >
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org00855cb" class = "outline-2" >
< h2 id = "org00855cb" > < span class = "section-number-2" > 3.< / span > Active Damping Plant (Strain gauges)< / h2 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-2" id = "text-3" >
< p >
2021-11-30 11:45:05 +01:00
< a id = "orgdb80cfb" > < / a >
2021-11-30 11:28:07 +01:00
< / p >
< p >
In this section, we wish to see whether if strain gauges fixed to the piezoelectric actuator can be used for active damping.
< / p >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org6886aa9" class = "outline-3" >
< h3 id = "org6886aa9" > < span class = "section-number-3" > 3.1.< / span > Identification< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-3-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Input/Output definition< / span >
clear io; io_i = 1;
< span class = "org-matlab-cellbreak" > %% Inputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Control Input {3x1} [N]< / span >
2021-11-30 11:45:05 +01:00
io(io_i) = linio([mdl, < span class = "org-string" > '/control_system'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
2021-11-30 11:28:07 +01:00
< span class = "org-matlab-cellbreak" > %% Outputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Strain Gauges {3x1} [m]< / span >
2021-11-30 11:45:05 +01:00
io(io_i) = linio([mdl, < span class = "org-string" > '/DCM'< / span > ], 2, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
2021-11-30 11:28:07 +01:00
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Extraction of the dynamics< / span >
G_sg = linearize(mdl, io);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > dcgain(G_sg)
< / pre >
< / div >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
2021-11-30 11:45:05 +01:00
< td class = "org-right" > 4.4443e-09< / td >
2021-11-30 11:28:07 +01:00
< td class = "org-right" > 1.0339e-13< / td >
< td class = "org-right" > 3.774e-14< / td >
< / tr >
< tr >
< td class = "org-right" > 1.0339e-13< / td >
2021-11-30 11:45:05 +01:00
< td class = "org-right" > 4.4443e-09< / td >
2021-11-30 11:28:07 +01:00
< td class = "org-right" > 3.774e-14< / td >
< / tr >
< tr >
< td class = "org-right" > 3.7792e-14< / td >
< td class = "org-right" > 3.7792e-14< / td >
2021-11-30 11:45:05 +01:00
< td class = "org-right" > 4.4444e-09< / td >
2021-11-30 11:28:07 +01:00
< / tr >
< / tbody >
< / table >
2021-11-30 11:45:05 +01:00
< div id = "org72b48ee" class = "figure" >
< p > < img src = "figs/strain_gauge_plant_bode_plot.png" alt = "strain_gauge_plant_bode_plot.png" / >
< / p >
< p > < span class = "figure-number" > Figure 12: < / span > Bode Plot of the transfer functions from piezoelectric forces to strain gauges measuremed displacements< / p >
< / div >
< div class = "important" id = "org070666c" >
< p >
As the distance between the poles and zeros in Figure < a href = "#org16f0105" > 15< / a > is very small, little damping can be actively added using the strain gauges.
This will be confirmed using a Root Locus plot.
< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orgd1754c8" class = "outline-3" >
< h3 id = "orgd1754c8" > < span class = "section-number-3" > 3.2.< / span > Relative Active Damping< / h3 >
< div class = "outline-text-3" id = "text-3-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Krad_g1 = eye(3)< span class = "org-builtin" > *< / span > s< span class = "org-builtin" > /< / span > (s< span class = "org-builtin" > ^< / span > 2< span class = "org-builtin" > /< / span > (2< span class = "org-builtin" > *< / span > < span class = "org-matlab-math" > pi< / span > < span class = "org-builtin" > *< / span > 500)< span class = "org-builtin" > ^< / span > 2 < span class = "org-builtin" > +< / span > 2< span class = "org-builtin" > *< / span > s< span class = "org-builtin" > /< / span > (2< span class = "org-builtin" > *< / span > < span class = "org-matlab-math" > pi< / span > < span class = "org-builtin" > *< / span > 500) < span class = "org-builtin" > +< / span > 1);
< / pre >
< / div >
< p >
As can be seen in Figure < a href = "#org16a4fc0" > 13< / a > , very little damping can be added using relative damping strategy using strain gauges.
< / p >
< div id = "org16a4fc0" class = "figure" >
< p > < img src = "figs/relative_damping_root_locus.png" alt = "relative_damping_root_locus.png" / >
< / p >
< p > < span class = "figure-number" > Figure 13: < / span > Root Locus for the relative damping control< / p >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Krad = < span class = "org-builtin" > -< / span > g< span class = "org-builtin" > *< / span > Krad_g1;
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgf6e5d1c" class = "outline-3" >
< h3 id = "orgf6e5d1c" > < span class = "section-number-3" > 3.3.< / span > Damped Plant< / h3 >
< div class = "outline-text-3" id = "text-3-3" >
< p >
The controller is implemented on Simscape, and the damped plant is identified.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Input/Output definition< / span >
clear io; io_i = 1;
< span class = "org-matlab-cellbreak" > %% Inputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Control Input {3x1} [N]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/control_system'< / span > ], 1, < span class = "org-string" > 'input'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< span class = "org-matlab-cellbreak" > %% Outputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Force Sensor {3x1} [m]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/DCM'< / span > ], 1, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% DCM Kinematics< / span >
load(< span class = "org-string" > 'mat/dcm_kinematics.mat'< / span > );
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Identification of the Open Loop plant< / span >
controller.type = 0; < span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Open Loop< / span >
G_ol = J_a_111< span class = "org-builtin" > *< / span > inv(J_s_111)< span class = "org-builtin" > *< / span > linearize(mdl, io);
G_ol.InputName = {< span class = "org-string" > 'u_ur'< / span > , < span class = "org-string" > 'u_uh'< / span > , < span class = "org-string" > 'u_d'< / span > };
G_ol.OutputName = {< span class = "org-string" > 'd_ur'< / span > , < span class = "org-string" > 'd_uh'< / span > , < span class = "org-string" > 'd_d'< / span > };
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Identification of the damped plant with Relative Active Damping< / span >
controller.type = 2; < span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > RAD< / span >
G_dp = J_a_111< span class = "org-builtin" > *< / span > inv(J_s_111)< span class = "org-builtin" > *< / span > linearize(mdl, io);
G_dp.InputName = {< span class = "org-string" > 'u_ur'< / span > , < span class = "org-string" > 'u_uh'< / span > , < span class = "org-string" > 'u_d'< / span > };
G_dp.OutputName = {< span class = "org-string" > 'd_ur'< / span > , < span class = "org-string" > 'd_uh'< / span > , < span class = "org-string" > 'd_d'< / span > };
< / pre >
< / div >
< div id = "org908c24c" class = "figure" >
< p > < img src = "figs/comp_damp_undamped_plant_rad_bode_plot.png" alt = "comp_damp_undamped_plant_rad_bode_plot.png" / >
< / p >
< p > < span class = "figure-number" > Figure 14: < / span > Bode plot of both the open-loop plant and the damped plant using relative active damping< / p >
< / div >
2021-11-30 11:28:07 +01:00
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org3953e07" class = "outline-2" >
< h2 id = "org3953e07" > < span class = "section-number-2" > 4.< / span > Active Damping Plant (Force Sensors)< / h2 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-2" id = "text-4" >
< p >
2021-11-30 11:45:05 +01:00
< a id = "org8e736b1" > < / a >
2021-11-30 11:28:07 +01:00
< / p >
< p >
Force sensors are added above the piezoelectric actuators.
They can consists of a simple piezoelectric ceramic stack.
See for instance < a href = "fleming10_integ_strain_force_feedb_high" > fleming10_integ_strain_force_feedb_high< / a > .
< / p >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org243bdc3" class = "outline-3" >
< h3 id = "org243bdc3" > < span class = "section-number-3" > 4.1.< / span > Identification< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-4-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Input/Output definition< / span >
clear io; io_i = 1;
< span class = "org-matlab-cellbreak" > %% Inputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Control Input {3x1} [N]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/control_system'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< span class = "org-matlab-cellbreak" > %% Outputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Force Sensor {3x1} [m]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/DCM'< / span > ], 3, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Extraction of the dynamics< / span >
G_fs = linearize(mdl, io);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > dcgain(G_fs)
< / pre >
< / div >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > -1.4113e-13< / td >
< td class = "org-right" > 1.0339e-13< / td >
< td class = "org-right" > 3.774e-14< / td >
< / tr >
< tr >
< td class = "org-right" > 1.0339e-13< / td >
< td class = "org-right" > -1.4113e-13< / td >
< td class = "org-right" > 3.774e-14< / td >
< / tr >
< tr >
< td class = "org-right" > 3.7792e-14< / td >
< td class = "org-right" > 3.7792e-14< / td >
< td class = "org-right" > -7.5585e-14< / td >
< / tr >
< / tbody >
< / table >
2021-11-30 11:45:05 +01:00
< div id = "org16f0105" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/iff_plant_bode_plot.png" alt = "iff_plant_bode_plot.png" / >
< / p >
2021-11-30 11:45:05 +01:00
< p > < span class = "figure-number" > Figure 15: < / span > Bode plot of IFF Plant< / p >
2021-11-30 11:28:07 +01:00
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-orga2bc3f0" class = "outline-3" >
< h3 id = "orga2bc3f0" > < span class = "section-number-3" > 4.2.< / span > Controller - Root Locus< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-4-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kiff_g1 = eye(3)< span class = "org-builtin" > *< / span > 1< span class = "org-builtin" > /< / span > (1 < span class = "org-builtin" > +< / span > s< span class = "org-builtin" > /< / span > 2< span class = "org-builtin" > /< / span > < span class = "org-matlab-math" > pi< / span > < span class = "org-builtin" > /< / span > 20);
< / pre >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "org4041645" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/iff_root_locus.png" alt = "iff_root_locus.png" / >
< / p >
2021-11-30 11:45:05 +01:00
< p > < span class = "figure-number" > Figure 16: < / span > Root Locus plot for the IFF Control strategy< / p >
2021-11-30 11:28:07 +01:00
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Integral Force Feedback Controller< / span >
Kiff = g< span class = "org-builtin" > *< / span > Kiff_g1;
< / pre >
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org63d6a74" class = "outline-3" >
< h3 id = "org63d6a74" > < span class = "section-number-3" > 4.3.< / span > Damped Plant< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-4-3" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Input/Output definition< / span >
clear io; io_i = 1;
< span class = "org-matlab-cellbreak" > %% Inputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Control Input {3x1} [N]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/control_system'< / span > ], 1, < span class = "org-string" > 'input'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< span class = "org-matlab-cellbreak" > %% Outputs< / span >
< span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Force Sensor {3x1} [m]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/DCM'< / span > ], 1, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-builtin" > +< / span > 1;
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% DCM Kinematics< / span >
load(< span class = "org-string" > 'mat/dcm_kinematics.mat'< / span > );
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Identification of the Open Loop plant< / span >
controller.type = 0; < span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > Open Loop< / span >
G_ol = J_a_111< span class = "org-builtin" > *< / span > inv(J_s_111)< span class = "org-builtin" > *< / span > linearize(mdl, io);
G_ol.InputName = {< span class = "org-string" > 'u_ur'< / span > , < span class = "org-string" > 'u_uh'< / span > , < span class = "org-string" > 'u_d'< / span > };
G_ol.OutputName = {< span class = "org-string" > 'd_ur'< / span > , < span class = "org-string" > 'd_uh'< / span > , < span class = "org-string" > 'd_d'< / span > };
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > %% Identification of the damped plant with IFF< / span >
controller.type = 1; < span class = "org-comment-delimiter" > % < / span > < span class = "org-comment" > IFF< / span >
G_dp = J_a_111< span class = "org-builtin" > *< / span > inv(J_s_111)< span class = "org-builtin" > *< / span > linearize(mdl, io);
G_dp.InputName = {< span class = "org-string" > 'u_ur'< / span > , < span class = "org-string" > 'u_uh'< / span > , < span class = "org-string" > 'u_d'< / span > };
G_dp.OutputName = {< span class = "org-string" > 'd_ur'< / span > , < span class = "org-string" > 'd_uh'< / span > , < span class = "org-string" > 'd_d'< / span > };
< / pre >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "org8455151" class = "figure" >
2021-11-30 11:28:07 +01:00
< p > < img src = "figs/comp_damped_undamped_plant_iff_bode_plot.png" alt = "comp_damped_undamped_plant_iff_bode_plot.png" / >
< / p >
2021-11-30 11:45:05 +01:00
< p > < span class = "figure-number" > Figure 17: < / span > Bode plot of both the open-loop plant and the damped plant using IFF< / p >
2021-11-30 11:28:07 +01:00
< / div >
2021-11-30 11:45:05 +01:00
< div class = "important" id = "orgebe4b09" >
2021-11-30 11:28:07 +01:00
< p >
The Integral Force Feedback control strategy is very effective in damping the suspension modes of the DCM.
< / p >
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org8c22e6e" class = "outline-3" >
< h3 id = "org8c22e6e" > < span class = "section-number-3" > 4.4.< / span > Save< / h3 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-3" id = "text-4-4" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > save(< span class = "org-string" > 'mat/Kiff.mat'< / span > , < span class = "org-string" > 'Kiff'< / span > );
< / pre >
< / div >
< / div >
< / div >
< / div >
2021-11-30 11:45:05 +01:00
< div id = "outline-container-org053c75c" class = "outline-2" >
< h2 id = "org053c75c" > < span class = "section-number-2" > 5.< / span > HAC-LAC (IFF) architecture< / h2 >
2021-11-30 11:28:07 +01:00
< div class = "outline-text-2" id = "text-5" >
< p >
2021-11-30 11:45:05 +01:00
< a id = "orga68bafc" > < / a >
2021-11-30 11:28:07 +01:00
< / p >
< / div >
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2021-11-30 11:45:05 +01:00
< p class = "date" > Created: 2021-11-30 mar. 11:44< / p >
2021-11-30 11:28:07 +01:00
< / div >
< / body >
< / html >