Sie sind auf Seite 1von 11

SISTEMA DE CONTROL DE NAVEGACIÓN PARA UN ROBOT MOVIL

USANDO UNA RED NEURAL

Curso:

Sistemas Avanzados de Control

299018_7

Por:

Juan Pablo Atehortua Arenas

Universidad Abierta y a Distancia UNAD

Medellin

Mayo 25 de 2010.
Indice

Introducción Pg 3
Desarrollo Actividad Pg 4
Pg 5
Pg 6
Pg 7
Pg 8
Pg 9
Conclusiones Pg 10
Bibliografía Pg 11
Introducción

Uno de los campos más fructífero de la Inteligencia Artificial y la Mecatrónica es


el de los Robots del tipo móvil. Nuestra era ha sido testigo de la aparición de
vehículos aéreos, marítimos, submarinos y terrestres los cuales no son
tripulados y deben ser controlados por telepresencia o por sistemas
automáticos embarcados en los vehículos.

La experiencia de un operador humano consiste en que hacer con los motores


del robot ante diversos escenarios situacionales planteados por los sensores
del robot. Así, este operador sabe que hacer en determinadas situaciones, las
cuales evitan el daño de la maquinaria al evitar ciertas y determinadas
situaciones peligrosas de su entorno (en nuestro caso, la presencia de
obstáculos).
Funciones de Transferencia

En las redes neuronales, el valor de las entradas se multiplica por un peso, el


cual es un valor que pertenece al campo de los números reales. Esto implica
que la salida de una neurona es un valor real, el cual puede ser útil en algunos
casos, pero inútil en la mayoría de ellos. A fin de dar aplicabilidad a dicho valor,
se aplica a la salida de la neurona una función de transferencia, la cual puede
ser de muchos tipos. Algunos de los más comunes son las siguientes:

Función de transferencia umbral:

Por debajo de cierto valor, denominado umbral, la salida de la neurona es cero.


Cuando la salida es igual o mayor a ella, la salida es 1.

Función de transferencia logística:

En ella, la salida de la neurona debe pasar por una curva denominada


sigmoide, la cual representa la función de densidad de probabilidad
acumulativa de la distribución normal.

Función de transferencia ¨Winner Takes All ¨:

En ella, la salida de dos o más neuronas son evaluadas, de forma tal que las
neuronas con salida más alta son las que sobreviven. En este caso, la neurona
con mayor valor de salida toma el valor 1, mientras sus vecinas toman el valor
0. Esta función es muy usada cuando se desea evitar conflictos en salidas de
dos neuronas que de otra forma darían salida 1 con las dos primeras funciones
de transferencia descritas.

La Red Neural

Haciendo uso de la facilidad de MATLAB para el adiestramiento por el modelo


de backpropagation de redes neurales, se determinan los pesos de la
siguiente topología de la red neural del robot móvil.
Entradas:
X1R: Es el valor que toma la posición del Jumper derecho 1 segundo antes (1
= contacto 0 = no contacto).

X2R: Es el valor actual que toma la posición del bumper derecho (ídem).

X1L: Es el valor que toma la posición del bumper izquierdo 1 segundo antes
(ídem).

X2L: Es el valor actual que toma la posición del bumper izquierdo (ídem).

Salidas:

YRF: salida que activa el avance del motor derecho (1 = activo 0 = inactivo).

YRB: salida que activa el retroceso del motor derecho (ídem).

YLF: salida que activa el avance del motor izquierdo (ídem).

YLB: salida que activa el retroceso del motor izquierdo (ídem).

La función de transferencia WTA (“Winner Takes All”) compara las salidas de


las neuronas de la capa oculta y hace 1 a la más alta y 0 a la más baja.

Las ecuaciones que dan las salidas de las 4 neuronas son las siguientes:

YRF = 2*X1R - X2R - X1L - X2L + 10


YRB = -2*X1R + X2R + X1L + X2L + 9
YLF = -2*X1R – X2R – X2L + 10
YLB = 2*X1R + X2R +X2L+ 9

La función WTA compara YRF con YRB y hace 1 a la mayor y 0 a la menor. Lo


mismo hace con YLF y YLB.

Simulación efectuada en Matlab

Con el propósito de confirmar la factibilidad de la red neural elaborada, se hizo


uso del programa SIMROBOT desarrollado para Matlab. El programa requiere
de la configuración de un escenario, un robot y de un programa escrito en
lenguaje M de Matlab.
Pantalla del Ambiente Simrobot

function new = (simrobot,matrix,step)


global X;
global Y;
global motor_derecho motor_izquierdo
% sensor reading
[dist_left,num]
Readusonic (simrobot,'sens1',matrix);
[dist_right,num] = readusonic(simrobot,'sens2',matrix);
% Calculo red neuronal
W = [2 -1 -1 -1; -2 1 1 1; -2 -1 0 -1; 2 2 0 1]; B= [0 -1 0 -1]';
Y = hardlim (W*X + B);
motor_derecho = sign (Y (1,1) – Y (2,1));
motor_izquierdo = sign (Y (3,1) – Y (4,1));
% Estatus de los dos sensores de proximidad
X (1,1) = X (2,1);
X (3,1) = X (4,1);
Pause (0.5 + random ('unif',1,1))
if dist_left < 3
X (4, 1) = 1;
else
X (4,1) = 0;
end
if dist_right < 3
X (2, 1) = 1;
else
X (2,1) = 0;
End
Simrobot = setvel (simrobot,[0.5*motor_izquierdo
,0.5*motor_derecho]); new = simrobot;

Listado del programa de control del Robot simulado


global X;
global Y;
global motor_derecho motor_izquierdo
X = [0 0 0 0]'
Y = [1 0 1 0]'
motor_derecho = 1
motor_izquierdo =1
simview
Listado del programa de inicialización del robot

Resultados de la Simulación

La presente figura presenta el recorrido del robot por el escenario preparado


para su prueba. Se ve que el mismo sortea con éxito muchos obstáculos de
dicho mundo. Sin embargo, se detiene en un portal el cual tiene un ancho
ligeramente mayor al del robot.

Es de hacer notar que dicho obstáculo a afectado a muchos otros modelos de


robots móviles en las pruebas de la DARPA. Sin embargo, es de creer que el
problema se debe básicamente a la carencia de una regla que permita manejar
la situación planteada, combinada con la carencia de sensores de menor
alcance para evitar el conflicto que se le plantea al robot, el cual es de que
sensa en ambos sensores ( derecho e izquierdo) obstáculos. De ser menor el
alcance del sensor, es factible que dicho obstáculo sea fácilmente sorteable.

Recorrido típico del robot simulado

Construcción del prototipo real

A fin de constatar el comportamiento del robot , se fabrico un prototipo con


desechos de otros robots. El Cerebro del robot fue un microprocesador de
Microchip, el ATOM 28 (16PIC876), desarrollado por la empresa Micro Basic.
Dicho microcontrolador tiene una memoria RAM de casi 20K y dispone de una
plataforma de desarrollo que facilita no solamente la operación del chip, si no la
comunicación del mismo con una PC. Esos dos factores son de gran peso para
el proyecto, el cual no solo llegara al robot, si no a otros prototipos tales como
LUIGI y MARIO, los cuales incorporan tecnología de redes con
autoadiestramiento ( robots que aprenden de sus errores).

El siguiente inserto es un listado del programa, elaborado en el idioma BASIC


del ATOM 28

Programa de Robot controlado por redes Neurales El Robot solo tendrá como
sensores los dos interruptores de posición delanteros ubicados a la derecha e
izquierda de la línea central del robot. La lógica controlara el encendido en
directo o reversa de los motores derechos e izquierdo del robot
PROGRAMA PRINCIPAL

input 2 ' P2 es la entrada del interruptor derecho


input 3 ' P3 es la entrada del interruptor izquierdo
Configuramos las salidas de los motores para ir hacia delante
high 4 Salida avance motor derecho
Low 5 Salida retroceso motor derecho
high 6 Salida avance motor izquierdo
Low 7 Salida retroceso motor izquierdo

Declaramos las variables de cálculo de la red

X1R var B YTE 'Valor pasado del estado del bumper derecho
X2R var byte Valor presente del estado del bumper derecho
X1L var byte Valor pasado del estado del bumper izquierdo
X2L var byte Valor presente del estado del bumper izquierdo
YRF var byte Salida motor derecho hacia delante
YRB var byte Salida motor derecho hacia atrás
YLF var byte Salida motor izquierdo hacia delante
YLB var byte Salida motor izquierdo hacia atrás

Inicializa las variables

Clear
Ciclo:
gosub vigilancia
YRF = 2*X1R – X2R - X1L X2L +10
YRB = X2R + X1L + X2L - 2*X1R +9
YLF = -2*X1R - X2R - X2L + 10
YLB = 2*X1R + X2R + X2L +9
If (YRF > 10) or (YRF = 10) then
high 4
Else
low 4
Endif
If (YRB > 10) or (YRB = 10 ) then
high 5
Else
low 5
Endif
If (YLF > 10 ) or (YLF = 10 ) then
high 6
Else
low 6
Endif
If (YLB > 10 ) or (YLB = 10 ) then
high 7
Else
low 7
Endif
goto ciclo
inicio para otra consulta
vigilancia:
X1R = X2R
X1L = X2L
pause 450
If IN2 Then
X2R = 1
Else
X2R = 0
Endif
If IN3 then
X2L = 1
Else
X2L = 0
Endif
Return
Conclusiones

En base a lo anterior, puede concluirse que un robot con una red neuronal que
simule los comportamientos deseados en un robot móvil, es una realidad
factible.

En ese sentido se procederá a explorar las siguientes líneas de investigación,


evolución natural del robot:

Robot con red neuronal que simule un procedimiento de aprendizaje no


supervisado con
Refuerzo.

Robot con una red neuronal del tipo retropropagación o memoria asociativa que
plasme recorridos de prueba realizados con el robot guiado por teleoperación
por un operador humano. Es de esperarse que dicho esquema enriquezca aun
más el performance del robot.
Bibliografía

Para la realización del presente trabajo, fue consultada la siguiente bibliografía:


Delgado, Alberto. “Inteligencia Artificial y Minirobots”, Edición 2da. Ecoe
Ediciones.

http://www.monografias.com/trab

Das könnte Ihnen auch gefallen