SISTEMAS DISTRIBUIDOS EN TIEMPO REAL

NERA GONZALEZ ROMERO 99206 CURSO DOCTORADO

INDICE

Introducción3
Motivación3
Descripción del problema3
Descripción 3
Arquitectura hardware del sistema 3
Arquitectura software del sistema 4
Implementación 6
Interfaces IDL6
Pruebas y resultados 6
Servidor serie ISONOE 6
Cliente IOCASTE 07
Cliente IOCASTE 18
Servidor de visión GANIMEDES 8
ANEXO: COMPILACION Y EJECUCION9
COMPILACION 9
EJECUCION 9

1. Introducción

Motivación

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.

Descripción del problema

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.

2. Descripción

Arquitectura hardware del sistema

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.

Arquitectura software del sistema

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.

Implementación

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.

Interfaces IDL

Las interfaces definidas son las siguientes:

Con el servidor serie

interface CorbaSerie { void set_velocity (in double id, in double velocity_x, in double velocity_y); };

Con el servidor visión

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);

};

3. Pruebas y resultados

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

Cliente IOCASTE 0

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

Cliente IOCASTE 1

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

Servidor de visión GANIMEDES

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

ANEXO: COMPILACION Y EJECUCION

COMPILACION

./configure make

EJECUCION

./export NameServer =10000 ./Naming_Service –m 1 ./ganímedes ./isonoe ./iocaste 0 2