Udla Ec Tieri 2019 10 PDF
Udla Ec Tieri 2019 10 PDF
Udla Ec Tieri 2019 10 PDF
AUTOR
AÑO
2019
FACULTAD DE INGENIERÍA Y CIENCIAS APLICADAS
Profesor Guía
MSc. David Fernando Pozo Espín
Autor
Andre Eduardo Torres Cueva
Año
2019
DECLARACIÓN PROFESOR GUÍA
“Declaro que este trabajo es original, de mi autoría, que se han citado las fuentes
correspondientes y que en su ejecución se respetaron las disposiciones legales
que protegen los derechos de autor vigentes.”
Por tal motivo, se llevará a cabo una revisión de los algoritmos de toma de
decisiones comúnmente utilizados en la robótica recreativa, con el fin de
entender el principio de funcionamiento de cada uno y analizar cuáles son
mejores para la implementación de un prototipo de competencias.
Over the years, different techniques and algorithms have been developed for the
resolution of labyrinths, ranging from the simplest, such as the left-hand
algorithm, to the most complex, such as the Flood Fill algorithm. These
techniques have been developed and applied in different research areas, one of
which is recreational robotics. At the same time, in this area, these algorithms are
used to obtain the best results in terms of time and distances of travel.
Also, through the revision of the different algorithms, two of these will be applied
to two robot routes through the labyrinth, to optimize the travel time in the last
trajectory of the prototype. Through flow diagrams and pseudo code, it will be
possible to see how the decision-making algorithms work in each case that the
prototype finds within the walls of the labyrinth. For the first route of the robot a
simple algorithm is applied with the objective that the robot explores the labyrinth,
during the second pass a route optimization algorithm will be used with the
objective of improving the first route.
Finally, through the tests carried out with the prototype in different conditions, it
will be demonstrated the advantage in time reduction when using the optimization
algorithms, through the results obtained. This advantage, in the end resulted in
an average reduction of 50% of travel time, thus demonstrating the usefulness of
this technique in competition and carrying out a comparison both to use or not
such algorithms. Finally, it can be concluded how decision making directly affects
the behavior and the result of any robotic prototype.
ÍNDICE
Introducción ...............................................................................1
Objetivo General ........................................................................3
Objetivos específicos .................................................................3
Alcance ......................................................................................4
Justificación ...............................................................................4
Conclusiones ........................................................................... 40
Recomendaciones ................................................................... 41
REFERENCIAS ................................................................ 43
1
1. Capítulo I. Introducción
Introducción
Para que un robot autómata pueda resolver un laberinto se aplica uno de los
conceptos más importantes de la robótica llamado “Toma de decisiones”; el cual
consiste en la acción que realizará un robot cuando éste se encuentre en un
punto de decisión (Rahman, 2017). La decisión que tome el prototipo es el
2
resultado del algoritmo que se esté utilizando para resolver dicha tarea, siendo
así el camino recorrido por el robot, el resultado directo del algoritmo aplicado.
Éste funciona de la forma en la que ve la estructura interna del laberinto; la cual
puede ser como una matriz bidimensional (Mosa & Saad, 2005), como un grafo
de puntos interconectados (Sedgewick & Wayne, 2018) o como un arreglo de
decisiones para llegar a la meta (Al-Khawaldah, Badran, & Al-Adwan, 2011).
Para que algunos de estos funcionen, el robot debe haber recorrido el laberinto
al menos una vez previamente. Para ello, se puede utilizar un procedimiento para
el primer recorrido y otro distinto para el segundo; a esto se le conoce como
optimización de una ruta previamente conocida.
Existen otras técnicas para resolver laberintos, por ejemplo, la cooperación entre
múltiples robots (Rodríguez, 2014), aplicar redes mesh para identificar el camino
más corto entre los diferentes nodos en un laberinto (Rührup & Schindelhauer,
2006) o utilizando un enfoque numérico basado en la mecánica de fluidos
(Venkata et al., 2011). Estas técnicas como muchas otras se van mejorando y
adaptando cada vez más a los diferentes tipos de robots autómatas utilizados
con diferentes finalidades.
Objetivo General
Objetivos específicos
Alcance
Para la navegación del robot dentro del laberinto, se utilizarán algoritmos que le
permitan al robot navegar por el centro de las paredes del laberinto, así como
algoritmos que le permitan girar correctamente. También utilizaremos algoritmos
sencillos para que el robot tome datos del laberinto la primera vez que lo recorra,
y guarde estos datos en su memoria.
Justificación
Universidad. Por lo que el prototipo quedará como un ejemplo o guía para futuros
proyectos de nuevos estudiantes.
Entre las desventajas de esté algoritmo es que requiere una gran capacidad de
almacenamiento para estructuras complejas, además que garantiza encontrar la
solución óptima, pero en una gran cantidad de tiempo; debido a su alto nivel de
procesamiento. La mayor desventaja de esté algoritmo es que espera que la
estructura del laberinto sea conocida para empezar con su estrategia de
búsqueda, por lo que para una competencia robótica no sería lo más óptimo
(Gupta & Sehgal, 2015).
7
Una vez que el robot haya alcanzado el punto final, el algoritmo empezará a dar
valores a cada celda dependiendo la distancia a la que se encuentren de la meta.
La meta será marcada con un valor de “0” y sus celdas vecinas (celdas a las que
se puedo mover) serán marcadas con un “1” y las vecinas de estas celdas con
un “2” y así sucesivamente hasta llegar al punto de inicio, esto se lo puede
observar en la Figura 2.
Una vez que todas las celdas hayan sido marcadas, el siguiente paso para el
robot es moverse desde el punto de inicio hacia la siguiente celda con un valor
menor a la actual, y así sucesivamente hasta encontrar el punto final del
8
laberinto. En el caso de que el corredor se encuentre entre dos celdas del mismo
valor el algoritmo siempre preferirá avanzar recto ya que es más rápido, en el
caso de que las dos celdas sean a los lados, dependerá de la preferencia que el
programador haya dado al algoritmo.
FINAL
INICIO
Figura 3. Algoritmo Mano Izquierda.
Tomado de (Bienias, Szczepański, & Duch, 2016)
memoria como caminos “malos” para que puedan ser evitados durante el
segundo recorrido. Para este algoritmo se tiene que representar cada punto de
decisión como un caso; el cual puede ser “R”, “L”, “S” o “B”, la “R” hace referencia
a un giro de 90 grados hacia la derecha, la “L” hace referencia a un giro de 90
grados hacia la izquierda, la “S” hace referencia a avanzar recto y la “B” hace
referencia a un camino sin salida o un giro de 180 grados (Vannoy, 2009).
La última interacción da como resultado “SBL”, que se puede reducir con un giro
a la derecha “R”. Por lo que nuestra cadena de casos nos queda con solo “R” y
está representa al camino más corto entre el inicio y final del laberinto, como se
muestra en la Figura 7.
encontrar con ocho casos (Morales, Pozo, Rosero, Sandobalin, & Rodríguez,
2014), los cuales se muestran en la Figura 8.
Cada caso representa para el robot una toma de decisión, está decisión es el
resultado del algoritmo que se esté aplicando. Por ejemplo, si estamos usando
el algoritmo de “mano izquierda” tendremos que apegarnos a la norma de preferir
siempre girar a la izquierda o mantenernos en línea recta en el caso de que no
se pueda girar a la izquierda. Por el contrario, si se utiliza el algoritmo “mano
derecha”, se tiene que mantener la regla de sobre todo preferir girar a la derecha
o seguir recto en el caso de que no se pueda girar a la derecha. En el caso “sin
salida”, sin duda en cualquier algoritmo se realiza un giro de 180 grados (Morales
et al., 2014).
Estos casos también se los puede guardar en una colección de datos, para
posteriormente optimizar la ruta hacia la salida del laberinto. En el caso de un
prototipo robótico, este tiene que ser capaz de identificar de manera correcta
cada uno de los casos, para que el algoritmo que se aplique pueda funcionar
correctamente. En el siguiente capítulo se observará como el prototipo de este
13
trabajo de titulación mira los casos del laberinto según el algoritmo que le
estemos aplicando.
Controlador
Planta
Sensor
2.7.1 Microcontrolador
Tabla 1.
Características Atmega328p.
Nombre Valor
Líneas I/O 23
Periféricos de comunicaciones digital 1-UART, 2-SPI, 1-I2C
PWM 6 PWM
Temporizadores 2 x 8-bits, 1 x 16-bits
16
2.7.2 Driver
Tabla 2.
Características TB6612FNG.
Nombre Valor
Voltaje de motor 4.5 a 13.5 V
17
2.7.3 Sensores
Un sensor se puede definir como un dispositivo que mide un atributo del mundo,
por lo cual se los puede clasificar en dos tipos de acuerdo con el tipo de
información medida que nos otorgue a través de su salida. Existen los sensores
propioceptivos; los cuales miden un atributo con respecto a su propio estado, y
los sensores exteroceptivos; los cuales miden un atributo de un objeto externo
presente en la escena (Discant & Rogozan, 2007). Para la implementación de
este trabajo de titulación, se usará los dos tipos de sensores: Un sensor
exteroceptivo para medir las distancias de las paredes del laberinto con respecto
al prototipo, y sensores propioceptivos tanto para medir, cambiar o mantener la
orientación en el espacio del prototipo, como para medir las revoluciones de éste
al recorrer el laberinto. Estos sensores se encuentran detallados a continuación.
Tabla 3.
Características V6180X.
18
Nombre Valor
Resolución 1 mm
Rango máximo 60 cm
Interfaz I2C
Voltaje mínimo de operación 2.7 V
Voltaje máximo de operación 5.5 V
Voltaje de operación 1.8 hasta 5.5
Corriente de suministro 5 mA
Tomado de (Pololu Corporation, 2018).
2.7.3.2 IMU
Tabla 4.
19
Características MPU-6050.
Nombre Valor
Resolución ADC 16-bits
Corriente de operación 3.5 mA
Interfaz I2C
Rango de escalas ±250, ±500, ±1000 y ±2000 º/sec
Voltaje de operación 2.375 V – 3.46 V
Tomado de (Ave, Number, & Date, 2013).
Para esté trabajo de titulación se utilizará los encoders magnéticos de Pololu, los
cuales emiten su salida en cuadratura; es decir nos permite ver el sentido de giro
de los motores. Los micromotores de engranaje metálico de la misma marca se
pueden adaptar con este kit de encoders, los cuales utilizan un disco magnético
y un sensor de efecto hall para brindar 12 pulsos por revolución del motor. Se
puede observar esté kit en la Figura 10 como Encoders.
Tabla 5.
Características Magnetic Encoder Kit.
Nombre Valor
Voltaje de operación mínima 2.7 V
Voltaje de operación máximo 18 V
Salida Digital
Cuadratura Si
Tomado de (Pololu Corporation, 2018b).
Para la navegación del robot dentro del laberinto, éste hace uso de sensores de
distancia, los cuales le permiten tener una percepción de entorno en el que se
encuentra. Los sensores de distancia infrarrojos VL6180X tienen un alcance de
200mm, lo que permite tener un rango amplio de medición debido a que por
reglamento el ancho de los pasillos interiores del laberinto es de 250mm. En
nuestro caso, se utilizarán tres sensores de distancia, uno a cada lado del
prototipo y uno apuntando hacia al frente; cómo se puede apreciar en la Figura
11.
21
Sensor Frontal
82mm
Sensores laterales
El algoritmo de la Figura 12, será utilizado en los casos de línea recta, mientras
el sensor de la parte delantera no encuentre ningún obstáculo. Por otro lado, los
giros que realiza el robot se encuentran relacionas al número de grados que
recorren desde que inicia el giro hasta cumplir 90º. La medición de grados se
calcula con la entrega de datos de la IMU ubicada en el centro del prototipo, de
esta forma se conseguirá que los giros sean lo más exactos posibles evitando
choques y giros mal realizados. Los giros se pueden realizar aplicando velocidad
en un sentido para un motor y en el otro sentido para el otro motor, o
23
Para el primer recorrido del robot dentro del laberinto se utilizará el algoritmo
Wall Follower, mientras el prototipo vaya aplicando este algoritmo, irá guardando
en un arreglo los casos que va recorriendo hacia la salida. Además de guardar
los casos, éste también guardará las distancias recorridas entre cada caso; con
la finalidad de luego aplicar un filtrado de casos para así tener un mapeo del
laberinto más confiable.
1 2 3
4 5 6
Para guardar las distancias recorridas por el prototipo, hacemos uso de los
encoders magnéticos. Las salidas de estos encoders se encuentran conectadas
a pines digitales que son capaces de generar interrupciones de cambio de
estado. Es decir, cada vez que el encoder emita un pulso positivo se generará la
interrupción en el microcontrolador donde se utilizará un contador para calcular
la distancia recorrida. Este cálculo se lo realiza dividiendo perímetro de las
ruedas para el número de pulsos por el revolución del encoder, por el fabricante
sabemos que el número de pulsos por revolución del encoder es 12 (Pololu
Corporation, 2018b). Cada vez que pasemos de un caso a otro, el contador se
reiniciará desde cero para que el siguiente caso guarde las distancia
adecuadamente.
Como se puede ver en el diagrama anterior, en cada caso que se entra se coloca
en la variable “estado” el número correspondiente de cada caso para luego ser
envía a la función “llenarCamino”. Esta función sirve para guardar los casos y las
distancias entre casos en dos arreglos globales; llamados “laberinto” y “pasos”
respectivamente, los cuáles finalizado el recorrido del laberinto serán guardados
en la memoria EEPROM del prototipo. Para lograr esto, se debe tener una
variable que lleve el índice o el número de casos que se vayan guardando, para
lo cual se ha definido una variable global llamada “posicion”. Además, tenemos
que filtrar los casos que se repiten debido a que su solución es seguir en línea
recta aplicando el control PID, estos casos son el “1” y el “2”. Por último, se debe
guardar el estado nuevo en un estado pasado, para aplicar el filtrado mencionado
anteriormente. En la Figura 15 se encuentra el pseudocódigo de esta función.
26
Al final del recorrido del prototipo a través del laberinto, éste guarda todo el
recorrido en el arreglo llamado “laberinto”; al cual se lo tiene que pasar por una
etapa del filtrado para que pueda ser utilizado por el algoritmo de optimización
durante el segundo recorrido. A continuación, se detalla con un ejemplo los
pasos de esta etapa:
caso 2, pero en el caso de que no haya una pared frontal y los encoders
marquen más de 200mm se registrará un caso 2.
Existen ocasiones en las que el robot se despega de la pared izquierda,
pero continuando con el algoritmo de mano izquierda éste hace un
pequeño giro a la izquierda pudiendo registrar un caso 4 o un caso 5. Por
lo que mediante los encoders se confirma si se trata de un giro real o solo
una corrección de trayectoria, siendo este último caso el que se ignora.
Al terminar el caso 6, el prototipo quedó en una “mala posición” por lo que detecta
un caso 2, la validación verifica que la distancia recorrida es menor a 10cm, por
lo tanto, éste caso es eliminado. Seguido el robot detecta un caso 1, el cual no
se toma en cuenta ya que es un caso sin toma de decisión. Por último, en este
ejemplo, el robot detecta un caso 2, el cual queda registrado ya que el prototipo
ha recorrido más de 10cm dentro de éste.
El arreglo final en este ejemplo es el siguiente: 2, 5, 6, 2.
Tabla 6.
Pesos de la decisión.
Una vez que este algoritmo haya finalizado, se tendrá como resultado un arreglo
con las “decisiones” para la toma de decisiones que deberá recorrer el prototipo
durante el segundo trayecto. Este arreglo final se enviará mediante
comunicación serial al computador, para posteriormente cargar dicho arreglo al
programa para el recorrido dos.
Caso: S
Para lograr aplicar este método, el prototipo tiene que navegar lo mejor posible
por el centro de las paredes del laberinto y realizar los giros de una manera casi
perfecta. Se logró esto gracias a la ayuda de los encoders, los cuales permiten
colocar al robot en posición óptima para llevar a cabo un giro; ya que si utilizamos
el método aplicado en el algoritmo de “mano izquierda” el prototipo puede llegar
a detectar decisiones falsas. Gracias a los encoders, se puede hacer que el robot
avance cierta distancia antes o después de realizar una curva; estas distancias
dependerán del laberinto que se esté utilizando.
motores a velocidades iguales para que estos avancen en línea rectar durante
cierta distancia. Cuando se tiene alguna de las dos paredes, se utiliza el control
PID para avanzar en línea recta hasta encontrar la otra pared faltante; ya que se
ha logrado pasar la decisión “S” con éxito.
Primera Prueba
Una vez que el programa corre la etapa de filtrado entrega como resultado un
arreglo de decisiones, mostrado en la Figura 23.
[S, R, S, R, R, L, B, R, L, L, L, S, R, L, L, S, L, B, S, R, L, L, B, R, L, L, R, L, S, L,
L, L, R, R]
Una vez que los datos ingresaron al algoritmo de optimización, éste arrojo como
resultado el arreglo de decisiones para la ruta optimizada; mostrada en la Figura
24.
Ruta optimizada:
[S, R, R, S, R, L, L, S, S, R, R, S, L, R, S, L, L, L, R, R, S]
36
Segunda prueba
[ 1 – 20, 4 – 1, 1 – 2, 4 – 6, 1 – 2, 4 – 3, 1 – 0, 4 – 8, 1 – 7, 4 – 4, 1 – 13, 2 – 6, 3
– 4, 1 – 55, 2 – 11, 3 – 4, 2 – 3, 3 – 3, 2 – 0, 1 – 6, 2 – 11, 3 – 4, 1 – 1, 2 – 3, 4 –
3, 1 – 0, 4 – 4, 1 – 2, 2 – 0, 1 – 1, 2 – 13, 1 – 12, 6 – 4, 1 – 2, 6 – 2, 1 – 0, 6 – 6,
2 – 0, 1 – 6, 4 – 3, 2 – 3, 5 – 3, 2 – 2, 5 – 12, 1 – 3, 2 – 0, 1 – 1, 2 – 6, 1 – 27, 2
– 17, 3 – 4, 2 – 2, 1 – 0, 2 – 5, 1 – 4, 2 – 19, 1 – 3, 4 – 2, 1 – 6, 2 – 0, 1 – 1, 2 –
1, 1 – 40, 4 – 6, 1 – 1, 2 – 1, 5 – 5, 2 – 3, 5 – 10, 2 – 15, 1 – 16, 6 – 16, 1 – 9, 4
– 3, 2 – 16, 1 – 35, 4 – 2, 1 – 4, 2 – 14, 1 – 2, 2 – 13, 3 – 5, 1 – 0, 2 – 7, 4 – 4, 1
– 2, 4 – 8, 1 – 2, 4 – 5, 1 – 9, 2 – 0, 1 – 1, 2 – 4, 1 – 20, 6 – 5, 1 – 1, 6 – 8, 1 –
14, 2 – 7, 3 – 5, 1 – 1, 2 – 5, 1 – 4, 2 – 13, 3 – 6, 1 – 0, 2 – 3, 4 – 7, 1 – 3, 4 – 13,
38
1 – 2, 2 – 2, 5 – 4, 2 – 7, 1 – 9, 2 – 6, 3 – 5, 1 – 0, 2 – 8, 1 – 4, 2 – 9, 3 – 5, 1 –
1, 2 – 3, 4 – 9, 1 – 1, 2 – 0, 5 – 10, 1 – 0, 4 – 6, 1 – 1, 2 – 15, 1 – 9, 6 – 6, 1 – 0,
6 – 7, 2 – 0, 1 – 6, 4 – 4, 2 – 3, 5 – 6, 2 – 0, 1 – 1, 5 – 6, 1 – 1, 4 – 5, 2 - 10, 1 –
195, 2 – 0, 1 – 2, 2 – 12, 1 – 10, 6 – 1, 6 – 0, 6 – 0, 6 – 0, 6 – 0, 6 – 0, 6 – 0, 6 –
0, 6 – 0, 1 – 4, 6 – 0, 6 – 0, 6 – 0, 6 – 0, 6 – 0, 6 – 0, 6 – 0, 3 – 0, 3 – 0, 3 – 0, 3
– 0, 3 – 0, 3 – 0, 3 – 0, 3 – 0, 3 – 0, 3 – 0, 3 – 0, 3 – 0, 2 – 0, 1 – 8, 4 – 4, 2 – 11,
1 – 55, 6 – 2, 8 – 1, 8 – 2, 8 – 2, 8 – 2]
Así como en la primera prueba, el arreglo de casos tiene que pasar por la etapa
de filtrado y posteriormente por el algoritmo de optimización. El arreglo resultado
de la etapa de filtrado se muestra en la Figura 27 y el recorrido optimizado en la
Figura 28.
[ L, L, R, R, R, L, B, L, L, R, S, L, L, L, B, L, L, R, L, L, B, R, R, L, L, R, R, L, L, B,
L, L, L, L]
Ruta optimizada:
[ L, L, R, R, R, S, L, R, S, L, L, S, S, R, R, L, S, L, L, S]
39
5. CONCLUSIONES Y RECOMENDACIONES
Conclusiones
Recomendaciones
Se recomienda utilizar sensores que utilicen una interfaz análoga, esto se debe
a que es más rápido realizar una conversión AD, que utilizar el protocolo I2C
para que el microcontrolador se comunique con los sensores.
REFERENCIAS
Ave, B., Number, D., & Date, R. (2013). MPU-6050_DataSheet_V3 4.pdf, 1(408).
Bienias, Ł., Szczepański, K., & Duch, P. (2016). Maze Exploration Algorithm for
Small Mobile Platforms. Image Processing & Communications, 21(3),
15–26. https://doi.org/10.1515/ipc-2016-0013
Discant, A., & Rogozan, A. (2007). Sensors for obstacle detection-a survey. …
Spring Seminar on, 100–105. Recuperado de
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4432828
Gupta, B., & Sehgal, S. (2015). Survey on Techniques used in Autonomous Maze
Solving Robot Survey. 2014 5th International Conference - Confluence
The Next Generation Information Technology Summit (Confluence),
(SEPTEMBER 2014), 323–328.
https://doi.org/10.1109/CONFLUENCE.2014.6949354
Hualong, J., Hongqi, W., & Yonghong, T. (2011). Design and realization of a
maze robot. 2011 International Conference on Consumer Electronics,
Communications and Networks, CECNet 2011 - Proceedings, 201–
44
204. https://doi.org/10.1109/CECNET.2011.5768942
Kirsh, P., Lis, S., Esslinger, C., Gruppe, H., Danos, P., Broll, J., … Gallhofer, B.
(2006). Brain Activation during Metal Maze Solving.
Neuropsychobiology, 54, 51–58. Recuperado de
https://doi.org/10.1159/000095742
Morales, L., Pozo, D., Rosero, J., Sandobalin, S., & Rodríguez, M. (2014). Mapeo
de Laberintos y Búsqueda de Rutas Cortas MedianteTres Mini Robots
Cooperativos. Revista Politécnica, 34(1), 101–106.
Pololu Corporation. (2018). Pololu - Magnetic Encoder Pair Kit for Micro Metal
Gearmotors, 12 CPR, 2.7-18V (HPCB compatible). Recuperado el 13
de noviembre de 2018, de
https://www.pololu.com/product/3081/specs
Popirlan, C., & Dupac, M. (2009). An Optimal Path Algorithm for Autonomous
Searching Robots. Annals Math. Comp. Sci. Ser, 36(1), 37–48.
Robinette, P., Li, W., Allen, R., Howard, A. M., & Wagner, A. R. (2016). Overtrust
of robots in emergency evacuation scenarios. ACM/IEEE International
Conference on Human-Robot Interaction, 2016–April(February 2018),
101–108. https://doi.org/10.1109/HRI.2016.7451740
Venkata, P. P. K., Bose, S. K., Sarode, D. M., Shete, P. P., Apte, A. G., & Shaik,
K. (2011). Automated maze solving using fluid mechanics based
numerical approach. 2011 International Conference on Image
Information Processing, (Iciip), 1–6.
https://doi.org/10.1109/ICIIP.2011.6108920