Está en la página 1de 5

Encuentro de Investigacin en IE, 25 26 de Marzo, 2010

40

Creacin de una red neuronal artificial e implementacin en un microcontrolador


Oscar Alonso Ramrez, Fernando Emmanuel Prez Escalante, Luis Alfredo Gordin Rivera, Leticia Cullar Hernndez, Sergio Francisco Hernndez Machuca.
Facultad de Instrumentacin Electrnica Universidad Veracruzana, Circuito Gonzalo Aguirre Beltrn s/n Zona Universitaria C.P. 91090 Xalapa Veracruz, Mxico. TEL: +(228)8421746, ext. 1518, correo-e: alra_oscar@hotmail.com, genius_255@hotmail.com.
Descriptores matlab, nntool, redes neuronales. microcontrolador,

Resumen En este trabajo se presenta la forma en que aplicamos una red neuronal artificial al prototipo de un robot que tiene la capacidad de desplazarse en un ambiente desconocido evitando obstculos. El prototipo cuenta con sensores infrarrojos para detectar los obstculos y el control estar a cargo de la red neuronal. Para crear y entrenar la red se utiliz el toolbox NNTool de matlab y para implementar la red se recurri al compilador PWCH para crear un cdigo con el cual programamos un microcontrolador de la familia microchip (PIC18F452).

I.

INTRODUCCIN

Abstract The objective of this paper is to show how an artificial neural network was applied to a robots prototype that has the capability of moving within an unknown environment avoiding obstacles. The prototype has infrared sensors to detect the obstacles, while the control is in charge of the neural network. To create and train the net it was used the toolbox NNTool from matlab and for the implementation of the net it was turn to the PWCH compiler to create a code which was programmed into a microchips family microcontroller (PIC18F452).

Las redes neuronales artificiales son un sistema compuesto de interconexiones entre entidades denominadas neuronas las cuales tienen como objetivo producir un estmulo de salida, y estn basadas en el funcionamiento del sistema nervioso de los seres vivos [1]. Estos sistemas poseen la capacidad de aprender y procesar informacin automticamente y pueden ser aplicados a diversos campos de programacin para solucionar diferentes tipos de problemas, los cuales pueden variar desde procesos industriales hasta reconocimiento de vehculos en estacionamientos [5]. Para este trabajo se utilizaron las bases del funcionamiento de las redes neuronales para crear un prototipo de un robot capaz de evitar obstculos, el implementarlo en un microcontrolador nos permite contar con una plataforma de bajo costo y un prototipo

Encuentro de Investigacin en IE, 25 26 de Marzo, 2010

41

adecuado para la enseanza y expandible a la investigacin.

II.

METODOLOGA

muestra un amplificador operacional modelo LM358 en modo de comparacin, el cual utilizamos para adecuar la seal de los sensores y mediante un voltaje de referencia modificar la sensibilidad.

En un principio se consider el problema que se buscaba solucionar mediante las redes neuronales. Debido a que la tarea fundamental del proyecto es evitar el choque con obstculos, fue necesario que el prototipo contara con tres funciones fundamentales, la locomocin (nivel fsico), la percepcin (nivel sensorial) y la decisin (nivel de control). En lo que se refiere al nivel sensorial, el prototipo deba poder percibir cualquier objeto frente a l. Debido a que es importante que el robot pudiera tener un campo de visin ms amplio en la parte frontal, se utilizaron 3 sensores mediante los cuales el dispositivo es capaz de detectar cualquier obstculo directamente frente a l o a los lados. En la parte posterior se utiliz uno en cada esquina para evitar choques cuando se desplace en reversa. Para el correcto funcionamiento del robot, se equip con 4 ruedas las cuales son movidas por 2 motores de DC. Se utilizaron ruedas de un plstico anti-deslizantes para evitar fallas de traccin. Para la toma de decisiones y el control de los motores, se utiliz un Microcontrolador de la familia Microchip (PIC18F452), el cual recibira la seal proveniente de los sensores y mediante una red neuronal determinara la seal de salida que llegara a los motores a travs de un puente H. En la figura 1 se muestra una imagen del prototipo. Las figuras 2 y 3 muestran las pistas de los circuitos. En la primera encontramos el microcontrolador, 5 leds los cuales nos indican el estado de cada uno de los sensores, y un puente H. En la segunda se
Figura 1. Imagen del prototipo

Figura 2. Pcb de la placa donde se encuentra el microcontrolador

Figura 3. Pcb de la placa de los sensores

42 S1 1 0 0 1 0 0 1 0 1 1 1 S2 1 0 0 1 1 1 0 0 0 1 1 S3 1 0 0 0 1 0 0 1 1 1 1

Encuentro de Investigacin en IE, 25 26 de Marzo, 2010

S4 0 1 0 0 0 0 0 0 0 1 0

S5 0 1 0 0 0 0 0 0 0 0 1

M1 0 0 0 0 1 0 0 1 0 1 0

M2 1 0 0 1 0 0 1 0 1 0 1

M3 0 1 1 1 1 0 1 1 0 0 0

Tabla 1. Tabla que muestra las salidas esperadas a ciertas combinaciones de entrada en los sensores

Una vez que se obtuvieron las caractersticas del prototipo, se determin el comportamiento del robot ante diferentes situaciones. Con esta informacin, se gener, una tabla (ver Tabla 1) en la cual se muestran diferentes combinaciones que pueden tener los sensores (s1, s2, s3, s4 y s5) y la salida que se espera generar (m1, m2 y m3). A pesar de que para el movimiento de las ruedas se utilizaron slo 2 motores, fue necesario el uso de 3 neuronas debido a que un motor se encarga del desplazamiento hacia a adelante y hacia atrs, mientras que el segundo motor, encargado de los giros, debe tener 3 estados, a la derecha, a la izquierda o permanece apagado cuando el carro debe avanzar en lnea recta. En las tablas 2 y 3 se especifica a qu corresponden la salida de las neuronas respecto al movimiento de los motores. M1 0 0 1 1 M3 0 1 M2 0 1 0 1

Una vez obtenidos los valores de la tabla 1 se ingresaron los datos en forma matricial en Matlab en donde las entradas se denominaron INPUT y las salidas esperadas TARGET. >> input input = 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0

0 1 1 0 0

0 1 0 0 0

1 0 0 0 0

0 0 1 0 0

1 0 1 0 0

1 1 1 1 0

1 1 1 0 1

>> target target = 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 0

Apagado Derecha Izquierda Apagado

Tabla 2. Seal del motor 1

Atrs Adelante

Posteriormente, se cre la red neuronal artificial mediante el uso del toolbox NNTool en matlab, el cual es una herramienta para disear, implementar, visualizar y simular redes neuronales [2]. A travs de diversos editores, permite importar grandes cantidades de datos y seleccionar las diferentes caractersticas que determinarn el comportamiento, los pesos se ajustan al entrenar la red hasta que se desempee correctamente. En el editor se seleccion una red del tipo feed-forward backprop, se indic

Tabla 3. Seal del motor 2

Encuentro de Investigacin en IE, 25 26 de Marzo, 2010

43

que el rango de las entradas lo tome de la variable input, se eligieron 2 capas con 3 neuronas cada una y con la funcin de activacin tansig (ver Figuras 4 y 5).

Figura 7. Entrenamiento de la red

A continuacin se muestran los pesos obtenidos.


Figura 4. Esquema de la red neuronal

net.IW{1,1} 8.0857 0 -0.9345 -7.0509 0 13.0214 1.9363 -3.0149 -9.9522 0.5638

-9.46 -1.9363 -4.9457 2.2087 3.0406

net.IW{2,1} 0.00E+00 3.4087 0.00E+00 -0.3593 38.9552 -38.728

Figura 5. Creacin de la red

-3.3016 0.00E+00 -3.3017

A continuacin, se entren la red para lo cual se seleccionaron los parmetros con los cuales se deseaba entrenar y luego se indicaron las entradas y los objetivos (input y target respectivamente) previamente guardados (Ver Fig. 6 y 7).

net.b{1}

3.1463 -6.0269 -3.1463

net.b{2}

0.00E+00 3.4085 6.8521

Figura 6. Seleccin de parmetros para entrenar la red

Para el desarrollo del software en el microcontrolador se utiliz el lenguaje C mediante el compilador de C PWCH Compiler desarrollado por CCS (Custom Computer Services, Inc.) [3], el programa

44

Encuentro de Investigacin en IE, 25 26 de Marzo, 2010

funciona a partir del monitoreo constante de los sensores, los cuales determinan el valor de entrada de cada neurona. Cada valor de entrada se multiplica por su correspondiente peso y se agrega la ganancia (1). ( 1 )

se comprueba que los resultados a partir del entrenamiento funcionan de manera correcta de acuerdo al entrenamiento y que el numero de sensores se puede incrementar. Una vez que se aprendi a manejar las redes neuronales pequeas mediante Matlab e implementarlas en un Microcontroaldor, se puede manejar redes cada vez ms grandes haciendo solo pequeas modificaciones y logrando un mayor alcance.

Donde, s son los valores de las entradas e iw son sus pesos correspondientes, y b es la ganancia de la neurona, posteriormente el valor resultante de (1) se toma como el dato de entrada para la funcin de activacin de la neurona, en este caso tansig (2). (2)

[1]

[2]

[3] Una vez realizado el clculo se compara el valor resultante, si el valor de x resulta mayor que 0.7 la neurona toma el valor de 1 lgico de lo contrario toma el valor lgico de 0.

[4] [5]

III.

CONCLUSIONES

La inteligencia artificial tiene muchas aplicaciones, desde proyectos tan simples como un carro de juguete que simplemente evita obstculos, hasta programas mucho ms complejos donde se tiene un nmero significativo de entradas, el cual sera muy complicado programar sin inteligencia artificial.El incremento de la velocidad de procesamiento y la capacidad de memoria en los microcontroladores permiten incrementar el nivel de complejidad de las aplicaciones utilizando lenguajes de alto nivel, donde potentes compiladores generan el lenguaje de mquina, optimizan los recursos de los dispositivos sin requerir tanto esfuerzo del programador, lo que permite ocupar ms tiempo en el diseo de los algoritmos y en cmo perfeccionar las aplicaciones. El poder entrenar la red neuronal offline "fuera de lnea" y emplear un Microntrolador en donde

REFERENCIAS Martn del Bro B., Sanz Molina A., Redes neuronales y sistemas borrosos, Alfaomega, Mxico, p. 3 40, (2007). The Mathworks Inc., 30 de noviembre 2009, http://www.mathworks.com/products/neu ralnet CCS, Inc., 25 de noviembre 2009, http://www.ccsinfo.com/content.php?pag e=compilers Hagan, Demuth, Beale, Neural Network Design, PWS Publishing CO. Acosta I, Zuluaga C., Tutorial sobre redes neuronales aplicadas en Ingeniera Elctrica y su implementacin en un sitio Web. Universidad Tecnolgica de Pereira, 2000. p-5. http://ohm.utp.edu.co/neuronales/main.ht m

También podría gustarte