Inicio » Aula » Robot Bípedo 6 DOF

Robot Bípedo 6 DOF

En esta entrada se muestra el diseño electrónico y codificación para el control de un robot Bípedo de 6 grados de Libertad.

Robot Bípedo 6 DOF

Modelo

El modelo de robot empleado es un diseño ya creado que trae consigo todas las piezas y únicamente es necesario montarlo. Además de todas las piezas existe la opción de comprar conjuntamente a las mismas 6 servomotores MG996R, servomotores grandes y de alto torque necesarios para este modelo. Además se le añadirá una placa de aluminio (puede ser de madera) en la parte posterior del robot donde se implementará la electrónica (la placa de aluminio puede provocar problemas de conexión por ser conductora, interponiendo entre la placa y la shield un trozo de papel se evita este problema) y para evitar deslizamiento se puede añadir neopreno o ‘Goma Eva’ pegados a las plantas de los pies.

De forma alternativa a este diseño podría emplearse un modelado mediante impresora 3D que podemos encontrar en la plataforma ‘Thingiverse’ mediante el siguiente enlace: (https://www.thingiverse.com/thing:923853). Este otro modelo necesita de servomotores SG90, sin embargo el modelo tratado en esta entrada es el anterior.

Electrónica

Los distintos componentes empleados para el correcto funcionamiento del robot son los siguientes:

  • Batería Nimh 7.2 V 3300mA
  • Cable adaptador de batería macho-hembra
  • Regulador de tensión 5 V
  • Mini Breadboard
  • Cables
  • Arduino Nano
  • Gravity Expansion Shield I/O Nano
  • Módulo Bluetooth HC-05
  • Powerbank 5 V 10000mAh

La Powerbank es necesaria para la alimentación del Arduino Nano, el regulador de tensión para evitar sobretensiones en los servomotores y la batería alimentará a los mismos mediante el regulador. La tensión máxima de la batería es la tensión máxima de los motores, sin embargo es posible evitar el uso de dos baterías (Nimh y Powerbank) mediante el uso de una batería de 11 voltios que alimente tanto directamente al Arduino Nano como a los motores a través del regulador. Por último la shield, es posible utilizar cualquier otra, la ventaja de esta es que permite alimentar de forma separada los puertos y los servomotores, en esta shield la tensión máxima para alimentar a los servos es de 6 V, por ello es necesario el regulador, de lo contrario se quemará el Arduino.

Montaje Electrónica

Se conecta el adaptador a los carriles positivo y negativo de la PCB para facilitar la distribución de los cables, conectamos la tensión que aporta la batería a la Vin del regulador de tensión y la tierra de la batería a la tierra del  regulador de tensión y la tierra de la alimentación de los servomotores de la shield (siguiente imagen). El output del regulador lo conectaremos al punto positivo de la alimentación de los servomotores de la shield (siguiente imagen). En cuanto al módulo Bluetooth conectamos la entrada power a un pin de 5  V de la shield, GND a un pin de tierra de la shield; para los pines RX y TX mediante código empleando la librería <SoftwareSerial> elegimos dos pines que funcionarán como los Rx y TX del arduino sin necesidad de emplear los propios del mismo que realizan la conexión con el ordenador, los pines del módulo y de la shield han de estar conectados en cruz, es decir, RX del módulo con TX del bluetooth y TX del módulo con RX del bluetooth.

‘Servo Power’ es la entrada de tensión de nustros servos que alimentamos con el regulador. ‘Power Port’ sería la forma alternativa de alimentar el Arduino si en lugar de una batería de 7.2 V se usara una de 11 V.

En ambas imágenes se puede apreciar las conexiones en la placa shield.

Programación

Para la programación del robot se ha empleado el entorno Arduino y se ha partido desde un montaje ideal donde los ángulos de los servomotores cuando el robot está completamente erguido y recto es 90º, además se ha considerado una variable denominada ‘tiempo’ de valor 450 ms como un tiempo seguro que permita moverse a los servos sin problemas.

En la realidad esto no ha podido cumplirse por lo que ha sido necesario medir de forma iterativa los grados en los que cada motor permitía la condición anterior, los ángulos que permiten al robot estar rectos son los siguientes:

Para el movimiento del robot hacia delante y hacia detrás es importante controlar qué limite marca hacia delante y hacia detrás en cada motor y el control del equilibrio. Por ejemplo en este modelo a medida que el ángulo tiende a 0 en la rodilla y pierna derechas el movimiento es hacia atrás, de forma inversa ocurre en la pierna izquierda donde a medida que el ángulo se acerca a 0 la pierna se mueve hacia delante; cuando los ángulos son superiores a 90 ocurre el movimiento opuesto correspondiente en cada pierna. Para el control del equilibrio previamente al movimiento de la pierna se mueve el tobillo de forma que quede cerca de los 120º hacia fuera, dependiendo de la distribución del peso del bípedo el ángulo varía en este caso añadiendo 15º de inclinación se obtiene un buen equilibrio, por ejemplo en el tobillo izquierdo el ángulo es de 75º, el tobillo derecho se mueve exactamente los mismos grados como ayuda.

Para el funcionamiento del robot lo mejor es dividir en funciones cada movimiento que queremos, en el caso de los dos mencionados anteriormente:

Las funciones de mover pies al centro hacen justo lo que implica su nombre por eso no es necesario mostrarlas. Como se puede apreciar el procedimiento seguido es el anteriormente explicado, utilizando el pie contrario a la pierna a mover para establecer un equilibrio y después moverse hacia delante. Para el movimiento hacia atrás el procedimiento es igual pero con los ángulos cambiados:

En cuanto al giro el robot se valdrá de la fuerza de inercia, ya que los grados de libertad de los motores no permiten como tal un giro, sin embargo ‘lanzando’ patadas con una pierna y manteniendo el equilibrio con la otra se puede girar por la inercia que genera el movimiento de la misma, ya que los servos funcionan a alta velocidad. El giro es más complicado en superficies rugosas donde no se pueda producir un deslizamiento, por ello al añadir neopreno o gomaeva a la suela del zapato la capacidad de giro disminuirá, aunque no lo suficiente como para no permitir el giro, la mejor superficie para el giro es la madera:

Una vez controlados estos movimientos se puede jugar con ellos para generar cualquier posición o sucesión de posiciones, como por ejemplo poner el robot a la pata coja, agacharse, pasos de baile…

El código empleado puede obtenerse de la siguiente fuente:

        

Aplicación

El robot es controlado vía bluetooth mediante una aplicación creada en el entorno AppInventor, que se puede instalar en un teléfono Android.

La aplicación tiene la siguiente interfaz:

Conexión Bluetooth y establecimiento de variables

La aplicación comienza permitiendo utilizar los botones pero no el acelerómetro (mediante el uso de variables) como se podrá comprobar más adelante, además escribe un texto al lado de los dos botones de bluetooth que indica el estado del mismo y si se ha podido conectar, y conecta el bluetooth del teléfono con el del Arduino o el que elijamos en la lista. El primer botón de arriba a la izquierda es el que realiza la conexión y el de su derecha el que realiza la desconexión.

Intercambio Botones/Acelerómetro

Mediante el uso del interruptor activamos o desactivamos el acelerómetro que permitirá mover el robot con el movimiento del teléfono. El interruptor está diseñado de forma que no funcionen a la vez el acelerómetro y los botones a la vez, no es necesario, pero evita problemas en caso de pulsar un botón sin querer mientras se mueve el teléfono.

Botones

Los botones primeramente comprueban si su variable está a ‘true’ únicamente enviando texto cuando esto ocurra, este texto se leerá con el programa en Arduino y con ello el robot actuará en consecuencia, las globales ‘AlAtaque’ y ‘MarchaAtras’ simplemente permiten a los sonidos de cada botón sonar únicamente la primera vez que se pulsa el botón, esto es algo más estético que útil.

En función del texto recibido el robot actuará, siguiendo la siguiente lógica:

De forma que cada botón activará una función. Es aconsejable conectar los motores al principio de cada movimiento y al final ya que evita movimientos involuntarios y problemas.

Acelerómetro

El acelerómetro funciona conjuntamente a un reloj, que cada x tiempo comprobará las variables X e Y del teléfono móvil correspondiendo estas a la inclinación del teléfono, en el caso del robot, como tarda bastante entre movimientos 5 segundos es un tiempo que permite realizar el movimiento y enviar otro sin que se envíen órdenes antes de que el robot haya finalizado el movimiento, de otra forma si el tiempo fuera menor provocaría una sucesión de movimientos indeseables.

El reloj funciona constantemente por ello es necesario primero comprobar si el interruptor y por lo tanto el acelerómetro está activado. La lógica seguida para el establecimiento de según qué coordenadas enviar texto se explica perfectamente en el siguiente vídeo cuyo autor es el profesor de la Universidad Politécnica de Valencia, Leopoldo Arnesto:

El texto enviado es el mismo que los botones que permiten dirigir el movimiento del robot, por lo que el código en Arduino anterior que pertenecía a los botones funciona sin necesidad de cambios, además mostrará las coordenadas del teléfono junto al interruptor.

Demostración

El robot finalmente queda montado de la siguiente forma:

La primera prueba del robot:

En la segunda prueba el robot no contaba con la mochila ni el acelerómetro:

Y por último la demostración completa:

Autor

Javier Gamir Artesero

email de contacto javiergamirartesero@gmail.com