Designing a Quadruped Robot – Part 1
With the recent addition of a CNC router to my workbench, I wanted to start a project that really made use of its capabilities. I felt like a walking robot would be a great mechanical design challenge as well as a fun programming exercise.
My initial design goals for this robot:
- Either 4 or 6 legs
- At least 3 degrees of freedom per leg
- Controlled by a Raspberry Pi
- Most mechanical components made on my CNC router
- Use robotics servos such as Dynamixel or Herkulex (mainly to gain experience using them)
- Maximize on battery capacity (within reason)
After looking at the price of robotics servos, I decided this robot will definitely have 4 legs with 3 degrees of freedom per leg. The cost would already be pretty high at this point. Luckily the Raspberry Pi is cheap…
I considered both the Dynamixel AX-12A and Herkulex DRS-0101 servos and researched them extensively. I was leaning toward the Dynamixels because they’ve been used for many quad/hexapod robots and seem to work well for others. That said, the Herkulex servos look awesome and I’ll probably try them out next time.
I initially bought 3 Dynamixel AX-12As so that I could play around with leg designs. Within a day or so I had a prototype:
The gray brackets were included with the servos. Eventually I may try to make one unified bracket, but it works very well for now. In this design the femur (connecting the two servo horns) and the tibia (which comes to a point that acts as the foot) each have an effective length of 100mm. It looks a little long, but these servos have 16.5 kg-cm of holding torque which should be plenty as long as the body doesn’t get too heavy. The main flaws in this prototype were that the ends of the femur that mount to the servo horns were so large that they covered up the connectors on the back, and the support plate that spans the two femur pieces was too short. But the prototype gave me enough confidence to order the remaining nine servos.
I designed a simple body that would hold the four legs and the Raspberry Pi, and redesigned the legs to address the problems I found in the prototype. Once the rest of the servos arrived I put everything together, resulting in this thing:
When I looked at it at first, I felt like the legs were way too long. I thought about it for a while, and came up with something that required me to design a new type of foot:
This used almost all of the brackets that came with the servos, and ended up looking pretty awkward in my opinion. In addition to that, the legs are barely any shorter. Back to the old design.
In part 2, I’m going to talk about the theory behind making a robot like this move. So dig out your trigonometry textbook and stay tuned…