I'm trying to build a quadruped robot. I studied dynamics and to get an idea, I read and watched papers and videos related to robots like ALof and StarlETH and some more. But since this is my first project it would be pretty difficult to follow everything and technically I won't be able to, because of no prior experience.

To get to the problem, I'm stuck on choosing an actuation method. I plan to build the thing using aluminum and keep it lightweight. Hopefully 10kg and battery powered. so hydraulics is a no go. Currently I am on the designing stage. I have considered using dc geared motors directly on joints rather than -keeping on hip and transferring via gears and chains- to keep the design simple, but I guess it adds more strain on hip motors with my design. due to budgetary limitations and availability, I'm stuck with motors like XD37GB520 (currently 12v 100rpm but can change it) and no harmonic drivers or maxon motors. but I'm concerned with its ability to hold the weight of the robot. if I try to increase the torque capacity I lose angular velocity.

I have also considered about lead-screw and motor method. but have little or zero knowledge about it. I know that the linear actuation's speed depends on the number of threads per unit length of screw and rpm of the motor, but how should I estimated the torque of the motor and the torque or force that can be expected from the mechanism (something like rated and stall torques of DC motors, I suspect stall torque would just depend on screw joints to the leg links) does the torque of the motor only depend on the friction of the nut?

I hope to have the arrangement of motors as followsenter image description here

left: 3 DoFs leg with DC geared motors on each joint top motor is parallel to the drawing-plan.

right: same leg with lead-screw, top screw is in the plane

  1. So how should I select a motor (torque rating) if I want to implement lead screw and motor?
  2. if I'm to stick with DC geared on joints, how much minimum rpm should I keep at a joint? (so that I can try to find a motor with that rpm and torque required).
  3. what is better for this kind of thing dc geared or lead-screw?.

PS: I'm still designing this and I still need to start implementing Matlab or Simulink simulations. So I don't really know which rated torque will be required. I just need to decide on an actuation method to finish the design and move forward.


1 Answer 1


Welcome to Robotics, kingKong. The problem you're facing is a common one - you need to specify the motors, but the motors you specify will add to the load and require larger motors, which add to the load, etc.

The general approach is to add some "headroom" to your design, such that each actuator is capable of meeting your performance requirements with maybe 60% or 75% of its rated capacity. This makes the process of iterative design go a little easier.

You need to establish your project goals - are you trying to create a functional design, or are you trying to create the optimal design? As it stands, it sounds like this is a learning project where you're more interested in getting something that works. If that is the case, then I would urge you to focus more on the details that matter, like the planning software, motion software, sensing and feedback, controls, etc. The actual physical manifestation is less important - if you can get the software right, then scaling up is just a matter of purchasing larger motors. Conversely, optimizing would just be a matter of purchasing smaller motors.

To your question, though: "How do I determine what torque would be required?"

This is where performance specifications, models, and simulations are useful. Here are the useful steps:

  1. Determine how fast you want to accelerate, top speed, and how fast you want to turn.
  2. Determine how you want the robot to be structured,
  3. From (1) and (2), perform a kinematic analysis to determine the peak acceleration and speed for each joint,
  4. From (2), create a simple model for how the robot will be fabricated - this would be where you specify the material and shape of the linkages, which would give you masses and moments of inertias for each link,
  5. From (3) and (4), perform a dynamic analysis to determine the peak power and torque requirements at each joint,
  6. Double the results of (5) and find actuators that meet or exceed those needs, then
  7. Include those actuators in your model from (4), then repeat 5-7 until your design doesn't change.

This isn't a product plug or anything, but just a mention because you stated you would be simulating in Matlab or Simulink. I have found the Simscape Multibody Toolbox to be super useful for doing iterative design work like this. You can model the parts in Inventor, Solidworks, etc., then import them to Simscape. You can send speed references to the joints and tick the box in the joint settings to have the joint output the torques required to meet your speed references. Then you use those torques and speeds to find the motors, add the motors to the model, and repeat.

  • $\begingroup$ I'll reiterate that you should articulate, to yourself if nothing else, what it is you're actually trying to get out of this project. I would suggest Legos and hobby servos if it gets your project off the ground. Don't spend so much time worrying about what the final capacity will be, etc. Size, trim, appearance - they're all niceties that don't especially matter. Form follows function - get the functionality nailed down first and you can build up around that. $\endgroup$
    – Chuck
    Sep 13, 2018 at 14:35
  • $\begingroup$ thanks chuck. to add something, so far what i found out was that 4 robot legs of the robot are treated as 4 robot arms working independently. and body is considered as the base. when doing the above kinematic and dynamic analysis as you mentioned, should i do the same? but when i think about it, i feel like body might create coupling forces on the legs. (specially in gaits like trotting gait) $\endgroup$ Sep 17, 2018 at 6:21
  • $\begingroup$ @kingKong - Unless your base is fixed with respect to the world frame, I would pick something that makes the diagram easier to manage. For your scenario, I would agree that the body is the best "root" of your kinematic tree. You are also correct in that every action (force/torque) has an equivalent counter-action, and that the counter-action will "ripple" through your structure. You could use DH paremeters to define your system and try to use some existing solvers. $\endgroup$
    – Chuck
    Sep 17, 2018 at 12:46
  • $\begingroup$ I'm a fan of Roy Featherstone's algorithm for solving the dynamics of systems like this. I worked for a while trying to code his algorithms by hand until I came to the realization that I'm offering here as advice to you - articulate to yourself what the focus of your project is. For me, the dynamic solver was a means to an end. It wound up become an all-consuming project for a couple weeks until I decided to abandon my work there in favor of using a pre-written physics solver (Simscape Multibody). $\endgroup$
    – Chuck
    Sep 17, 2018 at 12:50
  • $\begingroup$ Scope your project and try to use existing components or libraries wherever that work lies outside the scope of the work you're trying to do. This gets you faster development, more confidence that the results are correct (or, more importantly, that bugs are due to the more narrow scope of work you have done!), and breaking your project into modules allows you to come back after the fact and update/change something later. If you want to, you can come back later and try to write your own physics solver. Scope, scope, scope! $\endgroup$
    – Chuck
    Sep 17, 2018 at 12:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.