Quadruped Robot Part I: Designing the Leg Assembly

This is the first of a series of posts discussing the development of a small size quadruped robot. This post discusses the design of the quadruped leg assembly, on which I have been working on for the past two months. The quadruped leg design went through a total of three iterations of fundamental redesigning and testing until arriving at the current revision, which I believe to be the most efficient one. This post will go through the  design requirements for the robot, as well as provide a brief outline of each design iteration.

Quadruped Robot Design Requirements

This is a project to build an affordable quadruped robot using off-the-shelf cheap actuators and sensors. The core of the actuating mechanism will be eight servos that will manipulate the four two-degree-of-freedom legs. The robot will necessary be small so as to be controllable by the small servos. The goal is for the quadruped to be able to traverse rough terrain. The robot will be rather slow, with speed similar to the Boston Dynamics Little Dog robot. However, it should have agility in order to be able to traverse non-trivial terrain. Here is a video of the Little Dog robot demonstrating terrain traversal for comparison:

This is more or less what I would like to achieve. To successfully traverse such uneven terrain, a closed-loop design is required. This means that the robot will need to sense the ground reaction force and accordingly take action. So, as an example, if in standing position and one leg does not touch the ground, the robot should probably extend it and perhaps contract the rest of the legs, in order to achieve full contact of all legs.

The “brains” of the bot will most probably be a Teensy 3.5 MCU. Teensy is both small and powerful enough to perform computation of moderate complexity and process sensor input and produce output as required. The actual control approach is not yet final, and will be addressed in detail in later stages. Currently, PCT-based control and Neural Network control are the two main choices.

Quadruped robot mockup
One of the first quadruped robot mockups

First Quadruped Leg Revision – Servos in Series, Load Cell

The first revision of the quadruped leg focused on simplicity of build, in order to test the concept and functioning of the motors as a whole. The servos in this case were mounted on the upper segment in a way that together with a minimal 3D printed support they formed a rigid block. On the opposite side of the servo spline I mounted a 3mm/8mm bearing to support the lower segment against lateral forces. 

This initial test demonstrated satisfactory motion, however I noticed that the cheap servos I used have a different PWM range that standard. In particular, the lower end of the range seems to fall way below 1000µs and the upper end above 2000µs. This lead to a calibration stage and corresponding setting of PWM limits for the MCU.

Second Revision – Scissor System, Force Sensing Resistor

The second revision replaces the in-series servo placement for a parallel placement and a scissor-system to transfer torque. The functioning principle is the same, but the alternate placement reduces mass of the movable leg parts and allows more accurate and smoother motion. On the contrary, it is more challenging to build, requiring tight tolerances between 3D printed parts, bolts and washers.

Read also:  Tinymovr alpha: Production Update #2

With respect to sensing, in the first revision a Load Cell located at the root of the leg measured ground reaction force. In the second revision, a Force-Sensing Resistor mounted close to the tip of the leg replaced the load cell. While the Load Cell is easy to mount and accurate, the tip-mounted FSR gives an immediate ground reaction feedback which should be faster than mounting the FSR at the leg root.

To test this leg prototype I’ve also built a self-standing rig made out of arrow parts and 3d printed corners. The rig is light enough that is easily lifted if the leg pushes against the ground. Therefore it is also a good setup to test whether the leg reaction to touching the ground is fast enough so as not to disturb the balance of the robot body (in a 4-leg configuration). 

Contact test of the second design iteration

Third Revision – Elastic Joints

The main design change in the third revision was to replace the hinge joints present in the second revision with flexible joints printed in TPU. This design decision has two advantages: The first is that it simplified fabrication, as tight tolerances between rigid components were no longer required. The second advantage is that the pre-loading of the legs used to counter the robot’s leg can be embedded in the joint. Previously the pre-loading tension had to be provided externally, using a spring or an elastic ribbon. The last design revision design simplifies assembly by incorporating this functionality. In addition, minor changes to the leg tip offer a lighter and more rigid mount for the FSR sensor.

Gait Test

I’ve tested the last revision with a simple walking gait on the test stand. The results are quite encouraging. The leg maintains, adapting to changes in the terrain. The video below demonstrates the result.


This is the first in a series of posts going over the development of a small size quadruped robot. The post went over the design, fabrication and testing of the leg assembly. The next post will discuss integration and electronics.

This project is also updated over at Hackaday.

What do you think of this project? Share your experience in the comments below!

For more exciting experiments and tutorials, subscribe to our email:

2 replies on “ Quadruped Robot Part I: Designing the Leg Assembly ”
  1. Hey!

    I am really hoping to take this project up. I’ve been trying to figure out your software stack and your approach in this project.
    It would be great if you could help me out or post your work and explain them in a blog here.

    Would love to hear from you.

    Bharath Raj

    1. Hi and thanks for the comment. There is no ‘stack’ really, all the code is a loop going over a fixed gait with early contact detection, run on a Teensy 3.5. Pretty simple as soon as you figure out the inverse kinematics.

      I’m not sure how I feel about releasing the code at this point. Maybe in the future when I have some more time I can consider cleaning it up and putting it up somewhere.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.