You are on page 1of 4

A Sensor-based Obstacle Avoidance System for a Vehicle Using Neural Networks.

Posgrado de Mecatrnica, Departamento de Ingeniera Electrnica, Abstract En el siguiente trabajo se presentalaimplementacin de una estrategiaauto-guiadapara un vehculo evasor deobstculos, utilizando como base de la estrategia unaredneuronal desarrollada y entrenada en el entorno de softwaredeMatLab, donde hemos creado ysimuladola red neuronal. Enla fase de desarrollose han tenido encuenta la peculiaridad dela plataformaArduino en donde se implementala red fsicamente, finalmente los sensores utilizados para la deteccin de objetos y obstculos tienen como especificacin el siguiente modelo:SRF02. Keywords:navegacin en entornos; redes neuronales; Evasin de obstculos; bsqueda de caminos; implementacin en tiempo real; sensores ultrasnicos; SRF02, Arduino.

I. INTRODUCCIN. La navegacin de un mvil es uno de los ms importantes desafos en el campo de la robtica mvil, ya que estos, para decir que navegan correctamente en trayectoria cualquiera evadir los obstculos que se le presenten y llegar a un objetivo. Actualmente un gran nmero de investigadores centran sus estudios en las tcnicas de control y navegacin inteligente de vehculos, ya que las tcnicas convencionales de control son limitadas debido a la incertidumbre del entorno en donde se pretende mover el vehculo, as nace la necesidad de estudiar las estrategias de control inteligentes, como lo son las redes neuronales, ya que ofrecen una solucin muy acertada al problema de navegacin de los vehculos, por su capacidad de aprender las relaciones no lineales que existen entre los valores de entrada de los sensores y los valores de salida. En resumen, el problema se plantea de la siguiente manera, un vehculo ubicado en un entorno particular, este entorno contiene una serie de obstculos aleatorios y una meta, se pueden plantear diversas formas para tratar de resolver este problema; por un lado se pueden plantear mtodos clsicos como el de planificacin de ruta, tales como grficos de visibilidad, y por otro lado tenemos el planteamiento del uso de un sistema de control inteligente basado en tcnicas de inteligencia artificial, tales como redes neuronales, control difuso, etc.; estos sistemas son capaces de resolver muchos problemas de control, gracias a su capacidad de emular algunas caractersticas humanas. En [1], un camino libre de colisiones entre el origen y el destino se construye basndose en redes neuronales para la navegacin de robots mviles en entornos parcialmente estructurados. El esquema propuesto utiliza dos redes neuronales para realizar la tarea. La red neural del tipo perceptron multicapa (MLP) usando retropropagacin. El esquema propuesto se lleva a cabo en tiempo real implementado en un procesador Intel Pentium 350 MHz, el robot logra evitar todos los obstculos para llegar a su objetivo desde el punto de partida inicial. En [3], el problema de navegacin de un robot mvil se resuelve con la ayuda de un modelo de redes neuronales locales. Esta red es un conjunto de submodelos que representan al sistema dinmico modelado en varios puntos de operacin. Cada submodelo es una red neuronal feed forward entrenada con un algoritmo back-propagation. La salida de estos submodelos es ponderado con la ayuda de una red neuronal con una funcin de base para generar los comandos de movimiento para el robot. El rendimiento de la red neuronal local es comparado con un perceptron multicapa y con una red con una funcin base tipo radial, como parmetro para medir el rendimiento se toma el tiempo medido que le toma el robot en llegar a su objetivo o destino. En [4], se disea un controlador para la navegacin que se compone principalmente de un conjunto de tres subredes neuronales. Las primeras dos son responsables de los comportamientos ms importantes de un vehculo inteligente que son la localizacin del objetivo y la evasin de obstculos. Ambos controladores son clasificadores y son entrenados con tcnicas back propagation supervisados. La tercera red neuronal acta como un supervisor y esta es responsable de la decisin final basndose en las salidas de las primeras dos redes. Este controlador o red neuronal es entrenada por el algoritmo variant of the associative reward-penalty para su aprendizaje. Debido a su estructura jerrquica, la complejidad del sistema se reduce, resultando en un tiempo de respuesta rpido. II. METODOLOGA. A. Construccin robot mvil. EL robot mvil fue elaborado de tal forma que pudiera ser fcilmente modificable o adaptable ante nuevas y futuras investigaciones en este campo. Se evalu el aspecto fsico del robot, y se defini el diseo con base en criterios de funcionalidad, materiales disponibles, movilidad y esttica. Despus de analizar las diferentes Estructuras se escogi por su tamao reducido y simplicidad de la estructura mostrada en la figura 1, otro factor que se tuvo en cuenta fue la experiencia al trabajar previamente con esta clase de estructura mecnica. Se inici con planteamiento del modelo mostrado a continuacin.
Fig. 1 Esquema planteado para el modelo del robot mvil.

De la figura podemos distinguir varias reas numeradas que corresponden a lo descrito en seguida: 1. Llantas traseras. 2. Motorreductores. 3. Estructura base fabricada en Zintra de 5mm. 4. Placa de control formada por la tarjeta Arduino. 5. Circuito L293B para el manejo de los motores. 6. Rueda loca para permitir el giro del robot. 7. Sensor SRF02 Izquierdo 8. Sensor SRF02 Central 9. Sensor SRF02 Derecho B. Tarjeta Arduino Duemilanove, sensores SRF02 y Motorreductores.B02_1-180 Los motores utilizados para dotarle de movimiento al robot mvil fueron los Motoreductores modelo nmero: B02_1-180. Las caractersticas ms destacables son las siguientes: y Motorreductor CD y Voltaje nominal 5Vdc y Torque 3 KgF*cm. y Velocidad 43 RPM. y Consumo de corriente sin carga: 75 mA. y Consumo de corriente atrancado: 670mA. y Salida con eje de 5mm de dimetro y Orificios para su montaje con tornillos. y Medidas: 65mm X 22 mm X 18.5mm. Peso: 32gr. EL motor es el mostrado en la figura 2.
Fig. 2 Motorreductor B02_1-180

La tarjeta Arduino Duemilanove es una plataforma de desarrollo con las siguientes caractersticas: y MicrocontroladorATmega368. y Voltaje de funcionamiento: 5V. y Voltaje de entrada: 7-12V. y Pines E/S digitales14 y Pines de entrada analgica y Intensidad por pin: 40 mA y Intensidad en pin 3.3V: 50 mA y Memoria Flash: 16 KB (ATmega168) o 32 KB (ATmega328) SRAM: 1 KB (ATmega168) o 2 KB (ATmega328) y Velocidad de reloj16 MHz La figura 3 nos muestra la tarjeta empleada en el prototipo.
Fig. 3 Tarjeta Arduino Duemilanove empleada en el robot.

Los sensores SRF02 tienen las siguientes caractersticas: y Rango de 15 a 600 cm. y Voltaje de alimentacin de 5V. y Consumo corriente de 4mA. y Frecuencia de 40KHz y Nivel TTL. y Dimensiones del dispositivo 24x20x17mm. y Comunicacin va Serial y protocolo I2C. y Bajo Coste. La figura 4 muestra el sensor utilizado para la deteccin de obstculos.
Fig. 4 Sensor Ultrasnico SRF02 utilizado en el robot

C. Diseo de la red neuronal. Existen varias definiciones sobre Redes Neuronales Artificiales RNAs: Una nueva forma de computacin, inspirada en modelos biolgicos. Un modelo matemtico compuesto por un gran nmero de elementos procesales organizados en niveles. Un sistema de computacin compuesto por un gran nmero de elementos simples, muy interconectados, los cuales procesan informacin por medio de su estado dinmico como respuesta a entradas externas.

En la red neuronal, se interconectan varias unidades de procesamiento en capas, las neuronas de cada capa no se interconectan entre s. Sin embargo, cada neurona de una capa proporciona una entrada a cada una de las neuronas de la siguiente capa, es decir, cada neurona transmitir su seal de salida a cada neurona de la capa siguiente, hasta llegar a la salida. En la actualidad existen diversidad de estudios acerca de las Redes Neuronales Artificiales (RNA`s) donde las aplicaciones como clasificacin de patrones, reconocimiento de imgenes y habla, filtrado de seales, sntesis de voz y control de movimiento de un brazo robot entre otras son aplicaciones desarrolladas por un tipo de red neuronal especfica. El control de los movimientos del robot mvil que debe realizar para generar una trayectoria que le permita navegar evitando obstculos sin colisionar se identific como un problema de Clasificacin de Patrones. Para este tipo de problemas podemos encontrar redes como: perceptron simple, perceptron multicapa, las redes Backpropagation, las Redes de Base Radial y las Redes Neuronales Probabilsticas PNN entre otras, como las ms utilizadas en este tipo de aplicacin. La red neuronal elegida para el desarrollo del sistema de control del robot es un MLP (Multi-Layer Perceptron), debido a que este tipo de redes por sus caractersticas son buenas para resolver problemas de clasificacin como el que nos ocupa. A esto cabe aadir que presentan una arquitectura relativamente sencilla para su implementacin en el robot. La Figura 5 muestra la estructura de la red empleada, Se utiliz una red neuronal de tres entradas y un vector salida de 4 elementos, compuesta de 4 capas con configuracin: [5, 4, 4, 4], en la primera capa oculta con una funcin de activacin tipo tansig , en la segunda capa oculta y la tercera capa oculta con una funcin tipo logsig al igual que la capa de salida con una funcin de activacin logsig . Las entradas a la red es la informacin de los sensores ubicados a la izquierda, en el centro y a la derecha, y dichos sensores se activan de acuerdo a la proximidad de un obstculo en dicha orientacin. La red va a tener una salida de acuerdo a esta entrada lo cual va a permitir corregir la posicin y as evadir el obstculo. Como sabemos la funcin de salida de la red hace que los valores de salida sean nmeros decimales comprendidos en el intervalo [0 1], entonces programamos una sencilla funcin de comparacin dentro del Arduino para establecer la salida de mayor valor a 1 y las otras dos a 0.
Fig. 5 Estructura de la red neuronal propuesta.

El vector de salida est formado por tres elementos, correspondientes a cada una de las acciones bsicas de control que puede realizar el robot. Los valores de estos elementos estn codificados, de forma que el correspondiente al movimiento que se debe ejecutar es1 y los otros tres a 0. As, la red ofrecer como respuesta el vector (1,0,0,0) si la accin de control es girar derecha; (0,1,0,0) si es girar a la izquierda,(0,0,1,0) si la accin es avanzar y por ltimo (0,0,0,1) si la accin es retroceder. El algoritmo planteado se muestra en la figura 6.
Fig. 6 Algoritmo de procesamiento del sistema.

Este algoritmo es programado en lenguaje C para su implementacin en la tarjeta Arduino Duemilanove. La red neuronal se cre y entreno en el entorno de MatLab el cual nos arroj los pesos sinpticos necesarios para la implementacin en la tarjeta de Arduino Duemilanove. La red neuronal se entren con los siguientes parmetros: En la figura 7 se muestra la imagen obtenida en el momento de entrenamiento de la red en MatLab, podemos observar que los resultados del entrenamiento son satisfactorios.
Fig. 7. Entrenamiento de la red neuronal.

Ahora en la figura 8 se aprecia que la red neuronal se entren satisfactoriamente con un error significativamente bajo.
Fig. 8 Red Neuronal con 17 neuronas.

En lo relacionado a la programacin de la red neuronal en la tarjeta Arduino Duemilanove se toman en cuenta los siguientes puntos: y Los pesos sinpticos de las capas ocultas. y Los pesos sinpticos de la capa de salida. y La bias o pesos extra de cada capa. y Conocer las funciones de activacin usadas en cada una de las capas. En la primera capa oculta se utiliztansig y en las restantes se emple logsig. Para obtener los pesos de las capas de entrada se hizo uso del comando: net.IW{} , y los pesos de las capas restantes se obtuvieron con el comando: net.LW{} , finalmente los valores de las bias se obtienen con: net.b{} . Estos datos obtenidos de pesos y bias son almacenados en la memoria del Arduino Duemilanove en forma matricial, para ser aplicadas a las formulas de verificacin de la red MLP las cuales son las siguientes:

W o ji = Peso que une la capa de entrada con la capa oculta

Pi = Componente del vector de entrada.


bo j = Ganancia de la capa oculta, pesos extra de la red.
Esta frmula multiplica cada entrada con su respectivo peso y luego le suma la bias correspondiente a cada neurona. Cada una de las neuronas de la primera capa oculta posee una salida dada por: Ahora para las neuronas restantes de las capas restantes poseen una funcin de activacin dada por la siguiente frmula: Los pesos que conectan a la capa de entrada con la capa oculta fueron guardados en una matriz w1, con cinco filas y tres columnas; Las variables de entradas son adquiridas y guardadas en el vector p[]; los pesos que conectan la capa oculta con la capa siguiente son guardados en la matriz w2 de cuatro filas y cinco columnas; los pesos que conectan la capa siguiente con la siguiente son guardados en la matriz w3 de cuatro filas y cuatro columnas; al igual con la ltima capa oculta y la capa de salida son guardados en la matriz w4 de cuatro filas y cuatro columnas. Las bias que correspondientes a cada capa fueron guardadas en vectores, haciendo un total de 4 vectores; b1[5], b2[4], b3[4], b4[4]. La salida de esta red decide la accin a seguir para que pueda evitar los obstculos que se presenten en el entorno. Gracias a la exactitud de las funciones generadas en C para Arduino al trabajar con puntos flotantes la salida de la red es equivalente a la procesada por MatLab. Siendo un xito la integracin de la red neuronal al sistema Arduino Duemilanove. El cdigo para generar la funcin de activacin tansig en C es el siguiente: El cdigo para generar la funcin de activacin logsig en C es el siguiente: V.IMPLEMENTACIN FSICA Y RESULTADOS. El robot terminado se muestra en la figura 9 y 10, y abarca 26cm de largo, 12cm de alto, separacin entre ruedas de 24cm y velocidad de aproximadamente 10cm/s al desplazarse en lnea recta. Las ruedas estn recubiertas de material anti derrapante, mejorando su desempeo en superficies lisas. Los sensores funcionan de manera aceptable, ya que para estos sensores los objetos deben ser de un material relativamente denso para que la seal ultrasnica logre ser reflejada con xito y detectada por el transductor. El algoritmo completo de navegacin y aprendizaje se implement en no ms de 200 lneas de cdigo de lenguaje C, y es fcilmente extensible para incluir nuevas situaciones y acciones. La adaptabilidad del robot se comprob al hacerlo interactuar con un grupo de personas en un espacio abierto de exhibicin, que lo sometieron a obstculos dinmicos, i.e. usaron sus pies para bloquear el movimiento del robot, he incluso otro robot mvil. VI. CONCLUSIONES. Las redes neuronales son una excelente herramienta que puede ser aplicable en este caso a un robot mvil evasor de obstculos dado que tienen la facilidad de trabajar con informacin imprecisa A pesar de que la arquitectura de esta red es bastante sencilla, el microcontrolador integrado en la tarjeta Arduino Duemilanove en el que se a implemento presenta unas caractersticas demasiado limitadas, principalmente en la cuestin de la memoria RAM, por eso que la arquitectura empleada fue la que vimos durante el desarrollo de la investigacin. La red neuronal es capaz de dar una respuesta a casos que no se tuvieron en cuenta en el entrenamiento, siendo un sistema de control confiable y tolerante a fallos. El control del vehculo fue sencillo debido al sistema de traccin diferencial que se emple, solo fue necesario cambiar el sentido de giro de las ruedas para girar o avanzar. Los sensores SRF02 que se emplearon satisficieron relativamente bien las necesidades de este trabajo, aunque se sugiere para un mejor funcionamiento la integracin en futuras investigaciones de la serie SRF08, que por su precisin, facilidad de calibracin, y tamao, sern an mejores que la serie SRF02 que tenamos al alcance, ms sin embargo, se logr un diseo confiable para la implementacin y manejo de las redes neuronales de retro propagacin. Para aplicaciones ms avanzadas se recomienda trabajar con un DSP.Se recomienda el uso de tcnicas que involucren entonces ms sensores en conjunto, sensores como giroscopios, brjula electrnica, encoder y otros que permitan garantizar la posicin del mvil en el espacio. Tambin se sugiere el uso de ms sensores de proximidad, por lo menos 5 o 6 para tener un mejor conocimiento del entorno siempre y cuando el DSP soporte la carga computacional de la red neuronal que se generara.

You might also like