From 8425c1d613495855a5c698a0dd1daf129d32b911 Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Fri, 6 Nov 2020 12:05:12 +0100 Subject: [PATCH] Add custom css --- css/custom.css | 14 +++ css/readtheorg.css | 39 +++++--- index.html | 234 ++++++++++++++++++++++----------------------- index.org | 2 +- js/readtheorg.js | 2 + 5 files changed, 160 insertions(+), 131 deletions(-) create mode 100644 css/custom.css diff --git a/css/custom.css b/css/custom.css new file mode 100644 index 0000000..00e7250 --- /dev/null +++ b/css/custom.css @@ -0,0 +1,14 @@ +.figure p{ + text-align: center; +} + +.figure img{ + max-width:100%; + display: block; + margin: auto; +} + +table { + margin-left: auto; + margin-right: auto; +} diff --git a/css/readtheorg.css b/css/readtheorg.css index 1690bd0..423a707 100644 --- a/css/readtheorg.css +++ b/css/readtheorg.css @@ -513,7 +513,7 @@ legend{ padding:0; white-space:normal} -.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{ +.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{ -webkit-font-smoothing:antialiased} /*! @@ -576,7 +576,7 @@ a .fa,a #content .admonition-title,#content a .admonition-title{ .nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{ display:inline} -.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo{ +.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo{ padding:12px; line-height:24px; margin-bottom:24px; @@ -596,32 +596,45 @@ a .fa,a #content .admonition-title,#content a .admonition-title{ #content .danger,#content .error{ background:#fdf3f2} -.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{ +.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.summary,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{ background:#ffedcc} -#content .admonition-title.note:before, #content .admonition-title.seealso:before, -#content .admonition-title.warning:before, #content .admonition-title.caution:before, +#content .admonition-title.warning:before, +#content .admonition-title.caution:before, #content .admonition-title.attention:before, -#content .admonition-title.tip:before, #content .admonition-title.hint:before, #content .admonition-title.important:before, -#content .admonition-title.error:before, #content .admonition-title.danger:before{ +#content .admonition-title.error:before, +#content .admonition-title.danger:before{ font-family:FontAwesome; content: "";} -#content .note,#content .seealso{ +#content .admonition-title.question:before{ + font-family:FontAwesome; + content: "";} + +#content .admonition-title.note:before, +#content .admonition-title.seealso:before, +#content .admonition-title.tip:before, +#content .admonition-title.summary:before, +#content .admonition-title.hint:before{ + font-family:FontAwesome; + content: "";} + + +#content .note,#content .question,#content .seealso{ background:#e7f2fa} -.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{ +.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .summary p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .question p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{ margin-bottom:0} -#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.hint{ +#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.summary,#content .admonition-title.hint{ line-height: 1; background:#1abc9c} -#content .important,#content .tip,#content .hint{ +#content .important,#content .tip,#content .summary,#content .hint{ background:#dbfaf4} -#content .admonition-title.note,#content .admonition-title.seealso{ +#content .admonition-title.note,#content .admonition-title.question,#content .admonition-title.seealso{ line-height: 1; background:#6ab0de} @@ -938,7 +951,7 @@ footer p{ font-style:italic; } -#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .seealso .last,#content .admonitiontodo .last{ +#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .summary,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .question .last,#content .seealso .last,#content .admonitiontodo .last{ margin-bottom:0} #content .admonition-title:before{ diff --git a/index.html b/index.html index b6daed1..3146b1a 100644 --- a/index.html +++ b/index.html @@ -3,14 +3,14 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + SVD Control - + @@ -35,56 +35,56 @@

Table of Contents

-
-

1 Gravimeter - Simscape Model

+
+

1 Gravimeter - Simscape Model

-
-

1.1 Introduction

+
+

1.1 Introduction

-
+

gravimeter_model.png

Figure 1: Model of the gravimeter

@@ -92,8 +92,8 @@
-
-

1.2 Simscape Model - Parameters

+
+

1.2 Simscape Model - Parameters

open('gravimeter.slx')
@@ -124,8 +124,8 @@ g = 0; % Gravity [m/s2]
 
-
-

1.3 System Identification - Without Gravity

+
+

1.3 System Identification - Without Gravity

%% Name of the Simulink File
@@ -147,7 +147,7 @@ G.OutputName = {'Ax1', 
 
-
+
 pole(G)
 ans =
       -0.000473481142385795 +      21.7596190728632i
@@ -172,7 +172,7 @@ State-space model with 4 outputs, 3 inputs, and 6 states.
 
 
 
-
+

open_loop_tf.png

Figure 2: Open Loop Transfer Function from 3 Actuators to 4 Accelerometers

@@ -180,8 +180,8 @@ State-space model with 4 outputs, 3 inputs, and 6 states.
-
-

1.4 System Identification - With Gravity

+
+

1.4 System Identification - With Gravity

g = 9.80665; % Gravity [m/s2]
@@ -198,7 +198,7 @@ Gg.OutputName = {'Ax1', 
 We can now see that the system is unstable due to gravity.
 

-
+
 pole(Gg)
 ans =
           -10.9848275341252 +                     0i
@@ -210,7 +210,7 @@ ans =
 
-
+

open_loop_tf_g.png

Figure 3: Open Loop Transfer Function from 3 Actuators to 4 Accelerometers with an without gravity

@@ -218,12 +218,12 @@ ans =
-
-

1.5 Analytical Model

+
+

1.5 Analytical Model

-
-

1.5.1 Parameters

+
+

1.5.1 Parameters

Bode options. @@ -255,8 +255,8 @@ Frequency vector.

-
-

1.5.2 Generation of the State Space Model

+
+

1.5.2 Generation of the State Space Model

Mass matrix @@ -357,11 +357,11 @@ State-space model with 12 outputs, 6 inputs, and 6 states.

-
-

1.5.3 Comparison with the Simscape Model

+
+

1.5.3 Comparison with the Simscape Model

-
+

gravimeter_analytical_system_open_loop_models.png

Figure 4: Comparison of the analytical and the Simscape models

@@ -369,8 +369,8 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
-
-

1.5.4 Analysis

+
+

1.5.4 Analysis

% figure
@@ -438,8 +438,8 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
 
-
-

1.5.5 Control Section

+
+

1.5.5 Control Section

system_dec_10Hz = freqresp(system_dec,2*pi*10);
@@ -579,8 +579,8 @@ legend('Control OFF','D
 
-
-

1.5.6 Greshgorin radius

+
+

1.5.6 Greshgorin radius

system_dec_freq = freqresp(system_dec,w);
@@ -626,8 +626,8 @@ ylabel('Greshgorin radius [-]');
 
-
-

1.5.7 Injecting ground motion in the system to have the output

+
+

1.5.7 Injecting ground motion in the system to have the output

Fr = logspace(-2,3,1e3);
@@ -683,15 +683,15 @@ rot = PHI(:,11,11);
 
-
-

2 Gravimeter - Functions

+
+

2 Gravimeter - Functions

-
-

2.1 align

+
+

2.1 align

- +

@@ -720,11 +720,11 @@ This Matlab function is accessible here.

-
-

2.2 pzmap_testCL

+
+

2.2 pzmap_testCL

- +

@@ -773,15 +773,15 @@ This Matlab function is accessible here.

-
-

3 Stewart Platform - Simscape Model

+
+

3 Stewart Platform - Simscape Model

-In this analysis, we wish to applied SVD control to the Stewart Platform shown in Figure 5. +In this analysis, we wish to applied SVD control to the Stewart Platform shown in Figure 5.

-
+

SP_assembly.png

Figure 5: Stewart Platform CAD View

@@ -791,21 +791,21 @@ In this analysis, we wish to applied SVD control to the Stewart Platform shown i The analysis of the SVD control applied to the Stewart platform is performed in the following sections:

    -
  • Section 3.1: The parameters of the Simscape model of the Stewart platform are defined
  • -
  • Section 3.2: The plant is identified from the Simscape model and the centralized plant is computed thanks to the Jacobian
  • -
  • Section 3.3: The identified Dynamics is shown
  • -
  • Section 3.4: A real approximation of the plant is computed for further decoupling using the Singular Value Decomposition (SVD)
  • -
  • Section 3.5: The decoupling is performed thanks to the SVD. The effectiveness of the decoupling is verified using the Gershorin Radii
  • -
  • Section 3.6: The dynamics of the decoupled plant is shown
  • -
  • Section 3.7: A diagonal controller is defined to control the decoupled plant
  • -
  • Section 3.8: Finally, the closed loop system properties are studied
  • +
  • Section 3.1: The parameters of the Simscape model of the Stewart platform are defined
  • +
  • Section 3.2: The plant is identified from the Simscape model and the centralized plant is computed thanks to the Jacobian
  • +
  • Section 3.3: The identified Dynamics is shown
  • +
  • Section 3.4: A real approximation of the plant is computed for further decoupling using the Singular Value Decomposition (SVD)
  • +
  • Section 3.5: The decoupling is performed thanks to the SVD. The effectiveness of the decoupling is verified using the Gershorin Radii
  • +
  • Section 3.6: The dynamics of the decoupled plant is shown
  • +
  • Section 3.7: A diagonal controller is defined to control the decoupled plant
  • +
  • Section 3.8: Finally, the closed loop system properties are studied
-
-

3.1 Simscape Model - Parameters

+
+

3.1 Simscape Model - Parameters

- +

open('drone_platform.slx');
@@ -844,11 +844,11 @@ We load the Jacobian (previously computed from the geometry).
 
-
-

3.2 Identification of the plant

+
+

3.2 Identification of the plant

- +

@@ -885,11 +885,11 @@ State-space model with 6 outputs, 12 inputs, and 24 states.

-The “centralized” plant \(\bm{G}_x\) is now computed (Figure 6). +The “centralized” plant \(\bm{G}_x\) is now computed (Figure 6).

-
+

centralized_control.png

Figure 6: Centralized control architecture

@@ -907,22 +907,22 @@ Gx.InputName = {'Dwx',
-
-

3.3 Obtained Dynamics

+
+

3.3 Obtained Dynamics

- +

-
+

stewart_platform_translations.png

Figure 7: Stewart Platform Plant from forces applied by the legs to the acceleration of the platform

-
+

stewart_platform_rotations.png

Figure 8: Stewart Platform Plant from torques applied by the legs to the angular acceleration of the platform

@@ -930,11 +930,11 @@ Gx.InputName = {'Dwx',
-
-

3.4 Real Approximation of \(G\) at the decoupling frequency

+
+

3.4 Real Approximation of \(G\) at the decoupling frequency

- +

@@ -1114,11 +1114,11 @@ This can be verified below where only the real value of \(G(\omega_c)\) is shown

-
-

3.5 Verification of the decoupling using the “Gershgorin Radii”

+
+

3.5 Verification of the decoupling using the “Gershgorin Radii”

- +

@@ -1187,7 +1187,7 @@ H = abs(squeeze(freqresp(Gj, freqs, 'Hz')));

-
+

simscape_model_gershgorin_radii.png

Figure 9: Gershgorin Radii of the Coupled and Decoupled plants

@@ -1195,11 +1195,11 @@ H = abs(squeeze(freqresp(Gj, freqs, 'Hz')));
-
-

3.6 Decoupled Plant

+
+

3.6 Decoupled Plant

- +

@@ -1208,14 +1208,14 @@ Let’s see the bode plot of the decoupled plant \(G_d(s)\).

-
+

simscape_model_decoupled_plant_svd.png

Figure 10: Decoupled Plant using SVD

-
+

simscape_model_decoupled_plant_jacobian.png

Figure 11: Decoupled Plant using the Jacobian

@@ -1223,11 +1223,11 @@ Let’s see the bode plot of the decoupled plant \(G_d(s)\).
-
-

3.7 Diagonal Controller

+
+

3.7 Diagonal Controller

- +

@@ -1243,7 +1243,7 @@ K = eye(6)*C_g/(s

-The control diagram for the centralized control is shown in Figure 6. +The control diagram for the centralized control is shown in Figure 6.

@@ -1252,7 +1252,7 @@ The Jacobian is used to convert forces in the cartesian frame to forces applied

-
+

centralized_control.png

Figure 12: Control Diagram for the Centralized control

@@ -1267,11 +1267,11 @@ The feedback system is computed as shown below.

-The SVD control architecture is shown in Figure 13. +The SVD control architecture is shown in Figure 13. The matrices \(U\) and \(V\) are used to decoupled the plant \(G\).

-
+

svd_control.png

Figure 13: Control Diagram for the SVD control

@@ -1287,11 +1287,11 @@ The feedback system is computed as shown below.
-
-

3.8 Closed-Loop system Performances

+
+

3.8 Closed-Loop system Performances

- +

@@ -1322,11 +1322,11 @@ ans =

-The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure 14. +The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure 14.

-
+

stewart_platform_simscape_cl_transmissibility.png

Figure 14: Obtained Transmissibility

@@ -1337,7 +1337,7 @@ The obtained transmissibility in Open-loop, for the centralized control as well

Author: Dehaeze Thomas

-

Created: 2020-11-06 ven. 11:59

+

Created: 2020-11-06 ven. 12:04

diff --git a/index.org b/index.org index 3396f7e..95ca425 100644 --- a/index.org +++ b/index.org @@ -11,7 +11,7 @@ #+HTML_HEAD: #+HTML_HEAD: -#+HTML_HEAD: +#+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: diff --git a/js/readtheorg.js b/js/readtheorg.js index 0f8439a..14b23d4 100644 --- a/js/readtheorg.js +++ b/js/readtheorg.js @@ -9,6 +9,8 @@ $(function() { $('.hint').before("

Hint

"); $('.error').before("

Error

"); $('.danger').before("

Danger

"); + $('.question').before("

Question

"); + $('.summary').before("

Summary

"); }); $( document ).ready(function() {