Describe simscape model of nano-hexapod elements
This commit is contained in:
@@ -3,12 +3,18 @@
|
||||
|
||||
* Introduction :ignore:
|
||||
|
||||
In this document, a Simscape model of the nano-hexapod is developed.
|
||||
In this document, a Simscape model of the nano-hexapod is developed and studied (shown in Figure [[fig:nano_hexapod_simscape]]).
|
||||
|
||||
- Section [[sec:nano_hexapod]]:
|
||||
- Section [[sec:integral_force_feedback]]:
|
||||
- Section [[sec:direct_velocity_feedback_struts]]:
|
||||
- Section [[sec:direct_velocity_feedback_plates]]:
|
||||
It is structured as follows:
|
||||
- Section [[sec:nano_hexapod]]: the simscape model of the nano-hexapod is presented. Few of its elements can be configured as wanted. The effect of the configuration on the obtained dynamics is studied.
|
||||
- Section [[sec:integral_force_feedback]]: Direct Velocity Feedback is applied and the obtained damping is derived.
|
||||
- Section [[sec:direct_velocity_feedback_struts]]: the encoders are fixed to the struts, and Integral Force Feedback is applied. The obtained damping is computed.
|
||||
- Section [[sec:direct_velocity_feedback_plates]]: the same is done when the encoders are fixed on the plates
|
||||
|
||||
#+name: fig:nano_hexapod_simscape
|
||||
#+caption: 3D view of the Sismcape model for the Nano-Hexapod
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/nano_hexapod_simscape_encoder_struts.png]]
|
||||
|
||||
* Nano-Hexapod
|
||||
<<sec:nano_hexapod>>
|
||||
@@ -39,9 +45,10 @@ open('matlab/nano_hexapod/nano_hexapod.slx')
|
||||
|
||||
** Nano Hexapod - Configuration
|
||||
<<sec:nano_hexapod_conf>>
|
||||
|
||||
*** Introduction :ignore:
|
||||
The nano-hexapod can be initialized and configured using the =initializeNanoHexapodFinal= function ([[sec:initializeNanoHexapodFinal][link]]).
|
||||
|
||||
The following code would produce the model shown in Figure [[fig:nano_hexapod_simscape_encoder_struts]].
|
||||
#+begin_src matlab
|
||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
'flex_top_type', '3dof', ...
|
||||
@@ -50,6 +57,115 @@ n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
'MO_B', 150e-3);
|
||||
#+end_src
|
||||
|
||||
#+name: fig:nano_hexapod_simscape_encoder_struts
|
||||
#+caption: 3D view of the Sismcape model for the Nano-Hexapod
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/nano_hexapod_simscape_encoder_struts.png]]
|
||||
|
||||
Several elements on the nano-hexapod can be configured:
|
||||
- The flexible joints (Section [[sec:conf_flexible_joint]])
|
||||
- The amplified piezoelectric actuators (Section [[sec:conf_apa]])
|
||||
- The encoders (Section [[sec:conf_encoders]])
|
||||
- The Jacobian matrices (Section [[sec:conf_jacobian]])
|
||||
|
||||
*** Flexible Joints
|
||||
<<sec:conf_flexible_joint>>
|
||||
|
||||
The model of the flexible joint is composed of 3 solid bodies as shown in Figure [[fig:simscape_model_flexible_joint]] which are connected by joints representing the flexibility of the joint.
|
||||
|
||||
We can represent:
|
||||
- the bending flexibility $k_{R_x}$, $k_{R_y}$
|
||||
- the torsional flexibility $k_{R_z}$
|
||||
- the axial flexibility $k_z$
|
||||
|
||||
The configurations and the represented flexibilities are summarized in Table [[tab:flex_type_conf]].
|
||||
|
||||
#+name: tab:flex_type_conf
|
||||
#+caption: Flexible joint's configuration and associated represented flexibility
|
||||
#+attr_latex: :environment tabularx :width 0.6\linewidth :align lXXX
|
||||
#+attr_latex: :center t :booktabs t :float t
|
||||
| =flex_type= | Bending | Torsional | Axial |
|
||||
|-------------+---------+-----------+-------|
|
||||
| =2dof= | x | | |
|
||||
| =3dof= | x | x | |
|
||||
| =4dof= | x | x | x |
|
||||
|
||||
Of course, adding more DoF for the flexible joint will induce an addition of many states for the nano-hexapod simscape model.
|
||||
|
||||
#+name: fig:simscape_model_flexible_joint
|
||||
#+caption: 3D view of the Sismcape model for the Flexible joint (4DoF configuration)
|
||||
#+attr_latex: :width 0.8\linewidth
|
||||
[[file:figs/simscape_model_flexible_joint.png]]
|
||||
|
||||
*** Amplified Piezoelectric Actuators
|
||||
<<sec:conf_apa>>
|
||||
|
||||
The nano-hexapod's struts are containing one amplified piezoelectric actuator (APA300ML from Cedrat Technologies).
|
||||
|
||||
The APA can be modeled in different ways which can be configured with the =actuator_type= argument.
|
||||
|
||||
The simplest model is a 2-DoF system shown in Figure [[fig:2dof_apa_model]].
|
||||
|
||||
#+name: fig:2dof_apa_model
|
||||
#+caption: Schematic of the 2DoF model for the Amplified Piezoelectric Actuator
|
||||
[[file:figs/2dof_apa_model.png]]
|
||||
|
||||
Then, a more complex model based on a Finite Element Model can be used.
|
||||
|
||||
*** Encoders
|
||||
<<sec:conf_encoders>>
|
||||
|
||||
The encoders can be either fixed directly on the struts (Figure [[fig:encoder_struts]]) or on the two plates (Figure [[fig:encoders_plates_with_apa]]).
|
||||
|
||||
This can be configured with the =motion_sensor_type= parameters which can be equal to ='struts'= or ='plates'=.
|
||||
|
||||
#+name: fig:encoder_struts
|
||||
#+caption: 3D view of the Encoders fixed on the struts
|
||||
#+attr_latex: :width 0.8\linewidth
|
||||
[[file:figs/encoder_struts.png]]
|
||||
|
||||
#+name: fig:encoders_plates_with_apa
|
||||
#+caption: 3D view of the Encoders fixed on the plates
|
||||
#+attr_latex: :width 0.6\linewidth
|
||||
[[file:figs/encoders_plates_with_apa.png]]
|
||||
|
||||
A complete view of the nano-hexapod with encoders fixed to the struts is shown in Figure [[fig:nano_hexapod_simscape_encoder_struts]] while it is shown in Figure [[fig:nano_hexapod_simscape_encoder_plates]] when the encoders are fixed to the plates.
|
||||
|
||||
#+name: fig:nano_hexapod_simscape_encoder_plates
|
||||
#+caption: Nano-Hexapod with encoders fixed to the plates
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/nano_hexapod_simscape_encoder_plates.png]]
|
||||
|
||||
The encoder model is schematically represented in Figure [[fig:simscape_encoder_model]]:
|
||||
- a frame {B}, fixed to the ruler is positioned on its top surface
|
||||
- a frame {F}, rigidly fixed to the encoder is initially positioned such that its origin is aligned with the x axis of frame {B}
|
||||
|
||||
The output measurement is then the x displacement of the origin of the frame {F} expressed in frame {B}.
|
||||
|
||||
#+name: fig:simscape_encoder_model
|
||||
#+caption: Schematic of the encoder model
|
||||
[[file:figs/simscape_encoder_model.png]]
|
||||
|
||||
If the encoder is experiencing some tilt, it is then "converted" into a measured displacement as shown in Figure [[fig:simscape_encoder_model_disp]].
|
||||
|
||||
#+name: fig:simscape_encoder_model_disp
|
||||
#+caption: Schematic of the encoder model
|
||||
[[file:figs/simscape_encoder_model_disp.png]]
|
||||
|
||||
*** Jacobians
|
||||
<<sec:conf_jacobian>>
|
||||
|
||||
While the Jacobian configuration will not change the physical system, it is still quite an important part of the model.
|
||||
|
||||
This configuration consists on defining the location of the frame {B} in which the Jacobian will be computed.
|
||||
This Jacobian is then used to transform the actuator forces to forces/torques applied on the payload and expressed in frame {B}.
|
||||
Same thing can be done for the measured encoder displacements.
|
||||
|
||||
** Effect of encoders on the decentralized plant
|
||||
<<sec:effect_encoder_location>>
|
||||
|
||||
We here wish to compare the plant from actuators to the encoders when the encoders are either fixed on the struts or on the plates.
|
||||
|
||||
We initialize the identification parameters.
|
||||
#+begin_src matlab
|
||||
%% Options for Linearized
|
||||
@@ -65,11 +181,6 @@ io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inp
|
||||
io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1; % Relative Motion Outputs
|
||||
#+end_src
|
||||
|
||||
** Effect of encoders on the decentralized plant
|
||||
<<sec:effect_encoder_location>>
|
||||
|
||||
We here wish to compare the plant from actuators to the encoders when the encoders are either fixed on the struts or on the plates.
|
||||
|
||||
Identify the plant when the encoders are on the struts:
|
||||
#+begin_src matlab
|
||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
@@ -3183,7 +3294,7 @@ arguments
|
||||
% For Flexible Frame
|
||||
args.actuator_ks (6,1) double {mustBeNumeric} = ones(6,1)*235e6 % Stiffness of one stack [N/m]
|
||||
args.actuator_cs (6,1) double {mustBeNumeric} = ones(6,1)*1e1 % Stiffness of one stack [N/m]
|
||||
% For Flexible
|
||||
|
||||
args.actuator_xi (1,1) double {mustBeNumeric} = 0.01 % Damping Ratio
|
||||
%% Controller
|
||||
args.controller_type char {mustBeMember(args.controller_type,{'none', 'iff', 'dvf'})} = 'none'
|
||||
|
Reference in New Issue
Block a user