diff --git a/test-bench-apa300ml.html b/test-bench-apa300ml.html index 6d8e749..f8a4dcc 100644 --- a/test-bench-apa300ml.html +++ b/test-bench-apa300ml.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Nano-Hexapod Struts - Test Bench @@ -39,227 +39,227 @@

Table of Contents

-
-

5.1.1 Without Encoder

+
+

5.1.1 Without Encoder

- +

-
-
5.1.1.1 FRF Identification - Setup
+
+
5.1.1.1 FRF Identification - Setup

The identification is performed in three steps: @@ -2877,8 +2877,8 @@ We get the frequency vector that will be the same for all the frequency domain a

-
-
5.1.1.2 FRF Identification - Displacement
+
+
5.1.1.2 FRF Identification - Displacement

In this section, the dynamics from the excitation voltage \(V_a\) to the interferometer \(d_a\) is identified. @@ -2894,14 +2894,14 @@ We compute the coherence for 2nd and 3rd identification:

-
+

strut_1_frf_dvf_plant_coh.png

Figure 62: Obtained coherence for the plant from \(V_a\) to \(d_a\)

-The transfer function from \(V_a\) to the interferometer measured displacement \(d_a\) is estimated and shown in Figure 63. +The transfer function from \(V_a\) to the interferometer measured displacement \(d_a\) is estimated and shown in Figure 63.

[dvf_sweep, ~]    = tfestimate(leg_sweep.Va,    leg_sweep.da,    win, [], [], 1/Ts);
@@ -2910,7 +2910,7 @@ The transfer function from \(V_a\) to the interferometer measured displacement \
 
-
+

strut_1_frf_dvf_plant_tf.png

Figure 63: Estimated FRF for the DVF plant (transfer function from \(V_a\) to the interferometer \(d_a\))

@@ -2918,15 +2918,15 @@ The transfer function from \(V_a\) to the interferometer measured displacement \
-
-
5.1.1.3 FRF Identification - IFF
+
+
5.1.1.3 FRF Identification - IFF

In this section, the dynamics from \(V_a\) to \(V_s\) is identified.

-First the coherence is computed and shown in Figure 64. +First the coherence is computed and shown in Figure 64. The coherence is very nice from 10Hz to 2kHz. It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).

@@ -2938,14 +2938,14 @@ It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the ex
-
+

strut_1_frf_iff_plant_coh.png

Figure 64: Obtained coherence for the IFF plant

-Then the FRF are estimated and shown in Figure 65 +Then the FRF are estimated and shown in Figure 65

[iff_sweep, ~] = tfestimate(leg_sweep.Va, leg_sweep.Vs, win, [], [], 1/Ts);
@@ -2954,7 +2954,7 @@ Then the FRF are estimated and shown in Figure 65
 
-
+

strut_1_frf_iff_plant_tf.png

Figure 65: Identified IFF Plant for the Strut 1

@@ -2963,15 +2963,15 @@ Then the FRF are estimated and shown in Figure 65
-
-

5.1.2 With Encoder

+
+

5.1.2 With Encoder

- +

-
-
5.1.2.1 Measurement Data
+
+
5.1.2.1 Measurement Data
leg_enc_sweep    = load(sprintf('frf_data_leg_coder_badly_align_%i_noise.mat',    1), 't', 'Va', 'Vs', 'de', 'da');
@@ -2981,8 +2981,8 @@ leg_enc_noise_hf = load(sprintf('frf_data_leg_coder_bad
 
-
-
5.1.2.2 FRF Identification - DVF
+
+
5.1.2.2 FRF Identification - DVF

In this section, the dynamics from \(V_a\) to \(d_e\) is identified. @@ -2998,7 +2998,7 @@ We compute the coherence for 2nd and 3rd identification:

-
+

strut_1_enc_frf_dvf_plant_coh.png

Figure 66: Obtained coherence for the plant from \(V_a\) to \(d_e\)

@@ -3017,14 +3017,14 @@ We compute the coherence for 2nd and 3rd identification:

-The obtained transfer functions are shown in Figure 67. +The obtained transfer functions are shown in Figure 67.

They are all superimposed except for the APA7.

-
+

Why is the APA7 off? We could think that the APA7 is stiffer, but also the mass line is off. @@ -3038,7 +3038,7 @@ Maybe it could be due to the amplifier?

-
+

Why is there a double resonance at around 94Hz?

@@ -3046,7 +3046,7 @@ Why is there a double resonance at around 94Hz?
-
+

strut_1_enc_frf_dvf_plant_tf.png

Figure 67: Estimated FRF for the DVF plant (transfer function from \(V_a\) to the encoder \(d_e\))

@@ -3054,25 +3054,25 @@ Why is there a double resonance at around 94Hz?
-
-
5.1.2.3 Comparison of the Encoder and Interferometer
+
+
5.1.2.3 Comparison of the Encoder and Interferometer

The interferometer could here represent the case where the encoders are fixed to the plates and not the APA.

-The dynamics from \(V_a\) to \(d_e\) and from \(V_a\) to \(d_a\) are compared in Figure 68. +The dynamics from \(V_a\) to \(d_e\) and from \(V_a\) to \(d_a\) are compared in Figure 68.

-
+

strut_1_comp_enc_int.png

Figure 68: Comparison of the transfer functions from excitation voltage \(V_a\) to either the encoder \(d_e\) or the interferometer \(d_a\)

-
+

It will clearly be difficult to do something (except some low frequency positioning) with the encoders fixed to the APA.

@@ -3081,15 +3081,15 @@ It will clearly be difficult to do something (except some low frequency position
-
-
5.1.2.4 APA Resonances Frequency
+
+
5.1.2.4 APA Resonances Frequency

-As shown in Figure 69, we can clearly see three spurious resonances at 197Hz, 290Hz and 376Hz. +As shown in Figure 69, we can clearly see three spurious resonances at 197Hz, 290Hz and 376Hz.

-
+

strut_1_spurious_resonances.png

Figure 69: Magnitude of the transfer function from excitation voltage \(V_a\) to encoder measurement \(d_e\). The frequency of the resonances are noted.

@@ -3098,7 +3098,7 @@ As shown in Figure 69, we can clearly see three spurio

These resonances correspond to parasitic resonances of the APA itself. -They are very close to what was estimated using the FEM (Figure 70): +They are very close to what was estimated using the FEM (Figure 70):

  • Mode in X-bending at 189Hz
  • @@ -3107,13 +3107,13 @@ They are very close to what was estimated using the FEM (Figure +

    apa_mode_shapes.gif

    Figure 70: Spurious resonances. a) X-bending mode at 189Hz. b) Y-bending mode at 285Hz. c) Z-torsion mode at 400Hz

    -
    +

    The resonances are indeed due to limited stiffness of the APA.

    @@ -3122,8 +3122,8 @@ The resonances are indeed due to limited stiffness of the APA.
    -
    -
    5.1.2.5 Estimated Flexible Joint axial stiffness
    +
    +
    5.1.2.5 Estimated Flexible Joint axial stiffness
    load(sprintf('frf_data_leg_coder_%i_add_mass_closed_circuit.mat',    1), 't', 'Va', 'Vs', 'de', 'da');
    @@ -3177,7 +3177,7 @@ hold off;
     
    -
    +

    What is strange is that the encoder is measuring a larger displacement than the interferometer. That should be the opposite. @@ -3188,15 +3188,15 @@ Maybe is is caused by the fact that the APA is experiencing some bending and the

    -
    -
    5.1.2.6 FRF Identification - IFF
    +
    +
    5.1.2.6 FRF Identification - IFF

    In this section, the dynamics from \(V_a\) to \(V_s\) is identified.

    -First the coherence is computed and shown in Figure 64. +First the coherence is computed and shown in Figure 64. The coherence is very nice from 10Hz to 2kHz. It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).

    @@ -3208,14 +3208,14 @@ It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the ex
    -
    +

    strut_1_frf_iff_plant_coh.png

    Figure 71: Obtained coherence for the IFF plant

    -Then the FRF are estimated and shown in Figure 72 +Then the FRF are estimated and shown in Figure 72

    [iff_enc_sweep,    ~] = tfestimate(leg_enc_sweep.Va,    leg_enc_sweep.Vs,    win, [], [], 1/Ts);
    @@ -3224,23 +3224,23 @@ Then the FRF are estimated and shown in Figure 72
     
    -
    +

    strut_1_enc_frf_iff_plant_tf.png

    Figure 72: Identified IFF Plant

    -Let’s now compare the IFF plants whether the encoders are fixed to the APA or not (Figure 73). +Let’s now compare the IFF plants whether the encoders are fixed to the APA or not (Figure 73).

    -
    +

    strut_1_frf_iff_effect_enc.png

    Figure 73: Effect of the encoder on the IFF plant

    -
    +

    We can see that the IFF does not change whether of not the encoder are fixed to the struts.

    @@ -3251,18 +3251,18 @@ We can see that the IFF does not change whether of not the encoder are fixed to
    -
    -

    5.2 Comparison of all the Struts

    +
    +

    5.2 Comparison of all the Struts

    - +

    Now all struts are measured using the same procedure and test bench.

    -
    -

    5.2.1 FRF Identification - Setup

    +
    +

    5.2.1 FRF Identification - Setup

    The identification is performed in two steps: @@ -3338,8 +3338,8 @@ i_hf = f > 350;

    -
    -

    5.2.2 FRF Identification - Encoder

    +
    +

    5.2.2 FRF Identification - Encoder

    In this section, the dynamics from \(V_a\) to \(d_e\) is identified. @@ -3360,12 +3360,12 @@ coh_enc = zeros(length(f), length(leg_nums));

    -The coherence is shown in Figure 74. +The coherence is shown in Figure 74. It is clear that the Noise sine gives good coherence up to 400Hz and that the high frequency noise excitation signal helps increasing a little bit the coherence at high frequency.

    -
    +

    struts_frf_dvf_plant_coh.png

    Figure 74: Obtained coherence for the plant from \(V_a\) to \(d_e\)

    @@ -3388,18 +3388,18 @@ enc_frf = zeros(length(f), length(leg_nums));

    -The obtained transfer functions are shown in Figure 75. +The obtained transfer functions are shown in Figure 75.

    -
    +

    struts_frf_dvf_plant_tf.png

    Figure 75: Estimated FRF for the DVF plant (transfer function from \(V_a\) to the encoder \(d_e\))

    -
    +

    -Depending on how the APA are mounted with the flexible joints, the dynamics can change a lot as shown in Figure 75. +Depending on how the APA are mounted with the flexible joints, the dynamics can change a lot as shown in Figure 75. In the future, a “pin” will be used to better align the APA with the flexible joints. We can expect the amplitude of the spurious resonances to decrease. We can also observe the presence or absence of complex conjugate zeros between the first two modes. @@ -3410,8 +3410,8 @@ This might also be dependent on the alignment.

    -
    -

    5.2.3 FRF Identification - Interferometer

    +
    +

    5.2.3 FRF Identification - Interferometer

    In this section, the dynamics from \(V_a\) to \(d_a\) is identified. @@ -3432,11 +3432,11 @@ coh_int = zeros(length(f), length(leg_nums));

    -The coherence is shown in Figure 76. +The coherence is shown in Figure 76. It is clear that the Noise sine gives good coherence up to 400Hz and that the high frequency noise excitation signal helps increasing a little bit the coherence at high frequency.

    -
    +

    struts_frf_int_plant_coh.png

    Figure 76: Obtained coherence for the plant from \(V_a\) to \(d_e\)

    @@ -3457,14 +3457,14 @@ int_frf = zeros(length(f), length(leg_nums));

    -The obtained transfer functions are shown in Figure 77. +The obtained transfer functions are shown in Figure 77.

    They are all superimposed except for the LEG7.

    -
    +

    struts_frf_int_plant_tf.png

    Figure 77: Estimated FRF for the DVF plant (transfer function from \(V_a\) to the encoder \(d_e\))

    @@ -3472,15 +3472,15 @@ They are all superimposed except for the LEG7.
    -
    -

    5.2.4 FRF Identification - Force Sensor

    +
    +

    5.2.4 FRF Identification - Force Sensor

    In this section, the dynamics from \(V_a\) to \(V_s\) is identified.

    -First the coherence is computed and shown in Figure 78. +First the coherence is computed and shown in Figure 78. The coherence is very nice from 10Hz to 2kHz. It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).

    @@ -3497,14 +3497,14 @@ coh_iff = zeros(length(f), length(leg_nums));
    -
    +

    struts_frf_iff_plant_coh.png

    Figure 78: Obtained coherence for the IFF plant

    -Then the FRF are estimated and shown in Figure 79 +Then the FRF are estimated and shown in Figure 79

    %% FRF estimation of the transfer function from Va to Vs
    @@ -3518,7 +3518,7 @@ iff_frf = zeros(length(f), length(leg_nums));
     
    -
    +

    struts_frf_iff_plant_tf.png

    Figure 79: Identified IFF Plant

    @@ -3526,8 +3526,8 @@ iff_frf = zeros(length(f), length(leg_nums));
    -
    -

    5.2.5 Save measured FRF

    +
    +

    5.2.5 Save measured FRF

    save('mat/meas_struts_frf.mat', 'f', 'Ts', 'enc_frf', 'int_frf', 'iff_frf', 'leg_nums');
    @@ -3538,33 +3538,33 @@ iff_frf = zeros(length(f), length(leg_nums));
     
    -
    -

    6 Test Bench Struts - Simscape Model

    +
    +

    6 Test Bench Struts - Simscape Model

    - +

    -
    -

    6.1 Introduction

    +
    +

    6.1 Introduction

    -
    -

    6.2 Comparison with the 2-DoF Model

    +
    +

    6.2 Comparison with the 2-DoF Model

    - +

    -
    -

    6.2.1 First Identification

    +
    +

    6.2.1 First Identification

    The object containing all the data is created. @@ -3597,14 +3597,14 @@ Gs.OutputName = {'Vs',

    -
    +

    strut_bench_model_iff_bode.png

    Figure 80: Identified transfer function from \(V_a\) to \(V_s\)

    -
    +

    strut_bench_model_dvf_bode.png

    Figure 81: Identified transfer function from \(V_a\) to \(d_L\)

    @@ -3612,8 +3612,8 @@ Gs.OutputName = {'Vs',
    -
    -

    6.2.2 Effect of flexible joints

    +
    +

    6.2.2 Effect of flexible joints

    Perfect @@ -3672,31 +3672,31 @@ Gf.OutputName = {'Vs',

    -Comparison in Figures 82, 83 and 84. +Comparison in Figures 82, 83 and 84.

    -
    +

    strut_effect_joint_comp_vs.png

    Figure 82: Effect of the joint’s flexibility on the transfer function from \(V_a\) to \(V_s\)

    -
    +

    strut_effect_joint_comp_dl.png

    Figure 83: Effect of the joint’s flexibility on the transfer function from \(V_a\) to \(d_L\) (encoder)

    -
    +

    strut_effect_joint_comp_z.png

    Figure 84: Effect of the joint’s flexibility on the transfer function from \(V_a\) to \(z\) (interferometer)

    -
    +

    Imperfection of the flexible joints has the largest impact on the transfer function from \(V_a\) to \(d_L\). However, it has relatively small impact on the transfer functions from \(V_a\) to \(V_s\) and to \(z\). @@ -3706,8 +3706,8 @@ However, it has relatively small impact on the transfer functions from \(V_a\) t

    -
    -

    6.2.3 Comparison with the experimental Data

    +
    +

    6.2.3 Comparison with the experimental Data

    %% Load measured FRF
    @@ -3739,23 +3739,23 @@ Gs.OutputName = {'Vs', 
     
    -
    +

    comp_strut_plant_after_opt.png

    Figure 85: Comparison of the measured FRF and the optimized model

    -
    +

    comp_strut_plant_iff_after_opt.png

    Figure 86: Comparison of the measured FRF and the optimized model

    -
    +

    -The 2-DoF model is quite effective in modelling the transfer function from actuator to force sensor and from actuator to interferometer (Figure 85). -But it is not effective in modeling the transfer function from actuator to encoder (Figure 86). +The 2-DoF model is quite effective in modelling the transfer function from actuator to force sensor and from actuator to interferometer (Figure 85). +But it is not effective in modeling the transfer function from actuator to encoder (Figure 86). This is due to the fact that resonances greatly affecting the encoder reading are not modelled. In the next section, flexible model of the APA will be used to model such resonances.

    @@ -3765,14 +3765,14 @@ In the next section, flexible model of the APA will be used to model such resona
    -
    -

    6.3 Effect of a misalignment of the APA and flexible joints on the transfer function from actuator to encoder

    +
    +

    6.3 Effect of a misalignment of the APA and flexible joints on the transfer function from actuator to encoder

    - +

    -As shown in Figure 75, the dynamics from actuator to encoder for all the struts is very different. +As shown in Figure 75, the dynamics from actuator to encoder for all the struts is very different.

    @@ -3780,23 +3780,23 @@ This could be explained by a large variability in the alignment of the flexible

    -Depending on the alignment, the spurious resonances of the struts (Figure 17) can be excited differently. +Depending on the alignment, the spurious resonances of the struts (Figure 17) can be excited differently.

    -
    +

    apa_mode_shapes.gif

    Figure 87: Spurious resonances. a) X-bending mode at 189Hz. b) Y-bending mode at 285Hz. c) Z-torsion mode at 400Hz

    -For instance, consider Figure 88 where there is a misalignment in the \(y\) direction. +For instance, consider Figure 88 where there is a misalignment in the \(y\) direction. In such case, the mode at 200Hz is foreseen to be more excited as the misalignment \(d_y\) increases and therefore the dynamics from the actuator to the encoder should also change around 200Hz.

    -
    +

    strut_misalign_schematic.png

    Figure 88: Mis-alignement between the joints and the APA

    @@ -3810,8 +3810,8 @@ If the misalignment is in the \(x\) direction, the mode at 300Hz should be more Such statement is studied in this section.

    -
    -

    6.3.1 Load Data

    +
    +

    6.3.1 Load Data

    First, the measured FRF are loaded. @@ -3823,8 +3823,8 @@ First, the measured FRF are loaded.

    -
    -

    6.3.2 Perfectly aligned APA

    +
    +

    6.3.2 Perfectly aligned APA

    Let’s first consider that the strut is perfectly mounted such that the two flexible joints and the APA are aligned. @@ -3854,7 +3854,7 @@ io(io_i) = linio([mdl, '/dL'], 1, 89. +The transfer function is identified and shown in Figure 89.

    %% Identification
    @@ -3864,9 +3864,9 @@ Gs.OutputName = {'dL'};
     
    -
    +

    -From Figure 89, it is clear that: +From Figure 89, it is clear that:

    1. The model with perfect alignment is not matching the measured FRF
    2. @@ -3876,7 +3876,7 @@ From Figure 89, it is clear that:
    -
    +

    comp_enc_frf_align_perfect.png

    Figure 89: Comparison of the model with a perfectly aligned APA and flexible joints with the measured FRF from actuator to encoder

    @@ -3884,8 +3884,8 @@ From Figure 89, it is clear that:
    -
    -

    6.3.3 Effect of a misalignment in y

    +
    +

    6.3.3 Effect of a misalignment in y

    Let’s compute the transfer function from output DAC voltage to the measured displacement by the encoder for several misalignment in the \(y\) direction: @@ -3913,18 +3913,18 @@ Gs_align = {zeros(length(dy_aligns), 1)};

    -The obtained dynamics are shown in Figure 90. +The obtained dynamics are shown in Figure 90.

    -
    +

    effect_misalignment_y.png

    Figure 90: Effect of a misalignement in the \(y\) direction

    -
    +

    The alignment of the APA with the flexible joints as a huge influence on the dynamics from actuator voltage to measured displacement by the encoder. The misalignment in the \(y\) direction mostly influences: @@ -3943,8 +3943,8 @@ The misalignment in the \(y\) direction mostly influences:

    -
    -

    6.3.4 Effect of a misalignment in x

    +
    +

    6.3.4 Effect of a misalignment in x

    Let’s compute the transfer function from output DAC voltage to the measured displacement by the encoder for several misalignment in the \(x\) direction: @@ -3972,16 +3972,16 @@ Gs_align = {zeros(length(dx_aligns), 1)};

    -The obtained dynamics are shown in Figure 91. +The obtained dynamics are shown in Figure 91.

    -
    +

    effect_misalignment_x.png

    Figure 91: Effect of a misalignement in the \(x\) direction

    -
    +

    The misalignment in the \(x\) direction mostly influences the presence of the flexible mode at 300Hz.

    @@ -3990,8 +3990,8 @@ The misalignment in the \(x\) direction mostly influences the presence of the fl
    -
    -

    6.3.5 Find the misalignment of each strut

    +
    +

    6.3.5 Find the misalignment of each strut

    From the previous analysis on the effect of a \(x\) and \(y\) misalignment, it is possible to estimate the \(x,y\) misalignment of the measured struts. @@ -4030,18 +4030,18 @@ Gs_align = {zeros(size(d_aligns,2), 1)};

    -The results are shown in Figure 92. +The results are shown in Figure 92.

    -
    +

    comp_all_struts_corrected_misalign.png

    Figure 92: Comparison (model and measurements) of the FRF from DAC voltage u to measured displacement by the encoders for all the struts

    -
    +

    -By tuning the misalignment of the APA with respect to the flexible joints, it is relatively easy to obtain a good fit between the model and the measurements (Figure 92). +By tuning the misalignment of the APA with respect to the flexible joints, it is relatively easy to obtain a good fit between the model and the measurements (Figure 92).

    @@ -4057,15 +4057,15 @@ This should be achieve by using alignment pins.

    -
    -

    6.4 Effect of flexible joint’s stiffness

    +
    +

    6.4 Effect of flexible joint’s stiffness

    - +

    -
    -

    6.4.1 Effect of bending stiffness of the flexible joints

    +
    +

    6.4.1 Effect of bending stiffness of the flexible joints

    Let’s initialize an APA which is a little bit misaligned. @@ -4111,12 +4111,12 @@ Gs = {zeros(length(kRs), 1)};

    -The obtained dynamics from DAC voltage to encoder measurements are compared in Figure 93. +The obtained dynamics from DAC voltage to encoder measurements are compared in Figure 93. It is clear that the bending stiffness has a negligible impact on the observed dynamics.

    -
    +

    effect_enc_bending_stiff.png

    Figure 93: Dynamics from DAC output to encoder for several bending stiffnesses

    @@ -4124,8 +4124,8 @@ It is clear that the bending stiffness has a negligible impact on the observed d
    -
    -

    6.4.2 Effect of axial stiffness of the flexible joints

    +
    +

    6.4.2 Effect of axial stiffness of the flexible joints

    The axial stiffnesses for which the dynamics is identified are defined below. @@ -4161,16 +4161,16 @@ Gs = {zeros(length(kzs), 1)};

    -The obtained dynamics from DAC voltage to encoder measurements are compared in Figure 93. +The obtained dynamics from DAC voltage to encoder measurements are compared in Figure 93.

    -
    +

    effect_enc_axial_stiff.png

    Figure 94: Dynamics from DAC output to encoder for several axial stiffnesses

    -
    +

    The axial stiffness of the flexible joint has a large impact on the frequency of the complex conjugate zero. Using the measured FRF on the test-bench, if is therefore possible to estimate the axial stiffness of the flexible joints from le location of the zero. @@ -4185,30 +4185,30 @@ Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good re

    -
    -

    6.4.3 Effect of bending damping

    +
    +

    6.4.3 Effect of bending damping

    -
    -

    7 Function

    +
    +

    7 Function

    - +

    -
    -

    7.1 initializeBotFlexibleJoint - Initialize Flexible Joint

    +
    +

    7.1 initializeBotFlexibleJoint - Initialize Flexible Joint

    - +

    -
    -

    Function description

    -
    +
    +

    Function description

    +
    function [flex_bot] = initializeBotFlexibleJoint(args)
     % initializeBotFlexibleJoint -
    @@ -4225,9 +4225,9 @@ Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good re
     
    -
    -

    Optional Parameters

    -
    +
    +

    Optional Parameters

    +
    arguments
         args.type      char   {mustBeMember(args.type,{'2dof', '3dof', '4dof'})} = '2dof'
    @@ -4247,9 +4247,9 @@ Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good re
     
    -
    -

    Initialize the structure

    -
    +
    +

    Initialize the structure

    +
    flex_bot = struct();
     
    @@ -4257,9 +4257,9 @@ Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good re
    -
    -

    Set the Joint’s type

    -
    +
    +

    Set the Joint’s type

    +
    switch args.type
       case '2dof'
    @@ -4274,9 +4274,9 @@ Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good re
     
    -
    -

    Set parameters

    -
    +
    +

    Set parameters

    +
    flex_bot.kRx = args.kRx;
     flex_bot.kRy = args.kRy;
    @@ -4296,17 +4296,17 @@ flex_bot.cz  = args.cz;
     
    -
    -

    7.2 initializeTopFlexibleJoint - Initialize Flexible Joint

    +
    +

    7.2 initializeTopFlexibleJoint - Initialize Flexible Joint

    - +

    -
    -

    Function description

    -
    +
    +

    Function description

    +
    function [flex_top] = initializeTopFlexibleJoint(args)
     % initializeTopFlexibleJoint -
    @@ -4323,9 +4323,9 @@ flex_bot.cz  = args.cz;
     
    -
    -

    Optional Parameters

    -
    +
    +

    Optional Parameters

    +
    arguments
         args.type      char   {mustBeMember(args.type,{'2dof', '3dof', '4dof'})} = '2dof'
    @@ -4345,9 +4345,9 @@ flex_bot.cz  = args.cz;
     
    -
    -

    Initialize the structure

    -
    +
    +

    Initialize the structure

    +
    flex_top = struct();
     
    @@ -4355,9 +4355,9 @@ flex_bot.cz = args.cz;
    -
    -

    Set the Joint’s type

    -
    +
    +

    Set the Joint’s type

    +
    switch args.type
       case '2dof'
    @@ -4372,9 +4372,9 @@ flex_bot.cz  = args.cz;
     
    -
    -

    Set parameters

    -
    +
    +

    Set parameters

    +
    flex_top.kRx = args.kRx;
     flex_top.kRy = args.kRy;
    @@ -4394,17 +4394,17 @@ flex_top.cz  = args.cz;
     
    -
    -

    7.3 initializeAPA - Initialize APA

    +
    +

    7.3 initializeAPA - Initialize APA

    - +

    -
    -

    Function description

    -
    +
    +

    Function description

    +
    function [actuator] = initializeAPA(args)
     % initializeAPA -
    @@ -4421,9 +4421,9 @@ flex_top.cz  = args.cz;
     
    -
    -

    Optional Parameters

    -
    +
    +

    Optional Parameters

    +
    arguments
         args.type      char   {mustBeMember(args.type,{'2dof', 'flexible frame', 'flexible'})} = '2dof'
    @@ -4456,9 +4456,9 @@ flex_top.cz  = args.cz;
     
    -
    -

    Initialize Structure

    -
    +
    +

    Initialize Structure

    +
    actuator = struct();
     
    @@ -4466,9 +4466,9 @@ flex_top.cz = args.cz;
    -
    -

    Type

    -
    +
    +

    Type

    +
    switch args.type
       case '2dof'
    @@ -4483,9 +4483,9 @@ flex_top.cz  = args.cz;
     
    -
    -

    Actuator/Sensor Constants

    -
    +
    +

    Actuator/Sensor Constants

    +
    if args.Ga == 0
         switch args.type
    @@ -4520,9 +4520,9 @@ flex_top.cz  = args.cz;
     
    -
    -

    2DoF parameters

    -
    +
    +

    2DoF parameters

    +
    actuator.k  = args.k;  % [N/m]
     actuator.ke = args.ke; % [N/m]
    @@ -4538,9 +4538,9 @@ actuator.Leq = args.Leq; % [m]
     
    -
    -

    Flexible frame and fully flexible

    -
    +
    +

    Flexible frame and fully flexible

    +
    switch args.type
       case 'flexible frame'
    @@ -4564,17 +4564,17 @@ actuator.cs = args.cs; % Damping of one stack [N/m]
     
    -
    -

    7.4 generateSweepExc: Generate sweep sinus excitation

    +
    +

    7.4 generateSweepExc: Generate sweep sinus excitation

    - +

    -
    -

    Function description

    -
    +
    +

    Function description

    +
    function [U_exc] = generateSweepExc(args)
     % generateSweepExc - Generate a Sweep Sine excitation signal
    @@ -4597,9 +4597,9 @@ actuator.cs = args.cs; % Damping of one stack [N/m]
     
    -
    -

    Optional Parameters

    -
    +
    +

    Optional Parameters

    +
    arguments
         args.Ts              (1,1) double  {mustBeNumeric, mustBePositive} = 1e-4
    @@ -4617,9 +4617,9 @@ actuator.cs = args.cs; % Damping of one stack [N/m]
     
    -
    -

    Sweep Sine part

    -
    +
    +

    Sweep Sine part

    +
    t_sweep = 0:args.Ts:args.exc_duration;
     
    @@ -4648,9 +4648,9 @@ actuator.cs = args.cs; % Damping of one stack [N/m]
     
    -
    -

    Smooth Ends

    -
    +
    +

    Smooth Ends

    +
    if args.t_start > 0
         t_smooth_start = args.Ts:args.Ts:args.t_start;
    @@ -4679,9 +4679,9 @@ actuator.cs = args.cs; % Damping of one stack [N/m]
     
    -
    -

    Combine Excitation signals

    -
    +
    +

    Combine Excitation signals

    +
    V_exc = [V_smooth_start, V_sweep, V_smooth_end];
     t_exc = args.Ts*[0:1:length(V_exc)-1];
    @@ -4696,17 +4696,17 @@ t_exc = args.Ts*[0:1
     
    -
    -

    7.5 generateShapedNoise: Generate Shaped Noise excitation

    +
    +

    7.5 generateShapedNoise: Generate Shaped Noise excitation

    - +

    -
    -

    Function description

    -
    +
    +

    Function description

    +
    function [U_exc] = generateShapedNoise(args)
     % generateShapedNoise - Generate a Shaped Noise excitation signal
    @@ -4726,9 +4726,9 @@ t_exc = args.Ts*[0:1
     
    -
    -

    Optional Parameters

    -
    +
    +

    Optional Parameters

    +
    arguments
         args.Ts              (1,1) double  {mustBeNumeric, mustBePositive} = 1e-4
    @@ -4743,9 +4743,9 @@ t_exc = args.Ts*[0:1
     
    -
    -

    Shaped Noise

    -
    +
    +

    Shaped Noise

    +
    t_noise = 0:args.Ts:args.exc_duration;
     
    @@ -4763,9 +4763,9 @@ t_exc = args.Ts*[0:1
     
    -
    -

    Smooth Ends

    -
    +
    +

    Smooth Ends

    +
    t_smooth_start = args.Ts:args.Ts:args.t_start;
     
    @@ -4789,9 +4789,9 @@ V_smooth_end   = zeros(size(t_smooth_start));
     
    -
    -

    Combine Excitation signals

    -
    +
    +

    Combine Excitation signals

    +
    V_exc = [V_smooth_start, V_noise, V_smooth_end];
     t_exc = args.Ts*[0:1:length(V_exc)-1];
    @@ -4806,17 +4806,17 @@ t_exc = args.Ts*[0:1
     
    -
    -

    7.6 generateSinIncreasingAmpl: Generate Sinus with increasing amplitude

    +
    +

    7.6 generateSinIncreasingAmpl: Generate Sinus with increasing amplitude

    - +

    -
    -

    Function description

    -
    +
    +

    Function description

    +
    function [U_exc] = generateSinIncreasingAmpl(args)
     % generateSinIncreasingAmpl - Generate Sinus with increasing amplitude
    @@ -4837,9 +4837,9 @@ t_exc = args.Ts*[0:1
     
    -
    -

    Optional Parameters

    -
    +
    +

    Optional Parameters

    +
    arguments
         args.Ts              (1,1) double  {mustBeNumeric, mustBePositive} = 1e-4
    @@ -4855,9 +4855,9 @@ t_exc = args.Ts*[0:1
     
    -
    -

    Sinus excitation

    -
    +
    +

    Sinus excitation

    +
    t_noise = 0:args.Ts:args.sin_period*args.sin_num;
     sin_exc = [];
    @@ -4873,9 +4873,9 @@ sin_exc = [];
     
    -
    -

    Smooth Ends

    -
    +
    +

    Smooth Ends

    +
    t_smooth_start = args.Ts:args.Ts:args.t_start;
     
    @@ -4899,9 +4899,9 @@ V_smooth_end   = zeros(size(t_smooth_start));
     
    -
    -

    Combine Excitation signals

    -
    +
    +

    Combine Excitation signals

    +
    V_exc = [V_smooth_start, sin_exc, V_smooth_end];
     t_exc = args.Ts*[0:1:length(V_exc)-1];
    @@ -4924,7 +4924,7 @@ t_exc = args.Ts*[0:1
     

    Author: Dehaeze Thomas

    -

    Created: 2021-06-17 jeu. 08:49

    +

    Created: 2021-06-17 jeu. 08:52

    diff --git a/test-bench-apa300ml.org b/test-bench-apa300ml.org index eccaa37..17cc26d 100644 --- a/test-bench-apa300ml.org +++ b/test-bench-apa300ml.org @@ -56,7 +56,7 @@ In this document, a test-bench is used to characterize the struts of the nano-hexapod. Each strut includes: -- 2 flexible joints at each ends. This flexible joints have been characterized in a [[file:../test-bench-flexible-joints/test-bench-flexible-joints.org][separate test bench]]. +- 2 flexible joints at each ends. This flexible joints have been characterized in a [[file:../test-bench-nass-flexible-joints/test-bench-flexible-joints.org][separate test bench]]. - one Amplified Piezoelectric Actuator (APA300ML) (described in Section [[sec:model_apa]]) - one encoder (Renishaw Vionci) that has been characterized in a [[file:../test-bench-vionic/test-bench-vionic.org][separate test bench]].