Robot Hexapodo

Electrónica - Software

 

Existen diferentes patrones a la hora de mover las extremidades para andar, denominandose "Gaits" en terminología inglesa (¿gateos?), siendo el más conocido el modo tripode, en el que siempre hay tres patas en contacto con el suelo, ya que es el número mínimo necesario para conseguir la estabilidad estática.

Cada patrón o "gait" exige disintas formas de movimiento de las extremidades, dependiendo, además, de la dirección del movimiento. Cada extremidad esta articulada mediante 3 servomotores, por lo que este tipo de robot se dice que tiene 3 grados de libertad o 3DOF ("3 degrees of freedom") por cada extremidad y, como está dotado de 6 extremidades, diremos que posee 18 grados de libertad, es decir 18 ángulos que podemos variar entre 0 y 180 grados.

La posición concreta del extremo de cada pata viene dada por sus coordenadas X,Y,Z, relativamente sencillas de definir en cada movimiento. Sin embargo el software de control, que corre en el arduino Nano, debe mandar los valores de los ángulos necesarios para conseguir esta posición X,Y,Z concreta. Esto es lo que se conoce como un problema de cinemática inversa, cuya solución requiere cierta potencia de calculo por parte de ciertas rutinas que se denominan "maquina de cinemática inversa" o "IK Engine" ("Inverse Kinematics Engine").Para quien quiera profundizar los cálculos están muy bien explicados, de manera muy sencilla además, en el siguiente artículo.

El software que proporciona el fabricante del robot PhantomX utiliza la IK Engine denominada NUKE ("Nearly Universal Kinematics Engine"), sin embargo yo me he decantado por el uso de otro software muy popular denominado "código Phoenix" que es "open source" y bastante más completo además de conseguir un caminar mas natural y versatil. Este software para entorno Arduino se encuentra disponible de forma gratuita en la plataforma GitHub.

Electromecánica - Servomotores

 

Los servomotores o servos (para abreviar) son los encargados de dotar al robot de la capacidad de moverse. Se trata de motores de corriente continua gobernados por un sistema electrónico capaz de fijar el eje de salida en una posición concreta. Se han empleado desde hace largo tiempo en aeromodelismo y aunque han evolucionado, existiendo modelos digitales con bus I2C o RS-232, los que voy a emplear son muy básicos con entrada PWM.

 

Por su bajo coste (aprox. $5 en ebay) y su alto par (10 kg.cm @ 5V / 13 kg.cm @ 6V) he escogido el modelo Tower Pro MG995 que tiene engranajes de metal y rodamientos de bolas, aunque no he leido casi nada bueno sobre ellos y como he podido comprobar, su calidad es también baja, ya que algunos han "frito" los mosfets que los gobiernan. Sospecho que esto es debido a que con el calentamiento del motor por degradación de este, se atasca ligeramente pero lo suficiente para requerir una corriente demasiado alta durante mucho tiempo que acaba con los mosfets SOIC8 que forman el puente que alimenta al motor.

 

He probado a sustitir estos transistores por otros de mayor capacidad de corriente pero el resultado ha sido mas o menos el mismo.

 

 

También hay que decir que estos fallos han tenido lugar alimentando los servos directamente con una batería LiPo 2S a unos 8V por lo que es imperativo el uso de un regulador de tension que entregue como máximo 7V, ya que según las especificaciones la tensión máxima de alimentación es 7.2V. Debido a la cantidad de servos a alimentar, este regulador debe ser capaz de suplir al menos 18A considerando un consumo de aproximadamente 1A por cada servo, lo cual es bastante real. Por ésto, queda descartado el uso de un regulador lineal (que podría conseguirse poniendo varios 7806 en paralelo) debido a su bajisima eficiencia, ya que sería esperable un calentamiento inaceptable y un acortamiento considerable de la duración de la batería. La idea es usar un regulador conmutado, como por ejemplo éste de Hobbyking.

Gracias a la comunidad "Open Source" miles de personas en todo el planeta, con un poco de habilidad y otro poco de dinero, somos capaces de jugar con los últimos diseños de robots "con patas".

 

Ésto, una vez más, abre nuevos horizontes para todos aquellos que amamos la innovación.

Robot Hexápodo

Hexápodo #1: Clón de PhantomX

 

Después de analizar los distintos modelos de robots hexápodos que se han diseñado hasta la fecha y, aunque el modelo Phoenix de Lynxmotion me parece esteticamente mas interesante, he decidido construir algo muy similar al modelo PhantomX de Trossenrobotics, que es concretamente el que muestra la imagen superior.

 

 

Estructura mecánica

 

Es la parte física del robot, es decir, el cuerpo y extremidades del mismo. El diseño está fuertemente basado en el siguiente modelo que puede encontrarse en thingiverse.com, si bien ha sido ligeramente modificado usando el programa Blender, magnifico software de modelado y animación 3D que, otra vez mas, se ofrece gratuitamente en la web blender.org.

Tras una sesión de busqueda en Google nada trivial he encontrado por fin el esquema de un servomotor basado en el chip kc2462, probablemente el mismo circuito que implementan los servos MG995, MG996 y el más robusto MG946. Se observa el puente completo de mosfets: Q1 y Q2 del tipo Canal-N y Q3 y Q4 tipo canal-P. También vemos el potenciometro W1 cuyo eje es solidario con el eje de salida del servomotor para así proporcionar realimentación con información de la posición. Las puertas de los mosfets son "pilotadas" con una señal PWM con un "duty cycle" proporcional al error de posición actual.

 

Electrónica - Hardware

 

Una de las placas controladora de servos mas populares del mercado es la SSC-32U de lynxmotion, capaz de controlar 32 servos a partir de un conjunto de comandos recibidos a traves de un puerto serie. Esta basada en un microcontrolador Atmel ATmega328p sobradamente conocido y dispone de conexión usb gracias a un chip FTDI. Existen varios programas que permiten interactuar desde un PC, basicamente para operaciones de depuración y calibración.

 

Ya que las instrucciones que permiten caminar al robot requieren la resolución de un problema de cinemática inversa, esta placa se queda corta para ello y, es por esto que necesitemos la ayuda de un arduino Nano, también con un MCU 328p, que se encargará de mandar las ordenes de control a la SSC-32 a partir de las ordenes recibidas a traves del receptor de un controlador inalambrico (2.4GHz) de una playstation 2, siendo este último ampliamente utilizado en el mundo de la robótica y/o animatrónica. La comunicación entre el receptor y el arduino se lleva a cabo mediante un bus síncrono tipo SPI implementado por software en el Nano y la alimentación del receptor requiere 3.3V que nos proporciona el arduino gracias a un regulador lineal que incorpora.

Copyright © All Rights Reserved