Champaign-Urbana Community Fab Lab
Illinois Informatics and School of Information Sciences
Champaign-Urbana Community Fab Lab

Locomoting Pom Pom Bot Assignment

For this week’s assignment, we worked with Arduino to create locomotive pom pom robots.

In lab, we explored servo motors and played around with the servo example sweep code. We added a second servo and tinkered the code to gain a better understanding of the operations. We had a few minutes to change the delay, angles, and positions.

After, I sketched a rough concept of my locomotive pom pom bot. My idea was inspired by the way penguins move; they waddle. To mimic the movement, I played around with angles and started off with two sweeping 90 degree angles to act as the feet.

IMG_2088

IMG_2110

Initially, I thought I would make my pom pom robot out of a bunch of pom poms but ended up using foam because I needed a more stable overall structure. Instead of cutting and crafting the parts of a penguin, I decided to origami fold one. I had to super clue the folds down because I was using a thicker material. Then I fashioned platforms to which I would connect the penguin to the servo motors using popsicle sticks. And taped around the servo motors to the popsicle sticks to be positioned on the ground surface.

The initial construction of the pom pom bot had difficulty moving because the way base structure of the foam restricted flexibility in movement. Therefore, I had to do a bit of tinkering of the prototype. I cut the tail of the penguin down the middle to allow for better mobility. Therefore, the servo motors could begin to movie from A to B at 90 degree angles.

IMG_2114

After, I just had to adjust the positioning of the servo motors because they were at an angle of each other, rather than parallel. As well, I had to tinker the code in order to get the servo motors to move in the same direction if I had flipped the motor in order for the servos to be positioned with the rotating bit on the outside of the bot. This was the final code:

Servo myservo; 

Servo myservo2;

int pos = 0;    // variable to store the servo position

void setup() {

  myservo.attach(9);  // attaches the servo on pin 9 to the servo object

  myservo2.attach(11);

}

void loop() {

  for (pos = 0; pos <= 90; pos += 5) {    

    myservo.write(pos);           

    delay(15);                   

  }

  for (pos = 90; pos >= 0; pos -= 5) {

    myservo.write(pos);         

    delay(15);                 

  }

  //second servo

    for (pos = 90; pos >= 0; pos -= 5) { 

    myservo2.write(pos); 

    delay(15);                 

  }

  for (pos = 0; pos <= 90; pos += 5) { 

    myservo2.write(pos);         

    delay(15);                 

  }

  }

I tested the bot once more and found that it waddled exactly how I wanted, which I was really content with. I added a few decorative features, and I would actually say that even though it wasn’t a drastic change, it seemed to slow the bot down a bit. But it still moves from A to B. If I had to redo the assignment, I think I would elongate the connections of the rotating bits of the servo motor  in order to get the penguin possibly to move in longer strides and to essentially mimic the feet of penguins, and then probably design it in some way so that it looks like so.

IMG_2115

IMG_2116

Tags: , ,