# Robot Leg Torque Tutorial

The Robot Leg Torque Tutorial is intended to compliment the RobotShop Leg Torque Calculator found in the Dynamic Tools section of the RobotShop Learning Center. This tutorial explains how to find the torques acting at each degree of freedom of a 6-legged (hexapod), 3DOF / leg “insect” robotic leg.

Hexapod (6-legged) robots are most commonly configured in either two rows of 3 legs (3+3) or at 60 degrees from each other and equal distance from the center. This tutorial will explain only the 3 + 3 configuration. With some modification, the equations can be adapted to find the torque required at each joint of an n-legged walking robot with “insect-like” leg configuration.

### Dynamic stability:

A dynamically stable walking robot must be in motion in order to prevent it from falling over. If the robot were to stop while walking (walking pattern can also be referred to as a “gait”), the center of mass would cause it to fall over.

### Static stability:

A statically stable robot can be stopped at any point during its gait and it will not fall over. In the case of a hexapod, so long as 3 legs are always in contact with the ground and the center of mass is located within the triangle formed by these feet, it will be statically stable. This tutorial considers only this situation, as shown in the image below (N is the “normal force” the ground exerts on each foot):

The links that make up an “insect” leg do not necessarily need to be perpendicular to one another, as shown in the image below:

The angles are taken between the horizontal and the link and it is assumed the legs are configured the same on both sides. The following assumptions must also be made in order to simplify the calculations and inputs required:

1. 6 legs, configured as two rows of 3.

2. All the legs are identical

If you are unfamiliar with the concept of torque, you are encouraged to first read through the Robot Arm Torque Tutorial. In order to find the torque acting at each joint, a free body diagram must be drawn. All supporting legs must be considered:

N1,2: normal (reaction) force

W1,2,3: weight of each actuator (W2,3 are assumed to be very close)

W4: Weight acting at the center of mass

T1,2,3,4: Torque acting at each joint (each side is different)

In order to determine the torque T1 acting at the “knee”, we must assume that the rest of the structure is rigid (not moving). Similarly, when finding T2, acting at the “hip” the rest of the structure (including the torque T1) is considered rigid. If you are uncertain as to the direction of the torque, consider applying torque in the opposite sense and notice that the leg would retract. The links are considered to be massless. The torques T3 and T4 will be different than T1 and T2 because the central weight is not being supported equallay among the three legs. In this case, T1>T4 and T2>T3, so we will only calculate T1 and T2 (an actuator is chosen based on the maximum torque required).

The weight W4 acting at the center of the robot when 3 legs are raised is a combination of various parts below:

The weight of the robot is assumed to be evenly distributed on both legs on the right side, so the reaction forces, N2 and N3 are equal. Three legs must support the entire weight of the robot, as well as their own weight:

The value of the normal force N2 can be found by doing a torque balance about N1:

Although long, the equation uses only known variables, and since the combined torque about the left foot is zero, this equation will allow you to solve for N2. This value is inserted into the equation above, to solve for N1. Using conventional notation (counterclockwise is considered positive) we can find the torque about the knee joint:

The above equation considers that there are three legs supporting the robot on the right side. As with the previous equation, the sum of the torque for an object not in motion is zero (in this case the leg is simply supporting the body and not moving). The torque needed at the hip joint can be found as well by doing a torque balance about that point:

Once more, the total torque about the point is zero because it is not moving, allowing you to solve for T2. At this point, there are two different approaches you can take: one decision is to make all 18 motors identical, while the other is to select motors based on the torque required at each joint. There are arguments to both and the decision is yours. The final torque to calculate, exerted at the shoulder, is used to propel the robot forward.

Keep in mind that a hexapod with three degrees of freedom per leg has a total of 18 degrees of freedom and as such there are configurations possible where less torque will be required when climbing an incline. One example of this is when the rear legs are used to push the robot up the incline, while the front legs pull it up.

In order to find the torque required to move the robot up an incline with each leg positioned identically to the rest, a different perspective must be chosen. If your robot will not encounter steep inclines, or will move in roughly horizontal planes, then it is a good decision to choose the same motor used in either the knee or the shoulder.

The torque calculation required is similar to that of the Drive Motor Selector Tutorial, where the maximum torque will arise when the robot is on an inclined surface. The difference in perspective is such that the “wheel” is placed horizontally rather than vertically. The force of friction acting on the three feet (the other three are raised) is what allows the robot to move up the incline. In the first scenario described here, the robot must simply maintain its position on the incline.

The reaction forces counteract the weight of the robot which would otherwise cause it to slide down the incline. The magnitude of the weight of gravity along the slope can be calculated as:

A torque balance about the left shoulder actuator gives:

In order to move straight, the force on the left side must equal the force on the right side, otherwise the robot would begin to turn.

The torque T2 will be less than T1, so a second equation is not necessary.

The torques above represent the required to keep the robot stationary and does not include the extra torque required for motion. When looking for an actuator, you are encouraged to add 25% to each torque as a safety factor.

### Website

Hexapod Robot Development Platforms

Lynxmotion Robotic Leg

This is a companion discussion topic for the original entry at https://community.robotshop.com/tutorials/show/robot-leg-torque-tutorial

hi… ur tutorial was very useful. i was wondering if u could provide a similar tutorial for a humanoid robots leg torque calculation (bipedal walking movements).

Thank you

Hi, I use the equations above but there is a problem. Torques never changes when I change the robot weight. Can the torques be independent from robot weight?

The weight of the robot has a direct correlation to the torque required by each joint. If you can spot an error in the equations, we are more than happy to take a look.

Hey, I;m working on designing a hexapod and stumbled upon these majestic equations! Thank you so much! I was just wondering where the part of 6*(W1+W2+W3) comes from, with emphasis on the six times

@Nick The total weight of the robot involves the weight of the center (W4), plus the weight of the six legs. The weight of a leg comes primarily from the actuators, which are not assumed to all be equal (W1, W2 and W3). When a robot is walking in a tripod gait, only three legs are supporting the weight of the body and all six legs. It is a bit of a simplified model, but it does the trick.

This tutorial is simple and complete. Thanks!
I was wondering about a passage, it’s just curiosity but it would be helpful if you could answer.
When we calculate the weight of the robot (W4) we add the weight of three legs (W_3legs) wich I assume are the raised ones.
In the next equation we find the sum of the reaction forces adding to W4 the weight of the actuators 6
(W1 + W2 + W3) of all six legs.
So here’s the question:

• If we assume that a leg’s weight is equal to it’s actuators “(W1 + W2 + W3)”, then why do we count “W_3legs"? Aren’t they alredy considered in "6(W1 + W2 + W3)”? don’t we count three more legs like this?
• If instead we assume that a leg’s weight is equal to “W_leg + (W1 + W2 + W3)”, then why don’t we consider a “W_6*legs” in the W4 equation? don’t we miss part of the weight of the three ground legs?

Hope i didn’t say nothing (too) stupid. Bye!

@Gulferamus
Q1 If we assume that a leg’s weight is equal to its actuators “(W1 + W2 + W3)”, then why do we count “W_3legs”? Aren’t they already considered in “6(W1 + W2 + W3)”? don’t we count three more legs like this?
You are entirely correct. The equation should not include 6*(W1 + W2 + W3)

Q2 If instead we assume that a leg’s weight is equal to “W_leg + (W1 + W2 + W3)”, then why don’t we consider a “W_6*legs” in the W4 equation? don’t we miss part of the weight of the three ground legs?
Correct again - we’ll update the equations as soon as we can and thank you for bringing this to our attention.

what is the value of the t5?

in the torque balance equation for left shoulder what will be the unknown values and what will be the known values… pls explain thank u

@rathan The values will depend on the angle of the actual position of the robot. You need to fill all the values in the equation with your robot par lengths and angles, there is not a single fixed value.

@rathan As mention in the other reply, the value of T5 will vary according to the robot parameters and the angle of the legs. This is not a single value. You need to fill the formula with your parameters ( lengths, angle).

Hi! I have a question on the calculations of the torque in your tutorial. How can you say that the torque of the joint motor is working in one direction (counterclockwise), while the motor actually creates a torque in the opposite directions for the links attached on each side?

@IHaveAQuestion, we are not sure we understand your question. The torque direction is different on each side. On the left it is counterclockwise but on the right it is clockwise. It is just that, by convention, you will have positive torque value on the left side and negative torque values on the right side.

Hi! Thank you for great tutorial.
I have a question regarding base motors. Why do we only do calculations for vertically moving motors and not for horizontally rotating one?

Hi! Thank you for step by step guide!
I have a question regarding torque. I have a 2DOF hexapod. One of servos makes leg move horizontally, another one makes it move vertically. So during torque calculation I will have both T1 and T2, right?

@Shineelove T5 and T6 give a bit of an overview of the torque needed by the “horizontal” motors; these are only really needed when walking up or down an incline. Normally if you reuse any of the motors used for vertical motion in this position, it will provide enough torque. It’s a bit of a simplification, but makes calculations and experimentation significantly easier.

@shineelove Correct. the torque required to keep the robot’s body at a height above the ground will be greater than than used to propel it in parallel to the ground. To make things easy, it’s best to simply use 12 identical motors.

Hi, thank you so much for the formula. Just a precision, what unit of calculation are you using for the actuators and links? in oz? gram? mm? cm? Thanks in advance.

@Samsara The tutorial does not make use of units - it’s equation-based. W is a measure of “weight”, L is a length, N is a force and the units of T are force times a distance. We suggest using similar units when doing your calculations (imperial vs metric etc).