How to Implement Load-Independent Static Friction Torque in IsaacSim Revolute Joint?

Hello everyone,

I’m working on simulating a revolute joint in IsaacSim where I need the static friction torque to always be lower than a constant value, say 5 Nm, regardless of the load applied to the joint. From experimental data, I know that the joint requires a constant torque of 5 Nm to overcome static friction and start moving. If the applied torque is lower then the joint will not move.

According to the IsaacSim documentation and the PhysX API reference (PxArticulationJointReducedCoordinate), the joint friction is dependent on the spatial forces acting on the system:

This means the friction force is proportional to the transmitted forces, making it load-dependent.

My question is:

  • How can I implement a constant static friction torque in IsaacSim that is independent of the load?
  • Is there a way to configure the joint or use a workaround to achieve a constant friction torque of 5 Nm for the revolute joint, regardless of the spatial forces acting on it?

Any guidance or suggestions would be greatly appreciated!

Thank you!
Giulio

Similar comment: Possible bug in Joint friction value definition

One way it to apply a force to the link in a direction which creates a torque around the axis of the joint, change the force in your control loop based on the velocity of the joint to make it 0 or other values. You might be able to use constraints as well, check them out.