Instalación del firmware

Responsive image

Preparando la instalación

Antes de instalar el firmware en el arduino, para evitar forzar algún servo, vamos a desconectar la cuerdecita de la grúa y los tornillos que unen las plaquitas del servo de las pinzas a las propias pinzas. Queremos que se muevan libremente (por ahora).

El servo de la muñeca y el motor paso a paso no necesitan calibrarse así que no tenemos que preocuparnos de estos componentes.

Responsive image

Instalando el firmware

  1. Descarga nuestro repositorio de github.
  2. Abre el archivo Robik-firmware.ino de la carpeta firmware desde el Arduino IDE.
  3. Conecta el Arduino al ordenador por el puerto USB.
  4. Asegúrate de seleccionar la placa y el puerto correspondiente.
  5. Pincha en Subir

$ picocom /dev/ttyUSB0
robik$ _

robik$ h
pa - pinzaAbierta
pc - pinzaCerrada
pc - pinzaSemiabierta
...
robik$ _

Conectándose a Robik

Una vez instalado el firmware, es el momento de conectarse a él a través del puerto USB. Puedes utilizar cualquier programa monitor serie. En este ejemplo usamos picocom, ejecutándolo desde una ventana de terminal poniendo como parámetro el puerto serie que nos proporciona Arduino (en linux, normalmente /dev/ttyUSB0)

El firmware nos proporciona una serie de comandos que podemos teclear para ejecutar movimientos en el robot. El comando h (help) lista las instrucciones disponibles.

Responsive image

Calibración de la apertura de las pinzas

Los comandos pa, pc y ps dejan las pinzas en una posición abierta, cerrada y semicerrada respectivamente.

  • Pinza abierta: esta posición permite al cubo girar libremente sobre su base. Interesa no abrirlas al máximo, sino lo justo para permitir que el cubo gire, y así minimizar el tiempo que tarden en abrirse.
  • Pinza cerrada: el cubo debe quedar lo suficientemente agarrado como para que la grúa lo levante sin problemas.
  • Pinza semicerrada: En esta posición el cubo debe estar suelto (pero con las pinzas muy cerca de él). Esta posición se utiliza para preparar algunos movimientos, lo comprenderás enseguida cuando lo veas moverse.

Coloca el aspa del servo de manera que en la posición abierta quede aproximadamente vertical ligeramente a la izquierda (como un reloj a las 11:25), y en la posición cerrada quede horizontal un poco hacia abajo (como un reloj a las 8:10).

Responsive image

Afinando la posición cerrada

Ahora, cerrando las pinzas con el comando pc, colocamos el cubo de Rubik en la base y atornillamos las plaquitas a los brazos de manera que el cubo quede perfectamente agarrado en esa posición.

Una vez hecho esto, los comandos pa, pc y ps deberán funcionar correctamente. Si las posiciones son aproximadamente correctas pero consideras que se puede afinar algo más, siempre puedes editar los parámetros del firmware, como se indica más adelante.

Responsive image

Calibración de la grúa

La grúa se calibra de un modo similar aunque es mucho más sencillo. Con los comandos ga, gb y gs la grúa se sitúa en una posición arriba, abajo y semiarriba (o semiabajo) respectivamente.

  • Grúa arriba: esta posición se usa para que, con el cubo agarrado, la muñeca lo gire sobre sí mismo.
  • Grúa abajo: en esta posición las pinzas deben quedar perfectamente alineadas con el centro del cubo, de manera que al cerrar las pinzas éste quede perfectamente agarrado por el centro.
  • Grúa semiarriba: esta posición se usa cuando se gira la cara inferior del cubo, para que no estorben las piezas de la muñeca. Del mismo modo que antes, lo entenderás perfectamente cuando lo veas moverse.

Bajamos la grúa con el comando gb. El servo debe quedar en una posición más o menos horizontal (igual que en el caso anterior, si no es así, separa el aspa y colócala en posición horizontal)

Ahora intenta ajustar la grúa para que las muñecas queden a la altura del centro del cubo (quizá te sea más fácil de alinear si previamente lanzas el comando ps para acercar el las pinzas al cubo pero sin agarrarlo. En esa posición termina de apretar la cuerdecita a la polea e los hombros.

Responsive image

La muñeca y el motor

El servo que está anclado en el brazo lo llamamos muñeca: es el que gira el cubo en (el eje de las X) cuando las pinzas lo tienen agarrado y la grúa está subida. Como los servos sólo giran 180º, usamos sólo tres posiciones: m0, m1 y m2. Prueba estos comandos y debería moverse 0, 90 y 180º; respectivamente.

Sólo falta probar el motor. Antes de moverlo con un comando, asegúrate que las ruedas engranan correctamente moviéndo la base con la mano. Si todo se mueve con suavidad puedes probar el comando ba numero_de_giros.

Los giros se corresponden con un cuarto de vuelta completa. Así, por ejemplo, ba 2 gira la base en el sentido de las agujas del reloj. Y puedes poner números negativos para girar en el sentido contrario. Por ejemplo ba -1 hace un cuarto de vuelta en el otro sentido.

/*--------------------
* Grados de apertura ...
*--------------------
define PINZA_ABIERTA 90
define PINZA_SEMI 35
define PINZA_CERRADA 0

Ultimos ajustes del firmware

Si no estas conforme con los ajustes mecáanicos, siempre puedes configurar los parámetros del firmware a tu gusto. A veces puede ser complicado ajustar correctamente las piezas ya que cuando se aprientan los tornillos en el último momento se nos desplaza algo.

Todas las posiciones predefinidas para las pinzas, la grúa, la muñeca, y el número de pasos del motor están especificados en el fichero Robot.h. Experimenta con los parámetros y busca la combinación que más te convenza

Haz un cambio, sube el firmware, prueba y vuelve a editar hasta que estés contento con el resultado.

Responsive image

Primeros experimentos

Ya podemos empezar a experimentar moviendo el cubo con comandos, viendo cómo se comporta y afinando los últimos ajustes. Los comandos son autoexplicativos, pero como guía, aquí mostramos una prueba con la que empezar.

  • Pasos para girar la cara de arriba
    1. pa abrir pinza, por si estaba cerrada
    2. m0 para poner el servo de la muñeca en una posición que nos permita moverlo posteriormente 180º
    3. gb para bajar la grúa
    4. pc para agarrar el cubo
    5. ga para levantar el cubo
    6. m2 giramos la muñeca 180º
    7. gb volvemos a apoyar el cubo
    8. ps abrimos un poquito la pinza
    9. gs subimos un poquito la grúa
    10. pc para agarrar el cubo (esta vez no por el centro, si no un poco más arriba)
    11. gb 1 giramos la base (y como el cubo está agarrado se moverá la cara)

Si detectas algún movimiento que no es del todo exacto, repite los ajustes en Robot.h hasta consigas que funcione perfectamente

robik$ seq F2B2UD'R2L2UD'
        

El comando sec

Un comando muy útil es seq secuencia, que te permite ejecutar secuencias en el formato singmaster (la versión en inglés). Por ejemplo, este comando hace el movimiento conocido como sexy move, que consiste en mover la cara de arriba (Up) la cara de la derecha (Right) y luego de nuevo la cara de arriba en sentido contrario (U') y derecha en sentido contrario (R').

seq URU'R'

Este comando también te permite depurar de forma más sencilla los movimientos del cubo para optimizar los movimientos, ya sea modificando los parámetros en Robot.h, afinando los tiempos de espera en robot.c o modificando cualquier parte del firmware que se te ocurra.

Por ejemplo, el comando seq FUBR realiza cuatro giros seguidos del cubo en el eje de las X, y así puedes ver cómo se comporta en movimientos complejos y seguir afinando los parámetros.

Responsive image

Experimenta, experimenta, experimenta!

...y hasta aquí hemos llegado! No dudes en experimentar con todas las partes de tu robot y comentarnos cualquier problema o mejora que se te ocurra.

En la carpeta software de github hemos puesto algunos ejemplos de programas para manejar Robik.

Y recuerda: esto es un proyecto de hardware/software libre que cuenta contigo para poder mejorar. Cualquier aportación será bienvenida.

Que el espíritu maker os acompañe!