Doodle: Un robot hexápodo para dominarlos a todos

Doodle robot

¿Cómo? ¿Eso? ¿Eso consideras que es un robot que va a dominar algo?

Lo de dominarlos a todos tiene su explicación. Decía un colega hace tiempo al ver a Doodle que él siempre prefería crear robots sencillos para testear problemas y centrarse solo en desarrollar dichas soluciones. Lo he estado pensando durante todo este tiempo y creo que tiene muchísima razón. Doodle es mi mínimo robot posible, el más simple y en el que desarrollaré la base de circuitos y movimientos que más tarde utilizarán otros hermanos más mayores.

¿Qué es Doodle?

Doodle es un robot hexápodo, es decir de seis patas, de un tamaño pequeño y en el que se imitan los movimientos de un hexápodo con el mínimo número de motores posible. Con tres servomotores Doodle es capaz de mover sus seis patas.

Es un robot que usa muy pocas piezas, tan solo tres motores, que requiere muy poco tiempo en su montaje y totalmente compatible con cualquier placa con forma de Arduino UNO, como en mi caso la Icezum Alhambra. Puedes encontrar todos los archivos y guía de montaje de Doodle en:

https://github.com/jcarolinares/fpga-biorobots/tree/master/robots/doodle-robot

¿De donde viene Doodle?

Doodle, como muchas cosas, no es un proyecto 100% original. Su mecánica y principio de funcionamiento está basado en un proyecto que encontré hace tiempo creado por el grandísimo y crack Carlos GS y que a su vez es una mejora del proyecto creado por Ijon Tichy.

Hexapodo creado por Carlos GS

He montado y utilizado sus robots durante mucho tiempo y hecho muchas pruebas de movimiento tanto en Arduino como con FPGAs con ellos. Y es que un hexápodo tan pequeño y sencillo de montar tiene muchas ventajas.

Sin embargo no me encontraba cómodo con ciertas decisiones de diseño y, para que engañarnos, quería crear mi propia versión desde cero por el mero gusto de disfrutar y aprender con ello.

¿Cómo funciona?

Doodle se basa en el movimiento básico de los hexapodos, donde dos patas de un lado y otra pata del otro crean un triángulo que realiza un movimiento de avance, repitiéndose a continuación con las otras patas restantes.

Si has visto el vídeo de más arriba puedes comprobar como Doodle tiene tres motores. Los motores situados a cada lado se encargan de mover las patas de cada lado del robot, transmitiendo el movimiento mediante una pieza o link que conecta ambas patas. Por otro lado, el motor del centro se encarga de mover las patas centrales arriba o abajo para levantar o bajar el par de patas correspondientes a cada momento.

Retos y problemas de diseño

Aunque Doodle es un robot muy simple, me he descubierto aprendiendo un montón de cosas con él por el camino. Doodle ha sido desarrollado con Freecad mediante bocetos, extrusiones y vaciados. El diseño de la base es totalmente simétrico por lo que por comodidad decidí desde el principio diseñar solo su mitad y utilizar las piezas espejo para generar la pieza.

half_base_doodle

Sin embargo está no fue la primera pieza a desarrollar de Doodle, si no que fueron sus patas ya que de ellas dependían el resto de parámetros del robot. Esto es algo crítico que tendré en cuenta en el desarrollo de futuros robots. Puedes ver las iteraciones de las patas de izquierda a derecha en la siguiente imagen:

Interaciones de patas de Doodle, viejas izquierdas nuevas derecha

Por otra parte, si quería que fuera un robot hexaṕodo, quería que las patas parecieran un poco las de un insecto. Hace tiempo que aprendí que lo que a los ingenieros nos parece atractivo por su simplicidad a otras personas le resulta soso. Por suerte la gran persona y diseñadora Leonor Sanahuja me ayudo con la idea de los pelos en las patas para mejorar sus aspecto.

insect_leg

Uno de los principales problemas de Doodle es uno del que he aprendido y me ha amargado mucho. A Doodle le pesaba el culo. Y es que todos sus componentes son muy ligeros y si le colocabas una placa detrás, cómo originalmente estaba pensado, el robot tendía a espatarrarse. Actualmente Doodle funciona mucho mejor, gracias a varios rediseños en la colocación de los motores y a la decisión de colocar la placa encima del cuerpo. Aún así Doodle, por su mecánica simple, depende aún mucho de la inclinación de la superficie horizontal en la que esté, de si se levantan mucho o poco las patas centrales y de si se coloca la placa encima suya o se deja fuera del robot.

Gracias a este factor tan crítico, he aprendido por las malas que el centro de masas de un robot con patas, aún en uno tan sencillo como éste, es uno de los primeros aspectos a tener en cuenta en su diseño.

Por otro lado Doodle me ha confirmado una cosa fundamental: Cuanto más pequeño es un robot más complicado se vuelve el testeo y pruebas para conseguir que el diseño sea valido. Al tener poco espacio y tener que estar libre para el movimiento de las patas, ha resultado un reto colocar cada elemento en la base para conseguir que todo funcionase. Mención especial a encontrar espacio para colocar las baterías. Un problema solucionado mediante un portabaterías que se puede colocar en la parte inferior, ayudando al centro de masas del robot, y del que no he encontrado una solución que me satisfaga por completo.

Doodle_17

Por último, tanto Doodle en sus primeras versiones como otros robots parecidos tienen un problema muy curioso: se le caen las tuercas por el camino. Este efecto se debe a los movimientos de delante a atrás con fuerzas que se oponen pegando tirones y haciendo que las tuercas poco a poco se salgan de sus tornillos. Puedes ver el efecto en el siguiente timelapse:

En el timelapse puede apreciarse como la tuerca de la pata trasera de Doodle tiende a soltarse con el tiempo hasta, en ocasiones, llegar a caer. Sin embargo en la pata delantera, que lleva una tuerca embutida en la propia pata, no ocurre este efecto.

Doodle_14

Al principio recurrí a soluciones simples como usar una doble tuerca, colocar pegotes de silicona o probar con tuercas autoblocantes, todas soluciones con más o menos éxito pero todas temporales. Finalmente decidí crear el diseño de la pata con la tuerca embutida en él preguntándome a mí mismo si realmente funcionaría. Y vaya si funciona, funciona perfecto e incluso evita roturas de patas de Doodle en el caso de un movimiento fuera de su rango, al salirse antes la tuerca junto con el tornillo antes de romper la pata.

¿Cómo lo controlo?

El control de Doodle actualmente se basa en los ejemplos básicos de control de servos creados por Juan Gonzalez aka Obijuan y Jesus Arroyo tanto para verilog como Icestudio. El control que se ve en los vídeos es un control muy básico y provisional en el que he modificado el código del bloque de dos posiciones de servo para introducirle sus valores mediante constantes en notación hexadecimal. Indica además mediante los leds de la IceZum Alhambra en que lado está tocando el robot con las patas.

icestudio_simple_doodle

Aún qué he utilizado otros controles hechos en verilog mediante roms y tablas para realizar osciladores con Doodle, tenía algún error en la generación de los PWM que provocaba que el servomotor no se moviera en todo el rango que debía y que debo revisar. El tema de control es por tanto el siguiente paso en el proyecto y en el que me centraré a investigar de forma detallada, tanto en verilog como en abstracciones como Icestudio, durante el próximo mes subiendo los cambios al proyecto en github.

Por otro lado, por motivos personales y profesionales, le tengo mucho cariño al proyecto Bitbloq y las personas que han trabajado en él durante mucho tiempo. Es por ello por lo que dediqué una rato una tarde a hacer un programa muy simple tanto en Bitbloq como en código Arduino para controlar el robot mediante una placa Arduino uno o similares. Creo firmemente que Doodle puede ser interesante para aplicarlo en una o dos sesiones en el aula. Su montaje es rápido, media hora máximo, el numero de piezas es pequeño, solo utiliza tres servomotores simples y es bonito, pequeño y muy interesante para entender el movimiento de los insectos y pelearse con la dicotomía entre lo que programo y lo que sucede en la realidad. Es por ello por lo que he creado tanto el programa en Bitbloq como el código arduino normal que puedes encontrar (y mejorar) en el repositorio del robot.

bitbloq_doodle

¿Y ahora qué?

Creé a Doodle para utilizarlo como base en mi estudio sobre la generación de movimientos oscilatorios simples y CPGs en una FPGA. El objetivo es tener una plataforma simple pero con aplicación física real en el que desarrollar dichos controles, que luego podrán extrapolarse a otros tipos de robots a lo largo del proyecto.

He de reconocer que, por muchos motivos ajenos al robot, Doodle me ha llevado más tiempo del que me hubiera gustado. Sin embargo ese tiempo ha sido bien invertido y su creación me ha hecho aprender un montón de cosas nuevas que me ahorrarán tiempo y disgustos en el futuro.

Doodle_28

A pesar de todo ese tiempo y frustración invertido, le tengo un gran cariño a Doodle (empezando por su nombre). Doodle no es perfecto, pero lo bonito de publicar algo de forma libre, es que si la comunidad lo necesita, puede adaptarlo, mejorarlo y hacerlo perfecto para sus necesidades.

Y eso es algo que siempre, siempre, merece todo el tiempo del mundo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *