Robotics StackExchange | Archived questions

How to model a non-backdrivable joint

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.

Thanks,

Asked by Airuno2L on 2017-04-28 12:39:00 UTC

Comments

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.

Asked by Airuno2L on 2017-05-04 06:48:25 UTC

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.

Asked by Airuno2L on 2018-02-23 07:53:42 UTC

Answers