Details of Friction Rendering
I have a question regarding the details of friction rendering.
I understand the general concept of the friction cone - for a given normal force, there is both a static and kinetic friction cone boundary. When motion of the desired position causes the proxy to be outside of the static friction cone, the proxy then slides to the kinetic cone boundary.
My question is regarding the criterion for reestablishing the static friction condition. I assume that the static friction cone is reestablished from one of two scenarios:
1) The desired position is moved such that the proxy is no longer on the kinetic cone boundary, but rather within it. Since the proxy is no longer considered sliding on the kinetic boundary, the static boundary is reestablished.
2) The velocity of the desired position falls under some velocity threshold.
Could you confirm which of these two scenarios is used to decide whether the proxy is following the static or kinetic friction cone? (or if it is a different strategy entirely?)
For the details regarding the implementation, please check file src/forces/CAlgorithmFingerProxy and search for variable m_slipping which indicates if the static or dynamic friction cone is activated.
According to the motion of the haptic device, the proxy algorithm will switch between the static and dynamic friction cones.
Example 16-friction illustrates the concept.
Thank you for direction to the m_slipping component of the cpp file.
For any others that may be wondering in the future, the static friction cone is reestablished after slipping whenever the proxy is within m_frictionDynHysteresisMultiplier*atmd, where atmd is the dynamic friction cone angle. The hysteresis multiplier is initialized to 0.6.
Essentially, the proxy goes from slipping to static whenever the desired position reverses direction and the proxy lies within the hysteresis boundary of the slipping friction cone.