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.


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


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

Descriptores matlab, microcontrolador,
nntool, redes neuronales.

I. INTRODUCCIN

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

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
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.


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 Encuentro de Investigacin en IE, 25 26 de Marzo, 2010

S1 S2 S3 S4 S5 M1 M2 M3
1 1 1 0 0 0 1 0
0 0 0 1 1 0 0 1
0 0 0 0 0 0 0 1
1 1 0 0 0 0 1 1
0 1 1 0 0 1 0 1
0 1 0 0 0 0 0 0
1 0 0 0 0 0 1 1
0 0 1 0 0 1 0 1
1 0 1 0 0 0 1 0
1 1 1 1 0 1 0 0
1 1 1 0 1 0 1 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 M2
0 0 Apagado
0 1 Derecha
1 0 Izquierda
1 1 Apagado
Tabla 2. Seal del motor 1

M3
0 Atrs
1 Adelante
Tabla 3. Seal del motor 2

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 0 0 1 0 1 1 1
1 0 0 1 1 1 0 0 0 1 1
1 0 0 0 1 0 0 1 1 1 1
0 1 0 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 0 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


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
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 4. Esquema de la red neuronal



Figura 5. Creacin de la red

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


Figura 6. Seleccin de parmetros para entrenar la red



Figura 7. Entrenamiento de la red


A continuacin se muestran los pesos
obtenidos.

net.IW{1,1}

-9.46 8.0857 13.0214
-1.9363 0 1.9363
-4.9457 -0.9345 -3.0149
2.2087 -7.0509 -9.9522
3.0406 0 0.5638


net.IW{2,1}

-3.3016 0.00E+00 -0.3593
0.00E+00 3.4087 38.9552
-3.3017 0.00E+00 -38.728


net.b{1}

3.1463
-6.0269
-3.1463


net.b{2}

0.00E+00
3.4085
6.8521


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
)


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)


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.


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
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.

REFERENCIAS
[1] Martn del Bro B., Sanz Molina A.,
Redes neuronales y sistemas borrosos,
Alfaomega, Mxico, p. 3 40, (2007).
[2] The Mathworks Inc., 30 de noviembre
2009,
http://www.mathworks.com/products/neu
ralnet
[3] CCS, Inc., 25 de noviembre 2009,
http://www.ccsinfo.com/content.php?pag
e=compilers
[4] Hagan, Demuth, Beale, Neural Network
Design, PWS Publishing CO.
[5] 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