Clone Wars: Papa quiero un robot: CachaTuga

From RepRap
Revision as of 19:47, 16 October 2012 by JmartinCW (talk | contribs)
Jump to: navigation, search
TurtleBot.jpg

Objetivo

El objetivo es hacer un cacharro tipo tortuga de logo con las siguientes características:

  • Que se pueda programar fácilmente con herramientas de programación gráfica
  • Barato
  • Reproducible y modificable
  • Que cumpla el principio de <math>Hardware Libre^2</math> (by Obijuan)

Idea inicial

  • Herramienta de programación gráfica: S4A
  • Cerebro del cacharro: Arduino Uno
  • Conexión arduino/S4A: módulo bluetooth HC05
  • Ruedas: dos servos de rotación continua
  • Accionador del lápiz: servo normal
  • Retroalimentación: ¿ratón óptico?

Iteración 0

Objetivos

  1. Conectar S4A con Arduino a través del módulo bluetooth HC05
  2. Crear un prototipo físico funcional
  3. Crear las siguientes primitivas en S4A para mover el cacharro:
    • Mover tortuga, con las siguientes opciones:
      • adelante
      • atrás
      • izquierda
      • derecha
    • Subir lápiz
    • Bajar lápiz

Implementación

La conexión Arduino-Scratch ya lo tienen solucionada la gente de S4A. Para utilizar S4A con CachaTuga hay que solucionar un par de temas:

  • Hacer funcionar S4A con un módulo bluetooth HC05:
    • Solucionado en WIN 7. "Sólo" hay que cambiarle al módulo la velocidad de operación a 38.400 bps
    • En Ubuntu 12.01 no soy capaz de hacerlo funcionar. He hecho un enlace simbólico de /dev/ttyACM1 a /dev/rfcomm0 (parece que Scratch sólo lee ttyUSBX en el caso de que sea una versión anterior a las Uno o ttyACMX si es posterior). Al arrancar S4A salta la ventana que pide la contraseña para emparejar el módulo, pero después lo "desempareja"... Supongo que pasará algo parecido a lo que cuentan en este artículo de LMR...
  • Retroalimentación: Toda la lógica se hace en el PC, en el arduino "sólo" hay un sketch que escucha y envía información. Esto habría que cambiarlo para que el μC haga el trabajo de calcular cuando el robot ha avanzado "un paso" o detecte un borde y en squeak se haga la programación tipo logo (andar 4 pasos, girar 30 grados...). Este tema se intentará resolver en otra iteración.

Modificación del código S4A

Nuevos Bloques añadidos

He creado la nueva variable turtleBotDirections en la clase ArduinoScratchSpriteMorph bajo el protocolo turtlebot commands. Para que se pueda utilizar hay que añadirla en el método uncoloredargMorphFor de la clase CommandBlockMorph de la categoría Scratch-Blocks

turtleBotDirections

	^ #(
		  'forward'
		  'backward'
		  'right'
		  'left'	
	)

En la categoría de sistema S4A en la clase ArduinoScratchSpriteMorph en el método blockSpecs he añadido los siguientes bloques:

  • Turtle move %n steps %j donde %n es el número de pasos y %j es la dirección. Este bloque llama al método” turtleGo: steps direction: direction”
Nuevos Métodos añadidos

En la categoría de sistema S4A en la clase ArduinoScratchSpriteMorph en el protocolo turtlebot commands he añadido los siguientes métodos:

  • turtleGo: steps direction: direction

turtleGo: steps direction: direction

	'backward' = direction ifTrue: [self arduinoBoard servomotor: 4  direction: 'anticlockwise'. 
								 self arduinoBoard servomotor: 7  direction: 'clockwise']. 
	
	'forward' = direction ifTrue: [self arduinoBoard servomotor: 4  direction: 'clockwise'. 
								 self arduinoBoard servomotor: 7  direction: 'anticlockwise'].


	'right' = direction ifTrue: [self arduinoBoard servomotor: 4  direction: 'clockwise'. 
								 self arduinoBoard servomotor: 7  direction: 'clockwise'].

	'left' = direction ifTrue: [self arduinoBoard servomotor: 4  direction: 'anticlockwise'. 
								 self arduinoBoard servomotor: 7  direction: 'anticlockwise'].

Resultado

Foto del prototipo CachaTuga v0. Desde S4A se le puede decir que vaya hacia adelante, hacia atrás, que gire a izquierda o derecha o que levante y baje el boli. Seguirá avanzando en la dirección indicada hasta que no se le diga lo contrario. Al no estar calibrados los servos, hacia adelante una rueda va más rápida que otra.

La pinta que tiene S4A con las nuevas primitivas es el siguiente:

S4Amod.JPG



Papaquierounrobot.jpg

¡Papa quiero un robot!

Clone-Wars-logo.png

Proyecto Clone Wars