Proyecto Fin de Carrera

Robótica, software y telecomunicaciones.

Las partes de un componente de Robocomp

En la entrada anterior expliqué cómo crear un componente en Robocomp, ahora explicaré con más detalle, las partes de un componente, qué función tiene cada parte, dónde tenemos que insertar nuestro código y dónde podemos encontrarnos problemas a la hora de implementar nuestro componente.

Suponemos que hemos creado un componente llamado fooComp, y éste se encuentra en $ROBOCOMP/Components/Robolab/Experimental/fooComp/

Dentro de la carpeta fooComp/ se nos habrán creado los siguientes archivos y carpetas:

  • CMakeLists.txt -> Es un archivo que usará cmake para que podamos compilar correctamente con make. En principio no debemos modificarlo.
  • Doxyfile -> Es una archivo de configuración de Doxygen (un sistema de documentación automático), imagino que debemos configurarlo cuando queramos que todas las clases, funciones y métodos que usa nuestro componentes su publiquen en la API de Robocomp. De momento no modificaremos nada.
  • fooComp.kdevelop -> Es un archivo XML que se genera para que podamos importar correctamente nuestro componente como un proyecto en kdevelop (un IDE de programación muy completo). No lo modificaremos, en todo caso lo usaremos para importar el componente a kdevelop y desarrollar nuestro componente desde allí.
  • templates/ -> Es un directorio con 2 archivos vacíos, un .cpp y un .h, realmente no sé para qué sirve pero por lo que indica su nombre, se supone que aquí se guardarán las plantillas con código de uso frecuente.
  • etc/ -> Dentro tenemos los archivos config y config.debug, el archivo de configuración de ICE y el mismo para hcer debug (localizar fallos y errores en el código).  El archivo config usar el lenguaje SLICE que es bastante intuitivo, este archivo sí tendremos que modificarlo, especialmente los host y los puertos de los componentes con los que nos comunicaremos.
  • bin/ -> En esta carpeta encontraremos 4 scripts, y será aquí donde se genere el binario cuando compilemos nuestro componente. Dos de los scripts sirven para ejecutar y parar el componente sin tener que pasar las opciones de configuración de ICE al binario. Los otros dos hacen lo mismo pero para hacer debug. Estos scripts serán: startfoo.sh, stopfoo.sh, startDebug.sh, y forceStopfoo.sh. El binario que se creará tras compilar se llamará fooComp.
  • src/ -> Como podréis imaginar aquí tenemos todo el código importante que hace funcionar nuestro componente, los archivos que encontremos aquí pueden variar en función de las clases e interfaces que utilicemos, pero es cierto que algunos archivos siempre estarán presentes. Por lo general todo archivo .cpp tendrá su homónimo .h, a continuación explico estos archivos:
    • CMakeLists.txt -> Este es un archivo muy importante que tendremos que modificar cada vez que vayamos a usar clases de otras librerías. Importante no confundir este archivo con su homónimo en la carpeta fooComp. Este es mucho más completo y ya veremos cómo se modifica más adelante.
    • config.h -> Es el único archivo .h que no tiene un .cpp con el mismo nombre, es un archivo de configuración muy sencillo, deberemos modificarlo si vamos a usar una GUI (Interfaz Gráfica de Usuario), descomentando la línea #define USE_QTGUI
    • monitor.cpp y monitor.h -> Estos archivos se generan para que nuestro componente se comunique adecuadamente con el componente monitorComp (un componente que encontraremos en $ROBOCOMP/Tools/ con el que se pueden monitorear todos los componentes de Robocomp). En un principio no modificaremos estos archivos.
    • commonbehaviorI.cpp y commonbehaviorI.h -> Aún no sé con seguridad el papel que desenpeñan estos archivos, pero en principio no será necesario modificarlos. Creo que son complementarios para el monitosComp.
    • fooI.cpp y fooI.h -> Desde aquí podemos implementar la interfaz de nuestro componente, definiendo lo que otros componentes pueden hacer y que datos pueden obtener conectándose a nuestro componente. Es muy posible que modifiquemos estos archivos más adelante.
    • fooComp.cpp ->No sé la función de este archivo, es curioso que no exista un fooComp.h, pero de momento no necesitamos editar este archivo.
    • worker.cpp y worker.h -> estos son los archivos más importantes de nuestro componente, el núcleo que se encargará de procesar la información, estos son los primeros archivos que modificaremos con total seguridad. En otra entrada hablaré de la estructura de éstos archivos y cómo modificarlos para dar forma a nuestro componente.

Resumiendo, los archivos que necesitamos modificar son:

/etc/config -> Editar hosts y puertos,  al principio trabajemos en un único ordenador, usaremos localhost en luegar de host.

/src/config.h -> Descomentar la línea si queremos usar GUI.

/src/worker.h -> Declaración de variables, objetos, señales y slots. Añadir los DEFINE y los INCLUDE.

/src/worker.cpp -> Inicializar variables y objetos, así como operar con ellos. Se opera principalmente en worker::compute() y se inicializa en el constructor.

/src/CMakeLists.txt -> Se añaden las rutas de las clases que usemos en #SOURCES, se añaden todos los archivos .h que usemos en #HEADERS, añadimos instrucciones CMake en #ROBOCOMP, descomentamos el #INCLUDE de #IPP en caso de que las necesitemos, añadiremos líneas en el apartado #QT4 en caso de usar GUI.

Anuncios

9 febrero 2011 - Posted by | all | , ,

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: