%---------------------------------------------------------------------
%
%                          Capítulo 4 Leanguajes
%
%---------------------------------------------------------------------

\chapter{Lenguajes y aplicaciones utilizadas}

\begin{FraseCelebre}
\begin{Frase}
Cualquier estúpido puede escribir código que una computadora entienda. Los buenos programadores escriben código que los humanos entienden.
\end{Frase}
\begin{Fuente}
Martin Fowler.
\end{Fuente}
\end{FraseCelebre}

\begin{resumen}
...
\end{resumen}

%-------------------------------------------------------------------
%\section{Lenguaje de programación C++}
%\label{cap4:sec:lenguaje-de-programacion-cpp}
%-------------------------------------------------------------------
%...

%-------------------------------------------------------------------
\section{Lenguaje de programación XML}
\label{cap4:sec:lenguaje-de-programacion-xml}
%-------------------------------------------------------------------
XML proviene de eXtensible Markup Language(Lenguaje de Marcas Extensible), es un meta-lenguaje \footnote{quese utliza para decir algo acerca de otro} extensible de etiquetas que fue desarrollado por el Word Wide Web Consortium (W3C\footnote{http://www.w3.org}). Ademas cabe mencionar que es una adaptaci\'on del SGML(Standard Generalizaed Markup Language), un lenguaje que permite la organizaci\'on y el etiquetado de documentos. Esto quiere decir que el XML no es un lenguaje en s\'i mismo, sino un sitema que permnite definir lenguajes de acuerdo a las necesidades, como por ejemplo:
\begin{itemize}
\item Base de datos
\item Documentos de texto
\item Hojas de c\'alculo
\item Paginas webs
\end{itemize}

%-------------------------------------------------------------------
\subsection{Ventajas}
%-------------------------------------------------------------------
Algunas de las ventajas que se derivan de la utilizaci\'on del XML son:
\begin{itemize}
\item Ampliable: es posible extender f\'acilmente el c\'odigo con la adici\'on de nuevas etiquetas que se ajusten a las necesidades de la aplicaci\'on, de modo que se puede continuar utilizando sin ninguna complicaci\'on.
\item Analizador Estandar: Debido a esto no es necesario crear un analizador espec\'ifico para cada versi\'on de lenguaje XML. Esto posibilita el empleo de cualquier analizador disponible en la red y asi se evitan bugs y se acelera el desarrollo de aplicaciones.
\item Estructura Jerarquica: Gracias a esto es sencillo de comprender su estructura y procesarla mejorando la compatibilidad entre aplicaciones.
\item Analisis sintactico simple: facil de analizar producto de sus estrictas reglas de composici\'on de un documento.
\end{itemize}
%-------------------------------------------------------------------
\subsection{Estructura de un documento XML}%https://blogs.ua.es/gonzalo/2010/01/07/partes-de-un-documento-xml/   https://diego.com.es/xml-principios-basicos
%-------------------------------------------------------------------
La tecnología XML mantiene la información estructurada de la forma más abstracta y reutilizable posible. Esto quiere decir que se compone de partes bien definidas, y que esas partes se componen a su vez de otras partes. Por esta razón, presenta una estructura jerárquica. A esas partes se las llaman elementos, y se las señala mediante etiquetas. Una etiqueta es una marca hecha en el documento, que señala un fragmento de éste como un elemento. Las etiquetas tienen la forma <nombre>, donde nombre es el nombre del elemento que se está señalando.
%-------------------------------------------------------------------
\subsubsection{Prólogo}
%-------------------------------------------------------------------
Es la primera secci\'on del documento XML, son las l\'ineas que indican la versi\'on XML, el tipo de documento y otras cosas. Es opcional y se utiliza en favor de las buenas pr\'acticas. Todo pr\'ologo debe contener:
\begin{itemize}
\item Una declaración XML. Es la sentencia que declara al documento como un documento XML.
\item Una declaración de tipo de documento. Enlaza el documento con su DTD (definición de tipo de documento), o el DTD puede estar incluido en la propia declaración o ambas cosas al mismo tiempo.
\item Uno o más comentarios e instrucciones de procesamiento.
\end{itemize}
\medskip
ejemplo:  <?xml version="1.0" encoding="UTF-8"?>
%-------------------------------------------------------------------
\subsubsection{Cuerpo}
%-------------------------------------------------------------------
Secci\'on obligatoria del documento XML, debe contener un y solo un elemento raíz, característica indispensable también para que el documento esté bien formado. Sin embargo es necesaria la adquisición de datos para su buen funcionamiento
\medskip
\verb|ejemplo: <Edit_Mensaje> (...) </ Edit_Mensaje>|
%-------------------------------------------------------------------
\subsubsection{Elementos}
%-------------------------------------------------------------------
Un elemento XML es cualquie cosa que est\'e inclu\'ida entre la etiqueta inicial y final. Puede contener texto, atributos, otros elementos o mezcla de los anteriosres. Adem\'as existe la posibilidad de tener un contenido vac\'io. Para crear un elemento se debe tener en consideraci\'on lo siguiente:
\begin{itemize}
\item Son sensibles a letras may\'usculas y min\'usculas.
\item Deben empezar con una letra o de lo contrario con una barra baja.
\item No pueden empezar con las letras "xml".
\item Pueden contener letras d\'igitos, guiones, barras bajas y puntos.
\item No pueden contener espacios.
\end{itemize}
\medskip
ejemplo: 
\begin{verbatim}
<animal>
    <nombre>Bun</nombre>
    <tipo>León</tipo>
    <color>Marrón</color>
    <edad>15</edad>
    <familia></familia>
</animal>
\end{verbatim}
%-------------------------------------------------------------------
\subsubsection{Atributos}
%-------------------------------------------------------------------
Los elementos pueden tener atributos, que son una manera de incorporar características o propiedades a los elementos de un documento. Estan dise\~nados para contener datos relacionados con un elemento espec\'ifico. Deben ir siempre encerrados entre comillas simples o dobles. Para crear un atributo de manera correcta se debe tener en consideraci\'on:
\begin{itemize}
\item No pueden contener m\'ultiples valores.
\item No pueden contener estructuras en \'arbol.
\item No se pueden expandir f\'acilmente (para futuros cambios). 
\end{itemize}
\medskip
ejemplos:
\begin{verbatim}
<pelicula categoria="accion">
    <titulo idioma="ingles">Mad Max</titulo>
    <director>George Miller</director>
    <estreno>15 mayo 2015</estreno>
    <reparto>Tom Hardy</reparto>
    <reparto>Charlize Theron</reparto>
    <reparto>Nicholas Hoult</reparto>
</pelicula>

<futbolista nombre='Gonzalo "Pipita" Higuaín'>
<futbolista nombre='Gonzalo &quot;Pipita&quot; Higuaín'>
\end{verbatim}
%-------------------------------------------------------------------
\subsubsection{Entidades predefinidas}
%-------------------------------------------------------------------
Entidades p
ara representar caracteres especiales para que, de esta forma, no sean interpretados como marcado en el procesador XML.
\medskip
ejemplo: Entidad Predefinida: \verb|& amp; Caracter &|

%-------------------------------------------------------------------
\subsubsection{Comentarios}
%-------------------------------------------------------------------
Todo documento de desarrolo de aplicaciones necesita contener comentarios del funcionamiento general de algunas sentencias para poder modificar o reemplazar una secci\'on en el futuro por cualquier programador, adem\'as del echo de que es una buena pr\'acia. En particular para documentos XML este comentario, que agrega informaci\'on no utilizada por el analizador, tiene la siguiemte estructura:
\verb|<!-- comentario -->|

%-------------------------------------------------------------------
\subsection{Sintaxis}
%-------------------------------------------------------------------
Representa las normas a seguir para la construccion de doucmentos XML dictaminadas por el organimso desarrollador (W3C). Entre ellas destacan:
\begin{itemize}
\item El XML es Case - Sensitive: Distingue may\'usculas y min\'usculas.%explicar
\item Todo elemento tiene que tener su correspondiente etiqueta de inicio y de cierre, o una sola etiqueta vacia.
\item En Todo documento debe haber un elemento, llamado raiz de documento, que contenga a los demas.
\item Todos los elementos deberan estar correctamente anidados.
\item Todos los valores de los atributos deberan ir entre comillas.
\end{itemize}

%-------------------------------------------------------------------
\section{XML Robot Description Format(URDF)}
\label{cap4:sec:xml-robot-description-format}
%-------------------------------------------------------------------

\figura{Bitmap/link}{width=.8\textwidth}{fig:Link}%
       {Ejemplo de estructura robótica.}%
Unified Robot Descripción Format (URDF) es una especificación XML para describir un robot. Tratamos de mantener esta especificación lo más general posible, pero, obviamente, la especificación no puede describir todos los robots. La principal limitación en este punto es que sólo las estructuras de árbol pueden ser representados, descartando todos los robots paralelos. Además, la especificación asume que el robot consiste en eslabones rígidos conectados por articulaciones; elementos flexibles no son compatibles. La especificación incluye:
\begin{itemize}
\item Descripci\'on cinem\'atica y din\'amica del robot.
\item Representaci\'on visual.
\item Modelo de colisiones.
\end{itemize}
La descripción de un robot consiste en un conjunto de elementos de eslabones (links) y de un conjunto de elementos de unión (joints) que conectan los eslabones juntos(ver figura~\ref{fig:Link}).
\medskip
ejemplo:
\begin{verbatim}
    <robot name="pr2">
        <link> ... </link>
        <link> ... </link>
        <link> ... </link>
        <joint> .... </joint>
        <joint> .... </joint>
        <joint> .... </joint>
    </robot>
\end{verbatim}
Se puede ver que el elemento raíz del formato URDF es el elemento <robot>. Hay que definir ahora el elemento link y el elemento joint, y las etiquetas y atributos de cada uno de ellos.
%-------------------------------------------------------------------
\subsection{Link}
%-------------------------------------------------------------------
Es el elemento descrito por un cuerpo r\'igido con una inercia y caracter\'isticas visuales.
\figura{Bitmap/inertial}{width=.8\textwidth}{fig:inertial}%
       {Elemento Link}%
%-------------------------------------------------------------------
\subsubsection{Atributos}
%-------------------------------------------------------------------
\textbf{Name}(necesario)
El nombre del eslabón(link).
%-------------------------------------------------------------------
\subsubsection{elementos}

\begin{itemize}
\item[\textbf{<inertial>}] (opcional)\\
Las propiedades inerciales del eslabón (link).
\begin{itemize}
\item[\textbf{<origin>}] (opcional)\\
Por defecto a la identidad si no se especifica,esta es la posición del marco de referencia inercial, relativo con el marco de referencia del eslabón. El origen del sistema de referencia inercial tiene que estar en el centro de gravedad. Sus ejes no necesitan estar alineados con los ejes principales de la inercia.
\begin{itemize}
\item[\textbf{xyz}] (opcional)\\
Por defecto el vector cero, representa el desplazamiento en x, y y z.
\item[\textbf{rpy}] (opcional)\\
Por defecto a la identidad si no se especifica, representa los ángulos de giro sobre los ejes x, y y z.
\end{itemize}
\item[\textbf{<mass>}] (Kg)\\
Es el valor de la masa del eslabón.
\item[\textbf{<inertia>}]. \\
La matriz rotacional inercial (3x3), representada en el marco inercial. Debido a que la matriz rotacional inercial es simétrica, solo 6 elementos de esta matriz son especificados, utilizando los atributos ixx, ixy, ixz, iyy, iyz, izz.
\end{itemize}

\item[\textbf{<visual>}] (opcional)\\
Las propiedades visuales del eslabón (link). Este elemento especifica la forma del objeto (caja, cilindro, esfera, etc.) para propósitos de visualización. \\
\com{ Varias peticiones de etiquetas <visual> pueden existir para el mismo eslabón. La unión de estas peticiones constituye la representación visual del eslabón.}
\begin{itemize}
\item[\textbf{name}] (opcional)\\
Especifica un nombre para una parte de la geometría del eslabón. Esto es útil para poder especificar trozos de la geometría.
	
\item[\textbf{<origin>}] (opcional)\\
Por defecto a la identidad si no se especifica, marco de referencia del elemento visual con respecto al marco de referencia del eslabón.
\begin{itemize}
\item[\textbf{xyz}] (opcional)\\
Por defecto el vector cero, representa el desplazamiento en x, y y z.
\item[\textbf{rpy}] (opcional)\\
Por defecto a la identidad si no se especifica, representa los ángulos de giro sobre los ejes x, y y z.
\end{itemize}
    
\item[\textbf{<geometry>}] (necesario)\\
La forma del objeto visual. Puede ser una de las siguientes:
\begin{itemize}        
\item[\textbf{<box>}].
\\El atributo Size representa la longitud de los tres lados del cubo. El origen del cubo está en su centro.
\item[\textbf{<cylinder>}].
\\Con radius y lenght se especifica su radio y altura. El origen del cilindro está en su centro.
\item[\textbf{<sphere>}].
\\Especifica el radio con radius. El origen de la esfera está en su centro.
\item[\textbf{<mesh>}].
\\Una figura tridimensional especificada por un archivo en filename, y un opcional scale que escala el tamaño de la figura. El formato recomendado para la mejor textura y color es el archivo Collada .dae, aunque también soporta archivos .stl.
\end{itemize}
\item[\textbf{<material>}] (opcional)\\
Es el material del elemento visual. Está permitido especificar un elemento material en el elemento ?robot? (nivel de arriba). Desde el eslabón se puede referirse el material por un nombre en name.
    
\item[\textbf{<color>}] (opcional)\\
rgba El color de un material es definido por un conjunto de cuatro números representando rojo/verde/azul/opacidad, cada uno entre un rango de 0 a 1.
 
\item[\textbf{<texture>}] (opcional)\\
La textura del material es definida por un archivo, filename.
\end{itemize}

\item[\textbf{<collision>}] (opcional)\\
Las propiedades colisionales del eslabón (link). Puede ser diferente de las propiedades visuales de un eslabón, por ejemplo, los modelos de colisión más simples son usados para reducir el tiempo de computación. \\
\com{Varias peticiones de etiquetas <collision> pueden existir para el mismo eslabón. La unión de la geometría que definen constituye la representación visual del eslabón.}
\begin{itemize}    
\item[\textbf{name}] (opcional)\\
Especifica un nombre para una parte de la geometría del eslabón. Esto es útil para poder especificar trozos de la geometría.
\item[\textbf{<origin>}] (opcional)\\
Por defecto a la identidad si no se especifica, véase la descripción <origin> en el elemento visual más arriba.
\item[\textbf{<geometry>}].
\\Véase la descripción <geometry> en el elemento visual más arriba.
\end{itemize}

\end{itemize}

\medskip
ejemplo:
\begin{verbatim}
<link name=\verb|"my_link"|>
    <inertial>
        <origin xyz="0 0 0.5" rpy="0 0 0"/>
        <mass value="1"/>
        <inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" />
        </inertial>
    <visual>
        <origin xyz="0 0 0" rpy="0 0 0" />
        <geometry>
            <box size="1 1 1" />
        </geometry>
        <material name="Cyan">
           <color rgba="0 1.0 1.0 1.0"/>
        </material>
    </visual>
    <collision>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <geometry>
        <cylinder radius="1" length="0.5"/>
        </geometry>
    </collision>
</link>
\end{verbatim}
%-------------------------------------------------------------------
\subsection{Joint}
%-------------------------------------------------------------------
Este elemento Joint(articulación) define las propiedades cinemáticas y dinámicas, además de los límites de seguridad de la articulación del robot.
\figura{Bitmap/joint}{width=.8\textwidth}{fig:joint}%
       {Elemento Joint.}%
%-------------------------------------------------------------------
\subsubsection{atributos}
%-------------------------------------------------------------------
\begin{itemize}
\item[\textbf{Name}] (necesario): Nombre de la articulación.
\item[\textbf{Type}] (necesario): Establece el tipo de articulación, los cuales puedes ser uno de los siguientes:
\begin{itemize}
\item \textbf{revolute}: una articulación de bisagra que gira a lo largo del eje y tiene un rango limitado especificado por los límites superior e inferior.
\item \textbf{continuous}: una articulación en bisagra continua que gira en torno al eje y no tiene límites superior e inferior.
\item \textbf{prismatic}: una junta deslizante que se desliza a lo largo del eje, y tiene un rango limitado especificado por los límites superior e inferior.
\item \textbf{fixed}: Esto no es realmente una articulación, ya que no puede moverse. Todos los grados de libertad están bloqueados. Este tipo de unión no requiere ejes, la calibración, la dinámica, límites o controlador de seguridad.
\item \textbf{floating}: Esta articulación permite el movimiento de los 6 grados de libertad.
\item \textbf{planar}: Esta articulación permite el movimiento en un plano perpendicular al eje.
\end{itemize}
\end{itemize}
%-------------------------------------------------------------------
\subsubsection{elementos}
%-------------------------------------------------------------------
\begin{itemize}
\item[\textbf{<origin>}] (opcional, por defecto la identidad si no se especifica)\\
Esta es la transformada desde el eslabón del padre con el eslabón del hijo.
La articulación se encuentra en el origen del eslabón de hijo.%, como se muestra en la figura anterior.
\begin{itemize}
\item[\textbf{xyz}] (opcional: por defecto el vector cero)\\
Representa el desplazamiento en x, y y z.
\item[\textbf{rpy}] (opcional: por defecto el vector cero si no se especifica)\\
Representa la rotación en torno al eje fijo x, y y z. Todos los ángulos se especifican en radianes.
\end{itemize}

\item[\textbf{<parent>}] (necesario)\\
El nombre del eslabón padre (obligatorio):
\begin{itemize}
\item[\textbf{link}]
El nombre del eslabón que es el padre de este eslabón en la estructura de árbol del robot.
\end{itemize}

\item[\textbf{<child>}] (necesario)\\
El nombre del eslabón hijo (obligatorio).
\begin{itemize}
\item[\textbf{link}]
El nombre del eslabón que es el del hijo.
\end{itemize}

\item[\textbf{<axis>}] (opcional: por defecto (1,0,0))\\
Este es el eje de rotación de articulaciones de giro, el eje de traslación para juntas prismáticas, y la superficie normal para juntas planas. El eje se especifica en el marco común de referencia. Articulaciones fijas y flotantes no utilizan éste atributo.
\begin{itemize}
\item[\textbf{xyz}] (necesario)\\
Representa el componente de un vector x, y, z. El vector debe estar normalizado.
\end{itemize}

\item[\textbf{<calibration>}] (opcional)\\
La posición de referencia de la articulación, usada para calibrar la posición absoluta de la articulación.
\begin{itemize}
\item \textbf{rising} (opcional)\\
Cuando la articulación se mueve en una dirección positiva, esta posición de referencia dará lugar a un flanco ascendente.
\item \textbf{falling} (opcional)\\
Cuando la articulación se mueve en una dirección positiva, esta posición de referencia dará lugar a un flanco descendente.
\end{itemize}

\item[\textbf{<dynamics>}] (opcional)\\
Un elemento que especifica las propiedades físicas de la articulación. Estos valores se utilizan para definir las propiedades de modelado de la articulación, especialmente útil para la simulación.
\begin{itemize}
\item \textbf{damping} (opcional, por defecto 0)\\
El valor de amortiguación física de la articulación ( $\frac{N*s}{m}$ para articulaciones prismáticas,$\frac{N*m*s}{rad}$ para articulaciones de revolución).
\item \textbf{friction} (opcional, por defecto 0)\\
El valor de fricción estática física de la articulación ( $N$ para articulaciones prismáticas, $N * s$ para articulaciones de revolución).
\end{itemize}

\item[\textbf{<limit>}] (únicamente para articulaciones prismáticas y de revoluto)\\
Un elemento que puede contener los siguientes atributos:
\begin{itemize}
\item \textbf{lower} (opcional, por defecto es 0)\\
Un atributo que especifica el límite inferior de unión (radianes para juntas de revolución, metros en las articulaciones prismáticas). En articulaciones contínuas no se especifica este campo.
\item \textbf{upper} (opcional, por defecto es 0)\\
Un atributo que especifica el límite superior conjunta (radianes para juntas de revolución, metros en las articulaciones prismáticas). En articulaciones contínuas no se especifica este campo.
\item \textbf{effort} (requerido)\\
Un atributo para el máximo esfuerzo de la articulación (|esfuerzo aplicado | <|esfuerzo|).
\item \textbf{velocity} (requerido)\\
Define la velocidad máxima de la articulación.
\end{itemize}

\item[\textbf{<mimic>}] (opcional)\\
Esta etiqueta se utiliza para especificar esta articulación imita a otra articulación existent. El valor de este conjunto puede calcularse como $valor = multiplicador * other joint value + offset$. Va seguido de los siguientes atributos:
\begin{itemize}
\item[\textbf{joint}] (requerido)\\
Especifica el nombre de la articulación a imitar.
\item[\textbf{multiplier}] (opcional)\\
Especifica el factor multiplicativo en la fórmula anterior. El valor por defecto es 1.
\item[\textbf{offset}] (opcional)\\
Especifica el desplazamiento para agregar en la fórmula anterior. Por defecto es 0.
\end{itemize}

\item[\textbf{<safety controller>}] (opcional)\\
Un elemento que puede contener los siguientes atributos:
\begin{itemize}
\item \verb|soft_lower_limit| (opcional, por defecto es 0)\\
Un atributo que especifica el límite inferior de la articulación donde el controlador de seguridad comienza a limitar la posición de la articulación. Este límite debe ser mayor que el límite inferior de la articulación.
\item \verb|soft_upper_limit| (opcional, por defecto es 0)\\
Un atributo que especifica el límite superior de la articulación donde el controlador de seguridad comienza a limitar la posición de la articulación. Este límite debe ser menor que el límite superior de la articulación.
\item \verb|k_position| (opcional, por defecto es 0)\\
Un atributo que especifica la relación entre los límites de posición y velocidad.
\item \verb|k_velocity| (requerido)\\
Un atributo que especifica la relación entre el esfuerzo y los limites de velocidad.
\end{itemize}
\medskip
ejemplo:
\begin{verbatim}
<joint name="my_joint" type="floating">
    <origin xyz="0 0 1" rpy="0 0 3.1416"/>
    <parent link="link1"/>
    <child link="link2"/>
    <calibration rising="0.0"/>
    <dynamics damping="0.0" friction="0.0"/>
    <limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />
    <safety_controller
        k_velocity="10"
        k_position="15"
    soft_lower_limit="-2.0" soft_upper_limit="0.5" />
</joint>
\end{verbatim}

\end{itemize}
%-------------------------------------------------------------------
%\section{Archivos y programas necesarios}
%\label{cap4:sec:archivos-y-programas-necesarios}
%-------------------------------------------------------------------

%...
%-------------------------------------------------------------------
\subsubsection{Archivos Xacro Macro}
\label{cap4:ssec:archivos-xacro-macro}
Existe una forma de generalizar y reutilizar el c\'odigo para la creaci\'on de un robot y para eso existe XACRO. Un XACRO es un tipo de URDF macro que se puede utilizar para generar un URDF. Es muy sencillo despu\'es personalizar las partes deseadas y generar el URDF personalizado de todo el robot.\\
Una de las ventajas de utilizar XACRO es que si hay un error en la especificaci\'on XML, en el momento de generar el URDF, el termina indica la l\'inea donde se encuentra dicho error. Si el archivo macro no posee errores, lo generar\'a satisfactoriamente y cuando se ejecute el URDF no mostrar\'a ninguna anomal\'ia.\\
Ejemplo de XACRO:\\
Se quiere modelar un robot a partir de su base y su brazo. Para este caso,
los archivos que se necesitarán serán:\\
\begin{verbatim}
base.xacro union.xacro  base_macro.xacro
brazo.xacro  brazo_macro.xacro
\end{verbatim}\\
En \verb|base_macro.xacro| y \verb|brazo_macro.xacro| estará todo el código del modelado de esa parte.\\
En base.xacro y brazo.xacro se encuentra la referencia al archivo macro de cada parte, es decir:\\
\verb|<xacro:include filename="$(find robot)/urdf/base_macro.xacro"/>| \\
\verb|<xacro:include filename="$(find robot)/urdf/brazo_macro.xacro"/>| \\
En union.xacro se encuentra la referencia a estos dos archivos, y la articulación (joint) que une ambas partes. Para generar el URDF de este robot, hay que poner la siguiente instrucción:
\verb|rosrun xacro xacro.py union.xacro robot.urdf|\\
Donde robot.urdf es el programa, que contendrá la especificación XML de las XACROS, pero de una forma más ?limpia y ordenada?. No se recomienda hacer muchos cambios o elaborar directamente el URDF puesto que si después hay algún error en el código será muy difícil detectarlo (el terminal no señala la línea errónea del programa). Es muy importante que la información dentro del URDF sea exacta. Específicamente, los límites de las articulaciones y orientaciones deben ser correctos. Para visualizar el robot hay que ejecutar lo siguiente:\\
\verb|roslaunch urdf_tutorial display.launch model:=robot.urdf gui:=True| \\
Se abrirá el rviz con el archivo robot.urdf.
%insertar pantallazo rviz

%-------------------------------------------------------------------
\section*{\ProximoCapitulo}
%-------------------------------------------------------------------
\TocProximoCapitulo

...

% Variable local para emacs, para  que encuentre el fichero maestro de
% compilación y funcionen mejor algunas teclas rápidas de AucTeX
%%%
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "../Tesis.tex"
%%% End:
