The process of working with Arduino and motors began with our in-class activity, in which we needed to make use of a motor in some way/shape/form. After being inspired by our rooster-themed scratch paper, I decided to build a scene that involved a man in a house opening his front door, seeing the rooster that had likely been obscenely loud that morning, and then angrily shuts the door.
Here it is in action!
And here’s a view of the inside of the house:
The hardest part of working with this setup was aligning the servo to move the door in the way that I wanted to. I wound up benefiting from using a flexible pipecleaner to represent the angry man’s arm, since I didn’t have to get the angles exactly right to get some good movement. Playing with the arduino code was fun, I have a CS background so I felt pretty confident moving forward with the later iterations of this week’s assignment.
Onto the main project! Since I only had access to two motors, I wanted to try basing my design off of a water strider:
They seem to have a good sense of balance since they can walk on water, and while I had no expectations for my robot to do the same, I think the long, straight legs would correspond well to the way that I could setup the servos.
I designed the strider bot to use it’s front 2 legs to move, with another two legs in the back and the front to help with overall balance.
These legs would be put on an angle so that they weren’t vertically sweeping back and forth. I planned to make the base of the bot out of some cardboard, the legs out of chopsticks, and strap it all together with some good ol’ scotch tape.
One of the more unexpected challenges with arduino programming for this bot is that the code has to run single-threaded. Normally I’d like to have the legs programmed seperately and then just run at the same time, but since the code could only run on a single thread, I had to figure out how to setup the legs to move differently within the same for loop. It was a bit tricky to handle, but after finicking with delays and start values for angles, I had something that was relatively close to what I envisioned.
Constructing the bot was a bit tricky, since I had to sit the servos on a very particular angle to get the results I wanted. My roommate recommended that I try cutting holes in the cardboard base I was using to help get the angle I wanted, and I think that worked out pretty okay! I setup the holes and then went crazy with scotch tape to get the motors to stay where I wanted them.
I also found a lot of difficulty getting the static legs to work right. taping them vertically was tricky, and putting them on an angle was also difficult. For the sake of the prototype, I tried using both a vertical and angled orientation to see which one worked out better. For the angled legs, I cut V-shaped holes on the edge of the cardboard and slid them into place, and securing with scotch tape. That worked pretty well!
As you can see in the video, the StriderBot wasn’t exactly keen on wanting to move around. I also had some issues with the scotch tape not adhering well, and there were many failed video attempts where I would have the bot start trying to move, but then a leg would fall off or something.
For StriderBot 2.0, I wanted to counteract some of the non-moving issues by changing the angle of the static legs to be less vertical, so that the moving legs would push against the ground more. I also accidentally discovered that if I put all of the legs at the same angle, the top ends of the chopsticks could be taped together to provide some additional structural integrity!
I also wanted to implement something at the end of the servo chopsticks that would give more traction when the bot was moving around, so I attached wrappers to the moving feet.
In addition, I decided to secure some of the loose ends of the robot with Duct Tape. The only duct tape I had in the house was wood-themed, so between that and the cardboard and the chopsticks, striderbot has some good woodland camouflage going for it.
I also changed the pacing of the bot’s movements so that it would move back and forth a tad bit quicker.
And here is the redesigned bot!
As you can see, the results were still less than ideal for this revision, so I would need to pursue either stronger servos, or a better grip on the legs. Perhaps sandpaper might be a good option.
And here is the final version of the code for my robot: