SpoonBot-demo

Version 5 (Anthony Rowe, 06/24/2007 05:19 pm)

1 4 Anthony Rowe
= spoonBot Sample Program =
2 3 Anthony Rowe
3 3 Anthony Rowe
4 3 Anthony Rowe
[[Image(htdocs:images/spoonBot_thumb.jpg)]]
5 3 Anthony Rowe
6 3 Anthony Rowe
spoonBot is a simple differential drive robot with a spoon connected to a servo that allows it to pan and tilt.  See the [wiki:spoonBot spoonBot-Construction] page for information about building spoonBot.  The sample program that comes with the latest cc3 distribution contains sample code demonstrating how to move spoonBot as well as run spoonBot Demo mode.  spoonBot Demo mode is similar to the CMUcam2 demo mode only it uses spoonBot to pan and tilt.
7 3 Anthony Rowe
8 5 Anthony Rowe
9 5 Anthony Rowe
== Calibrating spoonBot ==
10 5 Anthony Rowe
11 3 Anthony Rowe
Before using spoonBot, you need to calibrate your servo settings.  This is done by setting the following data structure at the top of main:
12 3 Anthony Rowe
{{{
13 3 Anthony Rowe
#!c
14 3 Anthony Rowe
 // SpoonBot Calibration Points
15 3 Anthony Rowe
  //   Assume Left = Servo 0
16 3 Anthony Rowe
  //   Assume Right = Servo 1
17 3 Anthony Rowe
  //   Assume Spoon = Servo 2
18 3 Anthony Rowe
  my_cal.left_mid = 71;
19 3 Anthony Rowe
  my_cal.right_mid = 77;
20 3 Anthony Rowe
  my_cal.spoon_down = 100;
21 3 Anthony Rowe
  my_cal.spoon_mid = 202;
22 3 Anthony Rowe
  my_cal.spoon_up = 255;
23 3 Anthony Rowe
  my_cal.left_dir = 1;
24 3 Anthony Rowe
  my_cal.right_dir = -1;
25 3 Anthony Rowe
  my_cal.spoon_dir = 1;
26 3 Anthony Rowe
  // Set the calibration points
27 3 Anthony Rowe
  spoonBot_calibrate (my_cal);
28 3 Anthony Rowe
}}}
29 5 Anthony Rowe
30 5 Anthony Rowe
 * Flash the cmucam2 emulation firmware onto the camera
31 5 Anthony Rowe
 * Open either the CMUcam3 Frame Grabber or a Terminal Program
32 5 Anthony Rowe
 * Find the middle position of Servo's 1 and 2
33 5 Anthony Rowe
  * Using the Frame Grabber, go to the "Settings" panel and drag the servo bars around until the wheels stop moving
34 5 Anthony Rowe
   * my_cal.left_mid = <value from servo 0>
35 5 Anthony Rowe
   * my_cal.righ_mid = <value from servo 1>
36 5 Anthony Rowe
  * Now you need to find the sign of the directions
37 5 Anthony Rowe
   * Looking at spoonBot from the back (spoon towards you) try lowering the servo 0 number which should be the left wheel 
38 5 Anthony Rowe
    * if the servo spins clockwise / backwards (toward you) then left_dir should be set to 1
39 5 Anthony Rowe
    * if the servo spins counter clockwise, left_dir should be set to -1
40 5 Anthony Rowe
   * Repeat for servo 1 (which should be the right wheel from spoonBot's point of view)
41 5 Anthony Rowe
    * if the servo spins clockwise / backwards (toward you) then left_dir should be set to 1
42 5 Anthony Rowe
    * if the servo spins counter clockwise, left_dir should be set to -1
43 5 Anthony Rowe
   * Usually, one servo should be set to negative!