Robot Arm Torque Tutorial

Hi @cbenson. First off, thanks for this article.

Your response in this post (Sum of moments) is quite close to what I’ve been looking through the forum for (as is this article itself). I wonder if you could expand a bit more to help me out with something.

Without getting too entrenched in the details: basically, I’m looking to ascertain the inertia of an arm at full extension, so I can find the torque required of a motor to move it at the acceleration I want. From T=I*alpha I know I need to find the value of I to do this.

From what I understand, for each mass I apply I=mr^2 (as though they are point masses, or simple pendulums; I = mr^2 is applied individually to each joint and the load). I’m looking to find the overall inertia including the arm. The arm I’m working with is cylindrical in cross-section rotated around one end. For such a shape I = 1/3ML^2, so would I simply add this to the inertia for each mass? Meaning, in full, the equation for my 3 link robot arm at max. extension would be something like:

I = 1/3ML^2 + SUM mr^2 for each separate mass

Where M = mass(link1) + mass(link2) + mass(link3) = summed mass of all links
and L = length(link1) + length(link2) + length(link3) = summed length of all links

Thanks for any input you can provide!

Like you said, the sum of the torque equals the (sum of) moments of inertia multiplied by the angular acceleration. Keep in mind the moment of inertia of a point is different when it’s at a distance from the axis of rotation (where you’re taking the torque). You need to factor in whatever you can into the inertia. each with respect to the axis of rotation, and determine the angular acceleration, which then gives you the torque needed in the base. This of course assumes the arm is horizontal rather than vertical (like on a human). Like you said, without going into the details, just ensure the moment of inertia properly represent your setup (quite a bit of documentation online for different shapes and their moments.)

@cbenson All sounds good. Thanks for taking the time to reply - much appreciated.

Hi, thanks very much for this tutorial – extremely helpful. I’m designing a final arm segment joint (the one that rotates the end effector) to be implemented with an RC style servo which allows attachment of a C clamp across the servo body (as you recommended here: Building robotic arm with servos, attaching joints to horn?). The arm segment will be ~20cm long, < 600g total with center of mass ~3/4 towards the end effector. No loads. It will sweep back and forth in the x-y (horizontal) plane.

What I’m concerned about is the downward z-axis force/torque due to gravity putting extra wear on the servo.

Is there any rough rule of thumb that says if you spec a servo with torque rating equal to say double (or 5x, or ?) the torque that would be required to rotate/lift the arm in the z-plane, that it should be robust enough to withstand this perpendicular force without significantly impacting its service life? Thanks!

@Robo_Matt To confirm, you’re worried about the axial load on the servo’s output shaft (i.e. the direction which would otherwise remove the servo’s horn)? Unfortunately most RC servos are either supported along the z-axis using plastic, plastic ball bearings or metal radial ball bearings. Ideally they would use thrust bearings, which are considerably more expensive. If you know which servo you’re interested in, try reaching out to the manufacturer to see if they have any data regarding axial load. If unfortunately I did not understand your question, can you create a new forum post and include drawings so I can better understand?

1 Like

Thanks for your help cbenson! As suggested I’ve created a new forum post:

( Perpendicular Gravity Torque on Horizontal Rotating Arm Servo)

1 Like

Hello,

can anyone provide some insight on the following.

when some of joints are required to hold its position, the resulting velocity and acceleration will be zero:

How is the controller model estimating the required torque to hold the position?

It would be really helpful, if you can provide some mathematical explanation regarding this.

@aashish05 Welcome to the RobotShop Community. The equations used here are purely static situations (as you describe) and don’t factor in acceleration or deceleration. It calculates a “worst case” torque at each joint where the arm is horizontal, holding a load at full reach. However, the actual “worst case” would be each joint accelerating upward at full reach / extension.

Calculating dynamic torque at each joint is harder given that you need values of inertia, whereas this calculator is intended to be a “starting estimate” for the torque needed at each joint.

Hi @cbenson. First off, thanks for this article.

How can I determine the angular acceleration of each rotating joint with the problem that the acceleration of the ending effectors is always set to 1.2 m / s ^ 2? I do not really understand the factor of safety that you default to 2. And what formula is this factor of safety put into?

Thanks for taking the time to reply !!! I love you !

@NMC Welcome to the RobotShop Community.

How can I determine the angular acceleration of each rotating joint with the problem that the acceleration of the ending effectors is always set to 1.2 m / s ^ 2?

Can you explain a bit more? The 1.2m/s^2 is your own requirement? If so, you would need to determine the motion of the end effector itself as that affects the angles of rotation of the other joints, and therefore their angular acceleration. For example, you can rotate the end effector around the elbow joint without moving the shoulder, or rotate the end effector around the shoulder without moving the elbow.

I do not really understand the factor of safety that you default to 2. And what formula is this factor of safety put into?

This was included as the equations are a simplification of reality. The robot arm will have inertia due to the weight of all parts, and as such, the torque required at each joint will be more than what’s needed to support a payload at full extension. The arm will need need to be able to accelerate from this (static) position against gravity. When reaching that “worst case” position from above, it will also need to accelerate against gravity. Additionally, electromechanical actuators tend not to be very efficient (at least the less expensive spur gearing coupled to a brushed DC motor), and can easily be in the order of 50% or less.

The guide is meant for people who have not begun the process of selecting parts, so the weight of each actuator, the weight of each joint and many other factors are simply not known and cannot be estimated. It’s intended to give the reader a good estimate using “napkin math” of the torque needed at each joint, without being able to include many other factors which are needed only once parts have been selected.

Since you’re curious about the equations themselves, press F12 on the Robot Arm Torque Calculator page, and the equations used are towards the bottom under the function DTArmCalculate(). The equations themselves are quite simple and use only basic equations of the sum of torque acting on each joint. It’s up to you if you want to factor in anything else like the proposed “safety factor”.

2 Likes

Hi @cbenson, how do I find give a mathematical representation of the load torque and transient
torque which is required to include the determination of the moment of inertia for the system with 3-dof?

@Jdiknight Welcome to the RobotShop Community. By “3DoF”, do you mean an articulated arm with shoulder / elbow and wrist, or a “3DoF” like:

Regarding moment of inertia, you’d need it for each actuator and for each link. The more links you have, the increasingly complex the calculations become. As for the shape (for inertia calculations), use something “relatively close” (rectangle normally works well enough), unless your 3D CAD software can calculate it for you.

@cbenson by 3dof i mean like the example you gave here Lynxmotion (LSS) - 3 DoF Robotic Arm (Kit)

It would be interesting if you could treat each link as “massless” to save a ton of calculations (and only take into account the “heavier motors” like the ones in the wrist, as well as the payload (which is now only moving in 2D). On the plus side, the inertia calculations are a bit easier since there are fewer degrees of freedom.

1 Like

Hello @cbenson I am struggling with calculating the the required torque for my robot arm (I tried to follow the tutorial but I am confused at how to apply it to my robot arm). This is a diagram of my arm below:

How would I calculate the torque due to gravity, would I assume all the masses are in the centre?

@pk2902 Welcome to the RobotShop Community.

“Counter-torque” needed to keep the arm horizontal against gravity would be:

  • 0.535Kg x 45cm (assuming the mass is centered) = 24.075 Kg-cm
  • 0.81Kg x 50.5cm (90-22-35/2) = 40.905 Kg-cm
  • 0.55Kg x 79cm (90-22/2) = 43.45 Kg-cm
  • 0.5Kg x 90cm = 45 Kg-cm (payload?)

Add them up to get 153.43 Kg-cm. However you show there’s a mass on the opposite side:

  • 0.264Kg x 15cm (30/2) = 3.96 Kg-cm

Therefore the torque needed at the pivot would be:

  • 153.43 Kg-cm - 3.96Kg-cm = 149.47 Kg-cm (let’s round it to 150 Kg-cm)

If you wanted to raise the arm, the pivot would need to produce more torque than 150 Kg-cm to produce a change in velocity (i.e. acceleration). To calculate that torque is more involved since the equation is Torque = (Moment of Inertia) x (Angular Acceleration). A slow acceleration involves less additional torque.

Thank you for replying!! Very helpful

Yes the 0.5kg is the payload.

Great, i’m gonna try to calculate the torque due to angular acceleration and then add it to the torque due to gravity?

I’m guessing I will need to specify in how many seconds I would like the link to move up or down. (E.g. 45 degrees in 1 second).

Moving 45 degrees in one second doesn’t actually directly give you acceleration (radians per second per second) but rather the average angular speed. The harder part tends to be calculating the total inertia of the system.

Thank you,

Total Inertia=Motor Inertia + Link Inertia, if i’m correct

Does that mean I will already need to have motors selected? And then do the calculations

Effectively the inertia of each of the masses (and the support rod). Assuming the motor is not rotating at high speed (and it’s not a flywheel), its effect on the inertia is likely to be minimal so it’s up to you if you want to estimate it and include it. Remember, even with all the calculations, it’s best to multiply the calculated value by a “safety margin” to account for inefficiencies etc.