User Tools

Site Tools


neurali:ros_struttura_modello

Struttura modello

Si tratta di un file .sdf (xml) che parte con un tag <model> (segue esempio)

http://sdformat.org/spec?ver=1.5&elem=collision#surface_friction

Domanda: esiste un software Model Editor nella versione 6 di Gazebo?

un model è composto da link che sono congiunti da join:

  • links, può essere un pezzo di una catena oppure una ruota, cioè elementi che hanno proprietà fisiche
    • a sua volta contiene elementi collision e visual. Ridurre i link inutili, se non mobili, sostituendoli con collision (domanda: ma collision non si trovava dentro un link?)
      • collision objects, contenuti in ogni link, contengono la descrizione della geometria per le collisioni. Può essere un mesh di triangoli o una forma unica
      • visuals, rende visibile un link
      • inertials, descrivono momento di inerzia e massa del link, sono proprietà dinamiche del link parametri inerziali
      • sensors, raccolgono dati dal world e li inviano al plugin sensor
    • plugins, libreria esterna che controlla un model plugin
    • joints, punti di congiunzione di due links, stabilisce relazione gerarchica ed eredita proprietà fisiche dal link padre (es: asse di rotazione). Esiste la joint di tipo “revolute” di cui si deve definire asse di rotazione e limiti.

Un link figlio può essere specificato usando il nome del modello come “namespace” <child>hokuyo::pezzo</child>

Usare <include> dentro un file .sdf permette di aggiungere parti esterne (esistenti), come un sensore laser (hokuyo)

<?xml version='1.0'?>
<sdf version="1.4">
<model name="my_model">
  <pose>0 0 0.5 0 0 0</pose>
  <static>true</static>        <!--trip -->
    <link name="link">
      <inertial>
        <mass>1.0</mass>
        <inertia> <!-- interias are tricky to compute -->
          <!-- http://answers.gazebosim.org/question/4372/the-inertia-matrix-explained/ -->
          <ixx>0.083</ixx>       <!-- for a box: ixx = 0.083 * mass * (y*y + z*z) -->
          <ixy>0.0</ixy>         <!-- for a box: ixy = 0 -->
          <ixz>0.0</ixz>         <!-- for a box: ixz = 0 -->
          <iyy>0.083</iyy>       <!-- for a box: iyy = 0.083 * mass * (x*x + z*z) -->
          <iyz>0.0</iyz>         <!-- for a box: iyz = 0 -->
          <izz>0.083</izz>       <!-- for a box: izz = 0.083 * mass * (x*x + y*y) -->
        </inertia>
      </inertial>
      <collision name="collision">
        <geometry>
          <box>
            <size>1 1 1</size>
          </box>
        </geometry>
      </collision>
      <visual name="visual">
        <geometry>
          <box>
            <size>1 1 1</size>
          </box>
        </geometry>
      </visual>
    </link>
  </model>
</sdf>
neurali/ros_struttura_modello.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1