diff --git a/index.html b/index.html index bbbadd5..1cda349 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + SVD Control @@ -35,59 +35,59 @@

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

@@ -95,8 +95,8 @@
-
-

1.2 Simscape Model - Parameters

+
+

1.2 Simscape Model - Parameters

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

1.3 System Identification - Without Gravity

+
+

1.3 System Identification - Without Gravity

%% Name of the Simulink File
@@ -175,7 +175,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

@@ -183,8 +183,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]
@@ -213,7 +213,7 @@ ans =
 
-
+

open_loop_tf_g.png

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

@@ -221,12 +221,12 @@ ans =
-
-

1.5 Analytical Model

+
+

1.5 Analytical Model

-
-

1.5.1 Parameters

+
+

1.5.1 Parameters

Bode options. @@ -245,7 +245,6 @@ P.TickLabel.FontSize = 12; P.Xlim = [1e-1,1e2]; P.MagLowerLimMode = 'manual'; P.MagLowerLim= 1e-3; -%P.PhaseVisible = 'off';

@@ -259,30 +258,62 @@ Frequency vector.
-
-

1.5.2 generation of the state space model

+
+

1.5.2 Generation of the State Space Model

+

+Mass matrix +

M = [m 0 0
      0 m 0
      0 0 I];
+
+
-%Jacobian of the bottom sensor -Js1 = [1 0 h/2 +

+Jacobian of the bottom sensor +

+
+
Js1 = [1 0  h/2
        0 1 -l/2];
-%Jacobian of the top sensor
-Js2 = [1 0 -h/2
-       0 1  0];
+
+
-%Jacobian of the actuators -Ja = [1 0 ha % Left horizontal actuator +

+Jacobian of the top sensor +

+
+
Js2 = [1 0 -h/2
+       0 1  0];
+
+
+ +

+Jacobian of the actuators +

+
+
Ja = [1 0  ha   % Left horizontal actuator
       0 1 -la   % Left vertical actuator
       0 1  la]; % Right vertical actuator
 Jta = Ja';
-K = k*Jta*Ja;
-C = c*Jta*Ja;
+
+
-E = [1 0 0 +

+Stiffness and Damping matrices +

+
+
K = k*Jta*Ja;
+C = c*Jta*Ja;
+
+
+ +

+State Space Matrices +

+
+
E = [1 0 0
      0 1 0
      0 0 1]; %projecting ground motion in the directions of the legs
 
@@ -292,12 +323,6 @@ AA = [zeros(3) eye(3)
 BB = [zeros(3,6)
       M\Jta M\(k*Jta*E)];
 
-% BB = [zeros(3,3)
-%     M\Jta ];
-%
-% CC = [Ja zeros(3)];
-% DD = zeros(3,3);
-
 CC = [[Js1;Js2] zeros(4,3);
       zeros(2,6)
       (Js1+Js2)./2 zeros(2,3)
@@ -307,16 +332,23 @@ CC = [[Js1;Js2] zeros(4,3);
 DD = [zeros(4,6)
       zeros(2,3) eye(2,3)
       zeros(6,6)];
-
-system_dec = ss(AA,BB,CC,DD);
 
+

+State Space model: +

  • Input = three actuators and three ground motions
  • Output = the bottom sensor; the top sensor; the ground motion; the half sum; the half difference; the rotation
+
+
system_dec = ss(AA,BB,CC,DD);
+
+
+ +
size(system_dec)
 
@@ -328,11 +360,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

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

1.5.4 Analysis

+
+

1.5.4 Analysis

% figure
@@ -409,8 +441,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);
@@ -550,8 +582,8 @@ legend('Control OFF','D
 
-
-

1.5.6 Greshgorin radius

+
+

1.5.6 Greshgorin radius

system_dec_freq = freqresp(system_dec,w);
@@ -597,8 +629,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);
@@ -654,15 +686,15 @@ rot = PHI(:,11,11);
 
-
-

2 Gravimeter - Functions

+
+

2 Gravimeter - Functions

-
-

2.1 align

+
+

2.1 align

- +

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

-
-

2.2 pzmap_testCL

+
+

2.2 pzmap_testCL

- +

@@ -744,12 +776,12 @@ This Matlab function is accessible here.

-
-

3 Stewart Platform - Simscape Model

+
+

3 Stewart Platform - Simscape Model

-
-

3.1 Jacobian

+
+

3.1 Jacobian

First, the position of the “joints” (points of force application) are estimated and the Jacobian computed. @@ -791,8 +823,8 @@ save('./jacobian.mat',

-
-

3.2 Simscape Model

+
+

3.2 Simscape Model

open('stewart_platform/drone_platform.slx');
@@ -823,8 +855,8 @@ We load the Jacobian.
 
-
-

3.3 Identification of the plant

+
+

3.3 Identification of the plant

The dynamics is identified from forces applied by each legs to the measured acceleration of the top platform. @@ -881,32 +913,32 @@ Gl.OutputName = {'A1',

-
-

3.4 Obtained Dynamics

+
+

3.4 Obtained Dynamics

-
+

stewart_platform_translations.png

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

-
+

stewart_platform_rotations.png

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

-
+

stewart_platform_legs.png

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

-
+

stewart_platform_transmissibility.png

Figure 8: Transmissibility

@@ -914,8 +946,8 @@ Gl.OutputName = {'A1',
-
-

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

+
+

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

Let’s compute a real approximation of the complex matrix \(H_1\) which corresponds to the the transfer function \(G_c(j\omega_c)\) from forces applied by the actuators to the measured acceleration of the top platform evaluated at the frequency \(\omega_c\). @@ -941,8 +973,8 @@ H1 = inv(D*real(H1'*

-
-

3.6 Verification of the decoupling using the “Gershgorin Radii”

+
+

3.6 Verification of the decoupling using the “Gershgorin Radii”

First, the Singular Value Decomposition of \(H_1\) is performed: @@ -1010,7 +1042,7 @@ H = abs(squeeze(freqresp(Gj, freqs, 'Hz')));

-
+

simscape_model_gershgorin_radii.png

Figure 9: Gershgorin Radii of the Coupled and Decoupled plants

@@ -1018,8 +1050,8 @@ H = abs(squeeze(freqresp(Gj, freqs, 'Hz')));
-
-

3.7 Decoupled Plant

+
+

3.7 Decoupled Plant

Let’s see the bode plot of the decoupled plant \(G_d(s)\). @@ -1027,14 +1059,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

@@ -1042,8 +1074,8 @@ Let’s see the bode plot of the decoupled plant \(G_d(s)\).
-
-

3.8 Diagonal Controller

+
+

3.8 Diagonal Controller

The controller \(K\) is a diagonal controller consisting a low pass filters with a crossover frequency \(\omega_c\) and a DC gain \(C_g\). @@ -1059,8 +1091,8 @@ K = eye(6)*C_g/(s

-
-

3.9 Centralized Control

+
+

3.9 Centralized Control

The control diagram for the centralized control is shown below. @@ -1084,8 +1116,8 @@ The Jacobian is used to convert forces in the cartesian frame to forces applied

-
-

3.10 SVD Control

+
+

3.10 SVD Control

The SVD control architecture is shown below. @@ -1108,8 +1140,8 @@ SVD Control

-
-

3.11 Results

+
+

3.11 Results

Let’s first verify the stability of the closed-loop systems: @@ -1139,11 +1171,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

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

Author: Dehaeze Thomas

-

Created: 2020-10-05 lun. 18:06

+

Created: 2020-10-05 lun. 18:28

diff --git a/index.org b/index.org index 6b80cfa..65efaa0 100644 --- a/index.org +++ b/index.org @@ -226,7 +226,6 @@ Bode options. P.Xlim = [1e-1,1e2]; P.MagLowerLimMode = 'manual'; P.MagLowerLim= 1e-3; - %P.PhaseVisible = 'off'; #+end_src Frequency vector. @@ -234,27 +233,42 @@ Frequency vector. w = 2*pi*logspace(-1,2,1000); % [rad/s] #+end_src -*** generation of the state space model +*** Generation of the State Space Model +Mass matrix #+begin_src matlab M = [m 0 0 0 m 0 0 0 I]; +#+end_src - %Jacobian of the bottom sensor +Jacobian of the bottom sensor +#+begin_src matlab Js1 = [1 0 h/2 0 1 -l/2]; - %Jacobian of the top sensor +#+end_src + +Jacobian of the top sensor +#+begin_src matlab Js2 = [1 0 -h/2 0 1 0]; +#+end_src - %Jacobian of the actuators +Jacobian of the actuators +#+begin_src matlab Ja = [1 0 ha % Left horizontal actuator 0 1 -la % Left vertical actuator 0 1 la]; % Right vertical actuator Jta = Ja'; +#+end_src + +Stiffness and Damping matrices +#+begin_src matlab K = k*Jta*Ja; C = c*Jta*Ja; +#+end_src +State Space Matrices +#+begin_src matlab E = [1 0 0 0 1 0 0 0 1]; %projecting ground motion in the directions of the legs @@ -265,12 +279,6 @@ Frequency vector. BB = [zeros(3,6) M\Jta M\(k*Jta*E)]; - % BB = [zeros(3,3) - % M\Jta ]; - % - % CC = [Ja zeros(3)]; - % DD = zeros(3,3); - CC = [[Js1;Js2] zeros(4,3); zeros(2,6) (Js1+Js2)./2 zeros(2,3) @@ -280,12 +288,16 @@ Frequency vector. DD = [zeros(4,6) zeros(2,3) eye(2,3) zeros(6,6)]; +#+end_src +State Space model: +- Input = three actuators and three ground motions +- Output = the bottom sensor; the top sensor; the ground motion; the half sum; the half difference; the rotation + +#+begin_src matlab system_dec = ss(AA,BB,CC,DD); #+end_src -- Input = three actuators and three ground motions -- Output = the bottom sensor; the top sensor; the ground motion; the half sum; the half difference; the rotation #+begin_src matlab :results output replace size(system_dec)