Guía para el diseño de velocistas y seguidores de línea | Rachingenieria

Guía para el diseño de velocistas y seguidores de línea

Guía para el diseño de velocistas y seguidores de línea

“Linebot.X” – Robot Velocista controlado por PID

Resumen—Este post presenta el diseño de un robot velocista diferencial de competencia el cual debe seguir una línea pintada sobre una superficie de diferente color en el menor tiempo. El diseño del robot se realiza teniendo en cuenta la relación peso-tracción para lograr la máxima velocidad sin perder la línea, la implementación del sistema embebido utilizando un microcontrolador STM o Arduino, y el sistema de control el cual está basado en un PID con algunas modificaciones propuestas. El paper comprende la descripción del hardware, luego se describe las características del firmware desarrollado, la descripción del Controlador PID, terminando con los análisis y conclusiones.


Introducción


En los últimos años las universidades dentro de los programas de ingeniería electrónica, mecatrónica o mecánica han venido realizando en las cátedras como práctica el desarrollo de Robots, esto con el fin de crear y promover la actitud de los estudiantes hacia la investigación. Como punto de partida se busca que los estudiantes creen, desarrollen, analicen e implementen sistemas robóticos completos, lo cual conlleva a promover el arte de imaginar, concebir ideas y efectuar, donde se puede experimentar con la teoría y apropiarse del conocimiento.

En esta ocasión se describe el diseño de un robot velocista (Figura 1) el cual es un robot seguidor de línea donde se busca seguir una línea pintada sobre una superficie de otro color. Las competencias de estos robots tienen por lo generar dos modalidades: recorrer un circuito en el menor tiempo posible, o persecución con eliminación; en las competencias las reglas y los circuitos varían, por lo cual en cada competencia es necesario poner a punto el robot.
Para el diseño se debe tener en cuenta las características que se desean cumplir, las cuales dependen de los reglamentos de la competencia, y partir de estos se genera la base de requerimientos para la implementación.


Figura 1. Robot Velocista “RACHBOT”, Pista de competencia.

Requerimientos de diseño

Se parte del diseño básico de un robot velocista el cual costa de los siguientes módulos: sistema de control, sensores de línea, puente H, motores, llantas, batería y reguladores. Los cuales se presentan en diagrama de bloques de la figura 2.


Figura 2. Diagrama de bloques del robot velocista.

El diseño y selección de los componentes de cada módulo depende de las reglas de la competencia y de los objetivos que se desean cubrir dentro de la cátedra. Estas características generan los requerimientos de diseño, los cuales entre otros se mencionan a continuación:


1. Sistema de control: este puede ser análogo o digital, para este caso se selecciona digital por lo cual se implementa utilizando un microcontrolador, en el cual se puede programar el algoritmo de control. 


2. Velocidad: se desea que el robot pueda estar a nivel de las competencias mundiales, estas rondan los 4m/s en el mejor de los casos, por lo cual se busca que los motores, llantas y PWM tengan la capacidad de generar estas velocidades. Para lograr estas velocidades se debe tener una relación fuerza-tracción eficiente, por lo cual se busca las siguientes características:

  • Que el motor genere las revoluciones necesarias rpm.
  • Que el radio de las llantas y las revoluciones del motor puedan generar la velocidad deseada por lo cual se usa la fórmula.
    V=(rpm/60)*2πr 
  • Donde, rpm son la revoluciones por minuto del motor, y r es el radio de la llanta en metros.
  • Que el motor tenga el torque necesario, en grm/cm, esto depende del peso del robot, por lo cual limitará el peso de éste.
  • Que las llantas tengan el coeficiente de fricción necesario para no resbalar o perder la línea, sobre todo en curvas.
  • El peso del robot sea adecuado para el torque del motor.

3. Sensores: se desea que los sensores cuando el robot este a su máxima velocidad no pierda la línea y detecte cualquier cambio.

4. Puente H: se desea que el puente H tenga la capacidad de soportar la corriente de los motores, el peor caso se presenta cuando la dirección de giro del motor cambia de máximo positivo a máximo negativo.

A continuación se presenta la descripción del hardware del Velocista en el cual se tienen en cuenta los requerimientos mencionados.

Descripción del Hardware.
Basado en los requerimientos descritos anteriormente, se presenta los componentes seleccionados.

  • Microcontrolador (Opciones):
    • Arduino Nano
    • STM32F04
    • Tiva C Series Microcontroller 32-bit ARM® Cortex™-M4 80-MHz de Texas Instrumets.
  • Estos son seleccionados por tener las siguientes características:
    • Reloj de más de 10Mhz, el robot no necesita más velocidad de trabajo, sin embargo permite aprovechar para análisis de pista y aprendizaje.
    • ADCs: tiene 8 entradas análogas ideal para la cantidad de sensores del robot.
    • PWM: Tiene 4, 2 por cada motor.
    • UART: Puerto serial para conectarse por Bluetooth y hacer telemetría de las variables del velocista.
  • Sensores: Tiene 8 sensores QRE1113 de Fairchild Semiconductor, con tiempos de 20us de flanco subida y 20us de flanco de bajada y voltaje de alimentación entre 3 a 30v.
  • Puente H: DRV8833 dual de Texas Instrumets, con manejo de corriente RMS a 1.5A y picos de corriente de 2ª por canal, y voltaje de entrada de 2.7 a 10.8V.
  • Motores: Micro Metal Gearmotors relación 5:1, rpm: 3000, 120mA free-run, 0.3Kg/cm y una corriente de frenado de 1.6A.
  • Llantas: Caucho-Silicona de 2cm de diámetro, y centro de aluminio.
  • Batería: Se utilizan dos baterías en serie Lite-on de 3.6V y 350mAh o dos Celdas 7.4V.
  • Regulador: Step-Down de 5V a 0.5A para alimentar el microcontrolador y los sensores.
  • Base Estructural: Se utiliza el PCB como chasis del robot, el tamaño y diseño es de 12x17cm.

El diseño del Esquemático se realizó en ALTIUM, siguiendo las indicaciones de pines del microcontrolador, y teniendo en cuenta los requerimientos de fabricación de PCBs, como se visualiza en la Figura 3.


Figura 3. Diseño del PCB.


Descripción del software


El desarrollo del software del velocista se realizó en lenguaje C, utilizando el IDE KEIL.
El firmware del robot velocista se realizó dividendo el proyecto en módulos funcionales con el fin de estructurar el diseño. Los módulos funcionales constan de tres partes: software, hardware y documentación, para este proyecto los módulos funcionales son los siguientes:


1. Módulo Motores (M):
Encargado de recibir la información de velocidad para cada motor izquierda y derecha, y controlar los motores de acuerdo al valor de entrada.
2. Módulo Sensores de línea (S):
Encargado de leer los sensores de piso y entregar un valor en un registro de 8 bit que represente el error con respecto a la línea de piso que se debe seguir.
3. Módulo Telemetría (Tx):
Encargado de tomar los valores de cada sensor y enviarlos por medio de un sistema de comunicaciones a un computador, de forma que permita almacenar y procesar el valor de cada sensor en un software de control y análisis de datos.
4. Módulo de Control (C):
Encargado de iniciar el funcionamiento, tomar la información de cada sensor y realizar el control PID de control de giro, y setear la velocidad de cada uno de los motores.

El Sistema de control implementado está basado en un PD para el control de velocidad y giro.

El robot móvil bajo estudio es un vehículo que tiene dos llantas traseras, izquierda y derecha, idénticas que son paralelas entre sí, no deformables y unidas por un eje. Además, usa un punto de apoyo frontal omnidireccional que asegura que la plataforma del robot se encuentre sobre un plano. Suponiendo que el movimiento se lleva a cabo sobre el plano XY y que las llantas ruedan sin deslizarse, en la literatura existente se encuentra que las ecuaciones que describen la cinemática del móvil están dadas por Sira y Agrawal, 2004[1] .

Donde (x, y) denota la posición del punto medio del eje que une las dos llantas traseras, φ es el ángulo que forma el eje de simetría del móvil respecto al eje X positivo, wi y wd son las velocidades angulares de las llantas izquierda y derecha, respectivamente, mientras que r es el radio de las llantas y 2l es la separación entre ellas, para mayor claridad véase la Figura 4. En estas ecuaciones, y en lo que resta del trabajo, la derivada con respecto al tiempo, t, se denota por un punto.


Figura 4. Diagrama del robot móvil.

Basado en las ecuaciones de cinemática móvil se realiza el siguiente análisis.

  • La velocidad promedio del vehículo es el promedio de la velocidad de los motores derecha e izquierda.
  • La velocidad angular del motor (que es la misma velocidad del giro del motor) es proporcional al valor del PWM aplicado al Puente H que controla los motores.
  • La velocidad angular del robot (que es la misma velocidad de giro de todo el robot)  es proporcional a la diferencia de velocidad de las ruedas.

Este análisis se hace para simplificar el algoritmo de control del robot. Donde se dejará la velocidad promedio constante y se realizará un PD para el control de giro del robot.


La entrada del sistema es la lectura de los sensores el cual dará el set-point a seguir. A continuación se presenta el algoritmo del PD implementado. Este es un código de ejemplo y funciona para todos los velocistas o seguidores de línea.

Del algoritmo,

  • vel.kpg es la constante proporcional.
  • vel.kdg es la constante diferencial.
  • vel.avg es la velocidad promedio. 
  • vel.pmw_d es el valor del PWM de la rueda derecha.
  • vel.pmw_i es el valor del PWM de la rueda izquierda.

De este algoritmo se desea determinar la constantes del PID del control robot de acuerdo a la pista de competencia, a lo que se llama Puesta a punto.

Puesta a punto

Existe varios procedimientos para poder determinar las constantes del control PD, y este es un tema que siempre será interesante para investigar a detalle. Sin embargo, en momentos de competencia es necesario un rápido ajuste a estos valores para lograr tener el vehículo más rápido en pista, por lo cual se dan algunos parámetros para seleccionar las constantes.

Es importante tener en cuenta que cada robot tiene sus propias constantes, por mas que sean clones, parecidos o similares, estas constantes serán diferentes. Lo único que hace que un robot velocista sea muy estable es conocerlo y analizar los valores adecuados.

Al igual las constantes varían entre pistas, por la tracción de la neumáticos sobre diferentes materiales de pista.

Para la puesta a punto del robot se siguen los siguientes procedimientos:

  • Se pone la constante derivativa en un valor pequeño (vel.kdg), se da una velocidad baja al robot vel.avg lo suficiente para que recorra totalmente la pista de competencia. Se selecciona un valor bajo para la constante proporcional (vel.kpg) y se pone el robot en pista, si da giros muy abiertos en las curvas hay que incrementar la constante proporcional, y volver a poner el robot hasta que realice el recorrido completo. De esta manera queda seleccionada la constante proporcional, y a medida que la constante proporcional vel.kpg sea mayor hace que el robot oscile o vibre sobre la línea, pero no hay problema esta vibración se minimiza con el valor de la constante derivativa vel.kdg explicada a continuación.
  • El siguiente paso es estimar la constante derivativa vel.kdg, el valor de esta está entre dos (2) y cuatro (4) veces la constante proporcional, si la constante proporcional está en 3 la derivativa está en el rango de 6 a 12 (estos valores son de ejemplo de proporción no reales).
  • El valor de constante derivativa vel.kdg se incrementa hasta el punto de que el robot deje de oscilar, el aumentar esta constante no lo hace inestable pero si lento en responder, entonces debe ser lo suficiente para que el robot no oscile cuando esta sobre la línea recta.
  • Luego se sube la velocidad sólo un poco, y se determina los puntos críticos de la pista y se incrementa la constante derivativa y proporcional hasta que los puntos críticos sean sobrepasados por el robot sin problema.
  • Si subes demasiado la constante proporcional el robot vuelve a oscilar como en el primer punto, y toma las curvas con mucha fuerza, lo ideal es que las curvas las tome todas pero suavemente, en el punto ideal, para esto disminuye de nuevo la constante proporcional.
  • Es necesario revisar que el robot no debe patinar ni derrapar, siempre debe estar bajo control, por lo cual en cada prueba debes limpiar las llantas y la pista, el polvo es fatal.
  • Si por más que se incremente la constante derivativa vel.kdg no se observan cambios de comportamiento, es porque el tiempo de muestreo no es el adecuado, por lo cual se debe aumentar en el algoritmo el tiempo de retardo (el “delay” al final del algoritmo), este debe estar entre 1 a 5 ms, eso dependerá del robot.
  • Por último se incrementa más la velocidad, se hace el mismo procedimiento, hasta donde logres la mayor velocidad.

Conclusiones


Se describió el diseño de un robot velocista partiendo de los requerimientos a cumplir y seleccionando el hardware, luego se describió el software, terminando con el algoritmo de control y describiendo un procedimiento para ponerlo a punto.
El Velocista implementado pesa 110 grm, con una velocidad pico de 2.5 m/s, y una velocidad en curvas promedio de 1.5mts/s.


Referencias

  1. Modelado y control de un robot móvil tipo NEWT en la tarea de seguimiento de trayectoria. R. Silva Ortigoza, M. A. Molina Vilchis, M. Marciano Melchor y E. A. Portilla Flores. CIDETEC-IPN. Departamento de Postgrado. Área de Mecatrónica. Unidad Profesional Adolfo López Mateos. C.P. 07700, México, D.F., México. e-mail: rsilvao@ipn.mx, mamolinav@ipn.mx, mmarciano@ipn.mx, aportilla@ipn.mx.
  2. Sistemas Operativos una Visión Aplicada. Carretero, Jesus. (2001).
  3. Sistemas de Tiempo Real y Lenguajes de Programación. Wellings, Andy Raj Kamal Nise, Norman. (2009).
  4. Embedded Systems: Architecture, Programming and Design. Second Edition. Noergaard, Tammy. (2005).
  5. Programming Embedded Systems: With C and GNU Development Tools.Barr, Michael. (2006).
  6. Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers (Embedded Technology). Elsevier 2005. Galeano, Gustavo. (2009).
  7. Programación de sistemas embebidos en C. México: Primera edición. Alfaomega. Burns, Alan. (2001).
  8. Real-time systems and programming languages. Boston: Addison-Wesley Longman Publishing.

Ricardo Cervantes

CEO

@team.rach

@rachingenieria.x

rachingenieria.x@gmail.com

Guía para el diseño de velocistas y seguidores de línea
Scroll to top