ROBOT AUTÓNOMO CON CONTROL PID CAPAZ DE DESPLAZARSE DENTRO DE UN LABERINTO Viviana Abarca, Viviana Pino, Jonathan Bautista Escuela Superior Politécnica de Chimborazo Escuela de Ingeniería Electrónica en Control y Redes Industriales Abstrac Abstract t — The objective of this work is to present the main
details of the hardware and software design of an autonomous robot that is capable of movi ng through a pre-designed labyrinth, following straight paths with deviations at 90 or 180º before the detection of an edge or wall of the Laby rinth, when it stands in its straight path. RESUMEN
El objetivo de este trabajo es presentar los detalles principales del diseño del hardware y software de un robot autónomo que es capaz de desplazarse a través de un laberinto prediseñado, siguiendo trayectorias rectilíneas con desviaciones a 90 o 180º ante la detección de un borde o pared del laberinto, cuando se interpone en su camino recto. P alabr alabr as clave: Robot autónomo, laberinto, sensores sharp, placa baby orangután, encoders.
I. INTRODUCIÓN a robótica es una de las aplicaciones más apasionantes de la electrónica. Un robot seguidor de línea se clasifica en el campo de la robótica móvil un grupo de la rama de robótica. La tarea fundamental de un robot móvil es el desplazamiento en un entorno conocido o desconocido, por tanto, es necesario que posea tres funciones fundamentales, fundamentales, la locomoción (nivel físico), la percepción (nivel sensorial) y la decisión (nivel de control). Este documento trata sobre los “Robots de laberinto” teniendo como fin principal aportar una base con la cual se pueda desarrollar un robot laberinto con la mayor sencillez y amplitud posible para lo cual hemos dividido el trabajo en varios aspectos. Se diseñó un prototipo basado en “Arduino”, plataforma electrónica abierta (código y hardware abiertos) que permite la creación de prototipos basados en software y hardware flexibles [1]. En particular, para la construcción del sistema de control del robot se utilizó una placa Baby Orangután, sensores sharp para medir distancias y encoders que conectan mecánicamente a un eje con el objeto de obtener la información de la posición angular de éste, modificados para lograr el desplazamiento del robot dentro del laberinto (fig. 1).
L
Fig1. Diagrama de bloques del robot
Se utilizaron tres sensores sharp de los cuales dos fueron dispuestos en los laterales del robot para medir las distancias a las paredes del pasillo del laberinto y un sensor frontal para detectar un obstáculo (por ejemplo, el final de un pasillo). p asillo). Respecto al código de programación que comanda los distintos componentes electrónicos electrónicos de entrada y salida a través de la placa se utilizó la interfaz de desarrollo nativa de Arduino. II. JUSTIFICACIÓN DEL PROYECTO El propósito de la creación de este robot, es que, sea capaz de recorrer los pasillos de un laberinto, surgiendo como un desafío el presentar un trabajo de desarrollo novedoso y ambicioso educativamente, educativamente, siendo un proyecto de suma importancia para nuestro aprendizaje en la materia de Fundamentos de Robótica III. DESARROLLO Y DISEÑO Al momento del diseño del prototipo se tuvieron en cuenta varias características que afectarían a la implementación exitosa del mismo. Entre las cuestiones que se analizaron en la etapa de diseño se pueden mencionar: el chasis, los movimientos a realizar por el robot, los tipos de sensores, los actuadores y la alimentación necesaria para el funcionamiento de los componentes electrónicos. ELEMENTOS QUE SE UTILIZARON:
2 sensores Sharp 0A51SK F 66 1 Sensor Sharp 20DI20X F 7X 1 Baby Orangután B-328 1 modulo Regulador Step-Up de 5V/2.5A 1 Diodo rectificador 1 Resistencia de 100 ohmios 1 Diodo led rojo 1 Pulsador de 4 terminales terminales 1 Batería lipo de 11v a 250mA 2 Llantas de goma de Pololu 1 Mini Rueda Loca 3pi
1 Tuerca Silicona en barra Pistola de Silicona en barra Estaño Cautín Tornillos pequeños Cables flexibles Conectores hembra-macho 1 pedazo de placa de baquelita 1 Maquina CNC 3 Ejes 6040 Escritorio Fresadora Grabador 1 cuchilla de grabado. 1 Dremel 3000 y accesorios de corte
DETALLE DE LOS ELEMENTOS QUE CONFORMAN EL PROTOTIPO: A.
CHASIS
Otro aspecto del diseño que se definió a prioridad fue la ubicación de las ruedas, dado que esto también impacta en la ubicación del centro de giro. En el prototipo se ubicaron en forma equidistante al centro. Para las ruedas se utilizaron ruedas de goma para aumentar la superficie de rozamiento contra el suelo. Además, se utilizó encoders que conectan mecánicamente a un eje con el objeto para así obtener la información de la posición angular de éste, fueron modificados para lograr el desplazamiento del robot dentro del laberinto. C.
SENSORES
Los sensores de distancia utilizados son 2 sensores Sharp 0A51SK F 66 y un sensor 20DI20X F 7X (fig.4). Estos son capaces de detectar objetos próximos y es un sensor medidor de distancias por infrarrojos que indica mediante una salida analógica la distancia medida. La tensión de salida varia de forma no lineal cuando se detecta un objeto en una distancia entre 10 y 80 cm. Normalmente se conecta esta salida a la entrada de un convertidor analógico digital el cual convierte la distancia en un número que puede ser usado por el microprocesador. El sensor se entrega con un conector de 3 pines y tiene tensión de funcionamiento 5V.
Fig2. Diseño en solidwork del chasis
El diseño del chasis es un factor importante en el éxito o no de la implementación del robot, dado que según su forma permitirá realizar desplazamientos con mayor o menor exactitud al recorrer el laberinto. Para este caso se diseñó un chasis de forma circular que luego, acompañado con otras características de implementación, nos permitiría realizar movimientos más exactos (utilizamos otros aspectos en el diseño para lograr que el centro de giro de la circunferencia sea exactamente el centro del chasis), los elementos utilizados para la construcción se basaron en acrílico y en impresión en 3D. B.
MOVIMIENTOS
La trayectoria que realiza el robot es en línea recta con giros de 90º o 180° cuando detecta un obstáculo. La tracción utilizada es diferencial (fig. 3), lo que hace que los giros sean más sencillos y además permite realizar los movimientos sin más espacio que el que está ocupando (gira sobre su propio eje).
Fig. 4. Sensores Sharp analógico y digital
D.
MOTORES POLOLU
Para el movimiento de las ruedas se usaron motores pololu, gracias a las características de reducción y el diseño del robot este motor acopla perfectamente con las necesidades requeridas. También se utilizó soporte para micro motores, estos permiten fijar el motor a la base del robot con mucha seguridad, especializado para micro motores pololu. El tamaño reducido de este motor lo hace ideal para la construcción del prototipo (fig. 5).
Fig. 5. Motores Pololu
Fig. 3. Tracción diferencial
Aunque el motor soporte un amplio rango de voltajes, se recomienda utilizarlo con 6V ya que con voltajes menores pierdes bastante fuerza y con voltajes mayores puede afectar a la vida útil del motor. Dado su consumo mínimo y reducido tamaño, es ideal para utilizar con integrados de potencia como el ULN2803 o la placa Motor Kit de Arduino.
E.
PLACA BABY ORANGUTAN
La tarjeta Baby Orangután y el 3pi Robot usan los mismos microcontroladores que el Arduino UNO, estos tienen una gran compatibilidad y también son una buena alternativa para los que ya están familiarizados con el entorno Arduino
Las baterías de LiPo son la mejor opción en robótica hoy en día, está en particular es excelente opción para el robot ya que su tamaño y peso en relación a su eficiencia es muy buena. Tener en cuenta que estamos utilizando baterías no se puede cargar con cualquier cargador, sino que se necesita un cargador especial de baterías de LiPo. H.
LLANTAS
Las llantas del móvil se encuentran ubicadas en la parte trasera del carrito y están en configuración diferencial, debido a que la dirección que tome depende de la diferencia de velocidad entre sus dos llantas, es por eso que cada llanta es independiente de la otra. Fig6. Placa Baby Orangután
Esta pequeña placa agrupa un puente H para controlar los motores y un microcontrolador conectados previamente ahorrándote prácticamente toda la parte electrónica y será nuestro controlador. Definitivamente es la mejor opción que puedes tener para tu robot basados en las características de tamaño, precio, potencia y facilidad de programación. F.
Fig9. Ruedas para seguidor de lípo
IV. DETALLES DEL PROTOTIPO
FUENTE DE REGULACIÓN STEP-UP DE 5 V/2.5 A
Este pequeño conversor DC-DC tipo Step-Down toma una entrada de voltaje de hasta 36 V y la reduce eficientemente a 5 V fijos. Puede ofrecer una salida de corriente constante de hasta 2.5 A con protección de conexión de polaridad invertida. La eficiencia típica de este regulador es del 85% al 95%, lo que lo hace muy buen candidato a alimentar sistemas de sensores y hasta motores pequeños.
Teniendo conocimiento que se realizó el diseño en un software de simulación de Solidwork, que facilita a la construcción de nuestro prototipo (fig.10).
Fig.10. Diseño en Solidwork de la pieza base del prototipo Fig7. Regulador Step-Up de 5V/2.5A G.
BATERÍA LIPO DE 11V A 250MA
Una batería de Polímero de Litio, comúnmente llamadas baterías de Lipo, son las baterías de última generación dentro del mundo del radio control. Son batería con una excelente relación entre capacidad, peso, volumen y tensión (voltaje).
Fig8. Batería Lipo 11V a 250mA
Se utilizaron 3 sensores similares para detectar los obstáculos del robot, uno ubicado en el frente y dos en los laterales (fig. 12), los cuales fueron colocados en una estructura diseñada en Solidwork (fig.11).
Fig. 11. Diseño de la estructura base de los sensores en Solidwork
PASOS 1.
Circuito
Procedemos a diseñar el circuito en proteus.
Fig.12. Dimensiones del diseño de la estructura base de los sensores en Solidwork
Fig.16. Diseño de la placa
Fig. 13. Ubicación de los sensores vista desde arriba
2.
Placa, PCB Robot
3.
Soldar los Componentes a la placa
Empezamos en el chasis del robot que es la placa PCB, se utiliza esta placa para minimizar el peso y hacerlo más ligero. Adicionalmente es el principal componente de nuestro seguidor. Cuando tengamos nuestra placa diseñada y lista, procedemos a soldar todos los componentes.
Fig.14. Diseño de la estructura del chasis en Solidwork.
Fig.17. Diseño de la placa
4.
Soldar y Colocar Motores
5.
Chasis del Robot
Posteriormente soldamos a cada terminal del motor un cable corto y los otros extremos del cable a la placa. Después colocamos los soporta motores para ajustar ambos motores a la placa. En el chasis debemos colocar la pieza base de los sensores para que detecten las paredes u obstáculos. 6.
Sensores y cables
Procedemos a soldar los sensores analógicos y digital. 7. Fig.15. Mediciones del diseño del chasis realizado en solidwork
CONSTRUCCION La estructura del robot está hecha de acrílico, esta proporciona apoyo para los motores, el circuito impreso y la placa para mantener fija los sensores.
Ruedas
Por ultimo colocamos respectivamente las ruedas, y es recomendable utilizar ruedas de sumo. Además de los elementos mencionados anteriormente para su construcción, además se agregó una rueda loca como ayuda al movimiento de desplazamiento que realiza el robot, esta rueda tiene un giro libre de 360º y un punto de apoyo frontal, para evitar la pérdida de estabilidad (figs. 18 ,19 y 20).
Donde: d = es la distancia recorrida D = es el diámetro de la rueda c = número de pulsos del encoder por rueda n =número de pulsos leídos
Esto es en caso de que las ruedas se muevan iguales y para tener un x número de grados girados.
Fig. 18. Vistas laterales del prototipo
∗360 ∗ [3] = ∗ x =número de grados de giro Drueda= diámetro de la rueda Dbase= diámetro de la base tomando
como límite de la circunferencia el inicio de las ruedas c= número de pulsos del encoder por rueda n=número de pulsos leídos
Fig. 19. Vista frontal del prototipo
ECUACIONES DEL ROBOT EN CONFIGURACIÓN DIFERENCIAL.
Fig. 20. Vista superior e inferior del prototipo
V. MODELO MATEMATICO CINEMATICA DEL ROBOT Para el caso que nos ocupa (micromouse) podemos decir que en el 100% de los robots premia la maniobrabilidad, y por este motivo utilizaremos una tracción diferencial, gracias a esto conseguiremos hacer giros de 90-180º sin ninguna complicación.
= ∗ = +
= ∗ = − [4] [4]
Combinando las ecuaciones anteriores se obtiene lo siguiente:
[4]
Fig20. Tracción diferencial
La odometría se encarga de estimar la posición de vehículos con ruedas. El robot usado en este proyecto tiene incorporado un encoder a cada lado. Cada uno de estos encoders es capaz de detectar 1000 interrupciones por cada 3 vueltas de la rueda. Esto en distancia línea se traduciría de la siguiente forma:
El movimiento q se genera está dado por la ecuación
= ∗ ∗ [3]
[8]
Con el uso de los encoders, también se puede estimar el ángulo que gira el robot cuando ambas ruedas giran con la misma velocidad en sentidos opuesto, el robot gira en torno a un eje vertical que pasaría por su centro. La traducción de interrupciones a ángulo se ha realizado con experimentos en los que se hace girar el robot un número determinado de interrupciones y se mide el ángulo que ha girado. Se ha obtenido la siguiente equivalencia: 1
= 6.541 6.355 = 0.186 Ya con ambos parámetros calculados queda como resultado la siguiente función de transferencia:
0.01653 = 10.186 CONTROLADOR
ó = 0.199º
Por otro lado, para la parte de control, se ha modelado el robot con una función de transferencia de primer orden con integrador. Esta función de transferencia relaciona la señal de entrada (tensión) con la salida que en nuestro caso será la posición. Se trabajará con una función de transferencia que tiene la siguiente forma:
= 1 ∗ [8] Para el cálculo de la ganancia del sistema se han calculado las ganancias de cada uno de los 3 tramos y se ha hecho una media aritmética. La ganancia tiene que presentar unidades de velocidad/tensión, se ha optado por las siguientes unidades: la velocidad en metros por segundo y la tensión en voltios. Sabiendo que cuando se alimentan los motores al máximo estamos dando 7.2 V, se puede saber la tensión con la que se alimenta en los demás tramos.
80%→5.76//60%→4.32 Por medio de pruebas se obtuvo que el robot avanza en un primer tramo 0.35 metros en 2.9 segundos lo que hace una velocidad de 0.121 m/s. Teniendo en cuenta que se ha alimentado con 7.2 V, la ganancia de este tramo es de 0.0168 m/Vs. En el segundo tramo el robot avanza 0.2 metros en 2.27 segundos lo que hace una velocidad de 0.088 m/s. Teniendo en cuenta que se ha alimentado con 5.76 V, la ganancia de este tramo es de 0.0153 m/Vs. En el primer tramo el robot avanza 0.2 metros en 2.63 segundos lo que hace una velocidad de 0.076 m/s. Teniendo en cuenta que se ha alimentado con 4.32 V, la ganancia de este tramo es de 0.0176 m/Vs. Con las ganancias de los 3 tramos se ha hecho la media y se ha obtenido como resultado el siguiente valor:
= 0.01653/ El tiempo de subida es el tiempo que tarda el sistema en alcanzar el 63%. En la prueba realizada, el valor que se alcanza es 115 centímetros por lo que el 63% son 72.45 centímetros. Se ha marcado en la gráfica ese punto, así que para calcular el tiempo de subida únicamente habría que calcular el tiempo que ha transcurrido desde el comienzo hasta alcanzar dicho punto.
Un controlador puede reunir los tres parámetros de control: parte proporcional (P), parte derivativa (D) y parte integral (I). La función de transferencia quedaría de la siguiente forma:
= ∗(1 1∗ ∗) [5] En donde Kp, Ti y Td varían de acuerdo a las especificaciones del laberinto haciendo pruebas en donde lo óptimo es tener el menor número de oscilaciones. Mediante el método de prueba y error se determinó que las constantes del controlador PID sean las siguientes: kp = 0.09 ti = 0.0015 td = 3.21 ERRORES ERROR DE DISTANCIA FRONTAL: Se produce cuando nuestro robot se encuentra muy cerca o muy lejos de la pared frontal. Este error es uno de los más sencillos de corregir, ya que es muy común utilizar sensores de posición que nos permiten realizar la calibración con suficiente antelación. Sin embargo, algunos aspectos como la reflectividad de las distintas paredes, la dirección e intensidad de la luz ambiental o simplemente la acumulación de otros errores, hace que no haya nada establecido sobre este proceso de recalibración. Según [1] utilizar un sensor IR de corto alcance montado en la parte delantera del robot es un método muy preciso. Hay que tener mucho cuidado con acumular errores de este tipo. En el peor de los casos, un error frontal de unos 2 cm cada 15 celda representa un error del 0.7%, que puede ser suficiente para que se produzca una colisión al llegar a una curva. En algunos casos, aunque no se haya producido colisión, tendremos un error de offset después de un giro de 90º. En motores paso a paso, un error de más o menos un paso representa un error de unos 0.4 mm, que acumulado durante 15 celdas provoca un error de offset de unos 6 mm al realizar un giro. Este error debería ser corregible. En realidad, grandes correcciones en el error frontal son síntoma de que hemos podido cometer errores graves en otras partes del sistema de control del robot.
[9]
ERROR DE OFFSET: Se produce cuando nos encontramos demasiado cerca o lejos de uno de los muros laterales, y que aparece tras cometer un error de distancia frontal en un giro. Para poder corregir este error, será inevitable acumular un error frontal, ya que recorreremos un tramo recto del laberinto en diagonal.
[9]
ERROR EN LA DIRECCIÓN: Se produce cuando el robot, tras tomar una curva, se encuentra orientado a los muros laterales, y no al centro de la celda. Si el robot está en marcha, el corregir este error supondría reducir o aumentar la velocidad de una de las ruedas, aunque no sería apropiado si el robot ya circula a la máxima velocidad, o si va muy lento. En estos casos sería conveniente realizar el giro, pero con el robot parado .
[9]
VI. PROGRAMACIÓN ARDUINO Y CONFIGURACION Se decidió utilizar software Arduino ya que es fácil e intuitivo de programar. Al momento de programar debemos tener en cuenta que usamos una placa que debemos configurar y cambiar opciones antes de programarla correctamente. Para programar la placa debes conectarla el programador de AVR al Baby Orangután.
Fig24. Selección Baby Orangután en Arduino
Fig25. Selección Programador
CODIGO DE PROGRAMACION A continuación, las siguientes figuras muestran el código de programación realizado en la placa Baby Orangután mediante la ayuda del software Arduino.
Fig.27. Prueba de funcionamiento de robot en la pista
VII. R ESULTADOS Se probó el robot en una pista cuyas dimensiones son la siguientes:
Fig.26. Pista del Laberinto
El robot salió satisfactoriamente del laberinto de la figura anterior con un tiempo de 19 segundos.
VIII. CONCLUSIONES Se concluye satisfactoriamente, al terminar la implementación de nuestro proyecto llamado “robot laberinto”, siendo un pilar fundamental para la realización del mismo, todos los conocimientos adquiridos en la asignatura de Fundamentos de Robótica. En este trabajo se realizó una investigación y análisis exhaustivo del funcionamiento de un robot autónomo que fuera capaz de recorrer un laberinto con cualquier tipo de formato, a condición de que los trayectos fueran rectos y con desviaciones a 90º en ambos sentidos. Es de destacar el armado y el logro exitoso del funcionamiento de un prototipo de muy bajo costo, ya que se construyó utilizando componentes reciclados y de descarte para el chasis, lo que favoreció el abaratamiento en el desarrollo del proyecto. Como contraparte, este hecho genera dificultades para lograr un movimiento perfectamente rectilíneo, lo cual debe ser corregido constantemente mediante el software de control. Una construcción más refinada del sistema de tracción, mejoraría este aspecto. IX. RECOMENDACIONES Para poder programar en la Baby Orangután usando la interfaz en Arduino, se debe tener en cuenta que hay que instalar las correctas librerías que emplea esta Controladora, para que esta pueda reconocer las líneas de código que se emplean y pueda funcionar correctamente. Realizar varias pruebas para determinar las correctas constante del controlador PID, para que resuelva la pista de laberinto en menor tiempo.
BIBLIOGRAFÍA [1] Circuitos Electrónicos I, López A Fernando, Editorial Ciencias, Perú. [2] Diseño Electrónico: Circuitos y Sistemas, Savant C.R., Editorial Addison – Wesley, E.E.U.U [3] Construcción y control de un robot móvil, Iván Baena Álvarez, Sevilla, 2016 [4] Robot para resolución de laberintos, J.K. Parker; A.R. Khoogar; D.E. Goldberg, Bariloche, Argentina. [5]K Ogata, Ingeniería en Control Moderna, 5ta ed., PEARSON Educación, Madrid España, 2010. [6] Dorf, R.C.; Bishop, R.H, (2005), Sistemas de Control Moderno, Madrid, España: Pearson Educación, S.A. [7] http://aprendiendofacilelectronica.blogspot.com/ [8] http://aprender.tdrobotica.co/ [9] S. Thrun, W. Burgard, D. Fox, Probabilistic Robotics, 2005. [10] D. Cook, Robot Building for Beginners, 2002 [11] J-D. Warren, J. Adams, H. Molle, Arduino Robotics,2011.