New simulations with Ty scans and Dh offset
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 111 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_Dh_offset_F.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_Dh_offset_F.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_Dh_offset_dL.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_Dh_offset_dL.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_Dh_offset_disp_error.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_Dh_offset_disp_error.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_Dy_scans_F.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_Dy_scans_F.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_Dy_scans_dL.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_Dy_scans_dL.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_Dy_scans_disp_error.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_Dy_scans_disp_error.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_L_act_force.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_L_act_force.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
docs/figs/opt_stiff_hac_dvf_L_act_stroke.pdf
Normal file
BIN
docs/figs/opt_stiff_hac_dvf_L_act_stroke.png
Normal file
After Width: | Height: | Size: 169 KiB |
@ -2,7 +2,6 @@
|
||||
#+SETUPFILE: ./setup/org-setup-file.org
|
||||
|
||||
* Introduction :ignore:
|
||||
|
||||
* Low Authority Control - Decentralized Direct Velocity Feedback
|
||||
<<sec:lac_dvf>>
|
||||
** Introduction :ignore:
|
||||
@ -1037,7 +1036,7 @@ exportFig('figs/opt_stiff_primary_control_L_cas_tot.pdf', 'width', 'full', 'heig
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_primary_control_L_cas_tot.png]]
|
||||
|
||||
** Simulations
|
||||
** Simulations of Tomography Experiment
|
||||
Let's now simulate a tomography experiment.
|
||||
To do so, we include all disturbances except vibrations of the translation stage.
|
||||
#+begin_src matlab
|
||||
@ -1365,11 +1364,325 @@ exportFig('figs/opt_stiff_hac_dvf_L_pos_error.pdf', 'width', 'full', 'height', '
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_L_pos_error.png]]
|
||||
|
||||
** Actuator Stroke and Forces
|
||||
#+begin_src matlab :exports none
|
||||
load('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L', 'Ms');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(hac_dvf_L{i}.u.Time, hac_dvf_L{i}.u.Data(:,1), ...
|
||||
'DisplayName', sprintf('$m = %.0f kg$', Ms(i)));
|
||||
for j = 2:6
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(hac_dvf_L{i}.u.Time, hac_dvf_L{i}.u.Data(:,j), ...
|
||||
'HandleVisibility', 'off');
|
||||
end
|
||||
end
|
||||
xlim([0.5, inf]);
|
||||
xlabel('Time [s]'); ylabel('Actuator Force [N]');
|
||||
legend('location', 'northeast');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_L_act_force.pdf', 'width', 'full', 'height', 'tall')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_L_act_force
|
||||
#+caption: Force applied by the actuator during the simulation
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_L_act_force.png]]
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(hac_dvf_L{i}.yn.Dnlm.Time, hac_dvf_L{i}.yn.Dnlm.Data(:,1), ...
|
||||
'DisplayName', sprintf('$m = %.0f kg$', Ms(i)));
|
||||
for j = 2:6
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(hac_dvf_L{i}.yn.Dnlm.Time, hac_dvf_L{i}.yn.Dnlm.Data(:,j), ...
|
||||
'HandleVisibility', 'off');
|
||||
end
|
||||
end
|
||||
xlim([0.5, inf]);
|
||||
xlabel('Time [s]'); ylabel('Actuator Stroke [m]');
|
||||
legend('location', 'northeast');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_L_act_stroke.pdf', 'width', 'full', 'height', 'tall')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_L_act_stroke
|
||||
#+caption: Leg's stroke during the simulation
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_L_act_stroke.png]]
|
||||
|
||||
** Conclusion
|
||||
#+begin_important
|
||||
|
||||
#+end_important
|
||||
|
||||
* Further More complex simulations
|
||||
** Simulation with Micro-Hexapod Offset
|
||||
*** Simulation
|
||||
The micro-hexapod is inducing a 10mm offset of the sample center of mass with the rotation axis.
|
||||
A tomography experiment is then simulated.
|
||||
|
||||
#+begin_src matlab
|
||||
initializeDisturbances();
|
||||
initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'all');
|
||||
|
||||
initializeSample('mass', 1, 'freq', 200);
|
||||
initializeMicroHexapod('AP', [10e-3 0 0]);
|
||||
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
||||
'Dh_pos', [10e-3; 0; 0; 0; 0; 0]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '3');
|
||||
sim('nass_model');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
hac_dvf_L_Dh = simout;
|
||||
save('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L_Dh', '-append');
|
||||
#+end_src
|
||||
|
||||
*** Results
|
||||
#+begin_src matlab :exports none
|
||||
load('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L_Dh');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
ax1 = subplot(2, 3, 1);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dh.Em.En.Time, hac_dvf_L_Dh.Em.En.Data(:, 1), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Dx [m]');
|
||||
|
||||
ax2 = subplot(2, 3, 2);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dh.Em.En.Time, hac_dvf_L_Dh.Em.En.Data(:, 2), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Dy [m]');
|
||||
|
||||
ax3 = subplot(2, 3, 3);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dh.Em.En.Time, hac_dvf_L_Dh.Em.En.Data(:, 3), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Dz [m]');
|
||||
|
||||
ax4 = subplot(2, 3, 4);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dh.Em.En.Time, hac_dvf_L_Dh.Em.En.Data(:, 4), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Rx [rad]');
|
||||
|
||||
ax5 = subplot(2, 3, 5);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dh.Em.En.Time, hac_dvf_L_Dh.Em.En.Data(:, 5), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Ry [rad]');
|
||||
|
||||
ax6 = subplot(2, 3, 6);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dh.Em.En.Time, hac_dvf_L_Dh.Em.En.Data(:, 6), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Rz [rad]');
|
||||
|
||||
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
|
||||
xlim([1, inf]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_Dh_offset_disp_error.pdf', 'width', 'full', 'height', 'full')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_Dh_offset_disp_error
|
||||
#+caption:
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_Dh_offset_disp_error.png]]
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
for j = 1:6
|
||||
plot(hac_dvf_L_Dh.u.Time, hac_dvf_L_Dh.u.Data(:,j), 'k-');
|
||||
end
|
||||
xlim([1, inf]);
|
||||
xlabel('Time [s]'); ylabel('Actuator Force [N]');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_Dh_offset_F.pdf', 'width', 'normal', 'height', 'normal')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_Dh_offset_F
|
||||
#+caption:
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_Dh_offset_F.png]]
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
for j = 1:6
|
||||
plot(hac_dvf_L_Dh.yn.Dnlm.Time, hac_dvf_L_Dh.yn.Dnlm.Data(:,j), 'k-');
|
||||
end
|
||||
xlim([1, inf]);
|
||||
xlabel('Time [s]'); ylabel('Actuator Stroke [m]');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_Dh_offset_dL.pdf', 'width', 'normal', 'height', 'normal')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_Dh_offset_dL
|
||||
#+caption:
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_Dh_offset_dL.png]]
|
||||
|
||||
** Simultaneous Translation scans and Spindle's rotation
|
||||
*** Simulation
|
||||
A simulation is now performed with translation scans and spindle rotation at the same time.
|
||||
|
||||
The sample has a mass one 1kg, the spindle rotation speed is 60rpm and the translation scans have a period of 4s and a triangular shape.
|
||||
|
||||
#+begin_src matlab
|
||||
initializeDisturbances();
|
||||
initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'all');
|
||||
|
||||
initializeSample('mass', 1, 'freq', 200);
|
||||
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
||||
'Dy_type', 'triangular', 'Dy_amplitude', 5e-3, 'Dy_period', 4);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '9');
|
||||
sim('nass_model');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
hac_dvf_L_Dy = simout;
|
||||
save('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L_Dy', '-append');
|
||||
#+end_src
|
||||
|
||||
*** Results
|
||||
#+begin_src matlab :exports none
|
||||
load('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L_Dy');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
ax1 = subplot(2, 3, 1);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dy.Em.En.Time, hac_dvf_L_Dy.Em.En.Data(:, 1), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Dx [m]');
|
||||
|
||||
ax2 = subplot(2, 3, 2);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dy.Em.En.Time, hac_dvf_L_Dy.Em.En.Data(:, 2), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Dy [m]');
|
||||
|
||||
ax3 = subplot(2, 3, 3);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dy.Em.En.Time, hac_dvf_L_Dy.Em.En.Data(:, 3), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Dz [m]');
|
||||
|
||||
ax4 = subplot(2, 3, 4);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dy.Em.En.Time, hac_dvf_L_Dy.Em.En.Data(:, 4), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Rx [rad]');
|
||||
|
||||
ax5 = subplot(2, 3, 5);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dy.Em.En.Time, hac_dvf_L_Dy.Em.En.Data(:, 5), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Ry [rad]');
|
||||
|
||||
ax6 = subplot(2, 3, 6);
|
||||
hold on;
|
||||
plot(hac_dvf_L_Dy.Em.En.Time, hac_dvf_L_Dy.Em.En.Data(:, 6), 'k-');
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Rz [rad]');
|
||||
|
||||
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
|
||||
xlim([1, inf]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_Dy_scans_disp_error.pdf', 'width', 'full', 'height', 'full')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_Dy_scans_disp_error
|
||||
#+caption:
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_Dy_scans_disp_error.png]]
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
for j = 1:6
|
||||
plot(hac_dvf_L_Dy.u.Time, hac_dvf_L_Dy.u.Data(:,j), 'k-');
|
||||
end
|
||||
xlim([1, inf]);
|
||||
xlabel('Time [s]'); ylabel('Actuator Force [N]');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_Dy_scans_F.pdf', 'width', 'normal', 'height', 'normal')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_Dy_scans_F
|
||||
#+caption:
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_Dy_scans_F.png]]
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
for j = 1:6
|
||||
plot(hac_dvf_L_Dy.yn.Dnlm.Time, hac_dvf_L_Dy.yn.Dnlm.Data(:,j), 'k-');
|
||||
end
|
||||
xlim([1, inf]);
|
||||
xlabel('Time [s]'); ylabel('Actuator Stroke [m]');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/opt_stiff_hac_dvf_Dy_scans_dL.pdf', 'width', 'normal', 'height', 'normal')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_hac_dvf_Dy_scans_dL
|
||||
#+caption:
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_hac_dvf_Dy_scans_dL.png]]
|
||||
|
||||
* Primary Control in the task space
|
||||
<<sec:primary_control_X>>
|
||||
** Introduction :ignore:
|
||||
|