Reworked IFF section
No files matched your search
|
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 324 KiB |
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 38 KiB |
@@ -45,7 +45,6 @@ In this document, Finite Element Models (FEM) of parts of the Nano-Hexapod are d
|
||||
A first geometry of a Flexible joint is modelled and its characteristics are identified from the Stiffness matrix as well as from the Simscape model.
|
||||
- Section [[sec:flexor_025]]:
|
||||
An optimized flexible joint is developed for the Nano-Hexapod and is then imported in a Simscape model.
|
||||
- Section [[sec:integral_force_feedback]]:
|
||||
- Section [[sec:strut_fem]]:
|
||||
A super element of a complete strut is exported.
|
||||
|
||||
@@ -91,8 +90,8 @@ The remote point used are also shown in this figure.
|
||||
** Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates
|
||||
We first extract the stiffness and mass matrices.
|
||||
#+begin_src matlab
|
||||
K = readmatrix('mat_K.CSV');
|
||||
M = readmatrix('mat_M.CSV');
|
||||
K = readmatrix('APA300ML_mat_K.CSV');
|
||||
M = readmatrix('APA300ML_mat_M.CSV');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||
@@ -133,7 +132,7 @@ We first extract the stiffness and mass matrices.
|
||||
|
||||
Then, we extract the coordinates of the interface nodes.
|
||||
#+begin_src matlab
|
||||
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('out_nodes_3D.txt');
|
||||
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('APA300ML_out_nodes_3D.txt');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||
@@ -804,6 +803,203 @@ The dynamics of the Simscape simplified model is identified and compared with th
|
||||
#+RESULTS:
|
||||
[[file:figs/apa300ml_comp_simpler_simscape.png]]
|
||||
|
||||
** Integral Force Feedback
|
||||
In this section, Integral Force Feedback control architecture is applied on the APA300ML.
|
||||
|
||||
First, the plant (dynamics from voltage actuator to voltage sensor is identified).
|
||||
#+begin_src matlab :exports none
|
||||
Kiff = tf(0);
|
||||
#+end_src
|
||||
|
||||
The payload mass is set to 10kg.
|
||||
#+begin_src matlab
|
||||
m = 10;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
%% Name of the Simulink File
|
||||
mdl = 'APA300ML_IFF';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/w'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Fd'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/z'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/APA300ML'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
|
||||
G_ol = linearize(mdl, io);
|
||||
G_ol.InputName = {'w', 'f', 'F'};
|
||||
G_ol.OutputName = {'x1', 'Fs'};
|
||||
|
||||
G = G_ol({'Fs'}, {'f'});
|
||||
#+end_src
|
||||
|
||||
The obtained dynamics is shown in Figure [[fig:piezo_amplified_iff_plant]].
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(1, 5, 1000);
|
||||
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G, freqs, 'Hz')))));
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
yticks(-360:90:360);
|
||||
ylim([-390 30]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/piezo_amplified_iff_plant.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:piezo_amplified_iff_plant
|
||||
#+caption: IFF Plant
|
||||
#+RESULTS:
|
||||
[[file:figs/piezo_amplified_iff_plant.png]]
|
||||
|
||||
The controller is defined below and the loop gain is shown in Figure [[fig:piezo_amplified_iff_loop_gain]].
|
||||
#+begin_src matlab
|
||||
Kiff = -1e3/s;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(1, 5, 1000);
|
||||
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G*Kiff, freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G*Kiff, freqs, 'Hz')))));
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
yticks(-360:90:360);
|
||||
ylim([-180 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/piezo_amplified_iff_loop_gain.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:piezo_amplified_iff_loop_gain
|
||||
#+caption: IFF Loop Gain
|
||||
#+RESULTS:
|
||||
[[file:figs/piezo_amplified_iff_loop_gain.png]]
|
||||
|
||||
Now the closed-loop system is identified again and compare with the open loop system in Figure [[fig:piezo_amplified_iff_comp]].
|
||||
|
||||
It is the expected behavior as shown in the Figure [[fig:souleille18_results]] (from cite:souleille18_concep_activ_mount_space_applic).
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/w'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Fd'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/z'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/APA300ML'], 1, 'output'); io_i = io_i + 1;
|
||||
|
||||
Giff = linearize(mdl, io);
|
||||
Giff.InputName = {'w', 'f', 'F'};
|
||||
Giff.OutputName = {'x1', 'Fs'};
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(0, 3, 1000);
|
||||
|
||||
figure;
|
||||
tiledlayout(2, 3, 'TileSpacing', 'None', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G_ol('x1', 'w'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('x1', 'w'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
set(gca, 'XTickLabel',[]); ylabel('$x_1/w$ [m/m]')
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G_ol('x1', 'f'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('x1', 'f'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
set(gca, 'XTickLabel',[]); ylabel('$x_1/f$ [m/N]');
|
||||
|
||||
ax3 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G_ol('x1', 'F'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('x1', 'F'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
set(gca, 'XTickLabel',[]); ylabel('$x_1/F$ [m/N]');
|
||||
|
||||
ax4 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G_ol('Fs', 'w'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('Fs', 'w'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('$F_s/w$ [N/m]');
|
||||
|
||||
ax5 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G_ol('Fs', 'f'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('Fs', 'f'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('$F_s/f$ [N/N]');
|
||||
|
||||
ax6 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G_ol('Fs', 'F'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('Fs', 'F'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('$F_s/F$ [N/N]');
|
||||
|
||||
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/piezo_amplified_iff_comp.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:piezo_amplified_iff_comp
|
||||
#+caption: OL and CL transfer functions
|
||||
#+RESULTS:
|
||||
[[file:figs/piezo_amplified_iff_comp.png]]
|
||||
|
||||
#+name: fig:souleille18_results
|
||||
#+caption: Results obtained in cite:souleille18_concep_activ_mount_space_applic
|
||||
[[file:figs/souleille18_results.png]]
|
||||
|
||||
|
||||
* First Flexible Joint Geometry
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle matlab/flexor_ID16.m
|
||||
@@ -1074,8 +1270,8 @@ The obtained geometry is shown in Figure [[fig:optimal_flexor]].
|
||||
** Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates
|
||||
We first extract the stiffness and mass matrices.
|
||||
#+begin_src matlab
|
||||
K = readmatrix('mat_K.CSV');
|
||||
M = readmatrix('mat_M.CSV');
|
||||
K = readmatrix('flex025_mat_K.CSV');
|
||||
M = readmatrix('flex025_mat_M.CSV');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||
@@ -1116,7 +1312,7 @@ We first extract the stiffness and mass matrices.
|
||||
|
||||
Then, we extract the coordinates of the interface nodes.
|
||||
#+begin_src matlab
|
||||
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('out_nodes_3D.txt');
|
||||
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('flex025_out_nodes_3D.txt');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||
@@ -1264,276 +1460,40 @@ The two obtained dynamics are compared in Figure
|
||||
#+RESULTS:
|
||||
[[file:figs/flexor_ID16_compare_bushing_joint.png]]
|
||||
|
||||
* Force Sensor and Integral Force Feedback with an Amplified Piezoelectric Actuator
|
||||
<<sec:integral_force_feedback>>
|
||||
** Introduction :ignore:
|
||||
In this section, we try to replicate the results obtained in cite:souleille18_concep_activ_mount_space_applic.
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Comparison with a stiffer Flexible Joint
|
||||
The stiffness matrix with the flexible joint with a "hinge" size of 0.50mm is loaded.
|
||||
#+begin_src matlab
|
||||
addpath('./data/piezo_amplified_IFF/');
|
||||
K_050 = readmatrix('flex050_mat_K.CSV');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
open('piezo_amplified_IFF');
|
||||
Its parameters are compared with the Flexible Joint with a size of 0.25mm in the table below.
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||
data2orgtable([1e-6*K(3,3), 1e-6*K(2,2), K(4,4), K(5,5), K(6,6) ; 1e-6*K_050(3,3), 1e-6*K_050(2,2), K_050(4,4), K_050(5,5), K_050(6,6)]', {'Axial Stiffness Dz [N/um]', 'Shear Stiffness [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Caracteristic*', '*0.25 mm*', '*0.50 mm*'}, ' %.1f ');
|
||||
#+end_src
|
||||
|
||||
** Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates
|
||||
We first extract the stiffness and mass matrices.
|
||||
#+begin_src matlab
|
||||
K = extractMatrix('piezo_amplified_IFF_K.txt');
|
||||
M = extractMatrix('piezo_amplified_IFF_M.txt');
|
||||
#+end_src
|
||||
|
||||
Then, we extract the coordinates of the interface nodes.
|
||||
#+begin_src matlab
|
||||
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('piezo_amplified_IFF.txt');
|
||||
#+end_src
|
||||
|
||||
** IFF Plant
|
||||
The transfer function from the force actuator to the force sensor is identified and shown in Figure [[fig:piezo_amplified_iff_plant]].
|
||||
|
||||
#+begin_src matlab
|
||||
Kiff = tf(0);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
m = 0;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
%% Name of the Simulink File
|
||||
mdl = 'piezo_amplified_IFF';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Kiff'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/G'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
|
||||
Gf = linearize(mdl, io);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
m = 10;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
Gfm = linearize(mdl, io);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(1, 5, 1000);
|
||||
|
||||
figure;
|
||||
|
||||
ax1 = subplot(2,1,1);
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(Gf, freqs, 'Hz'))), '-');
|
||||
plot(freqs, abs(squeeze(freqresp(Gfm, freqs, 'Hz'))), '-');
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
|
||||
ax2 = subplot(2,1,2);
|
||||
hold on;
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gf, freqs, 'Hz')))), '-', ...
|
||||
'DisplayName', '$m = 0kg$');
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gfm, freqs, 'Hz')))), '-', ...
|
||||
'DisplayName', '$m = 10kg$');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
yticks(-360:90:360);
|
||||
ylim([-390 30]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
legend('location', 'southwest');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/piezo_amplified_iff_plant.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:piezo_amplified_iff_plant
|
||||
#+caption: IFF Plant
|
||||
#+RESULTS:
|
||||
[[file:figs/piezo_amplified_iff_plant.png]]
|
||||
|
||||
** IFF controller
|
||||
The controller is defined and the loop gain is shown in Figure [[fig:piezo_amplified_iff_loop_gain]].
|
||||
#+begin_src matlab
|
||||
Kiff = -1e12/s;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(1, 5, 1000);
|
||||
|
||||
figure;
|
||||
|
||||
ax1 = subplot(2,1,1);
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(Gf*Kiff, freqs, 'Hz'))), '-');
|
||||
plot(freqs, abs(squeeze(freqresp(Gfm*Kiff, freqs, 'Hz'))), '-');
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
|
||||
ax2 = subplot(2,1,2);
|
||||
hold on;
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gf*Kiff, freqs, 'Hz')))), '-', ...
|
||||
'DisplayName', '$m = 0kg$');
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gfm*Kiff, freqs, 'Hz')))), '-', ...
|
||||
'DisplayName', '$m = 10kg$');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
yticks(-360:90:360);
|
||||
ylim([-180 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
legend('location', 'southwest');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/piezo_amplified_iff_loop_gain.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:piezo_amplified_iff_loop_gain
|
||||
#+caption: IFF Loop Gain
|
||||
#+RESULTS:
|
||||
[[file:figs/piezo_amplified_iff_loop_gain.png]]
|
||||
|
||||
** Closed Loop System
|
||||
#+begin_src matlab
|
||||
m = 10;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
Kiff = -1e12/s;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
%% Name of the Simulink File
|
||||
mdl = 'piezo_amplified_IFF';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Dw'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Fd'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/d'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/G'], 1, 'output'); io_i = io_i + 1;
|
||||
|
||||
Giff = linearize(mdl, io);
|
||||
Giff.InputName = {'w', 'f', 'F'};
|
||||
Giff.OutputName = {'x1', 'Fs'};
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
Kiff = tf(0);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {'w', 'f', 'F'};
|
||||
G.OutputName = {'x1', 'Fs'};
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(1, 3, 1000);
|
||||
|
||||
figure;
|
||||
|
||||
ax1 = subplot(2, 3, 1);
|
||||
title('$\displaystyle \frac{x_1}{w}$')
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G('x1', 'w'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('x1', 'w'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/m]');xlabel('Frequency [Hz]');
|
||||
|
||||
ax2 = subplot(2, 3, 2);
|
||||
title('$\displaystyle \frac{x_1}{f}$')
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G('x1', 'f'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('x1', 'f'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]');xlabel('Frequency [Hz]');
|
||||
|
||||
ax3 = subplot(2, 3, 3);
|
||||
title('$\displaystyle \frac{x_1}{F}$')
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G('x1', 'F'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('x1', 'F'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]');xlabel('Frequency [Hz]');
|
||||
|
||||
ax4 = subplot(2, 3, 4);
|
||||
title('$\displaystyle \frac{F_s}{w}$')
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G('Fs', 'w'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('Fs', 'w'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/m]');xlabel('Frequency [Hz]');
|
||||
|
||||
ax5 = subplot(2, 3, 5);
|
||||
title('$\displaystyle \frac{F_s}{f}$')
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G('Fs', 'f'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('Fs', 'f'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]');xlabel('Frequency [Hz]');
|
||||
|
||||
ax6 = subplot(2, 3, 6);
|
||||
title('$\displaystyle \frac{F_s}{F}$')
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G('Fs', 'F'), freqs, 'Hz'))));
|
||||
plot(freqs, abs(squeeze(freqresp(Giff('Fs', 'F'), freqs, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
|
||||
|
||||
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/piezo_amplified_iff_comp.pdf', 'width', 1500, 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:piezo_amplified_iff_comp
|
||||
#+caption: OL and CL transfer functions
|
||||
#+RESULTS:
|
||||
[[file:figs/piezo_amplified_iff_comp.png]]
|
||||
|
||||
|
||||
#+name: fig:souleille18_results
|
||||
#+caption: Results obtained in cite:souleille18_concep_activ_mount_space_applic
|
||||
[[file:figs/souleille18_results.png]]
|
||||
| *Caracteristic* | *0.25 mm* | *0.50 mm* |
|
||||
|-------------------------------+-----------+-----------|
|
||||
| Axial Stiffness Dz [N/um] | 94.0 | 124.7 |
|
||||
| Shear Stiffness [N/um] | 12.7 | 25.8 |
|
||||
| Bending Stiffness Rx [Nm/rad] | 4.8 | 26.0 |
|
||||
| Bending Stiffness Ry [Nm/rad] | 4.8 | 26.0 |
|
||||
| Torsion Stiffness Rz [Nm/rad] | 260.2 | 538.0 |
|
||||
|
||||
* Complete Strut with Encoder
|
||||
<<sec:strut_fem>>
|
||||
** Introduction
|
||||
|
||||
Now, the full nano-hexapod strut is modelled using Ansys.
|
||||
|
||||
The 3D as well as the interface nodes are shown in Figure [[fig:strut_encoder_points3]].
|
||||
|
||||
#+name: fig:strut_encoder_points3
|
||||
#+caption: Interface points
|
||||
[[file:data/strut_encoder/points3.jpg]]
|
||||
[[file:figs/strut_fem_nodes.jpg]]
|
||||
|
||||
Flexible joints have 0.25mm width.
|
||||
The flexible joints used have a 0.25mm width size.
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
|
||||
|
500 Internal Server Error
An error occurred: An error occurred Gitea Version: 28.1.0 |