Champaign-Urbana Community Fab Lab
Champaign-Urbana Community Fab Lab

Locamoting Arduino Pom Pom Robot

Initial Concept/Design

For the initial concept and design, I was inspired by the movement of how a penguin waddles. Thus, for the pom pom bot, my goal was to make a penguin robot with a movement that was as close to a waddle as possible!

For the bot to walk, I planned on using 2 servo motors as the feet of the penguin. I would use the one sided attachment to the servo motors for each foot. My bot, as stated, would look like a penguin. In order to make this bot, I planned on using felt, foam, googly eyes, pipe cleaners, Popsicle sticks tape, and glue. 

Below is a picture of my original notes and sketch for the initial concept.

My initial design for the bot. I had actually planned to use 4 servo motors. Two would be used for flapping the arms, but I would soon scrap this idea.

Initial Construction/Prototype

For the initial construction, I set up the two servo motors and used the attachment that had two sides, where one side was longer than the other. I made this change because I figured there would be more stability to the bot. I connected these servo motors by taping them both to a Popsicle stick. There was also a Popsicle stick attached to the middle of the connecting Popsicle stick. This second Popsicle stick would have the breadboard taped to it and, eventually, the penguin. 

Below is a picture of my initial code:

My initial code for the penguin bot. It was not very complex because the two servo motors always moved at the same rate.

Below is a video of the initial construction:

The movement as seen in the video is more crab-like rather than waddling. As a result, for the redesign, my approach would be to make the movement of each servo motor to be slightly different. 

The biggest challenge for this stage of the design was structuring it so that it wouldn’t fall backwards as it moved. Because the breadboard was taped to the back, the weight from it made it easy for it to fall over.

To improve it, I will mostly be focusing on improving the code so that the movement is more like waddling, and so that maybe it won’t jerk too much when it moves, which is part of what caused it to fall over. There won’t be any different materials for the 2nd prototype.

2nd Prototype

The focus for this second prototype was to correct the movement of the bot. My initial update to the code actually didn’t work as I had intended. My intention with the modified code was the have the motor for the right foot turn quickly when rotating clockwise and have the motor for the left foot turn quickly when rotating counter-clockwise. Though I correctly had the quick rotation on clockwise set for the right foot, I had the quick rotation on counter-clockwise also set on the right foot. This can be seen in the code below. There is also a video below that shows what this looked like. 

Looking at the second loop in loop(), you can see that my conditional applied to servo2 (right foot) instead of servo1.

Looking at the video, you can see that the right foot has a jerky motion in both directions, whereas the left foot rotates smoothly in both directions. This is because of the errant code. 

Below, you can see my corrected code and the video of the corrected movement.

Looking at this code, you can see that the left foot is now having its position set in the conditional in the second loop.

Looking at the video above, you can see that the right foot turns more sharply when it rotates clockwise, and the left foot turns more sharply when it rotates counter-clockwise, giving the bot more of a waddling motion. 

In terms of improvements for the final version, the bot was still having trouble staying up when it was moving. Thus, my next objective would be to stabilize the bot more and even the weight out a little more, while also adding the final touches with the felt, foam, googly eyes, and pipe cleaners for the actual penguin.

Final Pom Pom Bot

For the final bot, I improved the stability by adding several Popsicle sticks on top of the servo motors to balance out the weight of the breadboard. I also added an additional two Popsicle sticks: one that was parallel to the vertical Popsicle stick and perpendicular to the horizontal one, and one that was lodged in between the other new vertical one and the previous one. The second one was added so that the bot would be taller and would support the full penguin that I made from the felt and foam. Below is a picture of the bot without the penguin attached and a picture with the penguin attached.

The final bot without the felt+foam penguin attached. Note the four Popsicle sticks on top of the servo motors and the additional two vertical Popsicle sticks.

The final bot with the penguin attached!

Here is the Google Drive link to the final bot video: https://drive.google.com/file/d/1xpnezsJ8GEvwFD2q6kZvsk7Tn0o7fQAW/view?usp=sharing

In the video, the orange pipe cleaner is Point A and the brown pipe cleaner is Point B. In the video, you can see that the bot successfully moves forward from Point A to Point B!

In terms of how this final bot differs from the original concept, the only real difference is that this bot does not feature the flapping arms that I originally planned to make. This was primarily because one Arduino would not be capable of sustaining 4 servo motors at the same time without an external battery as a power source. 

Overall, there wasn’t anything too new about this design process for me because I am a computer science student. Thus, having to update code and improve a project’s design structure was something that I was relatively comfortable with! If I had to approach a similar problem in the future, something I would do differently is evaluate whether there is a need for additional power sources like a battery. I think I could have made a much cooler penguin if I had the battery and necessary connectors for it!

Tags: ,