INDICE
Los sistemas de multi-robots cooperativos son una rama de estudio de la robótica móvil en la que se está investigando actualmente. Entre estos sistemas se encuentran los equipos de robots cooperativos distribuidos. La comunicación entre los componentes del sistema se puede llevar a cabo de diferentes maneras. CORBA en tiempo real es una herramienta muy útil para este sistema, puesto que se trata de un equipo de robots distribuidos, que además debe cumplir unos requisitos de tiempo real.
En este trabajo se pretende cambiar la arquitectura software tipo cliente-servidor de una aplicación para el control de un equipo de robots distribuidos por una arquitectura basada en CORBA en tiempo real. El objetivo es estudiar qué arquitectura es mejor para esta aplicación.
La plataforma hardware utilizada en el proyecto consta de una cámara cenital situada a cierta altura sobre el terreno. Esta cámara se conecta a un computador, encargado del procesamiento de imágenes y ejecución de los algoritmos de visión, toma de decisiones, generación de trayectorias y control de movimiento. El computador utiliza una conexión RS-232 para transmitir las órdenes de control de movimiento a un microcontrolador, que traduce estas órdenes a una secuencia de pulsos y los envía a los emisores de radio que permiten manejar el vehículo de forma remota.
El software del sistema está desarrollado bajo una versión debian de Linux, con kernel 2.6.12. El sistema tiene tres tipos de procesos diferentes. El primero se encarga de la ejecución del bucle de visión, el segundo se responsabiliza de las comunicaciones vía RS-232 con el microcontrolador y el tercero ejecuta las funciones de toma de decisiones, control y generación de trayectorias para cada vehículo. En la arquitectura original, las comunicaciones entre los procesos se basan en el modelo cliente servidor y el uso de bifurcaciones e hilos.
En la arquitectura propuesta en este trabajo se utiliza RT-CORBA para las comunicaciones. Para ello se ha utilizado la librería TAO.
La arquitectura está formada por un número indeterminado de clientes (iocaste). Estos clientes se conectan a los dos servidores, el servidor de visión (ganimedes) y el servidor serie (isonoe). El servidor serie se ejecuta con mucha mayor frecuencia que el servidor de visión. Por ello se ha definido una prioridad de mayor orden para el servidor de visión, utilizando las herramientas de RTCORBA.
También se han usado las utilidades de los Threads Pool, que permiten definir un
número concreto de hilos, de manera que la creación y destrucción de hilos no
afecten al tiempo de ejecución del proceso.
Las herramientas CORBA utilizadas en la implementación de los servidores y
clientes son:
Servicio de Nombres: la estrategia seguida para encontrar el servicio de
nombres ha sido el procedimiento de multicast.
Prioridades: la política de prioridades utilizada es client_propagated.
Threads pool: el número de threads depende del número de coches. Se han
definido 4 threads.
Las interfaces definidas son las siguientes:
interface CorbaSerie { void set_velocity (in double id, in double velocity_x, in double velocity_y); };
interface CorbaVision { double get_tanque1 (out double centrox, out double centroy,
out double esquina1x, out double esquina1y, out double esquina2x, out double esquina2y, out double esquina3x, out double esquina3y, out double esquina4x, out double esquina4y);
double get_tanque2 (out double centrox, out double centroy,
out double esquina1x, out double esquina1y, out double esquina2x, out double esquina2y, out double esquina3x, out double esquina3y, out double esquina4x, out double esquina4y);
};
Servidor serie ISONOE
En esta gráfica se comparan los tiempos de ejecución del servidor serie en el
sistema con RTCORBA (naranja) y el sistema basado en arquitectura cliente
servidor (azul). Se puede ver que la utilización de RTCORBA mejora mucho el
tiempo de ejecución de este proceso.
Servidor Serie ISONOE
En el siguiente gráfico se pueden comparar los tiempos de ejecución del cliente 0 en el caso de utilizar RTCORBA (naranja) o la arquitectura cliente-servidor (azul). Se ha reducido el tiempo de ejecución considerablemente al utilizar RTCORBA.
Cliente IOCASTE 0
En el siguiente gráfico se pueden comparar los tiempos de ejecución del cliente 1 en el caso de utilizar RTCORBA (naranja) o la arquitectura cliente-servidor (azul). Se ha reducido el tiempo de ejecución considerablemente al utilizar RTCORBA.
Cliente IOCASTE 1
En el siguiente gráfico se pueden comparar los tiempos de ejecución del servidor de visión en el caso de utilizar RTCORBA (naranja) o la arquitectura clienteservidor (azul). Se puede ver que el proceso es más lento e inestable en RTCORBA. Una posible explicación a este suceso es que este proceso tiene mayor carga computacional, mientras que en los otros el tiempo de ejecución es función principalmente del intercambio de datos.
Servidor vision GANIMEDES
./configure make
./export NameServer =10000 ./Naming_Service –m 1 ./ganímedes ./isonoe ./iocaste 0 2