Initial Commit
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								matlab/Fast_Jack.slx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/Fast_Jack.slx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1844
									
								
								matlab/STEPS/00221283.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1844
									
								
								matlab/STEPS/00221283.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										132819
									
								
								matlab/STEPS/00221401_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132819
									
								
								matlab/STEPS/00221401_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										114141
									
								
								matlab/STEPS/00221450_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114141
									
								
								matlab/STEPS/00221450_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										112479
									
								
								matlab/STEPS/00221610_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112479
									
								
								matlab/STEPS/00221610_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										112951
									
								
								matlab/STEPS/00221611.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112951
									
								
								matlab/STEPS/00221611.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										26683
									
								
								matlab/STEPS/00221612.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26683
									
								
								matlab/STEPS/00221612.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										15562
									
								
								matlab/STEPS/00221613.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15562
									
								
								matlab/STEPS/00221613.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24327
									
								
								matlab/STEPS/00221614.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24327
									
								
								matlab/STEPS/00221614.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										46219
									
								
								matlab/STEPS/00221615.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46219
									
								
								matlab/STEPS/00221615.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										5339
									
								
								matlab/STEPS/00221639.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5339
									
								
								matlab/STEPS/00221639.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										139005
									
								
								matlab/STEPS/00221700_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139005
									
								
								matlab/STEPS/00221700_schematic.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										42339
									
								
								matlab/STEPS/00221702.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42339
									
								
								matlab/STEPS/00221702.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										9286
									
								
								matlab/STEPS/00221714.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9286
									
								
								matlab/STEPS/00221714.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										40869
									
								
								matlab/STEPS/00221720.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40869
									
								
								matlab/STEPS/00221720.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										4663
									
								
								matlab/STEPS/00221724.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4663
									
								
								matlab/STEPS/00221724.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2284
									
								
								matlab/STEPS/00221729.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2284
									
								
								matlab/STEPS/00221729.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24868
									
								
								matlab/STEPS/fast_jack_fixed.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24868
									
								
								matlab/STEPS/fast_jack_fixed.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6857
									
								
								matlab/STEPS/fast_jack_moving.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6857
									
								
								matlab/STEPS/fast_jack_moving.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10149
									
								
								matlab/STEPS/fast_jack_top_piezo.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10149
									
								
								matlab/STEPS/fast_jack_top_piezo.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5439
									
								
								matlab/STEPS/flex_bot.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5439
									
								
								matlab/STEPS/flex_bot.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5670
									
								
								matlab/STEPS/flex_top.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5670
									
								
								matlab/STEPS/flex_top.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										225
									
								
								matlab/dcm_active_damping_iff.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										225
									
								
								matlab/dcm_active_damping_iff.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,225 @@
 | 
			
		||||
% Matlab Init                                              :noexport:ignore:
 | 
			
		||||
 | 
			
		||||
%% dcm_active_damping_iff.m
 | 
			
		||||
% Test of Integral Force Feedback Strategy
 | 
			
		||||
 | 
			
		||||
%% Clear Workspace and Close figures
 | 
			
		||||
clear; close all; clc;
 | 
			
		||||
 | 
			
		||||
%% Intialize Laplace variable
 | 
			
		||||
s = zpk('s');
 | 
			
		||||
 | 
			
		||||
%% Path for functions, data and scripts
 | 
			
		||||
addpath('./mat/'); % Path for data
 | 
			
		||||
 | 
			
		||||
%% Simscape Model - Nano Hexapod
 | 
			
		||||
addpath('./STEPS/')
 | 
			
		||||
 | 
			
		||||
%% Initialize Parameters for Simscape model
 | 
			
		||||
controller.type = 0; % Open Loop Control
 | 
			
		||||
 | 
			
		||||
%% Options for Linearization
 | 
			
		||||
options = linearizeOptions;
 | 
			
		||||
options.SampleTime = 0;
 | 
			
		||||
 | 
			
		||||
%% Open Simulink Model
 | 
			
		||||
mdl = 'simscape_dcm';
 | 
			
		||||
 | 
			
		||||
open(mdl)
 | 
			
		||||
 | 
			
		||||
%% Colors for the figures
 | 
			
		||||
colors = colororder;
 | 
			
		||||
 | 
			
		||||
%% Frequency Vector
 | 
			
		||||
freqs = logspace(1, 3, 1000);
 | 
			
		||||
 | 
			
		||||
% Identification
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
clear io; io_i = 1;
 | 
			
		||||
 | 
			
		||||
%% Inputs
 | 
			
		||||
% Control Input {3x1} [N]
 | 
			
		||||
io(io_i) = linio([mdl, '/control_system'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% Outputs
 | 
			
		||||
% Force Sensor {3x1} [m]
 | 
			
		||||
io(io_i) = linio([mdl, '/DCM'], 3, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% Extraction of the dynamics
 | 
			
		||||
G_fs = linearize(mdl, io);
 | 
			
		||||
 | 
			
		||||
G_fs.InputName  = {'u_ur',  'u_uh',  'u_d'};
 | 
			
		||||
G_fs.OutputName = {'fs_ur', 'fs_uh', 'fs_d'};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% | -1.4113e-13 |  1.0339e-13 |   3.774e-14 |
 | 
			
		||||
% |  1.0339e-13 | -1.4113e-13 |   3.774e-14 |
 | 
			
		||||
% |  3.7792e-14 |  3.7792e-14 | -7.5585e-14 |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Bode plot for the plant
 | 
			
		||||
figure;
 | 
			
		||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
 | 
			
		||||
 | 
			
		||||
ax1 = nexttile([2,1]);
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_fs(1,1), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'd');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_fs(2,2), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'uh');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_fs(3,3), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'ur');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_fs(1,2), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
 | 
			
		||||
     'DisplayName', 'off-diag');
 | 
			
		||||
for i = 1:2
 | 
			
		||||
    for j = i+1:3
 | 
			
		||||
        plot(freqs, abs(squeeze(freqresp(G_fs(i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
 | 
			
		||||
             'HandleVisibility', 'off');
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 2);
 | 
			
		||||
ylim([1e-13, 1e-7]);
 | 
			
		||||
 | 
			
		||||
ax2 = nexttile;
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_fs(1,1), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_fs(2,2), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_fs(3,3), freqs, 'Hz'))));
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
hold off;
 | 
			
		||||
yticks(-360:90:360);
 | 
			
		||||
ylim([-180, 180]);
 | 
			
		||||
 | 
			
		||||
linkaxes([ax1,ax2],'x');
 | 
			
		||||
xlim([freqs(1), freqs(end)]);
 | 
			
		||||
 | 
			
		||||
% Controller - Root Locus
 | 
			
		||||
 | 
			
		||||
Kiff_g1 = eye(3)*1/(1 + s/2/pi/20);
 | 
			
		||||
 | 
			
		||||
%% Root Locus for IFF
 | 
			
		||||
gains = logspace(9, 12, 200);
 | 
			
		||||
 | 
			
		||||
figure;
 | 
			
		||||
 | 
			
		||||
hold on;
 | 
			
		||||
plot(real(pole(G_fs)),  imag(pole(G_fs)),  'x', 'color', colors(1,:), ...
 | 
			
		||||
    'DisplayName', '$g = 0$');
 | 
			
		||||
plot(real(tzero(G_fs)), imag(tzero(G_fs)), 'o', 'color', colors(1,:), ...
 | 
			
		||||
    'HandleVisibility', 'off');
 | 
			
		||||
 | 
			
		||||
for g = gains
 | 
			
		||||
    clpoles = pole(feedback(G_fs, g*Kiff_g1, +1));
 | 
			
		||||
    plot(real(clpoles), imag(clpoles), '.', 'color', colors(1,:), ...
 | 
			
		||||
        'HandleVisibility', 'off');
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
% Optimal gain
 | 
			
		||||
g = 8e10;
 | 
			
		||||
clpoles = pole(feedback(G_fs, g*Kiff_g1, +1));
 | 
			
		||||
plot(real(clpoles), imag(clpoles), 'x', 'color', colors(2,:), ...
 | 
			
		||||
    'DisplayName', sprintf('$g=%.0e$', g));
 | 
			
		||||
hold off;
 | 
			
		||||
axis square;
 | 
			
		||||
xlim([-2700, 0]); ylim([0, 2700]);
 | 
			
		||||
xlabel('Real Part'); ylabel('Imaginary Part');
 | 
			
		||||
legend('location', 'northwest');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: fig:iff_root_locus
 | 
			
		||||
% #+caption: Root Locus plot for the IFF Control strategy
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% [[file:figs/iff_root_locus.png]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Integral Force Feedback Controller
 | 
			
		||||
Kiff = g*Kiff_g1;
 | 
			
		||||
 | 
			
		||||
% Damped Plant
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
clear io; io_i = 1;
 | 
			
		||||
 | 
			
		||||
%% Inputs
 | 
			
		||||
% Control Input {3x1} [N]
 | 
			
		||||
io(io_i) = linio([mdl, '/control_system'], 1, 'input');  io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% Outputs
 | 
			
		||||
% Force Sensor {3x1} [m]
 | 
			
		||||
io(io_i) = linio([mdl, '/DCM'], 1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% DCM Kinematics
 | 
			
		||||
load('mat/dcm_kinematics.mat');
 | 
			
		||||
 | 
			
		||||
%% Identification of the Open Loop plant
 | 
			
		||||
controller.type = 0; % Open Loop
 | 
			
		||||
G_ol = J_a_111*inv(J_s_111)*linearize(mdl, io);
 | 
			
		||||
G_ol.InputName  = {'u_ur',  'u_uh',  'u_d'};
 | 
			
		||||
G_ol.OutputName = {'d_ur',  'd_uh',  'd_d'};
 | 
			
		||||
 | 
			
		||||
%% Identification of the damped plant with IFF
 | 
			
		||||
controller.type = 1; % IFF
 | 
			
		||||
G_dp = J_a_111*inv(J_s_111)*linearize(mdl, io);
 | 
			
		||||
G_dp.InputName  = {'u_ur',  'u_uh',  'u_d'};
 | 
			
		||||
G_dp.OutputName = {'d_ur',  'd_uh',  'd_d'};
 | 
			
		||||
 | 
			
		||||
%% Comparison of the damped and undamped plant
 | 
			
		||||
figure;
 | 
			
		||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
 | 
			
		||||
 | 
			
		||||
ax1 = nexttile([2,1]);
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_ol(1,1), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'd - OL');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_ol(2,2), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'uh - OL');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_ol(3,3), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'ur - OL');
 | 
			
		||||
set(gca,'ColorOrderIndex',1)
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_dp(1,1), freqs, 'Hz'))), '--', ...
 | 
			
		||||
     'DisplayName', 'd - IFF');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_dp(2,2), freqs, 'Hz'))), '--', ...
 | 
			
		||||
     'DisplayName', 'uh - IFF');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_dp(3,3), freqs, 'Hz'))), '--', ...
 | 
			
		||||
     'DisplayName', 'ur - IFF');
 | 
			
		||||
for i = 1:2
 | 
			
		||||
    for j = i+1:3
 | 
			
		||||
        plot(freqs, abs(squeeze(freqresp(G_dp(i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
 | 
			
		||||
             'HandleVisibility', 'off');
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
 | 
			
		||||
ylim([1e-12, 1e-6]);
 | 
			
		||||
 | 
			
		||||
ax2 = nexttile;
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_ol(1,1), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_ol(2,2), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_ol(3,3), freqs, 'Hz'))));
 | 
			
		||||
set(gca,'ColorOrderIndex',1)
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dp(1,1), freqs, 'Hz'))), '--');
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dp(2,2), freqs, 'Hz'))), '--');
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dp(3,3), freqs, 'Hz'))), '--');
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
hold off;
 | 
			
		||||
yticks(-360:90:360);
 | 
			
		||||
ylim([-180, 0]);
 | 
			
		||||
 | 
			
		||||
linkaxes([ax1,ax2],'x');
 | 
			
		||||
xlim([freqs(1), freqs(end)]);
 | 
			
		||||
 | 
			
		||||
save('mat/Kiff.mat', 'Kiff');
 | 
			
		||||
							
								
								
									
										101
									
								
								matlab/dcm_active_damping_strain_gauges.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								matlab/dcm_active_damping_strain_gauges.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
% Matlab Init                                              :noexport:ignore:
 | 
			
		||||
 | 
			
		||||
%% dcm_active_damping_strain_gauges.m
 | 
			
		||||
% Active Damping using relative motion sensors (strain gauges)
 | 
			
		||||
 | 
			
		||||
%% Clear Workspace and Close figures
 | 
			
		||||
clear; close all; clc;
 | 
			
		||||
 | 
			
		||||
%% Intialize Laplace variable
 | 
			
		||||
s = zpk('s');
 | 
			
		||||
 | 
			
		||||
%% Path for functions, data and scripts
 | 
			
		||||
addpath('./mat/'); % Path for data
 | 
			
		||||
 | 
			
		||||
%% Simscape Model - Nano Hexapod
 | 
			
		||||
addpath('./STEPS/')
 | 
			
		||||
 | 
			
		||||
%% Initialize Parameters for Simscape model
 | 
			
		||||
controller.type = 0; % Open Loop Control
 | 
			
		||||
 | 
			
		||||
%% Options for Linearization
 | 
			
		||||
options = linearizeOptions;
 | 
			
		||||
options.SampleTime = 0;
 | 
			
		||||
 | 
			
		||||
%% Open Simulink Model
 | 
			
		||||
mdl = 'simscape_dcm';
 | 
			
		||||
 | 
			
		||||
open(mdl)
 | 
			
		||||
 | 
			
		||||
%% Colors for the figures
 | 
			
		||||
colors = colororder;
 | 
			
		||||
 | 
			
		||||
%% Frequency Vector
 | 
			
		||||
freqs = logspace(1, 3, 1000);
 | 
			
		||||
 | 
			
		||||
% Identification
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
clear io; io_i = 1;
 | 
			
		||||
 | 
			
		||||
%% Inputs
 | 
			
		||||
% Control Input {3x1} [N]
 | 
			
		||||
io(io_i) = linio([mdl, '/u'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
% % Stepper Displacement {3x1} [m]
 | 
			
		||||
% io(io_i) = linio([mdl, '/d'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% Outputs
 | 
			
		||||
% Strain Gauges {3x1} [m]
 | 
			
		||||
io(io_i) = linio([mdl, '/sg'], 1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% Extraction of the dynamics
 | 
			
		||||
G_sg = linearize(mdl, io);
 | 
			
		||||
 | 
			
		||||
G_sg.InputName  = {'u_ur',  'u_uh',  'u_d'};
 | 
			
		||||
G_sg.OutputName = {'sg_ur', 'sg_uh', 'sg_d'};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% | -1.4113e-13 |  1.0339e-13 |   3.774e-14 |
 | 
			
		||||
% |  1.0339e-13 | -1.4113e-13 |   3.774e-14 |
 | 
			
		||||
% |  3.7792e-14 |  3.7792e-14 | -7.5585e-14 |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Bode plot for the plant
 | 
			
		||||
figure;
 | 
			
		||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
 | 
			
		||||
 | 
			
		||||
ax1 = nexttile([2,1]);
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_sg(1,1), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'd');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_sg(2,2), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'uh');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_sg(3,3), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'ur');
 | 
			
		||||
for i = 1:2
 | 
			
		||||
    for j = i+1:3
 | 
			
		||||
        plot(freqs, abs(squeeze(freqresp(G_sg(i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
 | 
			
		||||
             'HandleVisibility', 'off');
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 2);
 | 
			
		||||
 | 
			
		||||
ax2 = nexttile;
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_sg(1,1), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_sg(2,2), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_sg(3,3), freqs, 'Hz'))));
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
hold off;
 | 
			
		||||
yticks(-360:90:360);
 | 
			
		||||
ylim([-180, 180]);
 | 
			
		||||
 | 
			
		||||
linkaxes([ax1,ax2],'x');
 | 
			
		||||
xlim([freqs(1), freqs(end)]);
 | 
			
		||||
							
								
								
									
										34
									
								
								matlab/dcm_hac_iff.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								matlab/dcm_hac_iff.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
% Matlab Init                                              :noexport:ignore:
 | 
			
		||||
 | 
			
		||||
%% dcm_hac_iff.m
 | 
			
		||||
% Development of the HAC-IFF control strategy
 | 
			
		||||
 | 
			
		||||
%% Clear Workspace and Close figures
 | 
			
		||||
clear; close all; clc;
 | 
			
		||||
 | 
			
		||||
%% Intialize Laplace variable
 | 
			
		||||
s = zpk('s');
 | 
			
		||||
 | 
			
		||||
%% Path for functions, data and scripts
 | 
			
		||||
addpath('./mat/'); % Path for data
 | 
			
		||||
 | 
			
		||||
%% Simscape Model - Nano Hexapod
 | 
			
		||||
addpath('./STEPS/')
 | 
			
		||||
 | 
			
		||||
%% Initialize Parameters for Simscape model
 | 
			
		||||
controller.type = 0; % Open Loop Control
 | 
			
		||||
 | 
			
		||||
%% Options for Linearization
 | 
			
		||||
options = linearizeOptions;
 | 
			
		||||
options.SampleTime = 0;
 | 
			
		||||
 | 
			
		||||
%% Open Simulink Model
 | 
			
		||||
mdl = 'simscape_dcm';
 | 
			
		||||
 | 
			
		||||
open(mdl)
 | 
			
		||||
 | 
			
		||||
%% Colors for the figures
 | 
			
		||||
colors = colororder;
 | 
			
		||||
 | 
			
		||||
%% Frequency Vector
 | 
			
		||||
freqs = logspace(1, 3, 1000);
 | 
			
		||||
							
								
								
									
										202
									
								
								matlab/dcm_identification.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								matlab/dcm_identification.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,202 @@
 | 
			
		||||
% Matlab Init                                              :noexport:ignore:
 | 
			
		||||
 | 
			
		||||
%% dcm_identification.m
 | 
			
		||||
% Extraction of system dynamics using Simscape model
 | 
			
		||||
 | 
			
		||||
%% Clear Workspace and Close figures
 | 
			
		||||
clear; close all; clc;
 | 
			
		||||
 | 
			
		||||
%% Intialize Laplace variable
 | 
			
		||||
s = zpk('s');
 | 
			
		||||
 | 
			
		||||
%% Path for functions, data and scripts
 | 
			
		||||
addpath('./mat/'); % Path for data
 | 
			
		||||
 | 
			
		||||
%% Simscape Model - Nano Hexapod
 | 
			
		||||
addpath('./STEPS/')
 | 
			
		||||
 | 
			
		||||
%% Initialize Parameters for Simscape model
 | 
			
		||||
controller.type = 0; % Open Loop Control
 | 
			
		||||
 | 
			
		||||
%% Options for Linearization
 | 
			
		||||
options = linearizeOptions;
 | 
			
		||||
options.SampleTime = 0;
 | 
			
		||||
 | 
			
		||||
%% Open Simulink Model
 | 
			
		||||
mdl = 'simscape_dcm';
 | 
			
		||||
 | 
			
		||||
open(mdl)
 | 
			
		||||
 | 
			
		||||
%% Colors for the figures
 | 
			
		||||
colors = colororder;
 | 
			
		||||
 | 
			
		||||
%% Frequency Vector
 | 
			
		||||
freqs = logspace(1, 3, 1000);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: fig:schematic_system_inputs_outputs
 | 
			
		||||
% #+caption: Dynamical system with inputs and outputs
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% [[file:figs/schematic_system_inputs_outputs.png]]
 | 
			
		||||
 | 
			
		||||
% The system is identified from the Simscape model.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
clear io; io_i = 1;
 | 
			
		||||
 | 
			
		||||
%% Inputs
 | 
			
		||||
% Control Input {3x1} [N]
 | 
			
		||||
io(io_i) = linio([mdl, '/control_system'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% Outputs
 | 
			
		||||
% Interferometers {3x1} [m]
 | 
			
		||||
io(io_i) = linio([mdl, '/DCM'], 1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
%% Extraction of the dynamics
 | 
			
		||||
G = linearize(mdl, io);
 | 
			
		||||
 | 
			
		||||
%% Input and Output names
 | 
			
		||||
G.InputName  = {'u_ur',  'u_uh',  'u_d'};
 | 
			
		||||
G.OutputName = {'int_111_1', 'int_111_2', 'int_111_3'};
 | 
			
		||||
 | 
			
		||||
% Plant in the frame of the fastjacks
 | 
			
		||||
 | 
			
		||||
load('mat/dcm_kinematics.mat');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: fig:schematic_jacobian_frame_fastjack
 | 
			
		||||
% #+caption: Use of Jacobian matrices to obtain the system in the frame of the fastjacks
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% [[file:figs/schematic_jacobian_frame_fastjack.png]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Compute the system in the frame of the fastjacks
 | 
			
		||||
G_pz = J_a_111*inv(J_s_111)*G;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: tab:dc_gain_plan_fj
 | 
			
		||||
% #+caption: DC gain of the plant in the frame of the fast jacks $\bm{G}_{\text{fj}}$
 | 
			
		||||
% #+attr_latex: :environment tabularx :width 0.5\linewidth :align ccc
 | 
			
		||||
% #+attr_latex: :center t :booktabs t
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% | 4.4407e-09 | 2.7656e-12 | 1.0132e-12 |
 | 
			
		||||
% | 2.7656e-12 | 4.4407e-09 | 1.0132e-12 |
 | 
			
		||||
% | 1.0109e-12 | 1.0109e-12 | 4.4424e-09 |
 | 
			
		||||
 | 
			
		||||
% The bode plot of $\bm{G}_{\text{fj}}(s)$ is shown in Figure [[fig:bode_plot_plant_fj]].
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Bode plot for the plant
 | 
			
		||||
figure;
 | 
			
		||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
 | 
			
		||||
 | 
			
		||||
ax1 = nexttile([2,1]);
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_pz(1,1), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'd');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_pz(2,2), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'uh');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_pz(3,3), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'ur');
 | 
			
		||||
for i = 1:2
 | 
			
		||||
    for j = i+1:3
 | 
			
		||||
        plot(freqs, abs(squeeze(freqresp(G_pz(i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
 | 
			
		||||
             'HandleVisibility', 'off');
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 3);
 | 
			
		||||
ylim([1e-13, 1e-6]);
 | 
			
		||||
 | 
			
		||||
ax2 = nexttile;
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_pz(1,1), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_pz(2,2), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_pz(3,3), freqs, 'Hz'))));
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
hold off;
 | 
			
		||||
yticks(-360:90:360);
 | 
			
		||||
ylim([-180, 180]);
 | 
			
		||||
 | 
			
		||||
linkaxes([ax1,ax2],'x');
 | 
			
		||||
xlim([freqs(1), freqs(end)]);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: fig:schematic_jacobian_frame_crystal
 | 
			
		||||
% #+caption: Use of Jacobian matrices to obtain the system in the frame of the crystal
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% [[file:figs/schematic_jacobian_frame_crystal.png]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
G_mr = inv(J_s_111)*G*inv(J_a_111');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% | 1.9978e-09 |  3.9657e-09 |  7.7944e-09 |
 | 
			
		||||
% | 3.9656e-09 |  8.4979e-08 | -1.5135e-17 |
 | 
			
		||||
% | 7.7944e-09 | -3.9252e-17 |   1.834e-07 |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Bode plot for the plant
 | 
			
		||||
figure;
 | 
			
		||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
 | 
			
		||||
 | 
			
		||||
ax1 = nexttile([2,1]);
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_mr(1,1), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'd');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_mr(2,2), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'uh');
 | 
			
		||||
plot(freqs, abs(squeeze(freqresp(G_mr(3,3), freqs, 'Hz'))), ...
 | 
			
		||||
     'DisplayName', 'ur');
 | 
			
		||||
for i = 1:2
 | 
			
		||||
    for j = i+1:3
 | 
			
		||||
        plot(freqs, abs(squeeze(freqresp(G_mr(i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
 | 
			
		||||
             'HandleVisibility', 'off');
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 2);
 | 
			
		||||
 | 
			
		||||
ax2 = nexttile;
 | 
			
		||||
hold on;
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_mr(1,1), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_mr(2,2), freqs, 'Hz'))));
 | 
			
		||||
plot(freqs, 180/pi*angle(squeeze(freqresp(G_mr(3,3), freqs, 'Hz'))));
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
hold off;
 | 
			
		||||
yticks(-360:90:360);
 | 
			
		||||
ylim([-180, 180]);
 | 
			
		||||
 | 
			
		||||
linkaxes([ax1,ax2],'x');
 | 
			
		||||
xlim([freqs(1), freqs(end)]);
 | 
			
		||||
 | 
			
		||||
%% Bode plot for the plant
 | 
			
		||||
fig = figure;
 | 
			
		||||
tiledlayout(3, 3, 'TileSpacing', 'Compact', 'Padding', 'None');
 | 
			
		||||
 | 
			
		||||
for i_out = 1:3
 | 
			
		||||
    for i_in = 1:3
 | 
			
		||||
        ax = nexttile;
 | 
			
		||||
        plot(freqs, abs(squeeze(freqresp(G_mr(i_out, i_in), freqs, 'Hz'))));
 | 
			
		||||
        set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
linkaxes(findall(fig, 'type', 'axes'),'xy');
 | 
			
		||||
xlim([freqs(1), freqs(end)]);
 | 
			
		||||
							
								
								
									
										98
									
								
								matlab/dcm_kinematics.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								matlab/dcm_kinematics.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
% Matlab Init                                              :noexport:ignore:
 | 
			
		||||
 | 
			
		||||
%% dcm_kinematics.m
 | 
			
		||||
% Computation of the DCM kinematics
 | 
			
		||||
 | 
			
		||||
%% Clear Workspace and Close figures
 | 
			
		||||
clear; close all; clc;
 | 
			
		||||
 | 
			
		||||
%% Intialize Laplace variable
 | 
			
		||||
s = zpk('s');
 | 
			
		||||
 | 
			
		||||
%% Path for functions, data and scripts
 | 
			
		||||
addpath('./mat/'); % Path for data
 | 
			
		||||
 | 
			
		||||
%% Simscape Model - Nano Hexapod
 | 
			
		||||
addpath('./STEPS/')
 | 
			
		||||
 | 
			
		||||
%% Colors for the figures
 | 
			
		||||
colors = colororder;
 | 
			
		||||
 | 
			
		||||
%% Frequency Vector
 | 
			
		||||
freqs = logspace(1, 3, 1000);
 | 
			
		||||
 | 
			
		||||
% Bragg Angle
 | 
			
		||||
 | 
			
		||||
%% Tested bragg angles
 | 
			
		||||
bragg = linspace(5, 80, 1000); % Bragg angle [deg]
 | 
			
		||||
d_off = 10.5e-3; % Wanted offset between x-rays [m]
 | 
			
		||||
 | 
			
		||||
%% Vertical Jack motion as a function of Bragg angle
 | 
			
		||||
dz = d_off./(2*cos(bragg*pi/180));
 | 
			
		||||
 | 
			
		||||
%% Jack motion as a function of Bragg angle
 | 
			
		||||
figure;
 | 
			
		||||
plot(bragg, 1e3*dz)
 | 
			
		||||
xlabel('Bragg angle [deg]'); ylabel('Jack Motion [mm]');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: fig:jack_motion_bragg_angle
 | 
			
		||||
% #+caption: Jack motion as a function of Bragg angle
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% [[file:figs/jack_motion_bragg_angle.png]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Required Jack stroke
 | 
			
		||||
ans = 1e3*(dz(end) - dz(1))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: fig:schematic_sensor_jacobian_inverse_kinematics
 | 
			
		||||
% #+caption: Inverse Kinematics - Interferometers
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% [[file:figs/schematic_sensor_jacobian_inverse_kinematics.png]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% From the Figure [[fig:sensor_111_crystal_points]], the inverse kinematics can be solved as follow (for small motion):
 | 
			
		||||
% \begin{equation}
 | 
			
		||||
% \bm{J}_{s,111}
 | 
			
		||||
% =
 | 
			
		||||
% \begin{bmatrix}
 | 
			
		||||
% 1 &  0.07 & -0.015 \\
 | 
			
		||||
% 1 &  0    &  0.015 \\
 | 
			
		||||
% 1 & -0.07 & -0.015
 | 
			
		||||
% \end{bmatrix}
 | 
			
		||||
% \end{equation}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Sensor Jacobian matrix for 111 crystal
 | 
			
		||||
J_s_111 = [1,  0.07, -0.015
 | 
			
		||||
           1,  0,     0.015
 | 
			
		||||
           1, -0.07, -0.015];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% #+name: fig:schematic_sensor_jacobian_inverse_kinematics
 | 
			
		||||
% #+caption: Inverse Kinematics - Actuators
 | 
			
		||||
% #+RESULTS:
 | 
			
		||||
% [[file:figs/schematic_actuator_jacobian_inverse_kinematics.png]]
 | 
			
		||||
 | 
			
		||||
% Based on the geometry in Figure [[fig:actuator_jacobian_111_points]], we obtain:
 | 
			
		||||
% \begin{equation}
 | 
			
		||||
% \bm{J}_{a,111}
 | 
			
		||||
% =
 | 
			
		||||
% \begin{bmatrix}
 | 
			
		||||
% 1 &  0.14 & -0.1525 \\
 | 
			
		||||
% 1 &  0.14 &  0.0675 \\
 | 
			
		||||
% 1 & -0.14 & -0.0425
 | 
			
		||||
% \end{bmatrix}
 | 
			
		||||
% \end{equation}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Actuator Jacobian - 111 crystal
 | 
			
		||||
J_a_111 = [1,  0.14, -0.1525
 | 
			
		||||
           1,  0.14,  0.0675
 | 
			
		||||
           1, -0.14, -0.0425];
 | 
			
		||||
 | 
			
		||||
save('mat/dcm_kinematics.mat', 'J_a_111', 'J_s_111')
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								matlab/mat/Kiff.mat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/mat/Kiff.mat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								matlab/mat/dcm_kinematics.mat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/mat/dcm_kinematics.mat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								matlab/simscape_dcm.slx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/simscape_dcm.slx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user