Add study about reference tracking
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_control_comp_El.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_control_comp_El.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 46 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_control_comp_Ex.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_control_comp_Ex.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 86 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_control_comp_K.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_control_comp_K.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 210 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_L.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_L.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_S.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_S.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 12 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_X.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_X.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_static_decoupling.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/centralized_reference_tracking_static_decoupling.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 12 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/decentralized_control_El.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/decentralized_control_El.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 70 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/decentralized_control_Ex.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/decentralized_control_Ex.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 66 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/hybrid_reference_tracking.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/hybrid_reference_tracking.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 26 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/loop_gain_centralized_L.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/loop_gain_centralized_L.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 94 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/loop_gain_centralized_X.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/loop_gain_centralized_X.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 100 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/loop_gain_decentralized_L.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/loop_gain_decentralized_L.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 94 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_diagonal_L.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_diagonal_L.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 80 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_diagonal_SD.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_diagonal_SD.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 105 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_diagonal_X.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_diagonal_X.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 95 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_off_diagonal_L.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_off_diagonal_L.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 90 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_off_diagonal_SD.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_off_diagonal_SD.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 111 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_off_diagonal_X.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_centralized_off_diagonal_X.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 96 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_decentralized_diagonal.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_decentralized_diagonal.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 71 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_decentralized_off_diagonal.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/figs/plant_decentralized_off_diagonal.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 90 KiB  | 
@@ -38,6 +38,19 @@
 | 
			
		||||
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
 | 
			
		||||
:END:
 | 
			
		||||
 | 
			
		||||
* Introduction                                                        :ignore:
 | 
			
		||||
Control architectures can be divided in different ways.
 | 
			
		||||
 | 
			
		||||
It can depend on the sensor used:
 | 
			
		||||
- Sensors located in each strut: relative motion, force sensor, inertial sensor
 | 
			
		||||
- Sensors measuring the relative motion between the fixed base and the mobile platform
 | 
			
		||||
- Inertial sensors located on the mobile platform
 | 
			
		||||
 | 
			
		||||
It can also depends on the control objective:
 | 
			
		||||
- Reference Tracking
 | 
			
		||||
- Active Damping
 | 
			
		||||
- Vibration Isolation
 | 
			
		||||
 | 
			
		||||
* HAC-LAC (Cascade) Control - Integral Control
 | 
			
		||||
** Introduction
 | 
			
		||||
In this section, we wish to study the use of the High Authority Control - Low Authority Control (HAC-LAC) architecture on the Stewart platform.
 | 
			
		||||
@@ -760,6 +773,8 @@ Let's define the system as shown in figure [[fig:general_control_names]].
 | 
			
		||||
 | 
			
		||||
#+name: tab:general_plant_signals
 | 
			
		||||
#+caption: Signals definition for the generalized plant
 | 
			
		||||
|                     | *Symbol*                    | *Meaning*                              |
 | 
			
		||||
|---------------------+-----------------------------+----------------------------------------|
 | 
			
		||||
| *Exogenous Inputs*  | $\bm{\mathcal{X}}_w$        | Ground motion                          |
 | 
			
		||||
|                     | $\bm{\mathcal{F}}_d$        | External Forces applied to the Payload |
 | 
			
		||||
|                     | $\bm{r}$                    | Reference signal for tracking          |
 | 
			
		||||
@@ -1177,9 +1192,150 @@ The results are shown in figure
 | 
			
		||||
#+caption: Frobenius norm of the Compliance and transmissibility matrices ([[./figs/static_decoupling_C_T_frobenius_norm.png][png]], [[./figs/static_decoupling_C_T_frobenius_norm.pdf][pdf]])
 | 
			
		||||
[[file:figs/static_decoupling_C_T_frobenius_norm.png]]
 | 
			
		||||
 | 
			
		||||
** Decoupling at Crossover
 | 
			
		||||
** TODO Decoupling at Crossover
 | 
			
		||||
- [ ] Find a method for real approximation of a complex matrix
 | 
			
		||||
 
 | 
			
		||||
* Time Domain Simulation
 | 
			
		||||
** Matlab Init                                                     :noexport:
 | 
			
		||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
 | 
			
		||||
  <<matlab-dir>>
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none :results silent :noweb yes
 | 
			
		||||
  <<matlab-init>>
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  simulinkproject('../');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  open('stewart_platform_model.slx')
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Initialization
 | 
			
		||||
We first initialize the Stewart platform.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
 | 
			
		||||
  stewart = generateGeneralConfiguration(stewart);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart);
 | 
			
		||||
  stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart);
 | 
			
		||||
  stewart = initializeCylindricalStruts(stewart);
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeStewartPose(stewart);
 | 
			
		||||
  stewart = initializeInertialSensor(stewart, 'type', 'none');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
The rotation point of the ground is located at the origin of frame $\{A\}$.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
 | 
			
		||||
  payload = initializePayload('type', 'none');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  load('./mat/motion_error_ol.mat', 'Eg')
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** HAC IFF
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  controller = initializeController('type', 'iff');
 | 
			
		||||
  K_iff = -(1e4/s)*eye(6);
 | 
			
		||||
 | 
			
		||||
  %% Name of the Simulink File
 | 
			
		||||
  mdl = 'stewart_platform_model';
 | 
			
		||||
 | 
			
		||||
  %% Input/Output definition
 | 
			
		||||
  clear io; io_i = 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/Controller'],              1, 'input');      io_i = io_i + 1; % Actuator Force Inputs [N]
 | 
			
		||||
  io(io_i) = linio([mdl, '/Absolute Motion Sensor'],  1, 'openoutput'); io_i = io_i + 1; % Absolute Sensor [m, rad]
 | 
			
		||||
 | 
			
		||||
  %% Run the linearization
 | 
			
		||||
  G_iff = linearize(mdl, io);
 | 
			
		||||
  G_iff.InputName  = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
 | 
			
		||||
  G_iff.OutputName = {'Dx', 'Dy', 'Dz', 'Rx', 'Ry', 'Rz'};
 | 
			
		||||
 | 
			
		||||
  Gc_iff = minreal(G_iff)/stewart.kinematics.J';
 | 
			
		||||
  Gc_iff.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  wc = 2*pi*100; % Wanted Bandwidth [rad/s]
 | 
			
		||||
 | 
			
		||||
  h = 1.2;
 | 
			
		||||
  H_lead = 1/h*(1 + s/(wc/h))/(1 + s/(wc*h));
 | 
			
		||||
 | 
			
		||||
  Kd_iff = diag(1./abs(diag(freqresp(1/s*Gc_iff, wc)))) .* H_lead .* 1/s;
 | 
			
		||||
  K_hac_iff = inv(stewart.kinematics.J')*Kd_iff;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  controller = initializeController('type', 'hac-iff');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** HAC-DVF
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  controller = initializeController('type', 'dvf');
 | 
			
		||||
  K_dvf = -1e4*s/(1+s/2/pi/5000)*eye(6);
 | 
			
		||||
 | 
			
		||||
  %% Name of the Simulink File
 | 
			
		||||
  mdl = 'stewart_platform_model';
 | 
			
		||||
 | 
			
		||||
  %% Input/Output definition
 | 
			
		||||
  clear io; io_i = 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/Controller'],              1, 'input');      io_i = io_i + 1; % Actuator Force Inputs [N]
 | 
			
		||||
  io(io_i) = linio([mdl, '/Absolute Motion Sensor'],  1, 'openoutput'); io_i = io_i + 1; % Absolute Sensor [m, rad]
 | 
			
		||||
 | 
			
		||||
  %% Run the linearization
 | 
			
		||||
  G_dvf = linearize(mdl, io);
 | 
			
		||||
  G_dvf.InputName  = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
 | 
			
		||||
  G_dvf.OutputName = {'Dx', 'Dy', 'Dz', 'Rx', 'Ry', 'Rz'};
 | 
			
		||||
 | 
			
		||||
  Gc_dvf = minreal(G_dvf)/stewart.kinematics.J';
 | 
			
		||||
  Gc_dvf.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  wc = 2*pi*100; % Wanted Bandwidth [rad/s]
 | 
			
		||||
 | 
			
		||||
  h = 1.2;
 | 
			
		||||
  H_lead = 1/h*(1 + s/(wc/h))/(1 + s/(wc*h));
 | 
			
		||||
 | 
			
		||||
  Kd_dvf = diag(1./abs(diag(freqresp(1/s*Gc_dvf, wc)))) .* H_lead .* 1/s;
 | 
			
		||||
 | 
			
		||||
  K_hac_dvf = inv(stewart.kinematics.J')*Kd_dvf;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  controller = initializeController('type', 'hac-dvf');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Results
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  figure;
 | 
			
		||||
  subplot(1, 2, 1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(Eg.Time, Eg.Data(:, 1), 'DisplayName', 'X');
 | 
			
		||||
  plot(Eg.Time, Eg.Data(:, 2), 'DisplayName', 'Y');
 | 
			
		||||
  plot(Eg.Time, Eg.Data(:, 3), 'DisplayName', 'Z');
 | 
			
		||||
  hold off;
 | 
			
		||||
  xlabel('Time [s]');
 | 
			
		||||
  ylabel('Position error [m]');
 | 
			
		||||
  legend();
 | 
			
		||||
 | 
			
		||||
  subplot(1, 2, 2);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(simout.Xa.Time, simout.Xa.Data(:, 1));
 | 
			
		||||
  plot(simout.Xa.Time, simout.Xa.Data(:, 2));
 | 
			
		||||
  plot(simout.Xa.Time, simout.Xa.Data(:, 3));
 | 
			
		||||
  hold off;
 | 
			
		||||
  xlabel('Time [s]');
 | 
			
		||||
  ylabel('Orientation error [rad]');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
* Functions
 | 
			
		||||
** =initializeController=: Initialize the Controller
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
@@ -1208,7 +1364,7 @@ The results are shown in figure
 | 
			
		||||
:END:
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  arguments
 | 
			
		||||
    args.type   char   {mustBeMember(args.type, {'open-loop', 'iff', 'dvf', 'hac-iff', 'hac-dvf'})} = 'open-loop'
 | 
			
		||||
    args.type   char   {mustBeMember(args.type, {'open-loop', 'iff', 'dvf', 'hac-iff', 'hac-dvf', 'ref-track-L', 'ref-track-X'})} = 'open-loop'
 | 
			
		||||
  end
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
@@ -1236,5 +1392,9 @@ The results are shown in figure
 | 
			
		||||
      controller.type = 3;
 | 
			
		||||
    case 'hac-dvf'
 | 
			
		||||
      controller.type = 4;
 | 
			
		||||
    case 'ref-track-L'
 | 
			
		||||
      controller.type = 5;
 | 
			
		||||
    case 'ref-track-X'
 | 
			
		||||
      controller.type = 6;
 | 
			
		||||
  end
 | 
			
		||||
#+end_src
 | 
			
		||||
 
 | 
			
		||||