nass-simscape/org/optimal_stiffness_control.org

22 KiB

Control of the NASS with optimal stiffness

Introduction   ignore

Low Authority Control - Decentralized Integral Force Feedback

Introduction   ignore

Initialization

We initialize all the stages with the default parameters.

  initializeGround();
  initializeGranite();
  initializeTy();
  initializeRy();
  initializeRz();
  initializeMicroHexapod();
  initializeAxisc();
  initializeMirror();

We set the references that corresponds to a tomography experiment.

  initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', 1);
  initializeSimscapeConfiguration();
  initializeDisturbances('enable', false);
  initializeLoggingConfiguration('log', 'none');
  initializeController('type', 'hac-iff');

Identification

  Kx = tf(zeros(6));
  Kiff = tf(zeros(6));
  Ms = [1, 10, 50];

  Gm_iff = {zeros(length(Ms), 1)};
  initializeNanoHexapod('k', 1e5, 'c', 2e2);

Controller Design

Root Locus

/tdehaeze/nass-simscape/media/commit/3665313d142f7642d4d94f3f3be531b18dab3bfa/org/figs/opt_stiff_iff_root_locus.png

Root Locus for the

Damping as function of the gain

  Kiff = -200/s*eye(6);

Primary Control

Introduction   ignore

Identification

  Gm_x = {zeros(length(Ms), 1)};
  Gm_l = {zeros(length(Ms), 1)};
  load('mat/stages.mat', 'nano_hexapod');

Controller in the task space

Translation

  Kx = tf(zeros(6));

  h = 1.5;
  Kx(1,1) = 2e6 * ...
            1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
            (s/2/pi/1 + 1)/(s/2/pi/1) * ...
            (s/2/pi/10 + 1)/(s/2/pi/10);

  Kx(2,2) = Kx(1,1);

  h = 1.5;
  Kx(3,3) = 1e7 * ...
            1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
            (s/2/pi/1 + 1)/(s/2/pi/1) * ...
            (s/2/pi/10 + 1)/(s/2/pi/10);

Rotations

  h = 1.5;
  Kx(4,4) = 1e5 * ...
            1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
            (s/2/pi/1 + 1)/(s/2/pi/1) * ...
            (s/2/pi/10 + 1)/(s/2/pi/10);

  Kx(5,5) = Kx(4,4);

  h = 1.5;
  Kx(6,6) = 2e5 * ...
            1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
            (s/2/pi/1 + 1)/(s/2/pi/1) * ...
            (s/2/pi/10 + 1)/(s/2/pi/10);

Stability

  for i = 1:length(Ms)
      isstable(feedback(Gm_x{i}*Kx, eye(6), -1))
  end

Simulation

Control in the leg space

  h = 1.5;
  Kl = 5e6 * eye(6) * ...
       1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
       (s/2/pi/1 + 1)/(s/2/pi/1) * ...
       (s/2/pi/10 + 1)/(s/2/pi/10);
  for i = 1:length(Ms)
      isstable(feedback(Gm_l{i}(1,1)*Kl(1,1), 1, -1))
  end

Simulations