A pesar de los grandes avances en computación, estamos lejos aún del mundo soñado por Asimov en 1942, donde esboza un mundo dominado por robots. Sin embargo, la robótica es un área de estudio científico de rápido desarrollo, y muy sofisticados robots están siendo desarrollados. Incluso LEGO anuncia “MindStorms Robotics Invention System le permite diseñar y programar robots reales que hacen lo que usted quiere que hagan"
Actualmente, el campo de la Robótica se enfoca en la creación de Robots autónomos. Los Robots autónomos son programados para lograr un objetivo específico, el cual requiere el procesamiento de cierto conjunto de tareas con diversos niveles de habilidad y conocimiento [8]. Usando una especificación de alto nivel, el objetivo es formular una secuencia de movimientos inteligentes. La ejecución de esos procedimientos requiere de técnicas de procesamiento paralelo para manejar la pesada carga computacional. [2]. A pesar de los significativos avances en la velocidad de procesamiento, los procesadores secuenciales están lejos de proveer la suficiente capacidad computacional requerida por los sistemas de planeación robótica Las modernas tecnologías VLSI proveen una oportunidad única para salvar esta brecha a través del uso de computación paralela [3].
Muchos robots deben ser capaces de desempeñar planeación de rutas [8], que involucra la búsqueda del camino óptimo a partir de una ubicación inicial a una deseada, evitando colisiones. Algunos algoritmos de planeación de movimientos paralelos han sido propuestos para solucionar esto. [6].
Este artículo aborda el tema de cómo el paralelismo beneficia a la Robótica. Primeramente, presentamos el problema del entendimiento de un ambiente de obstáculos. A continuación presentamos un procedimiento de evaluación para determinar configuraciones y posiciones factibles con un análisis de oportunidades para aprovechar los beneficios del procesamiento paralelo. Después, se presenta un caso de estudio para explicar la implementación paralela que desarrollamos. Finalmente se presentan los resultados y conclusiones principales.
Curto y Moreno [4] proponen un formalismo matemático para el cálculo de obstáculos-C (la representación de un obstáculo en el Espacio-C) a través de la evaluación de una convolución de dos funciones, una describe el robot A, y la otra describe los obstáculos B. El Teorema de Convolución establece que las transformadas de Fourier pueden ser usadas para efectuar la convolución. Una expresión general, válida para cualquier tipo de estructura robótica es mostrada en Figura 1 (siendo CB la función que describe los Obstáculos-C).
Figura
1. Expresion general para la evaluación del Espacio-C
En la siguiente sección, esta expresión general es analizada en búsqueda de oportunidades para introducir paralelismo
Los tres niveles previamente citados son válidos para cualquier estructura robótica, y soluciones diferentes pueden sacar provecho de uno, dos o de los tres niveles de paralelismo en un momento dado , produciendo mas rápidos algoritmos de evaluación del Espacio-C. A continuación se describe el diseño de diferentes enfoques que toman ventaja de uno, dos o tres niveles de paralelismo. Un tradicional enfoque Maestro-esclavo es propuesto para cada solución
En la Figure 2, el nivel FFT es explotado. El maestro pide a los esclavos desempeñar la computación de las transformadas de Fourier y ellos proceden en paralelo usando el conocido algoritmo FFT
LaFigura 3 muestra el nivel de variables de configuración donde, una vez más hay un maestro y n procesos esclavos, el maestro pide a los esclavos evaluar una parte del Espacio-C, esto es, el producto de convolución para un valor de la variable de configuración para cada esclavo. Entonces los resultados parciales son recopilados y el Espacio-C es construido.
En otra solución propuesta, el maestro colecta los productos de convolución de cada variable espacial obtenidos por los esclavos.
Hasta el momento, solo un nivel de paralelismo ha sido explotado, pero puede obtenerse una solución donde dos, o incluso tres niveles son tomados en cuenta. Estas soluciones paralelas son diseñadas para trabajar en ambientes con suficientes procesadores para que en ellos se ejecute un número significativo de procesos. Entonces podemos tener soluciones FFT-Configuración, FFT-Espacial, Configuración-Espacial y FFT- Configuración-Espacial. Un modelo mas complejo es ilustrado en la Figura 4 donde una solución de tres niveles es explotada. Los procesos sub-maestros organizan las comunicaciones de resultados parciales, que son entonces comunicados al maestro. Este método puede ser visto como una solución de nivel individual anidado.
Debe notarse que estas soluciones no consideran nada acerca de la validación de modelos, estas cuestiones pueden ser asociadas con la existencia de cuellos de botella, disponibilidad de memoria y problemas de sincronización por nombrar algunos. El lector solamente necesita imaginar lo difícil que sería alcanzar un rendimiento óptimo en el caso del modelo presentado en Figura 4, donde la sincronización de múltiples procesos de diferentes tipos (maestro, sub-maestros, sub-sub-maestros, escalvos) es necesaria, y lo fácil que sería para alguno de ellos el entrar a un largo tiempo de espera disminuiría el desempeño general. Los detalles de estas cuestiones se dejan a un artículo más profundo.
El robot tiene un movimiento plano de tal manera que su posición es definida por tres variables de configuración (xr, yr, thetar) , como se describe en [4], la expresión para evaluar el Espacio-C es mostrada en Figura 5.
Figura 5. Expresión para la evaluación del Espacio-C de un robot móvil 3D
Surgen entonces tres posibilidades para aprovechar el paralelismo inherente. Primero, el algoritmo consiste de una serie de operaciones básicas efectuadas iterativamente, una por cada una de las posibles orientaciones del robot thetar, (a nivel de variables de configuración). Segundo, cada orientación necesita acumular los productos de convolución para cada plano z (nivel de variable espacial). Estos cálculos son independientes, por consiguiente, pueden realizarse en paralelo. Estos resultados intermedios son integrados para formar el resultado final. Claramente, esta es una instancia del modelo de paralelismo de datos[1].
A continuación se describen las operaciones que llevan a cabo los dos tipos de procesos
Con el objeto de trabajar con el algoritmo FFT empleado para la necesaria evaluación de las transformadas de Fourier 2D, se han utilizado tres discretizaciones del espacio de trabajo 3D: 64 x 64 x 64, 128 x 128 x 128 y 256 x 256 x 256 (Todas ellas son potencias de dos como lo requiere FFT). Elegimos usar la implementación FFTW del algoritmo FFT desarrollado en el MIT (Instituto Tecnológico de Massachussets MIT - por sus siglas en inglés) que presenta un buen desempeño y permite la generación de código paralelo.
En la Figura 6a, se muestra un robot haciendo frente a tres obstáculos, es claro que el robot tiene un reducido conjunto de opciones para circunnavegar. El Espacio-C correspondiente se muestra en Figura 6b, donde dos pequeños conjuntos de configuraciones libres de colisión aparecen dentro de un gran Obstáculo-C.
Basado en la experiencia presentada en [10], se obtienen los mejores resultados cuando un procesador dobla a ambos maestro y esclavo.
La Figura 6.c ilustra la presencia del maestro desocupado (rojo) la mayor parte del tiempo mientras que los cuatro esclavos se encuentran trabajando (verde) la mayoría del tiempo. Los siguientes resultados se han obtenido de esta configuración específica
En las tablas Tabla 1, Tabla 2, y Tabla 3, se muestra los tiempos de cálculo obtenidos con la ejecución del algoritmo paralelo de granularidad fina y para el algoritmo secuencial considerando diferentes resoluciones y alturas del robot. Se observa una tendencia del incremento de velocidad como una función de la resolución. Muy probablemente, la tendencia proviene de los períodos de tiempo ocupados en comunicación cuando el tiempo dedicado a cálculos es pequeño, como en caso de la resolución 64x64 de los bitmaps. La Tabla 3 muestra una mas pequeña mejoría en el desempeño debido a limitaciones de memoria
| Sequencial | Paralelo | Altura del Robot | Incremento de velocidad |
| 0.99 | 0.73 | 5 | 1.36 |
| 3.34 | 1.23 | 20 | 2.72 |
| 7.30 | 2.40 | 45 | 3.04 |
| 10.51 | 3.21 | 64 | 3.27 |
| Sequencial | Paralelo | Altura del Robot | Speedup |
| 14.30 | 5.22 | 10 | 2.74 |
| 52.81 | 15.21 | 40 | 3.47 |
| 85.05 | 23.45 | 64 | 3.63 |
| 164.06 | 44.34 | 128 | 3.70 |
| Sequencial | Paralelo | Altura del Robot | Incremento de velocidad |
| 252.45 | 76.67 | 15 | 3.29 |
| 376.54 | 107.51 | 30 | 3.50 |
| 792.70 | 226.77 | 64 | 3.50 |
Como la Figura 6c y los Incrementos de velocidad reflejan, el desempeño de las aplicaciones es óptimo: los procesos esclavos están trabajando la mayor parte del tiempo (verde) y el proceso maestro esta esperando (rojo) los resultados parciales de la tareas asignadas y recibiendo resultados (Amarillo).
Convolution Theorem - Teorema de Convolución - Existen dos maneras de expresar el teorema de convolución Teorema: 1) La transformada de Fourier de una convolución es el producto de transformadas de Fourier. 2) La transformada de Fourier de un producto es la convolución de transformadas de Fourier. Las convoluciones pueden ser difíciles de calcular directamente, pero frecuentemente su cálculo se facilita usando Transformadas de Fourier y multiplicaciones.
DFT (Discrete Fourier Transform) - DFT (Transformada de Fourier Discreta) - Es el algoritmo numérico para calcular la Transformada de Fourier. La computación numérica de la Transformada de Fourier de f(t) requiere valores discretos de f(t). En suma, la computadora solo puede calcular la Transformada F(s) para valores discretos de s.
FFT (Fast Fourier Transform) - Transformada Rápida de Fourier - La Transformada Rápida de Fourier es un algoritmo DFT desarrollado por Tukey y Cooley in 1965 que reduce el número de computaciones de N2 a N log N. Existen básicamente dos tipos de Algoritmos FFT Tukey-Cooley en uso: pérdida-en-tiempo y pérdida-en-frecuencia. El algoritmo se simplifica si se selecciona N como una potencia de 2, pero esto no es un requerimiento.
FFTW (Fastest Fourier Transform in the West) - Transformada Rápida de Fourier en el Occidente - FFTW es una biblioteca de subrutinas en lenguaje C para calcular la Transformada de Fourier Discreta para una o mas dimensiones, de datos reales y complejos y para un tamaño arbitrario de la entrada. FFTW es típicamente más rápido que otras implementaciones FFT disponibles públicamente e incluso compite con bibliotecas comerciales. El paquete FFTW fue desarrollado por Matteo Frigo y Steven G. Johnson. http://www.fftw.org
Fourier Transform - Transformada de Fourier - En esencia, descompone o separa una función en ondas senosoidales de diferente frecuencia cuya suma resulta en la función original
Load balance - Balance de Carga - El desempeño de cualquier algoritmo de implementación paralela depende críticamente del balance de carga (incluyendo lo relacionado con carga de trabajo y factores relacionados con diseño) entre los diferentes procesadores paralelos. La idea es mantener ocupados a los procesadores la mayor parte del tiempo. El balance de carga describe la medida en que las tareas (unidades básicas de trabajo asignadas a un procesador) están bien distribuidas entre los diferentes procesadores. Sorpresivamente no existe en la literatura, un consenso acerca de la definición de carga de trabajo
Master-slave paradigm - Paradigma Maestro-Esclavo Una tarea de maestro central recibe la responsabilidad de la asignación del problema. Repetidamente, cada esclavo solicita del maestro una tarea y la ejecuta. Los esclavos pueden también enviar nuevas tareas al manejador para reasignarse a otros esclavos. La eficiencia de esta estrategia depende del número de esclavos y los costos relativos en la obtención y ejecución de problemas.
MPI - The Message Passing Interface Standard. La interfaz estándar de paso de mensajes. Un acopio multilateral de usuarios, vendedores e investigadores de computación paralela han realizado la especificación de una interfaz de comunicación completa entre procesos basada en mensajes. El estándar MPI denota una auténtica portabilidad para programas paralelos, define la infraestructura necesaria para productos de software de terceros y provocará una mayor proliferación de aplicaciones paralelas. Para un desarrollador de aplicaciones paralelas, la semántica específica de la interfaz de comunicación y su esperada popularidad no será mas un factor para la elección de un ambiente o un producto especial. Los usuarios y compradores pueden enfocarse en otros factores como la eficiencia de la implementación y las herramientas de desarrollo.
Speedup - Incremento de velocidad Incremento de velocidad es el cociente o relación entre la mejor aplicación secuencial para resolver un problema y el tiempo tomado por un algoritmo paralelo para resolver el mismo problema en n procesadores
VLSI (Very Large Scale Integration) - Integración a Muy Grande Escala
El proceso de colocar miles ( o cientos de miles) de componentes electrónicos un chip individual. Casi todos los modernos chips emplean arquitecturas VLSI o ULSI (Integración a Ultra alta Escala ULSI por sus siglas en ingles - Ultra Large Scale Integration) La linea entre VLSI y ULSI es vaga.
Este estudio fué parcialmente apoyado por la Junta de Castilla y León a través del proyecto de investigación SA02-00F . A los autores les gustaría agradecer a todos aquellos que hicieron comentarios y sugerencias acerca de este artículo
Roberto Theron Es candidato a Doctor en Ciencias de la Computación en la Universidad de Salamanca, España. Sus intereses de investigación incluyen Programación paralela y Robótica. En 1999, el inició su trabajo como profesor del departamento de Computadoras y Automatización de la Universidad de Salamanca.
Francisco Javier Blanco Es candidato a Doctor en Ciencias de la Computación en la Universidad de Salamanca, España. Sus intereses de investigación incluyen la Robótica, particularmente en el área de planeación de rutas. En 1999, el inició su trabajo como profesor del departamento de Computadoras y Automatización de la Universidad de Salamanca.
Dr. Belen Curto, Profesor de la Universidad de Salamanca con interés de investigación principal en Robótica.
Dr. Vidal Moreno, Profesor de la Universidad de Salamanca con interés de investigación principal en Robótica.
Dr. Francisco José Garcia, Profesor de la Universidad de Salamanca con interés de investigación principal en Ingeniería de Software