User Tools

Site Tools


neurali:gazebo_parametri_inerziali

Parametri inerziali

Il modello tridimensionale si può ottenere con 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

Useremo 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:

  1. Aprire Meshlab
  2. View→Show Layer Dialog
  3. Filters→Quality Measure and Computations→Compute Geometric Measures

Transformation Scale

  1. Aprire Meshlab
  2. Filters→Normals, Curvatures and Orientation→Transform: Scale

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)-2

Tag nel modello

Come visto in 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 3×3=9 elementi. Poiché è simmetrico bastano 6 elementi per descriverlo. Quella che segue è la mappa dell'output di Meshlab

| ixx ixy ixz |
| ixy iyy iyz |
| ixz iyz izz |

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

  1. sulla finestra Gazebo
  2. View→Center of Mass / Inertia
neurali/gazebo_parametri_inerziali.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1