43 lines
1.6 KiB
Mathematica
43 lines
1.6 KiB
Mathematica
|
function [sys] = identifyPlant(opts_param)
|
||
|
%% Default values for opts
|
||
|
opts = struct();
|
||
|
|
||
|
%% Populate opts with input parameters
|
||
|
if exist('opts_param','var')
|
||
|
for opt = fieldnames(opts_param)'
|
||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||
|
end
|
||
|
end
|
||
|
|
||
|
%% Options for Linearized
|
||
|
options = linearizeOptions;
|
||
|
options.SampleTime = 0;
|
||
|
|
||
|
%% Name of the Simulink File
|
||
|
mdl = 'sim_nano_station';
|
||
|
|
||
|
%% Input/Output definition
|
||
|
io(1) = linio([mdl, '/Fn'], 1, 'input');
|
||
|
io(2) = linio([mdl, '/Gm'], 1, 'input');
|
||
|
io(3) = linio([mdl, '/Fs_ext'], 1, 'input');
|
||
|
io(4) = linio([mdl, '/F_legs'], 1, 'input');
|
||
|
io(5) = linio([mdl, '/Dsample_meas'], 1, 'output');
|
||
|
io(6) = linio([mdl, '/F_meas'], 1, 'output');
|
||
|
|
||
|
%% Run the linearization
|
||
|
G = linearize(mdl, io, 0);
|
||
|
G.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz', ...
|
||
|
'Dgx', 'Dgy', 'Dgz', ...
|
||
|
'Fsx', 'Fsy', 'Fsz', ...
|
||
|
'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||
|
G.OutputName = {'Dx', 'Dy', 'Dz', 'Rx', 'Ry', 'Rz', ...
|
||
|
'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||
|
|
||
|
%% Create the sub transfer functions
|
||
|
sys.G_cart = minreal(G({'Dx', 'Dy', 'Dz', 'Rx', 'Ry', 'Rz'}, {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'}));
|
||
|
sys.G_gm = minreal(G({'Dx', 'Dy', 'Dz', 'Rx', 'Ry', 'Rz'}, {'Dgx', 'Dgy', 'Dgz'}));
|
||
|
sys.G_fs = minreal(G({'Dx', 'Dy', 'Dz', 'Rx', 'Ry', 'Rz'}, {'Fsx', 'Fsy', 'Fsz'}));
|
||
|
sys.G_iff = minreal(G({'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'}, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}));
|
||
|
end
|
||
|
|