Prueba de un spoonBot#
spoonBot es un sencillo robot de tracción diferencial con una cuchara conectada a un servo que le permite hacer panorámica e inclinación. Consulte la página spoonBot-Construction para obtener información sobre la construcción del spoonBot. El programa de muestra que viene con la última distribución de cc3 contiene código de muestra que demuestra cómo mover el spoonBot así como ejecutar el modo demostración del spoonBot. El modo demostración del spoonBot es similar al modo demostración de la CMUcam2, solo que usa el spoonBot para hacer panorámica e inclinación.
Calibración del spoonBot#
Antes de usar spoonBot, necesita calibrar la configuración de sus servos. Esto se hace estableciendo la siguiente estructura de datos al principio de main:
// SpoonBot Calibration Points
// Assume Left = Servo 0
// Assume Right = Servo 1
// Assume Spoon = Servo 2
my_cal.left_mid = 71;
my_cal.right_mid = 77;
my_cal.spoon_down = 100;
my_cal.spoon_mid = 202;
my_cal.spoon_up = 255;
my_cal.left_dir = 1;
my_cal.right_dir = -1;
my_cal.spoon_dir = 1;
// Set the calibration points
spoonBot_calibrate (my_cal);
Grabe el firmware de emulación de la cmucam2 en la cámara
Abra el CMUcam3 Frame Grabber o un programa de terminal
Usando el Frame Grabber, vaya al panel «Settings» y arrastre las barras de servo para cambiar los valores
En un terminal, escriba «sv <servo-id> <servo-value>» para configurar los servos, por ejemplo:
:sv 0 77 ACK
Encuentre la posición media de los servos 0 y 1 ajustándolos hasta que las ruedas se detengan
my_cal.left_mid = <valor del servo 0>
my_cal.righ_mid = <valor del servo 1>
Ahora necesita encontrar el signo de las direcciones
Mirando el spoonBot desde atrás (con la cuchara hacia usted), intente bajar el número del servo 0, que debería ser la rueda izquierda
si el servo gira en sentido horario / hacia atrás (hacia usted) entonces left_dir debería establecerse en 1
si el servo gira en sentido antihorario, left_dir debería establecerse en -1
Repita para el servo 1 (que debería ser la rueda derecha desde el punto de vista del spoonBot)
si el servo gira en sentido horario / hacia atrás (hacia usted) entonces right_dir debería establecerse en 1
si el servo gira en sentido antihorario, right_dir debería establecerse en -1
¡Normalmente, un servo debe establecerse como negativo!
Ahora encuentre las posiciones Min, Middle y Max de la cuchara ajustando el servo 2
Min debería ser el valor más pequeño que empuja la cuchara hacia abajo y por tanto inclina al spoonBot hacia adelante
Establezca spoon_down según corresponda
Max suele ser 255 y debería posicionar al spoonBot mirando lo más arriba posible
Establezca spoon_up según corresponda
Middle es el valor que hace que el servo quede nivelado
Establezca spoon_mid según corresponda
Si Min y Max parecen estar invertidos, cambie spoon_dir a -1
Una vez hecha la calibración, recompile el proyecto y GRABE la CMUcam3. spoonBot primero realizará una secuencia de movimientos programados para asegurarse de que los servos estén configurados correctamente. Luego spoonBot esperará una pulsación del botón para comenzar a rastrear un color. Se muestra texto a través del puerto serie notificándole las distintas etapas de funcionamiento.
El movimiento programado debería ser el siguiente:
Quedarse quieto
Mirar hacia abajo
Mirar hacia arriba
Volver a la posición media
Girar en sentido horario (visto desde arriba)
Girar en sentido antihorario
El LED rojo se apaga mientras la cámara se prepara
El LED rojo se enciende cuando está lista para rastrear
Si esto parece correcto, entonces intente sostener un objeto de color brillante a unos centímetros frente a la cámara y luego presione el botón. A medida que aleja el objeto, spoonBot debería girar hacia él. Use objetos de colores brillantes que sean lo más uniformes posible en color. Un objeto como un paño rojo brillante funcionaría bien, ya que refleja muy poca luz (aparte del rojo puro). Asegúrese de que haya suficiente iluminación en la habitación. Intente capturar un fotograma para ver cómo se ven las condiciones.
Nota: Si desea deshabilitar los servos sin desenchufarlos, desconecte el servo-power-jumper.