The challenge:
Build a walking robot from scratch using a Raspberry Pi as the main microcontroller, while designing, fabricating, assembling, and programming all major mechanical and electrical systems.
The Result:
The final result was a four-legged robot inspired by the Slinky Dog character from Toy Story, powered by four servo motors and controlled by a Raspberry Pi. Through multiple design iterations and gait optimizations, the robot achieved a final walking speed of 2.31 cm/sec while maintaining consistent forward movement and improved stability.
As part of the course requirements, we were asked to document and present our progress throughout the semester. This portfolio provides an overview of the key stages of development, from initial concept to final optimization. For a more detailed breakdown of my full design and testing process, additional documentation can be found in the accompanying PDF presentation.
The first step of the process was sketching the initial design concept, followed by creating a full 3D CAD model using my preferred software, SolidWorks. This stage allowed me to visualize the robot’s structure, proportions, and assembly before fabrication.
For the physical build, I 3D printed all structural components using PLA, then sanded and painted each part for a cleaner final appearance. Once the parts were finished, I assembled the robot according to the CAD model.
After completing my first iteration, I realized several mechanical improvements were necessary. I added additional attachment points to the supports so they could be more securely fixed to the robot’s body, improving structural stability. I also redesigned the bottom of the feet to have a curved shape, which allowed for a more effective walking motion and better overall balance. After implementing these design improvements, Slinky Dog 2.0 was ready for testing.
The next major challenge was developing a functional walking gait. To do this, I first tested the extreme forward and backward angles of each motor, along with each leg’s home position. After recording these values, I used them as the foundation for programming movement sequences.
I experimented with two primary gait styles:
A sequential gait, where each leg moved individually one at a time
A diagonal gait, where diagonally opposing legs moved together
While the sequential gait provided movement, the diagonal gait offered better balance and smoother forward locomotion. My robot’s initial walking speed was approximately 0.155 cm/sec. Although this speed was very slow, the early priority was stability and consistency rather than speed, ensuring the robot could move reliably before further optimization.
To improve the robot’s walking speed, I first focused on software-based optimizations. I increased the gait’s extreme swing angles, reduced delay times between movements, and adjusted walking sequences to create a more aggressive stride pattern. While these code adjustments increased leg motion, I quickly realized the robot’s feet were slipping rather than effectively pushing against the ground.
This led me to recognize that traction was one of the most critical limitations in my design. My first solution was adding rubber strips to the feet, which significantly improved performance at first. However, with repeated testing, the rubber collected dirt and gradually lost effectiveness.
Next, I experimented with TPU 3D-printed foot covers, which provided some improvement but still lacked sufficient grip. Finally, I added self-adhesive silicone pads to the feet, which proved to be the most effective solution. This final combination of software optimization and mechanical traction improvements allowed the robot to reach a final speed of 2.31 cm/sec.
One of my biggest takeaways from this project was the critical role that foot traction plays in walking robot performance. Even with a properly programmed gait, insufficient traction prevents effective locomotion because the robot simply slides rather than generating forward propulsion. This project reinforced how important it is to design walking robots with both software and physical interaction with the ground in mind.
If I were to continue this project for another semester, my first priority would be redesigning the feet to include an integrated TPU base rather than relying on external grip solutions. I would also expand the robot from four motors to eight motors, giving each leg additional degrees of freedom for improved turning, gait complexity, and obstacle avoidance. With these additional capabilities, I would integrate the IMU more fully into the system, allowing for balance correction, environmental awareness, and more advanced navigation behaviors.
Coding
The programming side of this project was centered around using Raspberry Pi to control servo movement, test motor limits, and iteratively optimize walking gait patterns. Through multiple revisions, I developed and refined the code to improve stability, increase speed, and experiment with different locomotion strategies such as sequential and diagonal walking. This process involved testing motor angles, adjusting gait timing, and continuously troubleshooting hardware-software interactions to improve overall performance.
If you’d like to explore the full codebase, including walking algorithms, testing routines, and project iterations, feel free to visit my GitHub repository for a more in-depth look at the development process.