My initial thought was to create an AT-AT walker from Star Wars. The idea was to build it with an upper rectangular structure and four motors with popsicle sticks attached to act as the legs. The movement would be as follows: front left, back left, front right, back right. This came from the actual movement of an AT-AT.
Upon initially building prototype #1, I found this movement would not be possible with just four motors. The real AT-AT has many joints and re-creating it’s motion would require many more than just four motors and popsicle sticks. In the first prototype above, I tried mimicking the real AT-AT’s movement, but it just kept falling over. As for the software in the first iteration, I tried overcomplicating it at first but then nothing really worked much at all, so I simplified it greatly. It ended up as just the basic servo code, but repeated code for each of the legs to move at different times. I decided that since this still didn’t work, I should take another movement approach.
For my next prototype, I decided to completely change the movement pattern and add some weights to the upper body to stabilize the robot.
For the movement, I thought of moving the front legs together and the back legs together. If the front legs move forward to a greater angle than the back legs, with a weight above them too, I believed that would cause the robot to move.
One problem that I encountered here was that the legs position was not being updated in the code. I asked a friend for help and we figured that it was because I was passing the position by value and not by reference.
In the case of the first iteration, it did move generally in a direction, but turned at unpredictable angles. I had to find a way to fix that for the final iteration.
For the final iteration, my goals were to:
- fix the movement so that it moved fairly straight in a direction
- make it ‘wireless,’ in that the wires and battery would all be inside the upper body
- cover up as much of the wiring as possible, while still allowing the battery to be connected/disconnected.
To fix the movement in a random direction, I modified the code slightly and added rubber bands to the front two legs. This combined definitely helped it move in a fairly straight direction.
I also added some more popsicles to the top section of the body, so it could hold all of the electronics inside without falling out.
Once I glued that together and stuck the electronics inside, I confirmed that it still worked. It did, so I covered up most of the upper body with painter’s tape, leaving some spaces for battery connection/disconnection.
This project overall was fairly challenging. To move the four motors at the right times and the right amounts, without causing the robot to become off balance and fall over, was quite difficult. At one point it nearly fell off the table. I learned once again, that starting out simple is nearly always the way to go. When the first prototype for anything is overcomplicated, it will not be possible. Starting out with an easier design and working up from there is much more feasible.