
Podex
Hexapod Walking Robot
For two years I significantly devoted time to a project that provided much success and accomplishment. I designed, created, assembled and coded this hexapod robot in its entirety. With 19 actuating servos, it has been both a challenge and pleasure to construct. This project has provided countless hours of personal experience in the fields of manufacturing, design, electrical engineering, advanced circuitry, computer science, and language coding. The significance of this project was not the final product, but rather the educational journey I took to get there. Every step presented an issue I had to overcome and learn from. Extensive research, persistence and old fashion trial and error propelled me to success. My understanding and knowledge grew significantly in conjunction with my problem solving skills.
Design
SoftWare
Electrical
Coding

From an Idea to CAD
CAD Designs and Inspirations
I was never able to complete this project in its entirety. Too costly and time consuming. I did however get the lower half to work as intended. I was inspired by a video on youtube to make a hexapod robot that would walk and roll around. This is not however, a kit of any kind. I designed the robot from scratch in Solidworks referencing only a few pictures. The see-through sections are the convex surfaces on the left that will surround the robot completely, but are removed for visual presentation. This is a virtual representation of the physical robot which is mostly 3D printed.


Problem Solving
Engineering Mindset
Several things made this project quite challenging. The limited space within the robot meant that I had to be very creative with where everything fit into place. For instance a big singular battery would never have fit inside the robot. To overcome this I used 6 batteries wired in parallel that fit perfectly within the legs of the robot. Doing this made room for the electronic components and much more. With so many moving parts many other things had to be thought of in order to make things work. The CAD was so demanding on the computer that I often had to work on a single leg as shown in the pictures.




Prototyping
Part Iterations
Transitioning from CAD to a physical object proved very difficult, requiring many iterations of a single part. I independently manufactured every structural piece of the robot. The only parts I did not construct are the electronic components and the nuts and bolts. In the image shown, that single part in particular went through roughly 7 iterations of design. Each time accommodating for more stability, strength, dynamic movement and durability. Over the course of the entire design process and fabrication of the robot, I completely redesigned the robot calling the CAD design 2.0. An entire new file, a new iteration of the robot was created to accommodate for everything I learned while putting the robot together.

Motherboard
Raspberry PI
When I started this project I did a lot a research. I realized that an Arduino would not have the processing power to keep up with what I wanted to do. This is what lead me to the Raspberry Pi! I watched an entire series on YouTube to learn how to use the motherboard from beginning to end. I learned how to connect wirelessly to the motherboard to being able to run python scripts on startup. I learned to love the little computer and it did everything I wanted.
Servo Hat
Adafruit 16-Channel PWM
This hat is what allowed everything to happen. Such an elaborate hat gave me the ability to control the 19 servos I was using. Using this board taught me about using board address and libraries that I had to download and use in my coding. The robot actually uses two of these hats in order to connect all of the servos.

Graphical Interface
GUI Control Pannel
This was almost another project within itself. Using an interactive software called Qt Designer I made a GUI that was able to control every aspect of my robot. Qt Designer did most of the dirty work creating the code for the placements of buttons and text. However, I took the inputs of the buttons and sliders and created useful inputs to the code I had created for the hexapod. The hexapod could actually use its motherboard to broadcast its own Wifi so I could control it outside the house. I also created a thread socket so I could interact between the control computer to the motherboard.

Capacitors
Need more power
After some initial trials with the robot I realized that the legs were being sporadic in motion. After hours of frustration thinking it was a coding problem a help form came to my rescue. My issue wasn’t my code at all but my hardware. I was using so many servos that I needed more reserved power. This means I needed capacitors, and a lot of them. The right capacitor was too tall to fit in the desired location so instead I wired 5 capacitors in parallel to get the desired result. Taking physics in high school helped me understand how to do that.



Voltage and Current
Trial and Error
Since this was the first project I ever embarked on I didn’t even design places for key and essential electrical components to go. One fireball too late and I realized their importance to electrical systems. In one of the surrounding pictures you can see the old school glass tube fuses. I initially chose these because I was able to implement it into my design easily. Soon I converted to the updated blade fuses. The electrical circuit I had created was complete and functional. From 6 batteries wired in parallel, to a 10 AMP blade fuse, to a voltage step down which is pictured, to more blade fuses that lead to the three boards that were all then grounded. It was quite the feat.



Learning from Scratch
Python Code
When I say this was my first project, I mean it. I learned python from scratch to make this thing happen. I have had no prior experience with coding before. I began by buying a book, Learning Python the Hard Way, reading it and doing its exercises. I learned most of what I know from that book. It wasn’t until a year later that I enrolled in a computer science course at my high school. Using multiple libraries to interact with the hat and the servos made coding more simple. It was a big task to not only learn how to code, but also a challenge to come up with the necessary underlying structure on how to run the movements of each step.
Generations of Code
Coding with new ambitions
With time and after learning new implementations of code, old ways became obsolete. I laugh at myself now, but I was so ignorant at the beginning. Just a kid trying to do anything I could. With new implementations of classes and more well constructed methods, I reduced thousands of lines of code down to hundreds, and then under 100. Each time I learned a new major implementation that required a complete restructuring of my code, I called it a new Generation. This lead me to develop Gen 2, 3, and 4. All of these generations performed exactly what I intended them to do. It was beautiful. It wasn’t until Gen 5 that things got tricky.


Generation 5
The End of Podex
In the surrounding picture you can see a snippet of Gen 5. This was sadly the nail in the coffin for the project Podex. I was too ambitious for the time, math, and coding skills I had at the time. This new generation didn’t implement new code syntax, but rather completely altered the way the robot moved completely. Instead of using hard coded memory positions for the legs to follow, I could from the remote, tilt the robot’s structure angle and height, and the legs would adjust to fit the new position. This involved very complicated geometry including trigonometry, law of sines as well as other functions. It was the combination of this math and code that lost my ability to continue with the project.