Compare commits

..

No commits in common. "9436d48cc1a7e6a72033afc79a6358917fded4e6" and "d02aca0547b4d76231efa2104211d0d54bb38922" have entirely different histories.

16 changed files with 9 additions and 83 deletions

View File

@ -1,18 +0,0 @@
#!/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

View File

Before

Width:  |  Height:  |  Size: 338 KiB

After

Width:  |  Height:  |  Size: 338 KiB

View File

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 241 KiB

View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 229 KiB

View File

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View File

Before

Width:  |  Height:  |  Size: 321 KiB

After

Width:  |  Height:  |  Size: 321 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 265 KiB

After

Width:  |  Height:  |  Size: 265 KiB

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

Before

Width:  |  Height:  |  Size: 435 KiB

After

Width:  |  Height:  |  Size: 435 KiB

View File

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

View File

@ -221,19 +221,6 @@ 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
@ -316,9 +303,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 - VC Kiff_vc = 1/(s + 0.1*sqrt(1e4/(mn+ms)))*eye(2); % IFF
Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF - MD Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF
Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF - PZ Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF
%% General Configuration %% General Configuration
model_config = struct(); model_config = struct();
@ -405,19 +392,6 @@ 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));

View File

@ -209,7 +209,7 @@ hold off;
yticks(-360:90:360); yticks(-360:90:360);
ylim([ -200, 20]); ylim([ -200, 20]);
linkaxes([ax1,ax2],'x'); linkaxes([ax,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]);

View File

@ -2853,7 +2853,7 @@ exportFig('figs/rotating_nano_hexapod_dynamics_pz.pdf', 'width', 'third', 'heigh
#+end_subfigure #+end_subfigure
#+end_figure #+end_figure
** Optimal IFF with a High-Pass Filter ** Optimal IFF with a High-Pass Filter
Integral Force Feedback with an added high-pass filter is applied to the three nano-hexapods. Integral Force Feedback with an added high-pass filter is applied to the three nano-hexapods.
First, the parameters ($\omega_i$ and $g$) of the IFF controller that yield the best simultaneous damping are determined from Figure ref:fig:rotating_iff_hpf_nass_optimal_gain. First, the parameters ($\omega_i$ and $g$) of the IFF controller that yield the best simultaneous damping are determined from Figure ref:fig:rotating_iff_hpf_nass_optimal_gain.
The IFF parameters are chosen as follows: The IFF parameters are chosen as follows:
@ -2912,21 +2912,6 @@ 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;
@ -3081,9 +3066,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 - VC Kiff_vc = 1/(s + 0.1*sqrt(1e4/(mn+ms)))*eye(2); % IFF
Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF - MD Kiff_md = 1/(s + 0.1*sqrt(1e6/(mn+ms)))*eye(2); % IFF
Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF - PZ Kiff_pz = 1/(s + 0.1*sqrt(1e8/(mn+ms)))*eye(2); % IFF
%% General Configuration %% General Configuration
model_config = struct(); model_config = struct();
@ -3171,21 +3156,6 @@ 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));
@ -3869,7 +3839,7 @@ hold off;
yticks(-360:90:360); yticks(-360:90:360);
ylim([ -200, 20]); ylim([ -200, 20]);
linkaxes([ax1,ax2],'x'); linkaxes([ax,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