Align the centers of rotation of Ry, Hexa, NASS with the sample
This commit is contained in:
@@ -9,3 +9,7 @@ runSimulation('vc', 'light', 'cl', 'none');
|
||||
runSimulation('pz', 'light', 'cl', 'none');
|
||||
% runSimulation('vc', 'heavy', 'cl', 'none');
|
||||
% runSimulation('pz', 'heavy', 'cl', 'none');
|
||||
|
||||
%%
|
||||
opts_inputs = struct('Dw', true);
|
||||
initializeInputs(opts_inputs);
|
||||
|
@@ -9,12 +9,12 @@ initializeSample(struct('mass', 1));
|
||||
|
||||
initializeNanoHexapod(struct('actuator', 'lorentz'));
|
||||
K = K_light_vc; %#ok
|
||||
save('./mat/controller.mat', 'K');
|
||||
save('./mat/controllers.mat', 'K');
|
||||
Gd_cl_light_vc = identifyPlant();
|
||||
|
||||
initializeNanoHexapod(struct('actuator', 'piezo'));
|
||||
K = K_light_pz; %#ok
|
||||
save('./mat/controller.mat', 'K');
|
||||
save('./mat/controllers.mat', 'K');
|
||||
Gd_cl_light_pz = identifyPlant();
|
||||
|
||||
%% Closed Loop - Heavy Sample
|
||||
@@ -22,12 +22,12 @@ initializeSample(struct('mass', 50));
|
||||
|
||||
initializeNanoHexapod(struct('actuator', 'lorentz'));
|
||||
K = K_heavy_vc; %#ok
|
||||
save('./mat/controller.mat', 'K');
|
||||
save('./mat/controllers.mat', 'K');
|
||||
G_cl_heavy_vc = identifyPlant();
|
||||
|
||||
initializeNanoHexapod(struct('actuator', 'piezo'));
|
||||
K = K_heavy_pz;
|
||||
save('./mat/controller.mat', 'K');
|
||||
save('./mat/controllers.mat', 'K');
|
||||
G_cl_heavy_pz = identifyPlant();
|
||||
|
||||
%% Save the identified transfer functions
|
||||
|
@@ -5,13 +5,53 @@ clear; close all; clc;
|
||||
load('./mat/G.mat', 'G_light_vc', 'G_light_pz', 'G_heavy_vc', 'G_heavy_pz');
|
||||
|
||||
%%
|
||||
fs = 10;
|
||||
s = tf('s');
|
||||
|
||||
K_light_vc = generateDiagPidControl(G_light_vc.G_cart, fs);
|
||||
K_light_pz = generateDiagPidControl(G_light_pz.G_cart, fs);
|
||||
%%
|
||||
% bodeFig({minreal(G_light_vc.G_cart(1, 1))}, struct('phase', true));
|
||||
|
||||
K_heavy_vc = generateDiagPidControl(G_heavy_vc.G_cart, fs);
|
||||
K_heavy_pz = generateDiagPidControl(G_heavy_pz.G_cart, fs);
|
||||
%%
|
||||
% sisotool(minreal(G_light_vc.G_cart(6, 6)))
|
||||
|
||||
K_light_vc = tf(zeros(6));
|
||||
K_light_vc(1, 1) = 3.4802e06*(s+0.6983)*(s+131.6)/((s+5.306e-06)*(s+577.4));
|
||||
K_light_vc(2, 2) = 5.3292e06*(s+0.6722)*(s+58.23)/((s+3.628e-06)*(s+734.6));
|
||||
K_light_vc(3, 3) = 2.1727e06*(s+66.94)*(s+3.522)/((s+530.6)*(s+0.0006859));
|
||||
K_light_vc(4, 4) = 6.4807e06*(s+2.095)*(s+111.1)/((s+0.0001246)*(s+577.4));
|
||||
K_light_vc(5, 5) = 2.5184e06*(s+5.582)*(s+48.76)/((s+0.01558)*(s+453.8));
|
||||
K_light_vc(6, 6) = 1.022e06*(s+6.152)*(s+40.15)/((s+0.001945)*(s+589.7));
|
||||
|
||||
%%
|
||||
i = 6;
|
||||
bodeFig({-G_light_vc.G_plant(i, i)*K_light_vc(i, i)}, struct('phase', true))
|
||||
|
||||
%%
|
||||
% sisotool(minreal(G_light_pz.G_plant(1, 1)))
|
||||
|
||||
K_light_pz = tf(zeros(6));
|
||||
% K_light_pz(1, 1) = 3.4802e06*(s+0.6983)*(s+131.6)/((s+5.306e-06)*(s+577.4));
|
||||
% K_light_pz(2, 2) = 5.3292e06*(s+0.6722)*(s+58.23)/((s+3.628e-06)*(s+734.6));
|
||||
% K_light_pz(3, 3) = 2.1727e06*(s+66.94)*(s+3.522)/((s+530.6)*(s+0.0006859));
|
||||
% K_light_pz(4, 4) = 6.4807e06*(s+2.095)*(s+111.1)/((s+0.0001246)*(s+577.4));
|
||||
% K_light_pz(5, 5) = 2.5184e06*(s+5.582)*(s+48.76)/((s+0.01558)*(s+453.8));
|
||||
% K_light_pz(6, 6) = 1.022e06*(s+6.152)*(s+40.15)/((s+0.001945)*(s+589.7));
|
||||
|
||||
%%
|
||||
K_heavy_vc = tf(zeros(6));
|
||||
K_heavy_pz = tf(zeros(6));
|
||||
|
||||
|
||||
%%
|
||||
save('./mat/K_fb.mat', 'K_light_vc', 'K_light_pz', 'K_heavy_vc', 'K_heavy_pz');
|
||||
|
||||
%% Automatic generation of controllers
|
||||
% fs = 100;
|
||||
%
|
||||
% K_light_vc = generateDiagPidControl(G_light_vc.G_cart, fs);
|
||||
% K_light_pz = generateDiagPidControl(G_light_pz.G_cart, fs);
|
||||
%
|
||||
% K_heavy_vc = generateDiagPidControl(G_heavy_vc.G_cart, fs);
|
||||
% K_heavy_pz = generateDiagPidControl(G_heavy_pz.G_cart, fs);
|
||||
|
||||
%% Save the MIMO control
|
||||
save('./mat/K_fb.mat', 'K_light_vc', 'K_light_pz', 'K_heavy_vc', 'K_heavy_pz');
|
||||
% save('./mat/K_fb.mat', 'K_light_vc', 'K_light_pz', 'K_heavy_vc', 'K_heavy_pz');
|
||||
|
Reference in New Issue
Block a user