User Tools

Site Tools


neurali:ros_struttura_modello

Differences

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

Link to this comparison view

neurali:ros_struttura_modello [2018/04/25 07:55]
neurali:ros_struttura_modello [2020/06/08 22:20] (current)
Line 1: Line 1:
 +====== 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 [[neurali:gazebo parametri inerziali|parametri inerziali]]
 +      * **sensors**, raccolgono dati dal world e li inviano al plugin [[neurali:gazebo sensori e rumore|sensor]]
 +    * **plugins**, libreria esterna che controlla un model [[neurali:gazebo scrivere un plugin|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)
 +
 +<code xml>
 +<?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>
 +</code>