Sei sulla pagina 1di 9

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

Abstract— 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 moving through a pre-designed labyrinth,
following straight paths with deviations at 90 or 180º before the
detection of an edge or wall of the Labyrinth, when it stands in its
straight path.

RESUMEN Fig1. Diagrama de bloques del robot


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
Se utilizaron tres sensores sharp de los cuales dos fueron
de desplazarse a través de un laberinto prediseñado, siguiendo
trayectorias rectilíneas con desviaciones a 90 o 180º ante la dispuestos en los laterales del robot para medir las distancias a
detección de un borde o pared del laberinto, cuando se interpone las paredes del pasillo del laberinto y un sensor frontal para
en su camino recto. detectar un obstáculo (por ejemplo, el final de un pasillo).
Respecto al código de programación que comanda los
Palabras clave: Robot autónomo, laberinto, sensores sharp, placa distintos componentes electrónicos de entrada y salida a través
baby orangután, encoders.
de la placa se utilizó la interfaz de desarrollo nativa de Arduino.
I. INTRODUCIÓN
II. JUSTIFICACIÓN DEL PROYECTO

L 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
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
tarea fundamental de un robot móvil es el desplazamiento en un
educativamente, siendo un proyecto de suma importancia para
entorno conocido o desconocido, por tanto, es necesario que
nuestro aprendizaje en la materia de Fundamentos de Robótica
posea tres funciones fundamentales, la locomoción (nivel
físico), la percepción (nivel sensorial) y la decisión (nivel de
control).
III. DESARROLLO Y DISEÑO
Este documento trata sobre los “Robots de laberinto”
teniendo como fin principal aportar una base con la cual se Al momento del diseño del prototipo se tuvieron en cuenta
pueda desarrollar un robot laberinto con la mayor sencillez y varias características que afectarían a la implementación exitosa
amplitud posible para lo cual hemos dividido el trabajo en del mismo.
varios aspectos. Entre las cuestiones que se analizaron en la etapa de diseño
se pueden mencionar: el chasis, los movimientos a realizar por
Se diseñó un prototipo basado en “Arduino”, plataforma
el robot, los tipos de sensores, los actuadores y la alimentación
electrónica abierta (código y hardware abiertos) que permite la
necesaria para el funcionamiento de los componentes
creación de prototipos basados en software y hardware flexibles electrónicos.
[1].
En particular, para la construcción del sistema de control del ELEMENTOS QUE SE UTILIZARON:
robot se utilizó una placa Baby Orangután, sensores sharp para
medir distancias y encoders que conectan mecánicamente a un  2 sensores Sharp 0A51SK F 66
eje con el objeto de obtener la información de la posición  1 Sensor Sharp 20DI20X F 7X
angular de éste, modificados para lograr el desplazamiento del  1 Baby Orangután B-328
robot dentro del laberinto (fig. 1).  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
 1 Batería lipo de 11v a 250mA
 2 Llantas de goma de Pololu
 1 Mini Rueda Loca 3pi
 1 Tuerca Otro aspecto del diseño que se definió a prioridad fue la
 Silicona en barra ubicación de las ruedas, dado que esto también impacta en la
 Pistola de Silicona en barra ubicación del centro de giro. En el prototipo se ubicaron en
 Estaño forma equidistante al centro.
 Cautín Para las ruedas se utilizaron ruedas de goma para aumentar
 Tornillos pequeños la superficie de rozamiento contra el suelo.
 Cables flexibles Además, se utilizó encoders que conectan mecánicamente a
 Conectores hembra-macho un eje con el objeto para así obtener la información de la
 1 pedazo de placa de baquelita posición angular de éste, fueron modificados para lograr el
 1 Maquina CNC 3 Ejes 6040 Escritorio Fresadora desplazamiento del robot dentro del laberinto.
Grabador
 1 cuchilla de grabado. C. SENSORES
 1 Dremel 3000 y accesorios de corte
Los sensores de distancia utilizados son 2 sensores Sharp
DETALLE DE LOS ELEMENTOS QUE CONFORMAN EL 0A51SK F 66 y un sensor 20DI20X F 7X (fig.4). Estos son
PROTOTIPO: capaces de detectar objetos próximos y es un sensor medidor de
distancias por infrarrojos que indica mediante una salida
A. CHASIS 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 Fig. 4. Sensores Sharp analógico y digital
permitirá realizar desplazamientos con mayor o menor
exactitud al recorrer el laberinto.
Para este caso se diseñó un chasis de forma circular que D. MOTORES POLOLU
luego, acompañado con otras características de
implementación, nos permitiría realizar movimientos más Para el movimiento de las ruedas se usaron motores pololu,
exactos (utilizamos otros aspectos en el diseño para lograr que gracias a las características de reducción y el diseño del robot
el centro de giro de la circunferencia sea exactamente el centro este motor acopla perfectamente con las necesidades
del chasis), los elementos utilizados para la construcción se requeridas.
basaron en acrílico y en impresión en 3D. También se utilizó soporte para micro motores, estos
permiten fijar el motor a la base del robot con mucha seguridad,
B. MOVIMIENTOS especializado para micro motores pololu.
El tamaño reducido de este motor lo hace ideal para la
La trayectoria que realiza el robot es en línea recta con giros construcción del prototipo (fig. 5).
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. 5. Motores Pololu

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
Fig. 3. Tracción diferencial utilizar con integrados de potencia como el ULN2803 o la placa
Motor Kit de Arduino.
E. PLACA BABY ORANGUTAN 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
La tarjeta Baby Orangután y el 3pi Robot usan los mismos que su tamaño y peso en relación a su eficiencia es muy buena.
microcontroladores que el Arduino UNO, estos tienen una gran Tener en cuenta que estamos utilizando baterías no se
compatibilidad y también son una buena alternativa para los que puede cargar con cualquier cargador, sino que se necesita un
ya están familiarizados con el entorno Arduino 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
Fig9. Ruedas para seguidor de lípo
puedes tener para tu robot basados en las características de
tamaño, precio, potencia y facilidad de programación.
IV. DETALLES DEL PROTOTIPO
F. FUENTE DE REGULACIÓN STEP-UP DE 5V/2.5 A
Teniendo conocimiento que se realizó el diseño en un
Este pequeño conversor DC-DC tipo Step-Down toma una software de simulación de Solidwork, que facilita a la
entrada de voltaje de hasta 36 V y la reduce eficientemente a 5 construcción de nuestro prototipo (fig.10).
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.

Fig.10. Diseño en Solidwork de la pieza base del


prototipo
Fig7. Regulador Step-Up de 5V/2.5A
Se utilizaron 3 sensores similares para detectar los
G. BATERÍA LIPO DE 11V A 250MA obstáculos del robot, uno ubicado en el frente y dos en los
laterales (fig. 12), los cuales fueron colocados en una estructura
Una batería de Polímero de Litio, comúnmente llamadas diseñada en Solidwork (fig.11).
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 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

2. Placa, PCB Robot


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
Fig. 13. Ubicación de los sensores vista desde
seguidor.
arriba 3. Soldar los Componentes a la placa
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


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.
5. Chasis del Robot
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. Ruedas
Por ultimo colocamos respectivamente las ruedas, y es
Fig.15. Mediciones del diseño del chasis realizado en solidwork recomendable utilizar ruedas de sumo.

CONSTRUCCION Además de los elementos mencionados anteriormente para su


construcción, además se agregó una rueda loca como ayuda al
La estructura del robot está hecha de acrílico, esta movimiento de desplazamiento que realiza el robot, esta rueda
proporciona apoyo para los motores, el circuito impreso y la tiene un giro libre de 360º y un punto de apoyo frontal, para
placa para mantener fija los sensores. 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.

𝐷𝑟𝑢𝑒𝑑𝑎 ∗ 360
𝒙= ∗ 𝑛 [3]
Fig. 18. Vistas laterales del prototipo 𝑐 ∗ 𝐷𝑏𝑎𝑠𝑒

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

ECUACIONES DEL ROBOT EN CONFIGURACIÓN


Fig. 19. Vista frontal del prototipo DIFERENCIAL.

Fig. 20. Vista superior e inferior del prototipo

V. MODELO MATEMATICO 𝒗𝟏 = 𝑤1 ∗ 𝑟 𝒗𝒓 = 𝑤𝑟 ∗ 𝑟
𝑣𝑟 + 𝑣𝑙 𝑣𝑟 − 𝑣𝑙
CINEMATICA DEL ROBOT 𝒗= 𝒘= [4]
2 𝐿

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 [4]
complicación.
Combinando las ecuaciones anteriores se obtiene lo siguiente:

[4]

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:
Fig20. Tracción diferencial

El movimiento q se genera está dado por la ecuación

𝜋∗𝐷
𝒅= ∗ 𝑛 [3] [8]
𝑐
𝜏 = 6.541 − 6.355 = 0.186 𝑠𝑒𝑔𝑢𝑛𝑑𝑜𝑠
Con el uso de los encoders, también se puede estimar el ángulo
que gira el robot cuando ambas ruedas giran con la misma Ya con ambos parámetros calculados queda como resultado la
velocidad en sentidos opuesto, el robot gira en torno a un eje siguiente función de transferencia:
vertical que pasaría por su centro. La traducción de
interrupciones a ángulo se ha realizado con experimentos en los 0.01653
que se hace girar el robot un número determinado de 𝐺(𝑠) =
(1 + 0.186𝑠)𝑠
interrupciones y se mide el ángulo que ha girado. Se ha obtenido
la siguiente equivalencia: CONTROLADOR

1 𝑖𝑛𝑡𝑒𝑟𝑟𝑢𝑝𝑐𝑖ó𝑛 = 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:
Un controlador puede reunir los tres parámetros de control:
parte proporcional (P), parte derivativa (D) y parte integral (I).
𝑘
𝐺(𝑠) = [8] La función de transferencia quedaría de la siguiente forma:
(1 + 𝜏𝑠) ∗ 𝑠
1
Para el cálculo de la ganancia del sistema se han calculado las 𝐶𝑃𝐼𝐷 = 𝐾𝑝 ∗ (1 + + 𝑇𝑑 ∗ 𝑠) [5]
𝑇𝑖 ∗ 𝑠
ganancias de cada uno de los 3 tramos y se ha hecho una media
aritmética. La ganancia tiene que presentar unidades de En donde Kp, Ti y Td varían de acuerdo a las especificaciones
velocidad/tensión, se ha optado por las siguientes unidades: la del laberinto haciendo pruebas en donde lo óptimo es tener el
velocidad en metros por segundo y la tensión en voltios. menor número de oscilaciones.
Mediante el método de prueba y error se determinó que las
Sabiendo que cuando se alimentan los motores al máximo constantes del controlador PID sean las siguientes:
estamos dando 7.2 V, se puede saber la tensión con la que se kp = 0.09
alimenta en los demás tramos. ti = 0.0015
td = 3.21
80% → 5.76𝑉 //60% → 4.32𝑉 ERRORES

Por medio de pruebas se obtuvo que el robot avanza en un ERROR DE DISTANCIA FRONTAL: Se produce cuando
primer tramo 0.35 metros en 2.9 segundos lo que hace una nuestro robot se encuentra muy cerca o muy lejos de la pared
velocidad de 0.121 m/s. Teniendo en cuenta que se ha frontal. Este error es uno de los más sencillos de corregir, ya
alimentado con 7.2 V, la ganancia de este tramo es de 0.0168 que es muy común utilizar sensores de posición que nos
m/Vs. permiten realizar la calibración con suficiente antelación. Sin
En el segundo tramo el robot avanza 0.2 metros en 2.27 embargo, algunos aspectos como la reflectividad de las distintas
segundos lo que hace una velocidad de 0.088 m/s. Teniendo en paredes, la dirección e intensidad de la luz ambiental o
cuenta que se ha alimentado con 5.76 V, la ganancia de este simplemente la acumulación de otros errores, hace que no haya
tramo es de 0.0153 m/Vs. nada establecido sobre este proceso de recalibración. Según [1]
En el primer tramo el robot avanza 0.2 metros en 2.63 segundos utilizar un sensor IR de corto alcance montado en la parte
lo que hace una velocidad de 0.076 m/s. Teniendo en cuenta que delantera del robot es un método muy preciso. Hay que tener
se ha alimentado con 4.32 V, la ganancia de este tramo es de mucho cuidado con acumular errores de este tipo. En el peor de
0.0176 m/Vs. Con las ganancias de los 3 tramos se ha hecho la los casos, un error frontal de unos 2 cm cada 15 celda representa
media y se ha obtenido como resultado el siguiente valor: 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,
𝑘 = 0.01653(
𝑉 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
El tiempo de subida es el tiempo que tarda el sistema en representa un error de unos 0.4 mm, que acumulado durante 15
alcanzar el 63%. En la prueba realizada, el valor que se alcanza celdas provoca un error de offset de unos 6 mm al realizar un
es 115 centímetros por lo que el 63% son 72.45 centímetros. Se giro. Este error debería ser corregible. En realidad, grandes
ha marcado en la gráfica ese punto, así que para calcular el correcciones en el error frontal son síntoma de que hemos
tiempo de subida únicamente habría que calcular el tiempo que podido cometer errores graves en otras partes del sistema de
ha transcurrido desde el comienzo hasta alcanzar dicho punto. control del robot. [9]
ERROR DE OFFSET: Se produce cuando nos encontramos Fig25. Selección Programador
demasiado cerca o lejos de uno de los muros laterales, y que
aparece tras cometer un error de distancia frontal en un giro. CODIGO DE PROGRAMACION
Para poder corregir este error, será inevitable acumular un error A continuación, las siguientes figuras muestran el código de
frontal, ya que recorreremos un tramo recto del laberinto en programación realizado en la placa Baby Orangután mediante
diagonal. [9] la ayuda del software Arduino.

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


Fig.27. Prueba de funcionamiento de robot en la
pista

VIII. CONCLUSIONES
 Se concluye satisfactoriamente, al terminar la
VII. RESULTADOS implementación de nuestro proyecto llamado “robot
Se probó el robot en una pista cuyas dimensiones son la laberinto”, siendo un pilar fundamental para la
siguientes: 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
Fig.26. Pista del Laberinto
interfaz en Arduino, se debe tener en cuenta que hay
que instalar las correctas librerías que emplea esta
El robot salió satisfactoriamente del laberinto de la figura
Controladora, para que esta pueda reconocer las líneas
anterior con un tiempo de 19 segundos. 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.

Potrebbero piacerti anche