Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

::Delta Movement Robot::

Concept

This robot is an exploration of a delta movement being used to make a mobile robot. Some examples of delta robots are a high speed version on youtube and a project polybot on thingiverse. Both of which inspired this design. During final assembly the mount the servos on the table and it turned out much easier mount as the base. This changed the robot so that it lifts up its polyhedron frame and places it to its side then lifts its own servos and power source over to the new location.

The primary advantage with this design is the robot can head whatever direction it deems best without having to turn in the sand. Basically the movement allows for the movement in arbitrary directions without energy turning on the sound.

Figure 1 shows a picture of the delta robot. Figure 2 and 3 show close ups of the linkage between the servos and the linkage pieces.

Figure 1 A picture of the entire robot

Figure 2 A close up of the linkage between the servo and the t-bar that is the first piece of the linkage.

Figure 3 A close up of the linkages all joined together in another equilateral triangle. The linkage pieces were steel wire bent into loops.

Hardware Layout

The hardware layout is pretty simple. The three servos are arranged at the edge of a equilateral triangle. The servos are then mounted to this equilateral triangle. In this prototype the servos are wired to the bottom plate which is the equilateral triangle.

Attached to each servo is a T bar. It was made by bending a single piece of steel wire into a T shape then bending to small hoops on the end. These hoops were made using a pair of pliers that are used for making jewelry. The T bar is then mounted to the horn of the servo using ShapeLock. See Figure 2 for some detail on this piece.

The ends of T bar is connected to a much small equilateral triangle on the frame. See Figure 3 for details of the linkage piece.

The length of the T bar and the linkage piece can be made in many different sizes.

Software

  1. #include <Servo.h>
  2.  
  3. Servo A,B,C;
  4. #define AMax 180
  5. #define AMin 80
  6. #define BMax 180
  7. #define BMin 80
  8. #define CMax 180
  9. #define CMin 80
  10. #define time 300
  11. int APos,BPos,CPos;
  12. long start;
  13.  
  14. void setup()
  15. {
  16.   Serial.begin(9600);  // start serial for output
  17.   APos=(AMax+AMin)/2;
  18.   BPos=(BMax+BMin)/2;
  19.   CPos=(CMax+CMin)/2;
  20.   A.write(APos);
  21.   B.write(BPos);
  22.   C.write(CPos);
  23.   A.attach(10);
  24.   B.attach(11);
  25.   C.attach(12);
  26.   delay(15);
  27.   start=millis();
  28. }
  29.  
  30. void update()
  31. {
  32.   A.write(APos);
  33.   delay(25);
  34.   B.write(BPos);
  35.   delay(25);
  36.   C.write(CPos);  
  37.   delay(25);
  38. }
  39.  
  40. void up() {
  41.   APos=AMax;
  42.   BPos=BMax;
  43.   CPos=CMax;
  44.   update();
  45.   delay(time);
  46. }
  47.  
  48. void down() {
  49.   APos=AMin;
  50.   BPos=BMin;
  51.   CPos=CMin;
  52.   update();
  53.   delay(time);  
  54. }
  55.  
  56. void moveA() {
  57.     APos=(AMax+AMin)/2;
  58.     BPos=BMin;
  59.     CPos=CMin;
  60.     update();
  61.     delay(time);
  62.     up();
  63. }
  64.  
  65. void moveB() {
  66.     APos=AMin;
  67.     BPos=(BMax+BMin)/2;
  68.     CPos=CMin;
  69.     update();
  70.     delay(time);
  71.     up();
  72. }
  73.  
  74. void moveC() {
  75.     APos=AMin;
  76.     BPos=BMin;
  77.     CPos=(CMax+CMin)/2;
  78.     update();
  79.     delay(time);
  80.     up();
  81. }
  82.  
  83. void exercise() {
  84.     down();
  85.     up();
  86. }
  87.  
  88. void loop() {
  89.   long dt=millis()-start;
  90.   Serial.print("dt=");
  91.   Serial.println(dt);
  92.   if (dt<10000) {
  93.     exercise();
  94.   }
  95.   else if (dt<20000) {
  96.     moveA();
  97.   }
  98.   else if (dt<30000) {
  99.     moveB();
  100.   }
  101.   else if (dt<40000) {
  102.     moveC();
  103.   } else {
  104.     up();
  105.   }
  106. }

What is next

We have a plan add sensors in the three primary directions, and possibly in three intermediate directions. Then modify the software so the robot can move around obstacles.

Karl http://www.coloradomesa.edu/~kcastlet