How to model a non-backdrivable joint

asked 2017-04-28 12:39:00 -0500

Airuno2L gravatar image

I have an arm that is effort driven and each joint is not backdrivable. I'm having a hard time figuring out the right way to model this in the URDF. Right now I just have a SimpleTransmission with an EffortJointInterface hardware interface and am using JointEffortControllers. The problem is that when no effort is being applied, the arm flops to the floor in gazebo since the simulation doesn't know the joints don't work like that.

I've read a few places to just jack up the damping and friction in the joint specification. I've tried that. As I raise and raise it, there is a fine line between where the arms still just drop to the floor, or they spin off into oblivion. Additionally I don't think this is the right way because my simulated arm would require much more effort to move it that it would in reality.

Any suggestions? I would have thought there would be something in the transmission tag to support this but I haven't seen anything.


edit retag flag offensive close merge delete


Maybe I should switched between an effort controller and position controller - so while there is user input use the effort controller, but when there is no user input (or very low input to where the links will start falling) switch to position controller and set the commanded position to the current position. I think I'll try this even though it seems like the transmission tag should support this.

Airuno2L gravatar imageAiruno2L ( 2017-05-04 06:48:25 -0500 )edit

Switching controllers like that didn't work good, the problem was there is a small bit of time associated with switching controllers so the arm would drop a little during that time. I still haven't figured this out.

Airuno2L gravatar imageAiruno2L ( 2018-02-23 06:53:42 -0500 )edit