diff --git a/docs/disturbances.html b/docs/disturbances.html index d160c15..68fc55f 100644 --- a/docs/disturbances.html +++ b/docs/disturbances.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Identification of the disturbances @@ -254,6 +254,14 @@
  • 5. Compute the Power Spectral Density of the disturbance force
  • 6. Noise Budget
  • 7. Save
  • +
  • 8. Time Domain Disturbances
  • +
  • 9. Time Domain Effect of Disturbances + +
  • @@ -623,10 +631,144 @@ save('./mat/dist_psd.mat', +

    8 Time Domain Disturbances

    +
    +

    +Let’s initialize the time domain disturbances and load them. +

    +
    +
    initializeDisturbances();
    +dist = load('nass_disturbances.mat');
    +
    +
    + +

    +The time domain disturbance signals are shown in Figure 10. +

    + + +
    +

    disturbances_time_domain.png +

    +

    Figure 10: Disturbances in the Time Domain (png, pdf)

    +
    +
    + + +
    +

    9 Time Domain Effect of Disturbances

    +
    +
    +
    +

    9.1 Initialization of the Experiment

    +
    +

    +We initialize all the stages with the default parameters. +

    +
    +
    initializeGround();
    +initializeGranite();
    +initializeTy();
    +initializeRy();
    +initializeRz();
    +initializeMicroHexapod();
    +initializeAxisc();
    +initializeMirror();
    +
    +
    + +

    +The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg. +

    +
    +
    initializeNanoHexapod('type', 'rigid');
    +initializeSample('mass', 1);
    +
    +
    + +
    +
    initializeReferences();
    +initializeController('type', 'open-loop');
    +initializeSimscapeConfiguration('gravity', false);
    +initializeLoggingConfiguration('log', 'all');
    +
    +
    + +
    +
    load('mat/conf_simulink.mat');
    +set_param(conf_simulink, 'StopTime', '2');
    +
    +
    +
    +
    + +
    +

    9.2 Simulations

    +
    +

    +No disturbances: +

    +
    +
    initializeDisturbances('enable', false);
    +sim('nass_model');
    +sim_no = simout;
    +
    +
    + +

    +Ground Motion: +

    +
    +
    initializeDisturbances('Fty_x', false, 'Fty_z', false, 'Frz_z', false);
    +sim('nass_model');
    +sim_gm = simout;
    +
    +
    + +

    +Translation Stage Vibrations: +

    +
    +
    initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Frz_z', false);
    +sim('nass_model');
    +sim_ty = simout;
    +
    +
    + +

    +Rotation Stage Vibrations: +

    +
    +
    initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Fty_x', false, 'Fty_z', false);
    +sim('nass_model');
    +sim_rz = simout;
    +
    +
    +
    +
    + +
    +

    9.3 Comparison

    +
    +

    +Let’s now compare the effect of those perturbations on the position error of the sample (Figure 11) +

    + + +
    +

    effect_disturbances_position_error.png +

    +

    Figure 11: Effect of Perturbations on the position error (png, pdf)

    +
    +
    +
    +

    Author: Dehaeze Thomas

    -

    Created: 2020-03-17 mar. 11:21

    +

    Created: 2020-03-17 mar. 17:31

    diff --git a/docs/figs/disturbances_time_domain.pdf b/docs/figs/disturbances_time_domain.pdf new file mode 100644 index 0000000..0e41df0 Binary files /dev/null and b/docs/figs/disturbances_time_domain.pdf differ diff --git a/docs/figs/disturbances_time_domain.png b/docs/figs/disturbances_time_domain.png new file mode 100644 index 0000000..35fb3a4 Binary files /dev/null and b/docs/figs/disturbances_time_domain.png differ diff --git a/docs/figs/effect_disturbances_position_error.pdf b/docs/figs/effect_disturbances_position_error.pdf new file mode 100644 index 0000000..5a9d14b Binary files /dev/null and b/docs/figs/effect_disturbances_position_error.pdf differ diff --git a/docs/figs/effect_disturbances_position_error.png b/docs/figs/effect_disturbances_position_error.png new file mode 100644 index 0000000..bb93197 Binary files /dev/null and b/docs/figs/effect_disturbances_position_error.png differ diff --git a/org/disturbances.org b/org/disturbances.org index 2a37fe6..e35f93b 100644 --- a/org/disturbances.org +++ b/org/disturbances.org @@ -568,3 +568,201 @@ The PSD of the disturbance force are now saved for further analysis. save('./mat/dist_psd.mat', 'dist_f'); #+end_src +* Time Domain Disturbances +Let's initialize the time domain disturbances and load them. +#+begin_src matlab + initializeDisturbances(); + dist = load('nass_disturbances.mat'); +#+end_src + +The time domain disturbance signals are shown in Figure [[fig:disturbances_time_domain]]. + +#+begin_src matlab :exports none + figure; + + ax1 = subplot(2, 2, 1); + hold on; + plot(dist.t, dist.Dwx, 'DisplayName', '$D_{w,x}$') + plot(dist.t, dist.Dwy, 'DisplayName', '$D_{w,y}$') + plot(dist.t, dist.Dwz, 'DisplayName', '$D_{w,z}$') + hold off; + xlabel('Time [s]'); + ylabel('Ground Motion [m]'); + legend(); + + ax2 = subplot(2, 2, 2); + hold on; + plot(dist.t, dist.Fty_x, 'DisplayName', '$F_{ty,x}$') + hold off; + xlabel('Time [s]'); + ylabel('Ty Forces [N]'); + legend(); + + ax3 = subplot(2, 2, 3); + hold on; + plot(dist.t, dist.Fty_z, 'DisplayName', '$F_{ty,z}$') + hold off; + xlabel('Time [s]'); + ylabel('Ty Forces [N]'); + legend(); + + ax4 = subplot(2, 2, 4); + hold on; + plot(dist.t, dist.Frz_z, 'DisplayName', '$F_{rz,z}$') + hold off; + xlabel('Time [s]'); + ylabel('Rz Forces [N]'); + legend(); + + linkaxes([ax1,ax2,ax3,ax4], 'x'); + xlim([0, dist.t(end)]); +#+end_src + +#+header: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/disturbances_time_domain.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+name: fig:disturbances_time_domain +#+caption: Disturbances in the Time Domain ([[./figs/disturbances_time_domain.png][png]], [[./figs/disturbances_time_domain.pdf][pdf]]) +[[file:figs/disturbances_time_domain.png]] + +* Time Domain Effect of Disturbances +** Initialization of the Experiment +We initialize all the stages with the default parameters. +#+begin_src matlab + initializeGround(); + initializeGranite(); + initializeTy(); + initializeRy(); + initializeRz(); + initializeMicroHexapod(); + initializeAxisc(); + initializeMirror(); +#+end_src + +The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg. +#+begin_src matlab + initializeNanoHexapod('type', 'rigid'); + initializeSample('mass', 1); +#+end_src + +#+begin_src matlab + initializeReferences(); + initializeController('type', 'open-loop'); + initializeSimscapeConfiguration('gravity', false); + initializeLoggingConfiguration('log', 'all'); +#+end_src + +#+begin_src matlab + load('mat/conf_simulink.mat'); + set_param(conf_simulink, 'StopTime', '2'); +#+end_src + +** Simulations + +No disturbances: +#+begin_src matlab + initializeDisturbances('enable', false); + sim('nass_model'); + sim_no = simout; +#+end_src + +Ground Motion: +#+begin_src matlab + initializeDisturbances('Fty_x', false, 'Fty_z', false, 'Frz_z', false); + sim('nass_model'); + sim_gm = simout; +#+end_src + +Translation Stage Vibrations: +#+begin_src matlab + initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Frz_z', false); + sim('nass_model'); + sim_ty = simout; +#+end_src + +Rotation Stage Vibrations: +#+begin_src matlab + initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Fty_x', false, 'Fty_z', false); + sim('nass_model'); + sim_rz = simout; +#+end_src + +** Comparison +Let's now compare the effect of those perturbations on the position error of the sample (Figure [[fig:effect_disturbances_position_error]]) + +#+begin_src matlab :exports none + figure; + ax1 = subplot(2, 3, 1); + hold on; + plot(sim_no.Em.En.Time, sim_no.Em.En.Data(:, 1)) + plot(sim_gm.Em.En.Time, sim_gm.Em.En.Data(:, 1)) + plot(sim_ty.Em.En.Time, sim_ty.Em.En.Data(:, 1)) + plot(sim_rz.Em.En.Time, sim_rz.Em.En.Data(:, 1)) + hold off; + xlabel('Time [s]'); + ylabel('Dx [m]'); + + ax2 = subplot(2, 3, 2); + hold on; + plot(sim_no.Em.En.Time, sim_no.Em.En.Data(:, 2)) + plot(sim_gm.Em.En.Time, sim_gm.Em.En.Data(:, 2)) + plot(sim_ty.Em.En.Time, sim_ty.Em.En.Data(:, 2)) + plot(sim_rz.Em.En.Time, sim_rz.Em.En.Data(:, 2)) + hold off; + xlabel('Time [s]'); + ylabel('Dy [m]'); + + ax3 = subplot(2, 3, 3); + hold on; + plot(sim_no.Em.En.Time, sim_no.Em.En.Data(:, 3)) + plot(sim_gm.Em.En.Time, sim_gm.Em.En.Data(:, 3)) + plot(sim_ty.Em.En.Time, sim_ty.Em.En.Data(:, 3)) + plot(sim_rz.Em.En.Time, sim_rz.Em.En.Data(:, 3)) + hold off; + xlabel('Time [s]'); + ylabel('Dz [m]'); + + ax4 = subplot(2, 3, 4); + hold on; + plot(sim_no.Em.En.Time, sim_no.Em.En.Data(:, 4)) + plot(sim_gm.Em.En.Time, sim_gm.Em.En.Data(:, 4)) + plot(sim_ty.Em.En.Time, sim_ty.Em.En.Data(:, 4)) + plot(sim_rz.Em.En.Time, sim_rz.Em.En.Data(:, 4)) + hold off; + xlabel('Time [s]'); + ylabel('Rx [rad]'); + + ax5 = subplot(2, 3, 5); + hold on; + plot(sim_no.Em.En.Time, sim_no.Em.En.Data(:, 5)) + plot(sim_gm.Em.En.Time, sim_gm.Em.En.Data(:, 5)) + plot(sim_ty.Em.En.Time, sim_ty.Em.En.Data(:, 5)) + plot(sim_rz.Em.En.Time, sim_rz.Em.En.Data(:, 5)) + hold off; + xlabel('Time [s]'); + ylabel('Ry [rad]'); + + ax6 = subplot(2, 3, 6); + hold on; + plot(sim_no.Em.En.Time, sim_no.Em.En.Data(:, 6), 'DisplayName', 'No') + plot(sim_gm.Em.En.Time, sim_gm.Em.En.Data(:, 6), 'DisplayName', 'Dw') + plot(sim_ty.Em.En.Time, sim_ty.Em.En.Data(:, 6), 'DisplayName', 'Ty') + plot(sim_rz.Em.En.Time, sim_rz.Em.En.Data(:, 6), 'DisplayName', 'Rz') + hold off; + xlabel('Time [s]'); + ylabel('Rz [rad]'); + legend(); + + linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x'); +#+end_src + +#+header: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/effect_disturbances_position_error.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+name: fig:effect_disturbances_position_error +#+caption: Effect of Perturbations on the position error ([[./figs/effect_disturbances_position_error.png][png]], [[./figs/effect_disturbances_position_error.pdf][pdf]]) +[[file:figs/effect_disturbances_position_error.png]]