Robot omnidireccional
Un robot omnidireccional, también conocido como holonómico, es un tipo de robot móvil con ruedas, cuya configuración le permite desplazarse en cualquier dirección sin la necesidad de alcanzar previamente una orientación específica. Es decir, es capaz de realizar movimientos en cualquiera de las componentes del plano, bien sean traslaciones (hacia adelante, en reversa, laterales) o rotaciones, a partir de un estado de movilidad. Todo ello, a expensas de un mayor grado de complejidad en su manejo.
Para un robot omnidireccional es imperativo contar con al menos tres ruedas activas en su haber. Es entonces un punto importante del diseño la decisión de cuántas ruedas emplear. Cada una de las ruedas proporciona al robot una fuerza normal al eje del motor y paralela a la superficie sobre la cual se desplaza. La suma de ellas permite la traslación y rotación de la estructura. Por lo general, presentan una configuración mecánica de tres o cuatro ruedas. El primero es mecánicamente más simple que el segundo. No obstante, este último permite una mayor aceleración al robot.
Los robots de cuatro ruedas tienen más tracción que los de tres, pues se adiciona la potencia entregada por el motor adicional. Lo cual se traduce a menos deslizamiento en las ruedas si el peso de la carga se encuentra distribuido uniformemente sobre ellas, un mayor consumo de energía, costo y posiblemente, la necesidad de incorporar un sistema de suspensión para distribuir las fuerzas sobre las ruedas.
Contenido
Modelo Cinemático
El modelo cinemático permite la descripción analítica del movimiento de un cuerpo, con respecto a un sistema de referencia, en función del tiempo. Se puede predecir el comportamiento del robot, al conocer las variables que se pueden controlar o manipular. Existen dos maneras de resolver la cinemática del robot, la primera se conoce como el problema cinemático directo y consiste en determinar el desplazamiento y posición del robot mediante la velocidad angular de las ruedas; el segundo se denomina problema cinemático inverso, se obtiene la velocidad angular de los motores, a partir del desplazamiento y posición del robot respecto a la referencia
Robot Ovni
Ovni es un robot omnidireccional de cuatro ruedas producto de una tesis de pregrado desarrollada en el Grupo de Investigación y Desarrollo en Mecatrónica USB como prototipo simple de los robots que se esperan desarrollar en la Agrupación FutBot USB para participar en distintas competencias de robótica nacionales e internacionales, tales como RoboCup, LARC, entre otras.
El robot Ovni está equipado para ser teleoperado hasta una distancia probada de 41.61 metros sin obstáculos. No obstante, el alcance puede ser mucho mayor debido a la utilización de módulos XBee PRO S2 como medio de comunicación. Los desplazamientos que puede realizar son rotación sobre su propio eje y traslación simple en cualquier dirección del plano, es decir, sin la necesidad de orientarse a un estado inicial para alcanzar un punto de destino cualquiera.
La interfaz de control con la cual se opera el robot se encuentra desarrollado en lenguaje Python sobre la plataforma ROS (Robot Operative System), de este modo las tareas están divididas en nodos que se ejecutan de forma paralela y se comunican entre sí mediante mensajes estandarizados. Esto facilita la cooperación entre distintos desarrolladores, otorgándole diversidad a su entorno.
Componentes
Físicamente, el robot omnidireccional Ovni está compuesto por una placa de aluminio, la cual funge como chasis o estructura de soporte. A su alrededor se disponen cuatro motores DC de 12V "HN-GH12-2413T", equidistantes entre sí, cada uno acoplado a un codificador rotatorio o encoder E4P y una rueda omnidireccional o sueca de seis rodillos. En la cavidad que queda entre ellos, se encuentra la batería central que alimenta todo el sistema electrónico, en este caso de 7.2V, esta puede ser sustituida por otra que cumpla con los parámetros de la hoja de especificaciones del robot.
Del chasis salen cuatro tornillos largos con los cuales se sustenta una lámina de acrílico, que actúa como base para las dos tarjetas que componen el sistema electrónico. La primera placa contiene la entrada de la batería, el sistema de alimentación (regulación a 5V "LM2940"), los drivers "L298P" para manejar los motores con su respectiva conexión a ellos y los sensores de corriente "ACS712" para detectar situaciones de emergencia. En la segunda capa se encuentran las conexiones para el microcontrolador MCF51AC256 y su acondicionamiento, la entrada de las señales provenientes de los encoders y la etapa de comunicación, empleando módulo XBee PRO S2.
Funcionamiento
A través de la interfaz, que actúa como una palanca de mando o joystick virtual, el usuario puede manejar el robot con el mouse de la computadora. Presionando el botón derecho del mismo sobre el campo de movimiento y arrastrando la figura se le indica al robot en qué dirección debe trasladarse. Mientras que al hacerlo sobre las flechas de los extremos u oprimiendo la tecla de derecha o izquierda, se le ordena que rote sobre su propio eje. Al dejar de oprimir el botón principal del mouse, el robot se detiene sobre la pista. Debido al uso de ROS en el sistema, es posible controlar el robot mediante una aplicación de teléfono Android, llamada "Teleop", desarrollado por un tercero. En este caso, sólo se requiere indicar la dirección del equipo que está ejecutando la interfaz del control.
Además, mediante la interfaz el usuario puede se pueden conocer algunos parámetros de funcionamiento del robot, tales como la magnitud de corriente a través de cada uno de los motores, el número de pulsos por segundo generados por los codificadores rotatorios acoplados a cada una de las ruedas y con ello la velocidad de cada una para fines de realizar una posterior etapa de control. En caso de ocurrir alguna falla relacionada con sobrecorriente por al menos un segundo de tiempo, en alguno de los motores, notifica al operador con un aviso en pantalla y directamente en el robot se genera un estado de emergencia que desactiva los motores para disminuir el riesgo de daño en los mismos.
Especificaciones Técnicas
- Voltaje de operación: 7.2V - 12V
- Corriente de operación:
- Distancia máxima de operación: 41.61 metros
- Velocidad máxima: 0.437 m/s
- Velocidad mínima para control: 2.90 cm/s
- Altura: 9 cm
- Diámetro: 35.3 cm
- Peso: 1900 gramos
- Posee protección contra calentamiento por sobrecorriente
Protocolo de Pruebas
A continuación se presenta un algoritmo de pruebas a realizar en el sistema electrónico del robot omnidireccional de cuatro ruedas "Ovni" para la verificación de la operatividad de cada unas de etapas que la conforman. Se recomienda realizarlo en el orden especificado cada vez que opere el robot para así disminuir el riesgo de propagación de daños, en caso de que se presente alguna falla en un componente puntual y a su vez identificarlo de forma simple para proceder a su reparación o reemplazo.
Estado general
Este apartado presenta las pruebas básicas que deberían ser realizadas cada vez que se opere el robot. Las mismas son imperativas en los casos en que se hayan desmontado las tarjetas electrónicas o los dispositivos conectados a ellos, tales como el microcontrolador, el XBee PRO S2, el conector de la batería o los codificadores rotatorios. Su ejecución podría, al menos, salvaguardar los dispositivos de una avería por cortocircuito o una polarización inversa. Mantenga la batería desconectada del robot hasta que se indique.
- Desconecte los dispositivos periféricos (microcontrolador, XBee y codificadores rotatorios) de la tarjeta superior y desmontela de la tarjeta base (doble capa).
- Verifique con atención que no existan pistas de cobre rotas y que entre ellas no se encuentren trozos de cable sueltos o partículas que las ponga en contacto de forma indebida en ambas tarjetas y caras. Si esto ocurre, consulte el diagrama del PCB para su reparación: Tarjeta Base capa inferior, Tarjeta Base capa superior, Tarjeta Control capa inferior y Tarjeta Control capa superior
- Revise que el cable con el conector de la batería se encuentre debidamente atornillada a los terminales de entrada del sistema. Esto es cable negro conectado a la terminal cercana al extremo de la tarjeta base como se indica en la figura.
- Asegúrese que los jumpers se encuentren conectados, tal como indica la figura. Esto conecta las salidas de los puentes a los sensores de corriente, de este modo se activa su monitoreo y sistema de protección.
- Conecte la batería y pase el interruptor para encender el dispositivo. El led (rojo) de la tarjeta base debe prenderse. Caso contrario verifique la carga de la batería, podría estar descargada.
- Verifique el voltaje de la alimentación de potencia y lógica de ambos drivers del sistema. Esto es colocar la punta roja del multímetro al pin 6 del L298P y la negra en el terminal de entrada conectada al cable negro, en este caso debe señalar una magnitud igual al valor nominal de la batería. Realizar procedimiento similar, cambiando del pin 6 al pin 12 y manteniendo la referencia, debe marcar 5V. Caso contrario compare con el diagrama del PCB, es posible que exista un inconveniente con alguna pista o un condensador de bypass haya resultado dañado.
- Apague el sistema y conecte la tarjeta superior sobre la base. Recuerde que existen dos hileras de conectores uno de 2x4 y otro de 2x6. Asegúrese de que no quede ningún pin por fuera.
- Proceda a medir continuidad. Los terminales 25, 57, 67 y 71 deben ser continuos entre sí, al igual que los terminales 26, 56, 66 y 72. Estos corresponden a Vcc y tierra, respectivamente. La enumeración se muestra en la figura ,donde la flecha corresponde al punto donde se encuentra el único pulsador de la tarjeta.
- Nuevamente, encienda el sistema. El led verde de la tarjeta superior debe estar encendido al igual que el led rojo del nivel inferior. Mida el voltaje entre un pin de cada uno de los grupos mencionados en el paso anterior. La medida debe ser aproximadamente 5.0V.
- Repita el paso anterior en la conexión del XBee, coloque la sonda negra con el primer pin (en el extremo de la tarjeta) y la roja con el segundo del conector correspondiente. La salida debe mostrar 5.0V.
- Pase el interruptor y apague el sistema. Conecte el microcontrolador y asegúrese de que la flecha blanca de éste apunte hacia el pulsador.
- Conecte los bornes de los motores a los terminales de tornillo sobre la tarjeta base, siguiendo el orden indicado en la figura. Si no está familiarizado, compruebe que la conexión se haya hecho en el orden correcto, cargando el código aquí en el microcontrolador y siguiendo con el paso 14.
- Cargar el programa del robot Ovni en el microcontrolador. Esto puede encontrarlo aquí
- Conecte el XBee, la tarjeta con regulador le indica el pin de "GND", éste debe conectarse al primer pin del conector en la tarjeta.
- Conecte los codificadores rotatorios. El conector es 2x2, los dos pines más cercanos a la tarjeta corresponden a tierra, así del E4P, el molex con los cables rojo y negro se conectan a ellos dos, manteniendo la abertura con metal hacia arriba.
- Descargue el código de la interfaz de control aquí. Si no está familiarizado con la plataforma ROS, revisar este material para su descarga y tutoriales de uso.
- Conecte el segundo XBee Pro S2 a la computadora, habilite el puerto en caso de requerirlo y ejecute el programa que contiene la interfaz de control. Pase el interruptor y encienda el robot. Espere a que la luz etiquetada como RSSI del XBee del robot se prenda.
- Use el mouse de la computadora y su botón derecho para arrastrar el circulo blanco u oprimir las flechas a los lados. Emplee las teclas izquierda y derecha del teclado o su joystick en el teléfono. El robot debe desplazarse en la dirección que le indique.
Etapa de Comunicación
Si luego de realizar los 17 pasos descritos en la verificación de estado general, el robot no realiza ninguna acción. Siga las instrucciones a continuación:
- Desconecte y vuelva a conectar el módulo XBee de la computadora (administrador), habilite el puerto serial.
- Ejecute nuevamente el programa de la interfaz. Arrastre el mouse con el botón derecho presionado y a su vez verifique en primer lugar que el XBee coordinador tenga la luz, etiqueda como Tx, titilando. Si es así siga al siguiente paso, caso contrario, regrese al primer paso de esta etapa, la computadora no reconoce el periférico.
- Ahora preste atención al XBee del robot (terminal), mientras desplace el mouse con el botón derecho hundido, la luz etiquetada como DOUT debe parpadear también. Si esto es así, probablemente el problema sea en otra etapa. Caso contrario, conecte el XBee terminal a un protoboard con su tarjeta reguladora, aliméntela con 5V y conecte las terminales DIN con DOUT. Abra el programa de configuración "XCTU" (puede encontrarlo en este enlace), realice los ajustes de comunicación y comunique a éste con el XBee administrador. Envíe secuencias de teclado (marcadas en azul) y espere su eco (marcadas en rojo). Recuerde revisar si las respectivas luces titilan. Si esto no sucede, puede que esta los módulos estén presentando fallas.
Etapa de Control
Si luego de realizar la prueba de comunicación aún no se resuelve el problema. Proceda a verificar que el microcontrolador se encuentre trabajando en condiciones idóneas, partiendo del hecho de que los XBee's, efectivamente, se comunican, para ello:
- Presione y mantenga la tecla de izquierda del teclado.
- Verifique con la ayuda de un osciloscopio que los terminales en la lista presenten las salidas indicadas en la misma.
- Terminales Enable (4-10-18-44): Salida en alto de aproximadamente 5.0V .
- Terminales Referencia (14-16-46-48): Salida en bajo de aproximadamente 0V.
- Terminales (PWM) (6-8-20-42): Salida con señal cuadrada de 0-5.0V, frecuencia 1KHz y ciclo de trabajo de 50% aproximadamente.
Si todas las salidas corresponden con lo indicado, se puede descartar que el microcontrolador presente una falla.
Etapa de Potencia
Manteniendo las condiciones de la prueba en la etapa de control, es decir, con la tecla derecha o izquierda presionada:
- Mida la caída del voltaje entre los terminales que van hacia los bornes de cada motor.Los cuatro valores no deben distar mucho uno de otro y deben estar por encima de la mitad de valor nominal de la batería. Recuerde que ésta debe cumplir con las condiciones de la sección de especificaciones. Si no es así, es posible que los motores no estén trabajando por no encontrarse dentro de su rango de operación.
- Si el voltaje de entrada a los motores difieren mucho entre sí, verifique detalladamente que ninguna de las finas pistas esté rota.
- Verifique también la continuidad entre los bornes de cada motor. Si no hay continuidad, el devanado del motor está dañado.
- Si el problema persiste, conecte el motor directamente a una fuente dentro del rango de operación del primero, verifique si el motor rota, si es así invierta la polaridad y revise que rote en sentido contrario. Si no funciona, es posible que la caja reductora del motor esté dañada.
- Si todas las pruebas resultan satisfactorias, es posible que la batería esté descargada. O que al arrancar el robot, todos los motores demanden un corriente alta en un mismo instante, ante la cual, la batería no puede responder.
Comunicación con el operador
Para verificar que los sensores del robot se encuentre operando, se realizan las siguientes dos pruebas:
- Codificadores rotatorios de 360 cps
- Descargue el código de la interfaz de control de prueba en este enlace. Esta interfaz es similar a la empleada para manejar el robot.
- Descargue el código de prueba de encoder aquí y cárguela al microcontrolador
- Conecte el microcontrolador al robot y encienda el sistema.
- Verifique que el led de emergencia se encuentre encendido
- Tome la rueda 1 del robot y rotela hasta dar una vuelta. Considere que tiene 3 segundos para realizarlo.
- Al apagarse el led, rote nuevamente la rueda 1. Igualmente, cuenta con 3 segundos.
- Al encenderse el led, rote la rueda 2. Repita al apagarse.
- Repetir el proceso hasta probar los dos canales del codificador rotatorio de cada rueda.
- Espere que aparezcan los resultados en la interfaz de control. El valor de cada lectura debe aproximarse a los 360 pps
Para verificar que los sensores del robot se encuentre operando, se realizan las siguientes dos pruebas:
- Sensores de corriente
- Apague el sistema y desconecte la tarjeta superior.
- Cargue nuevamente el programa del robot ovni completo.
- Cambie la posición de los jumpers y conectelos como sigue en la figura.
- Reconecte la tarjeta superior y verifique que la conexión es correcta.
- Encienda el equipo y espere unos segundos
- Verifique en la interfaz que la corriente tiende a cero. Si esto sucede la comunicación es correcta
Bibliografía
- Bermejo Lozoya, F. J. (2010). Desarrollo de una plataforma hardware para la Robocup Small Soccer League (SSL).
- Oliveira, H. P., Sousa, A. J., Moreira, A. P., & Costa, P. J. (2009). Modeling and assessing of omni-directional robots with three and four wheels. Contemporary Robotics: Challenges and Solutions.
- Campion, G., Bastin, G., & D’Andrea-Novel, B. (1996). Structural properties and classification of kinematic and dynamic models of wheeled mobile robots. IEEE transactions on robotics and automation, 12(1), 47.