Compare commits
2 Commits
d02aca0547
...
9436d48cc1
Author | SHA1 | Date | |
---|---|---|---|
9436d48cc1 | |||
6c1b878bb8 |
18
figs/inkscape/convert_svg.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Directory containing SVG files
|
||||||
|
INPUT_DIR="."
|
||||||
|
|
||||||
|
# Loop through all SVG files in the directory
|
||||||
|
for svg_file in "$INPUT_DIR"/*.svg; do
|
||||||
|
# Check if there are SVG files in the directory
|
||||||
|
if [ -f "$svg_file" ]; then
|
||||||
|
# Output PDF file name
|
||||||
|
pdf_file="../${svg_file%.svg}.pdf"
|
||||||
|
png_file="../${svg_file%.svg}"
|
||||||
|
|
||||||
|
# Convert SVG to PDF using Inkscape
|
||||||
|
inkscape "$svg_file" --export-filename="$pdf_file" && \
|
||||||
|
pdftocairo -png -singlefile -cropbox "$pdf_file" "$png_file"
|
||||||
|
fi
|
||||||
|
done
|
Before Width: | Height: | Size: 338 KiB After Width: | Height: | Size: 338 KiB |
Before Width: | Height: | Size: 241 KiB After Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |
Before Width: | Height: | Size: 229 KiB After Width: | Height: | Size: 229 KiB |
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 321 KiB After Width: | Height: | Size: 321 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 265 KiB After Width: | Height: | Size: 265 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 435 KiB After Width: | Height: | Size: 435 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
@ -221,6 +221,19 @@ i_iff_hpf_md = i_iff_hpf_md(end)+1;
|
|||||||
i_iff_hpf_pz = find(opt_iff_hpf_xi_pz > 0.95*max(opt_iff_hpf_xi_pz));
|
i_iff_hpf_pz = find(opt_iff_hpf_xi_pz > 0.95*max(opt_iff_hpf_xi_pz));
|
||||||
i_iff_hpf_pz = i_iff_hpf_pz(end)+1;
|
i_iff_hpf_pz = i_iff_hpf_pz(end)+1;
|
||||||
|
|
||||||
|
%% Define the obtained controllers
|
||||||
|
Kiff_hpf_vc = Kiff*opt_iff_hpf_gain_vc(i_iff_hpf_vc);
|
||||||
|
Kiff_hpf_vc.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_hpf_vc.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_hpf_md = Kiff*opt_iff_hpf_gain_md(i_iff_hpf_md);
|
||||||
|
Kiff_hpf_md.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_hpf_md.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_hpf_pz = Kiff*opt_iff_hpf_gain_pz(i_iff_hpf_pz);
|
||||||
|
Kiff_hpf_pz.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_hpf_pz.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
%% Optimal modified IFF parameters that yields maximum simultaneous damping
|
%% Optimal modified IFF parameters that yields maximum simultaneous damping
|
||||||
figure;
|
figure;
|
||||||
yyaxis left
|
yyaxis left
|
||||||
@ -303,9 +316,9 @@ mn = 15; % Nano-Hexapod mass [kg]
|
|||||||
ms = 1; % Sample Mass [kg]
|
ms = 1; % Sample Mass [kg]
|
||||||
|
|
||||||
%% IFF Controller
|
%% IFF Controller
|
||||||
Kiff_vc = 1/(s + 0.1*sqrt(1e4/(mn+ms)))*eye(2); % IFF
|
Kiff_vc = 1/(s + 0.1*sqrt(1e4/(mn+ms)))*eye(2); % IFF - VC
|
||||||
Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF
|
Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF - MD
|
||||||
Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF
|
Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF - PZ
|
||||||
|
|
||||||
%% General Configuration
|
%% General Configuration
|
||||||
model_config = struct();
|
model_config = struct();
|
||||||
@ -392,6 +405,19 @@ for kp_i = 1:length(kps_pz)
|
|||||||
opt_iff_kp_gain_pz(kp_i) = g_opt;
|
opt_iff_kp_gain_pz(kp_i) = g_opt;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
%% Define the obtained controllers
|
||||||
|
Kiff_kp_vc = Kiff_vc*opt_iff_kp_gain_vc(i_kp_vc);
|
||||||
|
Kiff_kp_vc.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_kp_vc.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_kp_md = Kiff_md*opt_iff_kp_gain_md(i_kp_md);
|
||||||
|
Kiff_kp_md.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_kp_md.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_kp_pz = Kiff_pz*opt_iff_kp_gain_pz(i_kp_pz);
|
||||||
|
Kiff_kp_pz.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_kp_pz.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
%% Find result with wanted parallel stiffness
|
%% Find result with wanted parallel stiffness
|
||||||
[~, i_kp_vc] = min(abs(kps_vc - 1e3));
|
[~, i_kp_vc] = min(abs(kps_vc - 1e3));
|
||||||
[~, i_kp_md] = min(abs(kps_md - 1e4));
|
[~, i_kp_md] = min(abs(kps_md - 1e4));
|
||||||
|
@ -209,7 +209,7 @@ hold off;
|
|||||||
yticks(-360:90:360);
|
yticks(-360:90:360);
|
||||||
ylim([ -200, 20]);
|
ylim([ -200, 20]);
|
||||||
|
|
||||||
linkaxes([ax,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([freqs_vc(1), freqs_vc(end)]);
|
xlim([freqs_vc(1), freqs_vc(end)]);
|
||||||
xticks([1e-1, 1e0, 1e1]);
|
xticks([1e-1, 1e0, 1e1]);
|
||||||
|
|
||||||
|
@ -2912,6 +2912,21 @@ i_iff_hpf_pz = find(opt_iff_hpf_xi_pz > 0.95*max(opt_iff_hpf_xi_pz));
|
|||||||
i_iff_hpf_pz = i_iff_hpf_pz(end)+1;
|
i_iff_hpf_pz = i_iff_hpf_pz(end)+1;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Define the obtained controllers
|
||||||
|
Kiff_hpf_vc = Kiff*opt_iff_hpf_gain_vc(i_iff_hpf_vc);
|
||||||
|
Kiff_hpf_vc.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_hpf_vc.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_hpf_md = Kiff*opt_iff_hpf_gain_md(i_iff_hpf_md);
|
||||||
|
Kiff_hpf_md.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_hpf_md.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_hpf_pz = Kiff*opt_iff_hpf_gain_pz(i_iff_hpf_pz);
|
||||||
|
Kiff_hpf_pz.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_hpf_pz.OutputName = {'Fu', 'Fv'};
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
%% Optimal modified IFF parameters that yields maximum simultaneous damping
|
%% Optimal modified IFF parameters that yields maximum simultaneous damping
|
||||||
figure;
|
figure;
|
||||||
@ -3066,9 +3081,9 @@ mn = 15; % Nano-Hexapod mass [kg]
|
|||||||
ms = 1; % Sample Mass [kg]
|
ms = 1; % Sample Mass [kg]
|
||||||
|
|
||||||
%% IFF Controller
|
%% IFF Controller
|
||||||
Kiff_vc = 1/(s + 0.1*sqrt(1e4/(mn+ms)))*eye(2); % IFF
|
Kiff_vc = 1/(s + 0.1*sqrt(1e4/(mn+ms)))*eye(2); % IFF - VC
|
||||||
Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF
|
Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF - MD
|
||||||
Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF
|
Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF - PZ
|
||||||
|
|
||||||
%% General Configuration
|
%% General Configuration
|
||||||
model_config = struct();
|
model_config = struct();
|
||||||
@ -3156,6 +3171,21 @@ for kp_i = 1:length(kps_pz)
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Define the obtained controllers
|
||||||
|
Kiff_kp_vc = Kiff_vc*opt_iff_kp_gain_vc(i_kp_vc);
|
||||||
|
Kiff_kp_vc.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_kp_vc.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_kp_md = Kiff_md*opt_iff_kp_gain_md(i_kp_md);
|
||||||
|
Kiff_kp_md.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_kp_md.OutputName = {'Fu', 'Fv'};
|
||||||
|
|
||||||
|
Kiff_kp_pz = Kiff_pz*opt_iff_kp_gain_pz(i_kp_pz);
|
||||||
|
Kiff_kp_pz.InputName = {'fu', 'fv'};
|
||||||
|
Kiff_kp_pz.OutputName = {'Fu', 'Fv'};
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Find result with wanted parallel stiffness
|
%% Find result with wanted parallel stiffness
|
||||||
[~, i_kp_vc] = min(abs(kps_vc - 1e3));
|
[~, i_kp_vc] = min(abs(kps_vc - 1e3));
|
||||||
@ -3839,7 +3869,7 @@ hold off;
|
|||||||
yticks(-360:90:360);
|
yticks(-360:90:360);
|
||||||
ylim([ -200, 20]);
|
ylim([ -200, 20]);
|
||||||
|
|
||||||
linkaxes([ax,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([freqs_vc(1), freqs_vc(end)]);
|
xlim([freqs_vc(1), freqs_vc(end)]);
|
||||||
xticks([1e-1, 1e0, 1e1]);
|
xticks([1e-1, 1e0, 1e1]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|