stiction for ElasticFoundationForce

Simbody is useful for internal coordinate and coarse grained molecule modeling, large scale mechanical models like skeletons, and anything else that can be modeled as bodies interconnected by joints, acted upon by forces, and restricted by constraints.
POST REPLY
User avatar
Jiang Ping
Posts: 132
Joined: Sun Aug 26, 2012 4:09 am

stiction for ElasticFoundationForce

Post by Jiang Ping » Mon Sep 30, 2019 9:22 am

Hi all,

I found ElasticFoundationForce cannot represent stiction because the friction force is a continuous function of the slip velocity.
I added a constraint like code to represent the stiction (see the code below) but such implementation can only be used for a specific situation. Is there any other way (e.g. constraint in Simbody) to represent the stiction between two meshes?

Thank you in advance.

// Calculate the friction force.

const Real vslip = vtangent.norm();
if (f > 0 && vslip != 0) {
const Real vrel = vslip/transitionVelocity;
const Real ffriction =
f*(std::min(vrel, Real(1))
*(param.dynamicFriction+2*(param.staticFriction-param.dynamicFriction)
/(1+vrel*vrel))+param.viscousFriction*vslip);
force += ffriction*vtangent/vslip;
}
else if( f>0)
{
// stiction
// given the only external force is gravity
// axis x, z component should be 0
double friction_x = -force[0];
double friction_z = -force[2];
// firction dir
// axis x, z should be anti-direction of forceDir
Vec3 frictionDir = -forceDir;
// frictionDir is perpendicular to forceDir
frictionDir[1] = -(frictionDir[0]*forceDir[0] + frictionDir[2]*forceDir[2])/forceDir[1];
double friction_y = frictionDir[1] * friction_x/frictionDir[0];
Vec3 frictionTotal(friction_x, friction_y, friction_z);

force += frictionTotal;
}

User avatar
Michael Sherman
Posts: 800
Joined: Fri Apr 01, 2005 6:05 pm

Re: stiction for ElasticFoundationForce

Post by Michael Sherman » Mon Sep 30, 2019 9:43 am

Hi, Jiang. As you noted, Simbody uses a regularized friction model that always permits a small amount of "creep" velocity during stiction. For most uses, the creep velocity is so slow as to be negligible. However, for a static analysis it can be problematic since stiction forces can't be produced at exactly zero velocity. Is that why you want constraint-based stiction? Or is there another reason?

An alternative would be to use a slip_velocity==0 constraint which can be enabled and disabled. At least then the constraint will compute the correct amount of force so would work in general.

Regards,
Sherm

User avatar
Jiang Ping
Posts: 132
Joined: Sun Aug 26, 2012 4:09 am

Re: stiction for ElasticFoundationForce

Post by Jiang Ping » Mon Sep 30, 2019 9:57 am

Hi, Sherm

Thank you for your prompt reply.

>>However, for a static analysis it can be problematic since stiction forces can't be produced at exactly zero velocity. Is that why you want constraint-based stiction?

Yes, I want to conduct static inverse dynamics analysis in consideration of the static friction force.

>>An alternative would be to use a slip_velocity==0 constraint which can be enabled and disabled.

Is there any SimBody constraint class available to realize this?

Best regards,
Jiang

User avatar
Michael Sherman
Posts: 800
Joined: Fri Apr 01, 2005 6:05 pm

Re: stiction for ElasticFoundationForce

Post by Michael Sherman » Mon Sep 30, 2019 10:36 am

There are several constraints you could use (search for "Constraint" in the doxygen then look at the derived classes to see them all). However, the one that looks most applicable to me is PointOnPlaneContact. This could work if you know where the contact is occurring and when to enable and disable the constraint.

Sherm

User avatar
Jiang Ping
Posts: 132
Joined: Sun Aug 26, 2012 4:09 am

Re: stiction for ElasticFoundationForce

Post by Jiang Ping » Mon Sep 30, 2019 5:27 pm

Hi, Sherm

Thank you for your reply.
I want to get a stable initial state of the model by static inverse dynamics calculation so that where the contact is occurring is unknown priorly. Instead of using PointOnPlaneContact to represent the contact force, I prefer to adding some constraints for internal force computation of ElasticFoundationForce. Do you have any idea?

Thank you in advance,
Jiang

User avatar
Michael Sherman
Posts: 800
Joined: Fri Apr 01, 2005 6:05 pm

Re: stiction for ElasticFoundationForce

Post by Michael Sherman » Mon Sep 30, 2019 9:49 pm

The easiest approach might be to find the equilibrium position dynamically rather than with static analysis. You could use an implicit integrator (CPodes limited to order-1 is implicit Euler) running with large steps to remove energy from the system. Or, you could actually add extra damping to the joints.

Modifying ElasticFoundationForce to produce true stiction is conceivable but not easy. You would need to add some state variables (using a "bristle" friction model).

User avatar
Jiang Ping
Posts: 132
Joined: Sun Aug 26, 2012 4:09 am

Re: stiction for ElasticFoundationForce

Post by Jiang Ping » Tue Oct 01, 2019 11:23 am

Thank you very much, Sherm!
Using an implicit integrator solved the problem.
I used the integrator to conduct a forward dynamics simulation. Once the system became stable, I saved the state for the further usage.

Best regards,
Jiang

User avatar
Michael Sherman
Posts: 800
Joined: Fri Apr 01, 2005 6:05 pm

Re: stiction for ElasticFoundationForce

Post by Michael Sherman » Tue Oct 01, 2019 11:35 am

Great!

POST REPLY