I want to know if there is any equation that calculates the maximum force of a robot joint. The force that we should not exceed.

For example in human leg, if we apply a big external force to the knee, it will break. now how can i find the necessary force that will just make the leg move without breaking the knee.

I have a programme that generates robot morphologies randomly with different sizes, so I have to know the force to not exceed for each joint. I think this depend on weight, mass, inertia of each robot part.

I can not do this by trial and error because I have hundreds different morphologies.

This video shows the behaviour of robot if I apply a big force. It is in Gazebo robotic simulator.

Thanks in advance!

  • $\begingroup$ Are you concerned about mechanical breakage (breaking bones/limbs/robot structure) or are you concerned about joint separation in the simulation, or are you concerned about realistic response to realistic forces in the simulation? $\endgroup$ – Chuck Apr 19 '16 at 15:14
  • $\begingroup$ in the simulation I am concerned to make robots learn by themselves (with Genetic Algorithms) to find a way to move from point A to point B. but in a realistic way, without jumping and doing random moves rapidly like shown in video. I do not want to arrive to a breakage to handle it....but find the max force that will not allow the random moves (in simulation) and surely the breakage in reel physical robot (not my case, for the moment i am in simulation )....I wish I made my question clear .... $\endgroup$ – djou Apr 19 '16 at 19:48

As I understand, you do not actually need the force, you just want that your simulation to behave somewhat realistically.

Instead of complicating everything with dynamics, I suggest you remain at kinematic models (will be much much faster, considering you will evaluate your models probably millions of times, if I undertand you goals corretly, in the fitness function).

Instead of maximum force, determine a realistic maximum velocity, acceleration and joint limit. In this case you could still assure a realistic behavior, bounded change in position and velocity, and have fast running models.

To continue your analogy, if the knee is moved with limited acceleration and velocity and the joint motion limits (motion range of the joint) is also defined correctly, the knee will not break.


I think you probably need to learn more about simulation before you proceed. Otherwise you will not be able to choose a good one, nor set the parameters of operation which will give valid results.

Regarding the automated design of robot joints;

The allowed joint forces depend on the components and approach used to create the joint.

The recursive Newton Euler approach will give you the bulk joint forces. Those can then be resolved into specific bearing and structural loads specific to your mechanical design.

You will need to create at least one valid mechanical joint design which will have a maximum load that can be measured or, to some extent, predicted. It's best to create a couple generic design approaches with tables of components if you want to do genetic optimization.

Make sure you do a little background reading and understand what has been done before. For example: http://darwin2k.sourceforge.net/

  • $\begingroup$ thank you for your answer, creating a mechanical joint it is not my goal in my project....so the Newton Euler approach will calculate the torque for each joint depending on other joints ? $\endgroup$ – djou Apr 21 '16 at 10:56
  • $\begingroup$ If synthesizing joints that will work in a real robot is your goal, then you will need to create a mechanical joint. If you don't care about reality, and only want a stable simulation, then joint forces is not your problem. Investigate the integration methods and collision models for your simulator if you only want more realistic motion. $\endgroup$ – hauptmech Apr 22 '16 at 2:56

It sounds like all you really care about it is a realistic simulation. For you, this means that you are interested in specifying a force that is "reasonable" for your robot. I say "reasonable" because it's up to you to define, but hopefully I can help you set some guidelines.

Torque, the angular force you apply to a joint, has two general uses: static poses and dynamic motion. A lot of people try to calculate the torque they need by evaluating only the static torque, which is a poor method to use because, once the worst-case position is reached, there is no longer any overhead to accelerate (change the speed of) the joint. That is, once the joint stops at the worst-case position, if you only specified the worst-case static torque, it's not possible to resume motion.

Static torque is easily calculated: $\tau_s = FL\sin{\theta}$. Torque is the force applied, times the distance at which it's applied, times the sine of the angle the arm makes with vertical.

Dynamic torque, which I'd say is arguably the more important of the two, is a little harder to calculate because it requires the moment of inertia of the load.

Dynamic torque is $\tau_d = I\alpha$. Moment of inertia times angular acceleration. It's pretty straightforward, once you have the moment of inertia, but again that can be tricky to calculate.

The easiest way, in my opinion, is to calculate it through the center of mass of the object, then use the parallel axis theorem to shift the axis to that of the joint.

Now, this becomes tricky when you are dealing with multibody simulation because the method I give above only gives the moment of inertia for one link. If you have multiple linkages, then you have to take the joint angle into account when calculating the moments of inertia for all subsequent linkages.

Ultimately, for your problem, you need to choose an acceptable angular acceleration $\alpha$, programmatically calculate the moments of inertia, and then use $\tau = I\alpha$ to determine the maximum forces you want to apply.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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