Add few comments on simscape multibody
This commit is contained in:
parent
714225ef96
commit
b58d7627e4
@ -1,2 +1,2 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<Info Ref="hac_lac" Type="Relative" />
|
<Info />
|
@ -1,2 +1,2 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<Info Ref="control" Type="Relative" />
|
<Info />
|
@ -1,2 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<Info Ref="nass_library" Type="Relative" />
|
|
@ -1,2 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<Info Ref="active_damping" Type="Relative" />
|
|
@ -1,2 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<Info Ref="analysis" Type="Relative" />
|
|
@ -1,2 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<Info Ref="initialize" Type="Relative" />
|
|
@ -1,2 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<Info Ref="demonstration" Type="Relative" />
|
|
@ -41,6 +41,21 @@
|
|||||||
#+PROPERTY: header-args:latex+ :output-dir figs
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
|
* Introduction :ignore:
|
||||||
|
The goal here is to make an identification of the micro-station in order to compare the model with the measurements on the real micro-station.
|
||||||
|
|
||||||
|
In order to do so:
|
||||||
|
- Decide where to virtually excite the station and where to measure its motion
|
||||||
|
- Extract transfer functions from the excitation forces to the measured motion
|
||||||
|
- Compare those transfer functions with the modal analysis
|
||||||
|
|
||||||
|
For the excitation, we can choose the same excitation points as the one used for the modal test.
|
||||||
|
For the measurement points, we can choose the Center of Mass of each solid body.
|
||||||
|
The center of mass of each solid body is not easily defined using Simscape.
|
||||||
|
Indeed, we can define the center of mass of any solid body but not of multiple solid bodies. However, one solid body is composed of multiple STEP files.
|
||||||
|
One solution could be to use one STEP file for one solid body.
|
||||||
|
However, the position of the center of mass can be exported using simulink and then defined on Simscape.
|
||||||
|
|
||||||
* ZIP file containing the data and matlab files :ignore:
|
* ZIP file containing the data and matlab files :ignore:
|
||||||
#+begin_src bash :exports none :results none
|
#+begin_src bash :exports none :results none
|
||||||
if [ matlab/identification_micro_station.m -nt data/identification_micro_station.zip ]; then
|
if [ matlab/identification_micro_station.m -nt data/identification_micro_station.zip ]; then
|
||||||
@ -56,9 +71,25 @@
|
|||||||
All the files (data and Matlab scripts) are accessible [[file:data/identification_micro_station.zip][here]].
|
All the files (data and Matlab scripts) are accessible [[file:data/identification_micro_station.zip][here]].
|
||||||
#+end_note
|
#+end_note
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
* Identification of the micro-station
|
* Identification of the micro-station
|
||||||
|
#+begin_src matlab
|
||||||
|
simulinkproject('../');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
open sim_micro_station_id.slx
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Plot the obtained transfer functions
|
* Plot the obtained transfer functions
|
||||||
|
|
||||||
* Compare with the modal measurements
|
* Compare with the modal measurements
|
||||||
|
* Modal Identification of the micro station
|
||||||
|
106
index.org
106
index.org
@ -64,12 +64,10 @@ The project can be opened using the =simulinkproject= function:
|
|||||||
When the project opens, a startup script is ran.
|
When the project opens, a startup script is ran.
|
||||||
The startup script is defined below and is exported to the =project_startup.m= script.
|
The startup script is defined below and is exported to the =project_startup.m= script.
|
||||||
#+begin_src matlab :eval no :tangle src/project_startup.m
|
#+begin_src matlab :eval no :tangle src/project_startup.m
|
||||||
%%
|
|
||||||
freqs = logspace(-1, 3, 1000);
|
freqs = logspace(-1, 3, 1000);
|
||||||
save_fig = false;
|
save_fig = false;
|
||||||
save('./mat/config.mat', 'freqs', 'save_fig');
|
save('./mat/config.mat', 'freqs', 'save_fig');
|
||||||
|
|
||||||
%%
|
|
||||||
project = simulinkproject;
|
project = simulinkproject;
|
||||||
projectRoot = project.RootFolder;
|
projectRoot = project.RootFolder;
|
||||||
|
|
||||||
@ -89,11 +87,107 @@ When the project closes, it runs the =project_shutdown.m= script defined below.
|
|||||||
|
|
||||||
The project also permits to automatically add defined folder to the path when the project is opened.
|
The project also permits to automatically add defined folder to the path when the project is opened.
|
||||||
|
|
||||||
* Notes
|
* Simscape Model
|
||||||
Step files are exported from SolidWorks and imported into Simscape.
|
A [[https://.mathworks.com/products/simscape.html][simscape]] model permits to model multi-physics systems.
|
||||||
Each step file is then considered as a solid body.
|
|
||||||
Inertia and mass matrices are computed from the density of the material and the geometry as defined by the step file.
|
|
||||||
|
|
||||||
|
[[https://mathworks.com/products/simmechanics.html][Simscape Multibody]] permits to model multibody systems using blocks representing bodies, joints, constraints, force elements, and sensors.
|
||||||
|
|
||||||
|
** Solid bodies
|
||||||
|
Each solid body is represented by a [[https://mathworks.com/help/physmod/sm/ref/solid.html][solid block]].
|
||||||
|
The geometry of the solid body can be imported using a =step= file. The properties of the solid body such as its mass, center of mass and moment of inertia can be derived from its density and its geometry as defined by the =step= file. They also can be set by hand.
|
||||||
|
|
||||||
|
** Frames
|
||||||
|
Frames are very important in simscape multibody, they defined where the forces are applied, where the joints are located and where the measurements are made.
|
||||||
|
|
||||||
|
They can be defined from the solid body geometry, or using the [[https://mathworks.com/help/physmod/sm/ref/rigidtransform.html][rigid transform block]].
|
||||||
|
|
||||||
|
** Joints
|
||||||
|
Solid Bodies are connected with joints (between frames of the two solid bodies).
|
||||||
|
|
||||||
|
There are various types of joints that are all described [[https://mathworks.com/help/physmod/sm/ug/joints.html][here]].
|
||||||
|
|
||||||
|
#+name: tab:joint_dof
|
||||||
|
#+caption: Degrees of freedom associated with each joint
|
||||||
|
| Joint Block | Translational DOFs | Rotational DOFs |
|
||||||
|
|-------------------+--------------------+-----------------|
|
||||||
|
| 6-DOF | 3 | 3 |
|
||||||
|
| Bearing | 1 | 3 |
|
||||||
|
| Bushing | 3 | 3 |
|
||||||
|
| Cartesian | 3 | 0 |
|
||||||
|
| Constant Velocity | 0 | 2 |
|
||||||
|
| Cylindrical | 1 | 1 |
|
||||||
|
| Gimbal | 0 | 3 |
|
||||||
|
| Leadscrew | 1 (coupled) | 1 (coupled) |
|
||||||
|
| Pin Slot | 1 | 1 |
|
||||||
|
| Planar | 2 | 1 |
|
||||||
|
| Prismatic | 1 | 0 |
|
||||||
|
| Rectangular | 2 | 0 |
|
||||||
|
| Revolute | 0 | 1 |
|
||||||
|
| Spherical | 1 | 3 |
|
||||||
|
| Telescoping | 1 | 3 |
|
||||||
|
| Universal | 0 | 2 |
|
||||||
|
| Weld | 0 | 0 |
|
||||||
|
|
||||||
|
Joint blocks are assortments of joint primitives:
|
||||||
|
- *Prismatic*: allows translation along a single standard axis: =Px=, =Py=, =Pz=
|
||||||
|
- *Revolute*: allows rotation about a single standard axis: =Rx=, =Ry=, =Rz=
|
||||||
|
- *Spherical*: allow rotation about any 3D axis: =S=
|
||||||
|
- *Lead Screw*: allows coupled rotation and translation on a standard axis: =LSz=
|
||||||
|
- *Constant Velocity*: Allows rotation at constant velocity between intersection through arbitrarily aligned shafts: =CV=
|
||||||
|
|
||||||
|
#+name: tab:joint_primitive
|
||||||
|
#+caption: Joint primitives for each joint type
|
||||||
|
| Joint Block | Px | Py | Pz | Rx | Ry | Rz | S | CV | LSz |
|
||||||
|
|-------------------+----+----+----+----+----+----+---+----+-----|
|
||||||
|
| 6-DOF | x | x | x | | | | x | | |
|
||||||
|
| Bearing | | | x | x | x | x | | | |
|
||||||
|
| Bushing | x | x | x | x | x | x | | | |
|
||||||
|
| Cartesian | x | x | x | | | | | | |
|
||||||
|
| Constant Velocity | | | | | | | | x | |
|
||||||
|
| Cylindrical | | | x | | | x | | | |
|
||||||
|
| Gimbal | | | | x | x | x | | | |
|
||||||
|
| Leadscrew | | | | | | | | | x |
|
||||||
|
| Pin Slot | x | | | | | x | | | |
|
||||||
|
| Planar | x | x | | | | x | | | |
|
||||||
|
| Prismatic | | | x | | | | | | |
|
||||||
|
| Rectangular | x | x | | | | | | | |
|
||||||
|
| Revolute | | | | | | x | | | |
|
||||||
|
| Spherical | | | | | | | x | | |
|
||||||
|
| Telescoping | | | x | | | | x | | |
|
||||||
|
| Universal | | | | x | x | | | | |
|
||||||
|
| Weld | | | | | | | | | |
|
||||||
|
|
||||||
|
For each of the joint primitive, we can specify the dynamical properties:
|
||||||
|
- The *spring stiffness*: either linear or rotational one
|
||||||
|
- The *damping coefficient*
|
||||||
|
|
||||||
|
For the actuation, we can either specify the motion or the force:
|
||||||
|
- the force applied in the corresponding DOF is provided by the input
|
||||||
|
- the motion is provided by the input
|
||||||
|
|
||||||
|
A sensor can be added to measure either the position, velocity or acceleration of the joint DOF.
|
||||||
|
|
||||||
|
Composite Force/Torque sensing:
|
||||||
|
- Constraint force
|
||||||
|
- Total force: gives the sum across all joint primitives over all sources: actuation inputs, internal springs and dampers.
|
||||||
|
|
||||||
|
** Measurements
|
||||||
|
A transform sensor block measures the spatial relationship between two frames: the base =B= and the follower =F=.
|
||||||
|
|
||||||
|
It can give the rotational and translational position, velocity and acceleration.
|
||||||
|
|
||||||
|
The measurement frame should be specified: it corresponds to the frame in which to resolve the selected spatial measurements. The default is =world=.
|
||||||
|
|
||||||
|
If we want to simulate an *inertial sensor*, we just have to choose =B= to be the =world= frame.
|
||||||
|
|
||||||
|
*Force sensors* are included in the joints blocks.
|
||||||
|
|
||||||
|
** Excitation
|
||||||
|
We can apply *external forces* to the model by using an [[https://mathworks.com/help/physmod/sm/ref/externalforceandtorque.html][external force and torque block]].
|
||||||
|
|
||||||
|
Internal force, acting reciprocally between base and following origins is implemented using the [[https://mathworks.com/help/physmod/sm/ref/internalforce.html][internal force block]] even though it is usually included in one joint block.
|
||||||
|
|
||||||
|
* Notes
|
||||||
** Simscape files for identification
|
** Simscape files for identification
|
||||||
|------------------------+----+----+----+------+------|
|
|------------------------+----+----+----+------+------|
|
||||||
| Simscape Name | Ty | Ry | Rz | Hexa | NASS |
|
| Simscape Name | Ty | Ry | Rz | Hexa | NASS |
|
||||||
|
Loading…
Reference in New Issue
Block a user