Home » Autodidacta » ¿Cómo hacer caminar a un robot hexápodo con tres grados de libertad por pata?

Login with your Social Account

¿Cómo hacer caminar a un robot hexápodo con tres grados de libertad por pata?

  •  
  •  
  •  
  •  
  •  
  •  

Aprende a hacer caminar al robot hexápodo HF08 con tres grados de libertad por pata de forma sencilla con arduino y la controladora de motores Torobot.

Esta entrada intenta explicar una forma sencilla de diseñar trayectorias de movimiento de un robot hexápodo partiendo de cero y crear secuencias de movimiento sencillas. En una etapa posterior, se podría añadir sensorización e inteligencia artificial al hexápodo, y usar estas secuencias como base para programarlo.

  • Elementos necesarios

Para la realización de este proyecto se ha escogido usar un modelo imprimible de hexápodo de tamaño intermedio llamado HF08. Para controlar los 18 servos se ha usado la tarjeta Torobot capaz de controlar 32 servos con memoria interna y conexión UART. Finalmente el control del movimiento se realiza desde un procesador para el que se ha considerado usar un Arduino o un PC con el software ROS.

El robot HF08 es un modelo imprimible de Hellium Frog  del cual se pueden obtener archivos de cada pieza aquí. Una vez impresas las piezas solo se han de seguir las instrucciones descritas en el propio blog de Hellium Frog.

La tarjeta controladora de servos de la marca Torobot es un dispositivo tipo esclavo que permite controlas hasta 32 servos simultáneamente. Para ello se debe enviar por serie un string de comandos con la siguiente estructura:

#x1Py1#x2Py2#xnPynTz\r\n

Donde xn indica la posición del servo a controlar, yn es el valor de posición del servo que varía entre 500-2500 y z es el tiempo en ms en el que debe ejecutarse la operación (100 ms como mínimo). Otra forma de controlar los servos es usando “grupos de acciones” guardados en la memoria ROM de 512K que tiene la tarjeta.

Para alimentar la tarjeta hay que usar dos fuentes separadas, una para los servos que pueda suministrar la corriente requerida por estos y otra que alimente al chip a 5V. En nuestro caso este último se alimentara mediante el puerto USB.

A la hora de conectar el puerto serie con el ordenador han de instalarse los drivers que hay en la página del producto y conectarlo en cualquier puerto USB. Si se quiere conectar con un microprocesador como Arduino hay que usar uno de los otros dos puertos serie que tiene la tarjeta. Sin embargo esta conexión con este modelo de controlador no es viable porque la tarjeta Torobot no soporta la conexión serie con el Arduino.

Para controlar el hexápodo es necesario un procesador que genere las trayectorias y envíe los comandos a la tarjeta Torobot. Puesto que en este proyecto no hay sensorización ni inteligencia artificial, se ha considerado que un Arduino Uno tiene la capacidad suficiente para ejecutar estas acciones en tiempo real.

En cuanto a la programación y la teleoperación del robot se han usado dos plataformas. Por un lado tenemos Arduino para el que solo se necesita un entorno de desarrollo abierto que proporciona la propia página de Arduino. La segunda opción que se ha contemplado es la plataforma ROS,  la cual ha de ser ejecutada dentro de un sistema operativo Linux.

Otra herramienta que se ha usado en este proyecto es el software que proporciona la propia empresa de la tarjeta Torobot. Este programa permite controlar de manera individual los servos y sirve para calibrar el robot y para realizar una primera aproximación al control del hexápodo.

  • Montaje

Una vez se han obtenido los ficheros de las piezas mencionados previamente se puede imprimir cada pieza del robot siguiendo las recomendaciones que ofrece el propio diseñador del robot. Puesto que el robot va a estar sometido a esfuerzos hay que imprimir con relleno suficiente y establecer paredes gruesas para el cuerpo. El relleno recomendado en el blog de Hellium Frog es de 35% y para el cuerpo se recomienda usar tres capas de base ya que es donde se genera más tensión.

Para ensamblar el hexápodo se ha de tener en cuenta que las patas no son idénticas sino que son simétricas, es decir, las patas de la derecha son el reflejo de las de la izquierda, para evitar errores es recomendable marcar en los componentes impresos una “L” o una “R” para determinar a qué lado pertenecen. En la siguiente ilustración se muestra el ensamblado de la pata frontal izquierda.

1

 

De la misma manera para el montaje del cuerpo se ha de tener en consideración la simetría. Cada servo debe colocarse en su soporte una vez que este está sujeto al cuerpo, como se puede observar en la siguiente ilustración los servos de la parte frontal están orientados al contrario que el resto, esto es para darle mayor rango de movimiento a dichas extremidades. Para simplificar la imagen se han eliminado los servos y algunos soportes de la vista explosionada.

2

Una vez se ha montado el cuerpo y cada una de las extremidades, se ensambla el conjunto teniendo en cuenta que los servos en posición de reposo deben de estar aproximadamente en la mitad de su recorrido total, en caso de que no sean servos de rotación continua. El controlador de servos se sitúa en la parte superior y si fuera necesario se puede alojar una batería o el microcontrolador entre las dos paredes del cuerpo.

7

  • Diseño del movimiento

Para crear las secuencias de movimiento debemos asignar una posición a los servos en cada paso, para ello tomaremos la posición del final de la tibia y mediante cinemática inversa obtendremos los ángulos de cada articulación. Para ello se ha de establecer un sistema de referencia local para las patas del robot. Esto se realiza siguiendo el método de Denavit-Hartenberg del que se obtiene los parámetros de la tabla siguiente y el sistema de referencia de la imagen.

3

Para determinar el ángulo de cada articulación a partir de una posición (x, y, z) del extremo de la tibia, tomando como origen la base de la extremidad se debe obtener la cinemática inversa de dicha extremidad. Puesto que este es un problema complejo se va a resolver empezando por la coordenada q1 y a partir del plano con orientación q1 se resolverán las coordenadas q2  y q3 como se muestra en el siguiente diagrama.

4

Si se realizan las operaciones trigonométricas pertinentes se ha de obtener la relación entre (q1 , q2, q3) y (x, y, z) que se muestra a continuación

5

  • Implementación

Para que las secuencias que hemos desarrollado se puedan implementar en la realidad hay que establecer la posición de reposo para los servos. Para esto se puede usar el programa proporcionado por Torobot que nos permite mover los servos individualmente en tiempo real. Para que el robot se mueva hay que abrir el puerto serie, con lo que en el programa pasará al estado online. Moviendo los sliders de cada servo se varía su posición en tiempo real. Manualmente se debe colocar el robot en una posición similar a la de reposo. En esta posición las coxas son paralelas unas a otras en lugar de estar distribuidas radialmente y el ángulo entre el fémur y la tibia de cada extremidad debe ser de 90°.

Una vez que el robot está calibrado se puede proceder a programar las diferentes trayectorias. Para esto se parte de la posición que tienen los servos en reposo y mediante las ecuaciones de la cinemática inversa calculadas previamente se obtiene el ángulo requerido en posiciones clave de la trayectoria de cada extremidad. Mediante este proceso se obtienen secuencias que pueden ejecutarse automáticamente para que el robot se desplace en una determinada forma.

Un ejemplo de cómo enviar las secuencias de movimientos al robot mediante la comunicación serie del controlador de servos se puede encontrar en el fichero caminar_recto (escrito para el Arduino uno), el cual envía una secuencia en bucle que permite al hexápodo desplazarse en trayectorias rectas en diferentes direcciones dependiendo de qué botones estén pulsados en un interfaz como el de la imagen.

6

A %d blogueros les gusta esto: