capítulo 3 implementación del...

17
Capítulo 3 Implementación del Robot 3.1 Creación del robot Para el diseño del robot se utilizó el kit de Robotics Inventions System. Las razones más importantes por las que se decidió utilizar este kit se resumen principalmente en que es un utensilio muy fácil de usar debido a que nos proporciona las herramientas básicas para la creación de prototipos. El diseño del robot se basó partiendo de un modelo simple parecido a un carrito. En donde en base a la complejidad de las tareas se fue modificando su construcción inicial llegando a desarrollar una herramienta más poderosa de trabajo de acuerdo a nuestras necesidades. En esta figura se muestra el prototipo del robot: Figura 3.1 Prototipo del Robot Sensores de Tacto Transmisor de Infrarrojos Sensor de Luz Motores

Upload: others

Post on 11-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

Capítulo 3

Implementación del Robot

3.1 Creación del robot Para el diseño del robot se utilizó el kit de Robotics Inventions System. Las razones más

importantes por las que se decidió utilizar este kit se resumen principalmente en que es

un utensilio muy fácil de usar debido a que nos proporciona las herramientas básicas para

la creación de prototipos.

El diseño del robot se basó partiendo de un modelo simple parecido a un carrito. En

donde en base a la complejidad de las tareas se fue modificando su construcción inicial

llegando a desarrollar una herramienta más poderosa de trabajo de acuerdo a nuestras

necesidades.

En esta figura se muestra el prototipo del robot:

Figura 3.1 Prototipo del Robot

Sensores de Tacto

Transmisor de Infrarrojos

Sensor de Luz

Motores

Page 2: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

Los sensores de tacto juegan un papel muy importante en nuestro robot debido a que

mediante ellos podemos determinar las colisiones del robot con algún otro objeto. En este

robot se utilizaron dos sensores de tacto con los que se puede determinar si un objeto se

encuentra del lado izquierdo o derecho.

Figura 3.2: Sensores de Tacto

Sensor de luz infrarroja, se utiliza principalmente para determinar un objeto con el fin de

evitar un choque entre nuestro robot y el objeto. La ventaja de este sensor es que nos

podemos anticipar a un choque y la desventaja de este es que si la calibración del sensor

no es la correcta puede fallar debido a que varía dependiendo la intensidad de luz con la

que se cuente en el espacio en que estemos trabajando.

Figura 3.3: Sensor de Luz

Page 3: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

3.2 Construir un área de Trabajo

Para evaluar el comportamiento del robot se construyó un área de pruebas que cuenta

con paredes en donde podemos comprobar el correcto funcionamiento de los sensores de

tacto, así como también se puede verificar que el sensor de luz trabaje de manera

correcta debido a que las paredes son de color negro lo cual facilita identificar un cambio

de luz.

Figura 3.4: Área de Pruebas

Page 4: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

3.3 Diseñar los Comportamientos

Los programas se encuentran divididos por procedimientos que realizan diferentes tareas

dándole a nuestro robot la oportunidad de efectuar diversos movimientos. A continuación

se describen los procedimientos.

En el primer procedimiento crucero está basado en el comportamiento reactivo y se

realiza mediante movimientos simples que se ejecutan de manera aleatoria.

Lista de movimientos:

a) Alto total, aquí se paran los motores A y C.

b) Delante, para el movimiento hacia delante lo que se hace es mandar un impulso con la

instrucción fwd a los dos motores que están conectados en las entradas A y C del RCX.

c) Atrás, este movimiento es igual al de delante a diferencia de que la instrucción que se

manda es rwd.

A B C

A B C

A B C

Page 5: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

d) Moverse a la derecha, aquí se obstruye la corriente al motor C dejando pasar la carga

solo por el motor A con la instrucción fwd.

e) Moverse a la derecha hacia atrás, se obstruye la corriente al motor C dejando pasar la

carga solo por el motor A con la instrucción rwd.

f) Girar a la derecha, se manda la instrucción fwd al motor A y rwd al motor C.

g) Moverse a la izquierda, aquí se obstruye la corriente al motor A dejando pasar la carga

solo por el motor C con la instrucción fwd.

h) Moverse a la derecha hacia atrás, se obstruye la corriente al motor A dejando pasar la

carga solo por el motor C con la instrucción rwd.

A B C

A B C

A B C

A B C

A B C

Page 6: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

i) Girar a la izquierda, se manda la instrucción rwd al motor A y fwd al motor C.

Estos movimientos se pueden ejecutar en forma directa o combinándolos, de manera que

si los combinamos se pueden producir un gran número de movimientos.

Public Function Crucero()

Dim valorx, numeroveces, ini As Integer

numeroveces = Rnd * 10

For ini = 0 To Int(numeroveces)

If Int(valorx) = 0 Then

rcx.Off MOTOR_A + MOTOR_C

ElseIf Int(valorx) = 1 Then

rcx.Off MOTOR_A

rcx.SetFwd MOTOR_C

rcx.On MOTOR_C

ElseIf Int(valorx) = 2 Then

rcx.Off MOTOR_A

rcx.SetRwd MOTOR_C

rcx.On MOTOR_C

ElseIf Int(valorx) = 3 Then

rcx.SetFwd MOTOR_A

rcx.On MOTOR_A

rcx.Off MOTOR_C

ElseIf Int(valorx) = 4 Then

rcx.SetFwd MOTOR_A + MOTOR_C

rcx.On MOTOR_A + MOTOR_C

A B C

Page 7: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

ElseIf Int(valorx) = 5 Then

rcx.SetFwd MOTOR_A

rcx.SetRwd MOTOR_C

rcx.On MOTOR_A + MOTOR_C

ElseIf Int(valorx) = 6 Then

rcx.SetRwd MOTOR_A

rcx.On MOTOR_A

rcx.Off MOTOR_C

ElseIf Int(valorx) = 7 Then

rcx.SetRwd MOTOR_A

rcx.SetFwd MOTOR_C

rcx.On MOTOR_A + MOTOR_C

ElseIf Int(valorx) = 8 Then

rcx.SetRwd MOTOR_A + MOTOR_C

rcx.On MOTOR_A + MOTOR_C

End If

valorx = Rnd * 8

Next

rcx.Off MOTOR_A + MOTOR_C

End Function

Page 8: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

En el segundo procedimiento colisión lo que se hace es utilizar los sensores de tacto. El

robot camina hacia delante tratando de evitar obstáculos, los sensores detectan si un

objeto se encuentra delante del robot y al detectar el objeto se ejecuta una instrucción

para evadir el objeto.

Figura 3.5: Colisión utilizando los sensores de tacto

Page 9: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

En el tercer procedimiento evasión, lo que se realiza es utilizar el sensor de luz infrarroja.

Aquí el robot se desplaza hacia delante pero cuando el sensor identifica un objeto que

está fuera del rango de valores permitidos de iluminación efectúa una instrucción de

evasión.

Figura 3.6: Evasión utilizando el sensor de luz

Page 10: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

Diagrama del funcionamiento de colisión y evasión combinados:

Figura 3.7: Diagrama de colisión y evasión

Sensor Izquierdo

Tacto

Sensor Derecho

Tacto

Sensor de Luz

Evalúa Colisión

0 o 1

Movimiento Izquierda

Movimiento Derecha

Evalúa Evasión

Explorar Movimiento

Adelante

Efectuar Resultado

Movimiento

Page 11: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

Para el procedimiento deliberativo. Se utilizó un Pathfinding que es un algoritmo que

normalmente se usa en juegos y sirve para encontrar un ruta.

En este comportamiento se empleó el Pathfinding realizado por Julien Lecomte en donde

solo se programo la parte para la comunicación con el kit Lego. Para que al momento de

resolver una ruta exista la opción de enviar al robot los resultados generados por el

algoritmo [www7].

Para el procedimiento híbrido en donde se encuentra el algoritmo. Se utilizaron los

procedimientos reactivos combinándolos con un algoritmo de evaluación con el fin de

que los movimientos del robot sean realizados de manera inteligente simulando el

comportamiento que hace una persona al evaluar un problema.

A continuación se explica el algoritmo que se utilizó. El algoritmo que se utilizó está

basado en el algoritmo de aprendizaje de Watkins llamado algoritmo Q. Este algoritmo se

caracteriza por no necesitar de una representación del mundo así como también tiene la

capacidad de adaptarse en tiempo real [Watkins89].

Algoritmo de Aprendizaje Q: Q se aproxima a Q* usando diferencias temporales.

En donde Q(s,a) se aproxima a Q(s’,a’) estimando el valor de la acción Q(s,a) en función

de la recompensa r y del valor estimado del estado futuro de la transición Q*(s’,a’).

Page 12: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

El algoritmo funciona de la siguiente manera. En la interfaz seleccionamos el algoritmo y

realizamos un clic en el botón de aceptar:

Figura 3.8: Área de Trabajo El algoritmo corre en tiempo real evaluando el comportamiento del robot. Donde primero

se ejecuta la exploración de manera que los sensores de tacto y luz nos permiten conocer

las entradas preceptúales del entorno en el que nos encontramos.

Para esto se cuenta con un vector que está determinado a evaluar el estado actual del

robot en donde nuestro vector determina los cambios de luz, detección de obstáculos

Page 13: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

mediante el uso del sensor derecho o izquierdo de tacto así como también la posibilidad

de que un movimiento sea repetitivo.

Una vez obtenida esta información se premia o se castiga el movimiento con el fin de

evitar los choques con objetos para después evaluarlos en la función de aprendizaje Q.

Como resultado y utilizando la lista de movimientos posibles del robot se efectúa un

movimiento.

El algoritmo va aprendiendo conforme al uso que se le dé entre más exploraciones se

realicen y evalúen los resultados mejorarán dándonos la posibilidad de que con el paso

del tiempo éstos se reflejen en un comportamiento inteligente de nuestro robot.

3.4 Información de las Pruebas

El programa principal brinda la oportunidad de seleccionar individualmente cada uno de

los comportamientos algunos de estos se descargan y posteriormente se corren en el robot

y los otros se pueden controlar en tiempo real, ya que al momento de presionar alguno de

los botones en nuestra interfaz el robot realiza un movimiento.

Las pruebas se realizaron por separado se evaluaron los diferentes comportamientos en

nuestra área de pruebas, que como se mencionó anteriormente, contiene varias paredes

que representan obstáculos, también se cuenta con un punto inicial de donde el robot

partirá tratando de llegar a la salida o meta.

Page 14: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

Sé probó cada uno de los comportamientos mostrándonos diferentes resultados. Para

verificar que un programa esta funcionando correctamente la interfaz se conecta con

nuestro Lego en caso de que esto no se realice, el sistema enviará un mensaje de error, el

siguiente paso sería seleccionar el tipo de comportamiento que se desee probar. En el área

de mensajes se desplegará un mensaje y se escuchará un sonido en el robot con el cual

nos aseguramos que el programa haya sido descargado de manera correcta.

El comportamiento de crucero se caracterizó por ser el comportamiento más malo debido

a que la mayor de las veces no logró pasar ningún obstáculo, quedando atrapado o

bloqueado por alguna de las paredes.

Figura 3.9: Crucero

Page 15: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

En el comportamiento de Colisión se realizaron varias pruebas en donde se encontraron

varios datos interesantes, uno de ellos fue que al detectar la colisión era mejor realizar

movimientos en pequeños intervalos de tiempo debido a que así se puede contornear

mejor los obstáculos y evitar el choque con otro obstáculo, por otro lado este tipo de

comportamiento es muy rápido y la mayor parte de las veces llega a su objetivo.

Figura 3.10: Colisión

Page 16: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

El comportamiento de Evasión fue tal vez el más difícil de usar, ya que la mayor parte de

las veces el factor de iluminación afectó las pruebas debido a que el sensor infrarrojo es

muy sensible y la calibración debe de realizarse antes de hacer cualquier tipo de prueba,

este comportamiento no siempre es muy efectivo, pero a diferencia del de colisión éste

evita el contacto con los objetos, por lo que en un espacio reducido es una excelente

opción siempre y cuando esté bien calibrado.

Figura 3.11: Evasión

Page 17: Capítulo 3 Implementación del Robotcatarina.udlap.mx/u_dl_a/tales/documentos/lis/perez_g_eo/... · 2004-07-12 · 3.2 Construir un área de Trabajo Para evaluar el comportamiento

El algoritmo mostró datos muy interesantes ya que la primera vez que sé probó resultó

muy torpe en los movimientos del robot pero al volverlo a correr varias veces, más o

menos en promedio más de cien veces, logró aprender y descifrar la ruta exacta. Siendo

éste el comportamiento más preciso y efectivo pero él más lento en terminar las pruebas y

que al modificarse el espacio de trabajo tenía que volver a calcular sus movimientos.

Figura 3.12: Algoritmo