Handling of Resting Contact Global vs. Local Methods – Constraint-based vs. Impulse-based Colliding Contacts Resting Contacts Force application Friction UNC Chapel Hill M.
Download ReportTranscript Handling of Resting Contact Global vs. Local Methods – Constraint-based vs. Impulse-based Colliding Contacts Resting Contacts Force application Friction UNC Chapel Hill M.
Handling of Resting Contact Global vs. Local Methods – Constraint-based vs. Impulse-based Colliding Contacts Resting Contacts Force application Friction UNC Chapel Hill M. C. Lin Impulse vs. Constraint Impulse-based dynamics (local) – Faster – Simpler – No explicit contact constraints Constraint-based dynamics (global) – Must declare each contact to be a resting contact or a colliding contact UNC Chapel Hill M. C. Lin Impulse vs. Constraint Impulse-based dynamics (local) Constraint-based dynamics (global) UNC Chapel Hill M. C. Lin Impulse vs. Constraint UNC Chapel Hill M. C. Lin Resting Contact Response When vrel ~= 0 -- have resting contact All resting contact forces must be computed and applied together because they can influence one another UNC Chapel Hill M. C. Lin Resting Contact Response UNC Chapel Hill M. C. Lin Resting Contact Response The forces at each contact must satisfy three criteria – Prevent inter-penetration: di (t 0 ) 0 – Repulsive -- we do not want the objects to be glued together: fi 0 – Should become zero when the bodies start to separate: f d (t ) 0 i i 0 To implement hinges and pin joints: di (t 0 ) 0 UNC Chapel Hill M. C. Lin Resting Contact Response We can formulate using LCP: UNC Chapel Hill M. C. Lin Resting Contact Response Need to solve a quadratic program to solve for the fi’s – A is symmetric positive semi-definite (PSD) making the solution practically possible There is an iterative method to solve for without using a quadratic program [3] UNC Chapel Hill M. C. Lin Global / Constraint-Based: Apply_BB_Forces() 0 1 2 3 4 5 6 7 8 for each pair of bodies (A,B) do if Distance(A,B) < then if Relative_Normal_Velocity(A,B) < - then Cs = Contacts(A,B); Apply_Impulses(A,B,Cs); else if Relative_Normal_Velocity(A,B) < then Flag_Pair(A,B); Solve_For_Forces(flagged pairs); Apply_Forces(flagged pairs); UNC Chapel Hill M. C. Lin Local / Impluse-Based: Apply_BB_Forces() 0 for each pair of bodies (A,B) do 1 if Distance(A,B) < then 2 if Relative_Normal_Velocity(A,B) < - then 3 Cs = Contacts(A,B); 4 Apply_Impulses(A,B,Cs); 5 else if Relative_Normal_Velocity(A,B) < then 6 Compute_Restitution(A,B); 7 Cs = Contacts(A,B); 8 Apply_Impulses(A,B,Cs); UNC Chapel Hill M. C. Lin Algorithm Overview 0 Initialize(); 1 for t = 0; t < tf; t += h do 2 Read_State_From_Bodies(S); 3 Compute_Time_Step(S,t,h); 4 Compute_New_Body_States(S,t,h); 5 Write_State_To_Bodies(S); 6 Zero_Forces(); 7 Apply_Env_Forces(); 8 Apply_BB_Forces(); UNC Chapel Hill M. C. Lin Global / Constraint-Based: Apply_BB_Forces() 0 for each pair of bodies (A,B) do 1 if Distance(A,B) < then 2 if Relative_Normal_Velocity(A,B) < - then // Colliding Contact 3 Cs = Contacts(A,B); 4 Apply_Impulses(A,B,Cs); 5 else if Relative_Normal_Velocity(A,B) < then // Resting Contact 6 Flag_Pair(A,B); 7 Solve_For_Forces(flagged pairs); 8 Apply_Forces(flagged pairs); UNC Chapel Hill M. C. Lin Local / Impulse-Based: Apply_BB_Forces() 0 for each pair of bodies (A,B) do 1 if Distance(A,B) < then 2 if Relative_Normal_Velocity(A,B) < - then // Normal collision 3 Cs = Contacts(A,B); 4 Apply_Impulses(A,B,Cs); 5 else if Relative_Normal_Velocity(A,B) < then // Micro-collision 6 Compute_Restitution(A,B); 7 Cs = Contacts(A,B); 8 Apply_Impulses(A,B,Cs); UNC Chapel Hill M. C. Lin Compute_Restitution(A,B) є = f( Distance(A,B) ) UNC Chapel Hill M. C. Lin Frictional Forces Extension Constraint-based dynamics – Reformulate constraints and solve – No more on this here Impulse-based dynamics – Must not add energy to the system in the presence of friction so we have to reformulate the impulse to be applied UNC Chapel Hill M. C. Lin Collision Coordinate System UNC Chapel Hill p is the applied impulse. We use j because P is for linear momentum M. C. Lin Impulse Reformulation When two real bodies collide there is a period of deformation during which elastic energy is stored in the bodies followed by a period of restitution during which some of this energy is returned as kinetic energy and the bodies rebound of each other. UNC Chapel Hill M. C. Lin Impulse Reformulation The collision is instantaneous but we can assume that it occurs over a very small period of time: 0 tmc tf. tmc is the time of maximum compression uz is the relative normal velocity. We used vrel before. From now on we will use vz. UNC Chapel Hill M. C. Lin Impulse Reformulation UNC Chapel Hill pz is the impulse magnitude in the normal direction. We used j before. From now on we will use jz. Wz is the work done in the normal direction. M. C. Lin Impulse Reformulation v-=v(0), v0=v(tmc), v+=v(tf), vrel=vz Newton’s Empirical Impact Law:v z εv z Poisson’s Hypothesis: jz j0z εj0z jz (1 ε)j0z Stronge’s Hypothesis: Wz Wz0 ε 2 Wz0 Wz (1 ε 2 )Wz0 – Energy of the bodies does not increase when friction present UNC Chapel Hill M. C. Lin Friction Formulae Assume the Coulomb friction law: – At some instant during a collision between bodies 1 and 2, let v be the contact point velocity of body 1 relative to the contact point velocity of body 2. Let vt be the tangential component of v and let vˆ t be a unit vector in the direction of vt. Let fz and ft be the normal and tangential (frictional) components of force exerted by body 2 on body 1, respectively. UNC Chapel Hill M. C. Lin Friction Formulae Sliding (dynamic) friction v t 0 ft μ fn vˆ t Dry (static) friction v t 0 ft μ fn Assume no rolling friction UNC Chapel Hill M. C. Lin Impulse with Friction Recall that the impulse looked like this for frictionless collisions: Recall also that vz = j/m UNC Chapel Hill M. C. Lin Impulse with Friction 1 1 ~ ~ ~ ~ 1 1 Δv(t) 1 r1I1 r1 r2I2 r2 j(t) Kj(t) m1 m2 where: r = (p-x) is the vector from the center of mass to the contact point 0 ~r r z - ry UNC Chapel Hill - rz 0 rx ry - rx 0 M. C. Lin The K Matrix K is constant over the course of the collision, nonsingular, symmetric, and positive definite k x K ky k z UNC Chapel Hill M. C. Lin Collision Functions Change variables from t to something else that is monotonically increasing during the collision: Δv( ) Kj( ) Let the duration of the collision 0. The functions v, j, W, all evolve over the compression and the restitution phases with respect to . UNC Chapel Hill M. C. Lin Collision Functions We only need to evolve vx, vy, vz, and Wz directly. The other variables can be computed from the results. UNC Chapel Hill M. C. Lin Sliding or Sticking? Sliding occurs when the relative tangential velocity v t 0 – Use the friction equation to formulate v t 0 ft μ fn vˆ t Sticking occurs otherwise – Is it stable or instable? – Which direction does the instability get resolved? UNC Chapel Hill M. C. Lin Sliding Formulation For the compression phase, use v z – v z is the relative normal velocity at the start of the collision (we know this) – At the end of the compression phase, v 0z 0 For the restitution phase, use Wz – Wz0 is the amount of work that has been done in the compression phase – From Stronge’s hypothesis, we know that Wz (1 ε 2 )Wz0 UNC Chapel Hill M. C. Lin Sliding Formulation Compression phase equations are: vx k xξ(θ) d 1 vy k yξ(θ) dv z k zξ(θ) Wz v z UNC Chapel Hill M. C. Lin Sliding Formulation Restitution phase equations are: v x k x ξ(θ) d 1 1 v y K ξ(θ) k y ξ(θ) dWz v z vz v z k zξ(θ) UNC Chapel Hill M. C. Lin Sliding Formulation where the sliding vector is: μv x 2 v2 v x y μcosθ μv y ξ(θ) μsinθ 2 2 vx vy 1 1 UNC Chapel Hill M. C. Lin Sliding Formulation Notice that there is a problem at the point of maximum compression because vz = 0: v x k x ξ(θ) d 1 1 v y K ξ(θ) k y ξ(θ) dWz v z vz v z k zξ(θ) UNC Chapel Hill M. C. Lin Sliding Formulation Let us integrate using vz a bit into the restitution phase (extension integration) so that we never divide by 0. But we don’t want to integrate too far! Otherwise we exceed the amount of work that is to be done in the restitution phase. We are safe if we stop at: 2 K2 v z 2Wz Wz0 K 33 μ K 31 32 UNC Chapel Hill M. C. Lin Sliding Formulation UNC Chapel Hill M. C. Lin Sliding Formulation There is another problem if the tangential velocity becomes 0 because the equations that we have derived were based on v t 0 ft μ fn vˆ t which no longer holds. This brings us to the sticking formulation UNC Chapel Hill M. C. Lin Sticking Formulation UNC Chapel Hill M. C. Lin Sticking Formulation Stable if K K μ K 1 2 13 1 2 23 2 1 2 33 – This means that static friction takes over for the rest of the collision and vx and vy remain 0 If instable, then in which direction do vx and vy leave the origin of the vx, vy plane? – There is an equation in terms of the elements of K which yields 4 roots. Of the 4 only 1 corresponds to a diverging ray – a valid direction for leaving instable sticking. UNC Chapel Hill M. C. Lin Sticking Formulation If sticking occurs, then the remainder of the collision may be integrated analytically due to the existence of closed form solutions to the resulting simplified equations. UNC Chapel Hill M. C. Lin Static Contacts What about a block on a ramp when the static friction force is greater than gravity? Will it not creep down? The solution is to create another type of micro-collision which reverses the initial relative velocity. It is applied if it lies within the friction “cone” otherwise the standard collision integration is performed. UNC Chapel Hill M. C. Lin Impulse Based Experiment Platter rotating with high velocity with a ball sitting on it. Two classical models predict different behaviors for the ball. Experiment and impulse-based dynamics agree in that the ball rolls in circles of increasing radii until it rolls off the platter. Correct macroscopic behavior is demonstrated using the impulse-based contact model. UNC Chapel Hill M. C. Lin