User Tools

Site Tools


neurali:gazebo_parametri_inerziali

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
neurali:gazebo_parametri_inerziali [2016/03/24 11:08] – [Parametri inerziali] profproneurali:gazebo_parametri_inerziali [2020/06/08 22:20] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +=====Parametri inerziali=====
 +
 +Il modello tridimensionale si può ottenere con [[educare:blender]] come una figura solida chiusa e convessa.
 +
 +Il modello tridimensionale si deve comportare realisticamente, secondo le leggi della fisica, quindi bisogna attribuire una massa, un baricentro (centro di massa) e un tensore di inerzia.
 +
 +Vedere 
 +  * [[neurali:ros struttura modello]] 
 +  * [[neurali:gazebo modelli]]
 +
 +Useremo [[educare:Meshlab]] che fa la seguente ipotesi: i corpi sono di densità omogenea (è più semplice calcolare la posizione del baricentro)
 +
 +
 +qui un tutorial http://gazebosim.org/tutorials?tut=inertia&cat=build_robot
 +
 +=====Calcolo automatico =====
 +
 +Calcolo del del volume e del baricentro utilizzando:
 +  - Aprire [[educare:Meshlab]]
 +  - View->Show Layer Dialog
 +  - Filters->Quality Measure and Computations->Compute Geometric Measures
 +
 +=====Transformation Scale=====
 +
 +  - Aprire Meshlab
 +  - Filters->Normals, Curvatures and Orientation->**Transform: Scale**
 +
 +[[neurali:Gazebo]] usa come unità di misura i metri, ma Meshlab cosa usa? 
 +
 +L'ingombro massimo è detto //Mesh Bounding Box Size// e confrontandolo con quello di Gazebo si può calcolare un **rapporto** da digitare nella finestra TRANSFORMATION SCALE di Meshlab.
 +Dopo aver calcolato questo valore, va moltiplicato anche il baricentro (Center of Mass) per ottenere le nuove coordinate del baricentro.
 +Si ingrandisce il modello inserendo il valore:
 +
 +scala="1/Mesh Volume"
 +
 +Questo permette di evitare che vengano **troncati** i valori decimali inferiori alla sesta cifra decimale si può aumentare l'ingombro del modello ed ottenere i valori corretti del **tensore inerziale**.
 +Poi si corregge il valore del tensore inerziali moltiplicandolo per (scala)<sup>-2</sup>
 +
 +====Tag nel modello====
 +
 +Come visto in [[neurali:ros struttura modello]] esistono i seguenti tag per ogni link che compone il modello .sdf.
 +  * link
 +    * inertial
 +      * origin
 +      * mass
 +      * inertia
 + 
 +L'ultimo tag contiene la matrice del tensore di 3x3=9 elementi. Poiché è simmetrico bastano 6 elementi per descriverlo. Quella che segue è la mappa dell'output di Meshlab
 +<code>
 +| ixx ixy ixz |
 +| ixy iyy iyz |
 +| ixz iyz izz |
 +</code>
 +
 +=====Test=====
 +Per controllare se il modello è riuscito bene avviare prima ROS e caricare il modello, aprire anche GAZEBO
 +
 +  roslaunch gazebo_ros empty_world.launch
 +  rosrun gazebo_ros spawn_model -sdf -file `rospack find my_robot_description`/urdf/my_robot.sdf -model MyRobot
 +
 +Per migliorare il debug può essere utile rimuovere il pavimento (ground plane) mettendo in pausa il world.
 +
 +Mostrare un box porpora intorno ad ogni link
 +
 +  - sulla finestra Gazebo
 +  - View->Center of Mass / Inertia
 +
 +