Texto - Grupo ISIS

Anuncio
Laboratorio de Sistemas Digitales
Departamento de Tecnología Electrónica
ETS de Ingenieros de Telecomunicación
MICROBOT
FUTBOLISTA
ANA FERNÁNDEZ DOMÍNGUEZ
DAVID GARCÍA BERENGUER
JUAN CARLOS GONZÁLEZ DELGADO
3º B
0
INTRODUCCIÓN
Los objetivos fundamentales de la práctica consisten en desarrollar un microbot
que sea capaz de encontrar una pelota situada en cualquier punto de un campo y meterla
en la portería contraria.
Para la realización de la práctica hemos contado con un microbot Tritt con las
modificaciones hardware que se estimaron oportunas.
ESQUEMA HARDWARE Y CONEXIONES CON EL MICROBOT
En principio empezamos a trabajar con la estructura básica del Tritt pero debida
a la pérdida de tiempo en montar y desmontar los sensores y en comprobar su correcto
funcionamiento, decidimos añadirle una estructura nueva con el fin de agilizar el
intercambio del microbot.
Posteriormente, por problemas con el mantenimiento de los encoders, ya que
compartíamos el microbot, y la poca precisión de los motores de continua, optamos por
utilizar motores paso a paso con lo que nos vimos obligados a construir una estructura
totalmente nueva e independiente a la inicial.
Además de las dos placas que incorpora el microbot Tritt, hemos diseñado e
implementado una tercera placa de circuito impreso que incluye los dos drivers de los
motores, la conexión con el puerto B y el regulador de tensión.
1
Estructura
La primera estructura era de Meccano. Tras varios intentos fusionando Meccano,
lego y chapón llegamos a lo siguiente:
Esta es la estructura definitiva, que como se puede observar en las fotografías
está formada de: cinta aislante, lego, chapón, plástico, tornillos, elástico y SuperGlue®.
En la parte frontal hemos colocado una tabla de chapón que sirve para golpear la pelota
y, además, lleva incorporado los sensores CNY70. Además, finalmente le hemos
añadido una especie de guardabarros para proteger las ruedas de la pelota. En la parte
trasera izquierda hemos colocado los dos sensores de distancia para detectar la pelota
mientras recorremos el campo sin tener que realizar ningún giro. Por ello, hemos tenido
la precaución de girar en sentido tal que el sensor siempre mire hacia el interiore del
campo.
La rueda loca está fabricada con un roll-on de desodorante. De esta forma
conseguimos reducir el rozamiento y los errores en los giros. Para las ruedas probamos
varias opciones, que se ven a continuación:
Finalmente, como el CD de 80 mm no proporcionaba el agarre suficiente, pero sí
la altura adecuada, optamos por fabricar ruedas de chapón de este mismo tamaño y
rodeadas por una cinta elástica rugosa pegada al contorno. Con esto conseguimos una
velocidad adecuada y una adherencia superior a la del CD. Por último, para unir el
motor a la rueda usamos dos tornillos y una pieza de lego.
2
Motores
Hemos utilizado motores paso a paso unipolares de 12V. Para controlarlos
usamos dos drivers ULN2003A que proporcionan la corriente suficiente para el
funcionamiento de los motores.
Este tipo de motores tienen la ventaja de tener más precisión en los movimientos
que los de continua, pero necesitan más corriente. Además, su implementación software
es más complicada y requiere más memoria. Esto se debe a que necesitan estar
recorriendo una secuencia de movimiento constantemente para que permanezcan
girando. Por el contrario, en continua, para permanecer en movimiento, tan sólo es
necesario introducir un valor en el puerto A sin necesidad de refrescarlo.
Los motores paso a paso unipolares suelen tener 6 o 5 cables de salida,
dependiendo de su conexionado interno (en nuestro caso 6). El conexionado para
controlar el motor sería:
El driver ULN2003A consta de 7 transistores tipo Darlington capaces de
manejar cargas de hasta 500mA. Las entradas de activación (Activa A, B , C y D)
son directamente activadas por el microcontrolador conectado al puerto B, usando 4
bits para cada uno de los motores. Los bits del puerto B se distribuyen de la
siguiente manera
BIT 7
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0
D2
C2
B2
A2
D1
C1
B1
A1
Existen tres secuencias posibles para este tipo de motores. En un principio
utilizamos la que proporciona más potencia y menos velocidad. Pero hemos optado
por otra secuencia que ofrece más velocidad pero menos potencia.
3
Nuestra secuencia es la del tipo paso normal. En ella se activan las bobinas de
dos en dos. Como vemos en la tabla la secuencia completa consta de 4 movimientos
en lugar de 4. La secuencia es cíclica, por lo que cuando llega al paso 4 vuelve al 1.
PASO
Bobina A
Bobina B
Bobina C
Bobina D
1
ON
ON
OFF
OFF
2
OFF
ON
ON
OFF
3
OFF
OFF
ON
ON
4
ON
OFF
OFF
ON
Como comentario final, cabe destacar que debido a que los motores paso a paso son
dispositivos mecánicos y como tal deben vencer ciertas inercias, el tiempo de duración y
la frecuencia de los pulsos aplicados es un punto muy importante a tener en cuenta. Si la
frecuencia de pulsos es muy elevada, el motor puede reaccionar en alguna de las
siguientes formas:
•
•
•
•
Puede que no realice ningún movimiento en absoluto.
Puede comenzar a vibrar pero sin llegar a girar.
Puede girar erráticamente.
O puede llegar a girar en sentido opuesto.
Para obtener velocidades mayores debemos acelerar los motores. Esto se consigue
con una frecuencia de pulso baja, y gradualmente, ir aumentándola hasta la velocidad
deseada, sin superar la máxima tolerada. Sin embargo, no hemos realizado aceleraciones
porque la pérdida de potencia al ir más rápido, hacía que el microbot se parara al chocar
con la pelota.
En el laboratorio hemos realizado una serie de medidas para saber el consumo de
corriente de los motores en movimiento. Comprobamos que cada uno requería unos
200mA, La velocidad que conseguimos es adecuada pero tenemos que utilizar un
generador externo a unos 20V. Esto se debe a que al girar el motor a tanta velocidad,
necesitamos aumentar el voltaje para mantener la misma potencia.
4
Sensores de distancia
Para poder detectar la pelota hemos insertado en la estructura dos Sharp a
distintas alturas. Los hemos colocado en una placa para fijarlos con precisión. El
inferior detecta un objeto y el superior decide si se trata de la pelota o el contrario, para
ir o no a por él.
Estos sensores nos permiten saber a la distancia que se encuentra el objeto, pero
debido a nuestro algoritmo de juego no es necesario conocerla con exactitud.
Para alimentar los sensores hemos utilizado un regulador de tensión (L7805) que
nos proporciona 5V para reducir el ruido. Para conectarlos a la placa hemos usado unas
resistencias de pull-down de 1k conectadas a VRL.
Los valores de salida del sensor están comprendidos entre los 0 y 2,5 voltios, por
lo que para conseguir una mejor exactitud en nuestras medidas, situaremos el nivel de
referencia VRH (puerto E) en torno a esos 2,5 voltios obtenido con un divisor de
tensión a la salida del regulador.
Sensores de infrarrojos
El algoritmo de juego recorre la línea negra y por ello hemos utilizado 4
sensores CNY70 alineados. Los dos centrales irán asociados a los sensores 3 y 4, y son
los encargados de seguir la línea; los laterales van conectados a los sensores 1 y 2 que a
su vez, van conectados a los capturadotes de entrada 3 y 2 para provocar interrupción al
detectar los cruces del campo. La distribución de los sensores es la siguiente:
:
Sensor 1
:
Sensor 3
:
Sensor 4
:
Sensor 2
5
DIAGRAMAS DE FLUJO
Aquí vemos el diagrama de flujo de nuestro algoritmo principal:
Inicio
Configuración
Inicial
Andar un
paso
SI
¿Alineado
con línea
negra?
NO
Cargar
Adelante
¿Desviado
a la
derecha?
NO
¿Sensor
permitido?
NO
SI
NO
SI
¿Desviado
a la
izquierda?
¿Detecta
pelota?
Cargar
Izquierda
SI
NO
Cargar
Izquierda
SI
¿Detecta
microbot
contrario?
Cargar
Derecha
NO
SI
Encontrado
= SI
SI
¿Hago
algoritmo
caja?
NO
Golpea
Algoritmo
caja
6
Aquí vemos el diagrama de flujo de la rutina de atención a interrupción de los
capturadores 3 y 2
Inicio
Miramos
Tabla
SI
¿Fin de
nuestro
campo?
NO
SI
SI
Cargar
Campo Gol
¿Hemos
encontrado
la pelota?
NO
¿Fin del
campo de
gol?
NO
Cargar
Campo
Nuestro
Encontrado
= NO
Cargar
Dirección a
Seguir
Avanzar
RTI
7
DESCRIPCIÓN DEL CÓDIGO
Plan de juego
El algoritmo diseñado se basa en recorrer el campo siguiendo la línea negra y en
cada cruce actualiza la posición, accediendo a una tabla que contiene la información
sobre las tareas a realizar en el tramo de campo. La tabla global está formada por otras
dos, una para cada campo. Cada byte de la tabla contiene información sobre: la
dirección a seguir en el cruce (bit 0 y bit 1), si debe o no buscar la pelota (bit 5), es
decir, que estén permitidos los sensores de distancia; y la forma en la que debe golpear
la pelota (bit6); zona de incertidumbre (bit7).
BIT 7
Incertidumbre
BIT6
BIT5
0
X
BIT 6
Modo golpe
BIT 5
Sensor
Golpea
1
X
Caja
X
0
Sensor desactivado
X
1
Sensor activado
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0
Dirección
BIT1
BIT0
Dirección
0
1
Izquierda
1
1
0
1
Derecha
Recto
Combinando los dos modos de golpeo de pelota conseguimos meter gol. En cada
tramo del campo efectuamos una acción distinta, o bien caja, o bien, golpea.
GOLPEA
El microbot se desplaza en dirección perpendicular a la línea del campo y
empuja una distancia fija la pelota hacia la zona central. Con ello se consigue colocar la
pelota en un pasillo imaginario de la anchura de la portería. Antes de ejecutar este
movimiento retrocede unos pasos para alinearse con la pelota.
µBot
CAJA
El microbot traza una caja alrededor de la pelota de forma que esta se dirija
hacia donde estaba el microbot inicialmente.
8
Las tablas de los campos serían:
1
2
3
4
5
6
7
8
9
10
11
12
Dirección
Recto
Izquierda
Izquierda
Izquierda
Derecha
Derecha
Derecha
Izquierda
Recto
Izquierda
Izquierda
Recto
Sensor
Activo
Activo
Activo
Inactivo
Inactivo
Activo
Inactivo
Inactivo
Activo
Inactivo
Activo
Activo
Modo de golpeo
Golpea
Golpea
Golpea
Caja
Caja
Golpea
Golpea
GOL
GOL
1
18
1
12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dirección
Derecha
Derecha
Derecha
Izquierda
Izquierda
Izquierda
Izquierda
Derecha
Derecha
Derecha
Izquierda
Recto
Izquierda
Izquierda
Izquierda
Derecha
Derecha
Derecha
Sensor
Inactivo
Inactivo
Activo
Inactivo
Activo
Activo
Activo
Inactivo
Activo
Inactivo
Inactivo
Activo
Activo
Activo
Activo
Inactivo
Activo
Inactivo
Modo de golpeo
Caja
Caja
Golpea
Golpea
Golpea
Golpea
Golpea
Golpea
Caja
Caja
9
Hemos desarrollado un algoritmo pensado para prescindir de una ampliación de
memoria y, por lo tanto, inferior a 512 bytes. Para ello, nos hemos basado en el
algoritmo de seguir línea negra que es simple y eficiente. Además, es fácilmente
extensible a campos de distinta dimensiones, ya que actualiza la posición únicamente al
llegar a cada nodo, de forma que no tenemos que llevar un constante control sobre la
posición del microbot en el campo. Esto último facilita el plan de pruebas en campos de
menor tamaño.
La combinación línea negra y tabla nos permite recorrer el campo con menor
riesgo de perdernos, ya que los errores no son acumulables.
Descripción del código
Al comienzo del código inicializamos todos las interrupciones, sensores,
definimos tablas y etiquetas.
Empezamos siguiendo línea negra. En los casos en los que tengamos que
rectificar la posición deshabilitamos las interrupciones para asegurarnos de que no
detectemos más de una vez el mismo cruce. Entonces cuando avanzamos es cuando se
pueden ocasionar las interrupciones, que sólo llegarán cuando el microbot se encuentre
con un cruce. Es decir, que cualquiera de los sensores de infrarrojos 1 y/o 2 (laterales)
detecten línea negra. Cuando ocurra esto, se cargará de la tabla el movimiento a realizar
y lo ejecutará durante un número de pasos fijo. Luego avanzará un poco hacia delante,
para que los sensores centrales queden sobre la línea negra. Nos vemos obligados a
hacer esto porque los sensores no están en el eje de giro, sino más adelantados.
Sólo podremos detectar la pelota cuando avanzamos sobre línea negra, nunca en
una interrupción ni durante una rectificación. Pero habrá tramos de recta donde los
sensores de distancia estén desactivado hasta la nueva llegada de cruce, para evitar que
envíe la pelota fuera del campo. También se desactivan cuando estén mirando al
exterior del campo, para evitar que detecten a un intruso.
Consideramos que hemos detectado un objeto cuando este se encuentra a una
distancia menos de los 40 cm. Entonces, una vez detectado un objeto, tendremos que
determinar si se trata del esférico o del defensa. Para ello, disponemos de un segundo
sensor de distancia situado a mayor altura para poder distinguir entre ambos
(suponiendo que el microbot es más alto que la pelota). Si efectivamente se trata del
defensa, seguirá su camino en busca de la pelota. Por el contrario, si se trata del esférico
decidirá cómo golpearlo dependiendo del contenido de la tabla y pondrá a 1 el bit
encontrado.
Cuando termina de recorrer el campo de gol y si no ha detectado la pelota, se
dirigirá hacia el otro campo. Si ha detectado, seguirá por el mismo campo hasta
conseguir meter gol. Siempre que termine de recorrer un campo se pone a 0 el bit de
encontrado para evitar quedarnos en el campo de gol, habiéndola enviado a la otra mitad
por error. Cuando la pelota sea encontrada en nuestro campo será golpeada y seguirá su
camino; pero esta vez no se quedará en él, sino que volverá al campo de gol, ya que es
10
muy probable que el esférico este ahora en él. Por lo que nunca recorrerá más de una
vez consecutiva nuestro campo.
9
6
Hemos añadido al código la zona de
incertidumbre. Esto se corresponde con una zona del
campo donde el microbot echaba la pelota fuera (zona
sombreada). Para solucionarlo, hemos evitado que realice
una caja en la zona 9, si la ha hecho antes en la zona 6.
Con
ello
aseguramos
que
golpearemos
previamente desde la banda, y antes de hacer la caja de
nuevo en la zona 9, la pelota se encontrará entre los palos
de la portería.
11
CONCLUSIONES
La puesta a punto del microbot ha resultado bastante más lenta de lo que
esperábamos. Hemos encontrado muchos problemas mecánicos que han retrasado el
desarrollo del algoritmo. Posiblemente, el reto más grande ha sido buscar una estructura
que nos facilitara el intercambio de microbot sin que supusiera mucha pérdida de
tiempo.
En principio, pensamos en un algoritmo con una gran base matemática, basada
en trigonometría, pero debido a la escasa capacidad de memoria, decidimos desecharla.
Posteriormente, probamos un algoritmo basado en ir realizando cajas, con lo que sólo
teníamos que realizar giros de 90 grados. Una vez más, las restricciones mecánicas
(giros de 90 grados con motores de continua, mantenimiento de los encoders,…) nos
obligaron a cambiar de estrategia. Finalmente, buscamos un algoritmo más sencillo de
implementar. Para solucionar la precisión de los giros optamos por motores paso a paso.
Hemos eliminado de nuestro algoritmo la opción de buscar la pelota fuera del
campo, ya que en el campo real no es posible realizar esta parte de código por sus
limitadas dimensiones.
Destacamos algunas formas para mejorar el algoritmo:
1. Añadir un bumper o un tercer sensor de distancia para evitar chocarnos de
frente contra otro microbot.
2. Mejorar la interacción con otro microbot. Para ello se podrirá añadir una
rutina para esquivar en caso de posible colisión.
3. Resolver el problema de la incertidumbre de una forma más rápida. Se
podría detectar cuando estamos entre los palos de la portería y cuando no.
Por otro lado, nos gustaría resaltar algunas dificultades adicionales que se han
presentado:
1. Las pruebas realizadas en casa siemrpe han resultado más satisfactorias que
las del laboratorio. Hemos concluido que los sensores se ven muy afectados
por las condiciones de luz del entorno y del material de los objetos sobre los
que se refleja.
2. Los sensores de infrarrojos CNY-70 fallaban detectando cruces donde no los
había. Creemos que puede deberse a los distintos desniveles que presenta el
campo, ya que en casa, sobre cartulina, nunca nos ha dado ningún problema.
3. La placa de baquelita, que teníamos inicialmente para controlar los motores,
nos daba muchos problemas debido a falsos contactos. Así que nos
decidimos a fabricar una placa de circuito impreso.
La práctica de este año nos parece más compleja que la de años anteriores, también es
cierto que hemos contado con más documentación que las anteriores promociones. Pero
aún así, la dificultad ha sido mayor debido a la práctica en sí y la reducción a la mitad
del tiempo efectivo de posición del microbot. De todas formas, no dudaríamos en volver
a optar por el microbot frente a la Promax.
12
Descargar