notes contact friction
play

Notes Contact Friction Some normal force is keeping v N =0 Typo in - PowerPoint PPT Presentation

Notes Contact Friction Some normal force is keeping v N =0 Typo in test.rib --- fixed on the web now (PointsPolygon --> PointsPolygons) Coulomb s law (dry friction) If sliding, then kinetic friction: v T F friction =


  1. Notes Contact Friction � Some normal force is keeping v N =0 � Typo in test.rib --- fixed on the web now (PointsPolygon --> PointsPolygons) � Coulomb � s law (“dry” friction) • If sliding, then kinetic friction: v T F friction = � µ k F normal v T • If static (v T =0) then stay static as long as F friction � µ s F normal � “Wet” friction = damping F friction = � DF normal v T cs533d-term1-2005 1 cs533d-term1-2005 2 Collision Friction Wet Collision Friction � So replacing force with impulse: � Impulse assumption: m � v T = � Dm � v N v T • Collision takes place over a very small time interval after = v T before + � v T (with very large forces) v T � Divide through by m, use • Assume forces don � t vary significantly over that after = v T before � D � v N v T interval---then can replace forces in friction laws with before v T impulses ( ) v T = 1 � D � v N • This is a little controversial, and for articulated rigid before bodies can be demonstrably false, but nevertheless… • Normal impulse is just m � v N =m(1+ � )v N � Clearly could have monotonicity/stability issue • Tangential impulse is m � v T � Fix by capping at v T =0, or better approximation for time interval after = e � D � v N v T e.g. before v T cs533d-term1-2005 3 cs533d-term1-2005 4

  2. Dry Collision Friction Simplifying… after = v T before + � v T � Coulomb friction: assume µ s = µ k v T � Use after = 0 � � v T = � v T • (though in general, µ s � µ k ) before � Static case is v T before � µ � v N when v T before v T � Sliding: m � v T = � µ m � v N before v T � Sliding case is m � v T � µ m � v N before � Static: after = v T before � µ � v N v T v T before v T � Divide through by m to find change in tangential velocity � Common quantities! cs533d-term1-2005 5 cs533d-term1-2005 6 Dry Collision Friction Formula Where are we? � Combine into a max � So we now have a simplified physics model for • First case is static where v T drops to zero if inequality is obeyed • Frictionless, dry friction, and wet friction • Second case is sliding, where v T reduced in collision magnitude (but doesn � t change signed • Some idea of what contact is direction) � So now let � s start on numerical methods to simulate this � � after = max 0,1 � µ � v N � � before v T � v T � before v T � � cs533d-term1-2005 7 cs533d-term1-2005 8

  3. “Exact” Collisions Fixed collision time stepping � For very simple systems (linear or maybe � Even “exact” collisions are not so accurate in parabolic trajectories, polygonal objects) general • Find exact collision time (solve equations) • [hit or miss example] • Advance particle to collision time � So instead fix � t collision and don � t worry about • Apply formula to change velocity exact collision times (usually dry friction, unless there is lubricant) • Could be one frame, or 1/8th of a frame, or … • Keep advancing particle until end of frame or next � Instead just need to know did a collision happen collision during � t collision � Can extend to more general cases with • If so, process it with formulas conservative ETA � s, or root-finding techniques � Expensive for lots of coupled particles! cs533d-term1-2005 9 cs533d-term1-2005 10 Relationship with regular time Numerical Implementation 1 integration � Forgetting collisions, advance from x(t) to x(t+ � t collision ) � Get candidate x(t+ � t) • Could use just one time step, or subdivide into lots of small time � Check to see if x(t+ � t) is inside object steps (interference) � We approximate velocity (for collision processing) as constant over time step: � If so v = x ( t + � t ) � x ( t ) • Get normal n at t+ � t � t • Get new velocity v from collision response � If no collisions, just keep going with underlying formulas applied to average v=(x(t+ � t)-x(t))/ � t integration • Integrate x(t+ � t)=x(t+ � t) old + � t � v cs533d-term1-2005 11 cs533d-term1-2005 12

  4. Robustness? Making it more robust � If a particle penetrates an object at end of � Other alternative: candidate time step, we fix that • After collision, check if new x(t+ � t) also � But new position (after collision processing) penetrates could penetrate another object! • If so, assume a 2nd collision happened during � Maybe this is fine-let it go until next time step the time step: process that one • Check again, repeat until no penetration � But then collision formulas are on shaky ground… • To avoid infinite loop make sure you lose � Switch to repulsion impulse if x(t) and x(t+ � t) kinetic energy (don � t take perfectly elastic both penetrate bounces, at least not after first time through) • Find � v N proportional to final penetration depth, apply • Let � s write that down: friction as usual cs533d-term1-2005 13 cs533d-term1-2005 14 Numerical Implementation 2 Micro-Collisions � Get candidate x(t+ � t) � These are “micro-collision” algorithms � While x(t+ � t) is inside object (interference) � Contact is modeled as a sequence of small collisions • Get normal n at t+ � t • Get new velocity v from collision response formulas • We � re replacing a continuous contact force with a sequence of collision impulses and average v • Integrate collision: x(t+ � t)=x(t+ � t) old + � t � v � Is this a good idea? • [block on incline example] � Now can guarantee that if we start outside � More philosophical question: how can contact objects, we end up outside objects possibly begin without fully inelastic collision? cs533d-term1-2005 15 cs533d-term1-2005 16

  5. Improving Micro-Collisions Numerical Implementation 3 � Start at x(t) with velocity v(t), get candidate � Really need to treat contact and collision position x(t+ � t) differently, even if we use the same friction � Check if x(t+ � t) penetrates object formulas • If so, process elastic collision using v(t) from start of � Idea: step, not average velocity • Collision occurs at start of time step • Replay from x(t) with modified v(t) or simply • Contact occurs during whole duration of time add � t � v to x(t+ � t) instead of re-integrating • Repeat check a few (e.g. 3) times if you want step � While x(t+ � t) penetrates object • Process inelastic contact ( � =0) using average v • Integrate + � t � v cs533d-term1-2005 17 cs533d-term1-2005 18 Why does this work? Moving objects � If object resting on plane y=0, v(t)=0 though � Same algorithms, and almost same formulas: gravity will pull it down by the end of the • Need to look at relative velocity timestep, t+ � t v particle -v object instead of just particle velocity � In the new algorithm, elastic bounce works with • As before, decompose into normal and tangential pre-gravity velocity v(t)=0 parts, process the collision, and reassemble a relative • So no bounce velocity � Then contact, which is inelastic, simply adds just • Add object velocity to relative velocity to get final enough � v to get back to v(t+ � t)=0 particle velocity • Then x(t+ � t)=0 too � Be careful when particles collide: � NOTE: if � =0 anyways, no point in doing special • Same relative � v but account for equal and opposite forces/impulses with different masses… first step - this algorithm is equivalent to the previous one cs533d-term1-2005 19 cs533d-term1-2005 20

  6. Moving Objects… Collision Detection � Also, be careful with � We have basic time integration for particles in place now interference/collision detection • Want to check for interference at end of � Assumed we could just do interference detection, but… time step, so use object positions there � Detecting collisions over particle • Objects moving during time step mean trajectories can be dropped in for more more complicated trajectory intersection robustness - algorithms don � t change for collisions • But use the normal at the collision time cs533d-term1-2005 21 cs533d-term1-2005 22

Recommend


More recommend