An Inexpensive & Open-source Quadruped Robot

Buy Pupper by Amazon or Paypal or Bank transfer

For more information, please refer to buy FAQ link, or send mail to us, sales@mangdang.net

  • Complete Kit for Student is all the same with Complete Kit.
  • The complete kit includes all the parts and materials to build and program the Pupper, such as PS 4 Controller, battery, battery charger and tools. 
  • PCB is pre-soldered, pre-assembled, Quality Control tested and guaranteed.
  • The price does NOT include the tax fee.

Setup and play Pupper Quick user guide

Play Pupper








Video( Step1Step2, Step3)

Install Software



DIY Pupper journey with low-cost

Have you ever seen Boston Dynamic’s robot dog video? Have you ever dreamed that you can also DIY the most avant-garde and technologically 12-degree robot dog? Now the dream become true!

Stanford Pupper is a small quadruped robot that can hop, trot, and run around. Its low cost and simple design will allow robot enthusiasts in K-12 and beyond to get their hands-on fun, dynamic robots.  

The robot is designed to be “hacked” – we want you to be able to adjust and expand the robot’s behaviors to your heart’s content. While the robot can walk out-of-the-box, some of the features you could add include different gaits (bounding, galloping, etc), or high-level behaviors like playing fetch or following you around. You can also simulate the robot’s motion in PyBullet before touching the real robot.  

In summary, about price, if you buy all the materials from our site, Pupper BOM cost will be much low, otherwise, it is difficult at less than $1000. About Loctite, I don’t suggest you use Loctite at first except you have enough experience. Our materials will let you make assembly as easy as possible.

About the detailed assembly guide step by step, please refer to here. For the detailed video guide, please refer to Step1, Step2, and Step3.

About Hip Assembly step3, please attention to the angle, refer to the below pictures.

About Hip Assembly step10, during screwing into standoffs, don't tighten the screws too much, otherwise, you maybe meet the below questions whether the 3D hips are made by SLS Nylon PA12 or FDM ABS or SLA resin.

About Body Assembly, plug the servo cables into the custom circuit board in this pattern shown below.

Hope you will love Pupper soon! If you have any questions, please feel free to let us know by mail.

Design document

For the Fusion 360 CAD model, please refer to below officail link.


For the power distribution pcb files, please refer to below officail link.


The source code

The main repository is 


Check out the repository’s README for detailed instructions on how to install the requirements, set up the software, and calibrate and run the robot.

For reference, these additional repositories will be installed automatically when you set up StanfordQuadruped: https://github.com/stanfordroboticsclub/PupperCommand 


Forum support

You can post any questions you might have to the below Google Group, hope you can get a quick response.


Of cause, we supply one-stop solution here, if you buy from our site, we can supply video conference help. 


Q1: The robot cannot walk in the "trot mode". I think the robot's speed is too fast. Can you tell me where I can control the speed of the robot? Also, I want to interpret the dynamics of robot behavior.

A1: You can adjust the frequency of the trot in the config file here: https://github.com/stanfordroboticsclub/StanfordQuadruped/blob/master/pupper/Config.py. Look for the two variables: self.overlap_time and self.swing_time. I unfortunately don't have anything on the dynamics of trotting/walking.

Overlap time refers to the duration which all four feet are on the ground before picking up one pair of legs. Swing_time refers to how long a leg will be in the air per step. One cycle of trot is broken up into four phases: 1) all four feet are on the ground (duration=overlap_time), then 2) one pair of diagonals legs lift up and swing to their next locations (duration=swing_time), then 3) all four feet are on the ground again, and finally 4) the other pair of diagonal legs lift up and move to their next locations. So as you might be able to deduce, one complete cycle of trot takes 2*overlap_time + 2*swing_time.

If you'd like to slow the trot by 2x, then you can double each of these values to overlap_time=0.2 and swing_time=0.3. However, the robot becomes unstable if the frequency isn't quite right and you'll have to experiment a bit yourself.

We unfortunately don't have a walk implemented since walking is actually tricker to implement than trotting. This is because you're actually more unstable during a walk then a trot since a walk is asymmetric.

Q2: How to select Servo?

A2: With regards to choosing a servo, we previously had used the Savox 1260MG which cost quite a bit ($80per) and would overheat very quickly when pupper was just standing. We then switched to the CLS6327HV, which is slightly faster and slightly weaker than the CLS6336 but our first batch of those servos were jittery and was quite noisy. We then bought new CLS6336 and CLS6327 servos, and for some reason (new firmware?), both types were smoother and quieter. In the end we selected the CLS6336 as the official servo in case people wanted to put more payload on the robot. Basically, the main criteria for choosing new motors are 1) they don't over heat 2) can move fast enough to track the swing trajectories correctly and 3) have enough torque to support pupper on 2 feet. For the last requirement, we look for servos with a peak force to weight ratio of at least 4.0 so that when pupper is standing on just 2 feet, it has a T/W ratio of at least 2.0. I haven't tested any servos slower than the CLS6336, but it's possible they'd work too. You might be limited in terms of how fast the robot can walk around.

Q3: About the IMU

A3: The IMU was previously being used to help stabilize Pupper, but we found that even though our compensation method made the robot walk more smoothly, it also tended to make the robot walk with its body tilted to the side (bug, not a feature) so we ended up scrapping it for the time being. The method that we used was like a chicken-head stabilization type of thing, but instead of stabilizing the head, we stabilized the feet, so that even if the robot was falling over, it would still put its feet correctly on the ground. On top of that, we added a small term to attempt to bring the body back to horizontal, but we couldn't find a satisfactory balance between strong correction and smooth walking.

Q4: Is there any theory book for reference?

A4: Please refer to <Legged Robots That Balance> by Marc H.Raibert. Maybe the below paper is also helpful, 

Sen, Muhammed Arif & Bakircioglu, Veli & Kalyoncu, Mete. (2017). Inverse Kinematic Analysis Of A Quadruped Robot. International Journal of Scientific & Technology Research. 6.


Nathan likes the idea of merging the joystick code with the main code and removing the UDPComms dependency. We might still stick with our python PS4 joystick library since then we have control over the rumble and led color.