<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>Robotica/PlayerStageRoMAA/RoMAAGazebo1/GazeboModels</title><revhistory><revision><revnumber>4</revnumber><date>2011-04-20 22:09:26</date><authorinitials>GonzaloPerezPaina</authorinitials><revremark>organización de la wiki</revremark></revision><revision><revnumber>3</revnumber><date>2010-06-05 22:47:18</date><authorinitials>GonzaloPerezPaina</authorinitials></revision><revision><revnumber>2</revnumber><date>2010-06-05 22:46:49</date><authorinitials>GonzaloPerezPaina</authorinitials></revision></revhistory></articleinfo><section><title>Modelos en Gazebo</title><section><title>Archivos .world</title><para>Los <ulink url="http://playerstage.sourceforge.net/doc/Gazebo-manual-0.8.0-pre1-html/config_syntax.html">archivos world</ulink> contienen una <emphasis role="strong">descripción del entorno</emphasis> a ser simulado en <emphasis>Gazebo</emphasis>. Este describe el diseño de robots, sensores, fuente de luz, componentes de la interfaz de usuario, y demás. El archivo world también se puede usar para controlar algunos aspectos del motor de simulación, tales como la fuerza de gravedad o los pasos temporales de la simulación.  </para><para>Los archivos world de <emphasis>Gazebo</emphasis> estan escritos en XML lo que permite crearlos y modificarlos usando un editor de texto.  </para></section><section><title>Conceptos claves</title><para>El mundo consiste principalmente de delaraciones de <emphasis role="strong">modelos</emphasis>. Un modelo puede ser un robot (por ej. Pioneer2AT), un sensor (por ej. SICK LMS200), una característica física del entorno (por ej. el terreno) o algun objeto manipulable.  </para><para>Otros elementos dentro del archivo world indican como renderizar la escena mediante la declaración <emphasis>ogre</emphasis> (Open source 3D Graphics Engine), atributos del GUI mediante declaración <emphasis>gui</emphasis>, y propiedades físicas del motor mediante declaración <emphasis>ode</emphasis> (Open Dinamics Engine); estas <emphasis>declaraciones</emphasis> se refiere a secciones del archivo xml. </para></section><section><title>Sintaxis del modelo</title><para>Un <emphasis role="strong">modelo</emphasis> (model) es una entidad física dentro del mundo. Esta consiste de uno o mas <emphasis role="strong">cuerpos</emphasis> (body), cada uno conteniendo una o mas <emphasis role="strong">geometrías</emphasis> (geom). </para><para>Los modelos pueden estar escritos en archivos separados e incluirlos dentro del .world.  </para><screen><![CDATA[<include embedded="true">
   <xi:include href="models/sicklms200.model" />
</include>]]></screen><para>(embedded : False if the included file does not need parameters overwritten.) </para><section><title>Controladores e Interfaces</title><para>Un modelo puede contener uno o mas controladores. Se utiliza un <emphasis role="strong">controlador</emphasis> para leer datos desde sensores o manipular cuerpos. Cada controlador hace uso de una o mas interfaces. Una <emphasis role="strong">interfaz</emphasis> define que datos se exportan mediante <emphasis>libgazebo</emphasis>, por ejemplo el controlador pioneer2dx_position2d puede utilizar la interfaz position. </para></section></section><section><title>Creación de modelos</title><para>Los modelos son archivos <emphasis>xml</emphasis> (<ulink url="http://playerstage.sourceforge.net/doc/Gazebo-manual-0.8.0-pre1-html/tutorial_model.html">Ver</ulink>)  </para><screen><![CDATA[<?xml version="1.0"?>
]]><![CDATA[
<model:physical name="default_pioneer_model"
........
</model:physical>]]></screen><para>El ejemplo incorporado en la instalación de <emphasis>Gazebo</emphasis> del robot !Pioneer2DX esta creado a partir de sus partes importado dentro del arhivo .model (xml) en formato .mesh binarios compatibles con OGRE (estos archivos .mesh forman la sección <emphasis>geom</emphasis> del modelo). Las partes móviles (ej. ruedas) y fijas se unen mediantes uniones (joints). </para></section><section><title>Exportar archivos .mesh compatibles con ogre desde blender</title><para>Los archivo mesh puede ser exportados desde blender utilizando un script de python <emphasis><ulink url="https://ciii.frc.utn.edu.ar/wiki/Robotica/PlayerStageRoMAA/RoMAAGazebo1/GazeboModels/wiki/BlenderExport#">BlenderExport</ulink></emphasis> creado por Ogre (motor 3D de Gazebo) que puede descargarse desde <ulink url="http://www.ogre3d.org/download/tools">aquí</ulink>; este script exporta archivos .mesh en formato xml. El script puede utilizar la herramienta <emphasis>OgreXMLConverter</emphasis> para convertir los mesh xml a binarios, dicha herramienta se encuentra dentro del paquete <code>ogre-tools</code> de debian. </para><para>Para instalar BlenderExport hay que copiar el script y subdirectorios a <code>~/.blender/scripts/</code> </para></section></section></article>