Home | Tutorials | Wiki | Issues
Ask Your Question

A joint with high couple but small speed

asked 2015-11-07 15:03:50 -0500

debz gravatar image

updated 2015-11-08 10:38:23 -0500


I want to make a joint that can't move fast but still have a high couple. To action this joint I use the class JointController and PID. This joint is now unstable and I would like to find a way to limit its max velocity (which is not directly implemented). This would give me the opportunity to use a strong PID and would simpliy its parameterisation.

To give you an id, one way of doing is to increase a lot the inertials values of the links, and then use a PID with very high values of P, I and D. But since I want to keep my inertial realistic, I can't do this anymore.

I tried then to use the friction parameter of the joint, but this is not exactly what I need because it doesn't imply a max speed, but more a leak of energy when applying forces.

Any idea would be welcome !


edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2015-11-09 13:10:33 -0500

hsu gravatar image

updated 2016-10-20 21:51:59 -0500

You probably want to use high joint viscous damping rather than friction, because friction will likely result in a "go-stop-go" stuttering behavior.

Take a look at this world for very high damping example:


and make sure implicit_spring_damper is set to true.

My usual advice is to use a damping values that makes sense physically, albeit on the high side for your application, i.e. tune your Nm/(rad/s) so that it's not un-physically large.

edit flag offensive delete link more


I'm not sure I understood your last sentence. I try to find more documentation/explaination on the damping in joints (physically), but can't find anything nice, even on the ODE website.

debz gravatar imagedebz ( 2015-11-09 17:36:01 -0500 )edit

I don't think most robot manufacturers release any information on what the joint viscous damping coefficient is. But in general, if you take a robot joint and apply constant X-Nm of torque, if the steady state joint velocity is Y-rad/s, then a reasonable approximation for viscous damping coefficient is X/Y N s/(m rad). Take that number, 1 order of magnitude away from this value should be OK, but two orders of magnitude off might be too much. That's all I was trying to say.

hsu gravatar imagehsu ( 2015-11-09 17:50:01 -0500 )edit

answered 2015-11-09 17:32:12 -0500

debz gravatar image

Hi, thx for your answer, it's working perfectly. I'm now using the following parameters for my joints:

  • joints_damping = 4
  • joints_cfm_damping = 1
  • joints_implicit_spring_damping = 1

On the top of it, I use PIDs with I and D set to zeros, and P = 15 (which is a lot I guess). But this work fine, at least for what I want to get. I have a 6 DOF arm robot and avoid with this configuration the very complex parameterization of its PIDs. The moves are precise and stable.

edit flag offensive delete link more


Great! p.s. `cfm_damping` is deprecated by `implicit_spring_damper`. If you are using a "new enough" version of gazebo (6.5 definitely is), you only need to specify `implicit_spring_damper`.

hsu gravatar imagehsu ( 2015-11-09 17:35:35 -0500 )edit
Login/Signup to Answer

Question Tools



Asked: 2015-11-07 15:03:50 -0500

Seen: 424 times

Last updated: Oct 20 '16