1 / 55

Rigid Body Dynamics (I) An Introduction

Rigid Body Dynamics (I) An Introduction. Algorithm Overview. 0 Initialize(); 1 for t = 0; t < t f ; 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();

ria-phelps
Download Presentation

Rigid Body Dynamics (I) An Introduction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rigid Body Dynamics (I)An Introduction M. C. Lin

  2. 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(); M. C. Lin

  3. Particles No rotations Linear velocity v only Rigid bodies Body rotations Linear velocity v Angular velocity ω From Particles to Rigid Bodies M. C. Lin

  4. Outline • Rigid Body Preliminaries • Coordinate system, velocity, acceleration, and inertia • State and Evolution • Quaternions • Collision Detection and Contact Determination • Colliding Contact Response M. C. Lin

  5. Coordinate Systems • Body Space (Local Coordinate System) • bodies are specified relative to this system • center of mass is the origin (for convenience) • World Space • bodies are transformed to this common system: p(t) = R(t) p0 + x(t) • R(t) represents the orientation • x(t) represents the position of the body center M. C. Lin

  6. Coordinate Systems Meaning of R(t): columns represent the coordinates of the body space base vectors (1,0,0), (0,1,0), (0,0,1) in world space. M. C. Lin

  7. Velocities • How do x(t) and R(t) change over time? • v(t) = dx(t)/dt • Let (t) be the angular velocity vector • Direction is the axis of rotation • Magnitude is the angular velocity about the axis M. C. Lin

  8. Velocities M. C. Lin

  9. Angular Velocities M. C. Lin

  10. Dynamics: Accelerations • How do v(t) and dR(t)/dt change over time? • First we need some more machinery • Inertia Tensor • Forces and Torques • Momentums • Actually formulate in terms of momentum derivatives instead of velocity derivatives M. C. Lin

  11. Inertia Tensor • 3x3 matrix describing how the shape and mass distribution of the body affects the relationship between the angular velocity and the angular momentum I(t) • Analogous to mass – rotational mass • We actually want the inverse I-1(t) M. C. Lin

  12. Inertia Tensor Ixx = Iyy = Izz = Iyz = Izy = Ixy = Iyx = Ixz = Izx = M. C. Lin

  13. Inertia Tensor • Compute I in body space Ibodyand then transformed to world space as required • I vary in World Space, but Ibody is constant in body space for the entire simulation • Transformation only depends on R(t) -- I(t) is translation invariant • I(t)= R(t) Ibody R-1(t)= R(t) Ibody RT(t) • I-1(t)= R(t) Ibody-1 R-1(t)= R(t) Ibody-1 RT(t) M. C. Lin

  14. Computing Ibody-1 • There exists an orientation in body space which causes Ixy, Ixz, Iyz to all vanish • increased efficiency and trivial inverse • Point sampling within the bounding box • Projection and evaluation of Greene’s thm. • Code implementing this method exists • Refer to Mirtich’s paper at http://www.acm.org/jgt/papers/Mirtich96 M. C. Lin

  15. Approximation w/ Point Sampling • Pros: Simple, fairly accurate, no B-rep needed. • Cons: Expensive, requires volume test. M. C. Lin

  16. Use of Green’s Theorem • Pros: Simple, exact, no volumes needed. • Cons: Requires boundary representation. M. C. Lin

  17. Forces and Torques • Environment and contacts tell us what forces are applied to a body: F(t) =  Fi(t) (t) =  ( ri(t) x Fi(t) ) where ri(t) is the vector from the center of mass to the point on surface of the object that the force is applied at, ri(t)= pi - x(t) M. C. Lin

  18. Momentums • Linear momentum • P(t) = m v(t) • dP(t)/dt = m a(t) = F(t) • Angular Momentum • L(t) = I(t) (t) • (t) = I(t)-1 L(t) • It can be shown that dL(t)/dt = (t) M. C. Lin

  19. Outline • Rigid Body Preliminaries • State and Evolution • Variables and derivatives • Quaternions • Collision Detection and Contact Determination • Colliding Contact Response M. C. Lin

  20. Spatial information Velocity information New State Space v(t) replaced by linear momentum P(t) (t) replaced by angular momentum L(t) Size of the vector: (3+9+3+3)N = 18N M. C. Lin

  21. Rigid Body Dynamics M. C. Lin

  22. State of a Body • Y(t) = ( x(t), R(t), P(t), L(t) ) • We use P(t) and L(t) because of conservation • From Y(t) certain quantities are computed • I-1(t) = R(t) Ibody-1 RT(t) • v(t) = P(t) / M • ω(t) = I-1(t) L(t) • d Y(t) / dt = ( v(t), dR(t)/dt, F(t), (t) ) d(x(t),R(t),P(t),L(t))/dt =(v(t), dR(t)/dt, F(t), (t)) M. C. Lin

  23. Simulate: next state computation • From X(t) certain quantities are computed I-1(t) = R(t) Ibody-1 RT(t) v(t) = P(t) / M ω(t) = I-1(t) L(t) • We cannot compute the state of a body at all times but must be content with a finite number of discrete time points, assuming that the acceleration is continuous • Use your favorite ODE solver to solve for the new state X(t), given previous state X(t-t) and applied forces F(t) and (t)X(t) Ã Solver::Step(X(t- t), F(t),  (t)) M. C. Lin

  24. Simple simulation algorithm X à InitializeState() For t=t0 to tfinal with step  t ClearForces(F(t), (t)) AddExternalForces(F(t), (t)) Xnewà Solver::Step(X, F(t), (t)) X à Xnew t à t + t End for M. C. Lin

  25. Outline • Rigid Body Preliminaries • State and Evolution • Quaternions • Merits, drift, and re-normalization • Collision Detection and Contact Determination • Colliding Contact Response M. C. Lin

  26. Unit Quaternion Merits • A rotation in 3-space involves 3 DOF • Rotation matrices describe a rotation using 9 parameters • Unit quaternions can do it with 4 • Rotation matrices buildup error faster and more severely than unit quaternions • Drift is easier to fix with quaternions • renormalize M. C. Lin

  27. Unit Quaternion Definition • [s,v] -- s is a scalar, vis vector • A rotation ofθ about a unit axis u can be represented by the unit quaternion: [cos(θ/2), sin(θ /2) * u] • || [s,v] || = 1 -- the length is taken to be the Euclidean distance treating [s,v] as a 4-tuple or a vector in 4-space M. C. Lin

  28. Unit Quaternion Operations • Multiplication is given by: • dq(t)/dt = [0, w(t)/2]q(t) • R = M. C. Lin

  29. Unit Quaternion Usage • To use quaternions instead of rotation matrices, just substitute them into the state as the orientation (save 5 variables) • d (x(t), q(t), P(t), L(t) ) / dt = ( v(t), [0,ω(t)/2]q(t), F(t), (t) ) = ( P(t)/m, [0, I-1(t)L(t)/2]q(t), F(t), (t) ) where I-1(t) = (q(t).R) Ibody-1 (q(t).RT) M. C. Lin

  30. Outline • Rigid Body Preliminaries • State and Evolution • Quaternions • Collision Detection and Contact Determination • Intersection testing, bisection, and nearest features • Colliding Contact Response M. C. Lin

  31. What happens when bodies collide? • Colliding • Bodies bounce off each other • Elasticity governs ‘bounciness’ • Motion of bodies changes discontinuously within a discrete time step • ‘Before’ and ‘After’ states need to be computed • In contact • Resting • Sliding • Friction M. C. Lin

  32. Detecting collisions and response • Several choices • Collision detection: which algorithm? • Response: Backtrack or allow penetration? • Two primitives to find out if response is necessary: • Distance(A,B): cheap, no contact information, fast intersection query • Contact(A,B): expensive, with contact information M. C. Lin

  33. 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(); M. C. Lin

  34. Collision Detection and Contact Determination • Discreteness of a simulation prohibits the computation of a state producing exact touching • We wish to compute when two bodies are “close enough” and then apply contact forces • This can be quite a sticky issue. • Are bodies allowed to be penetrating when the forces are applied? • What if contact region is larger than a single point? • Did we miss a collision? M. C. Lin

  35. Collision Detection and Contact Determination • Response parameters can be derived from the state and from the identity of the contacting features • Define two primitives that we use to figure out body-body response parameters • Distance(A,B) (cheaper) • Contacts(A,B) (more expensive) M. C. Lin

  36. Distance(A,B) • Returns a value which is the minimum distance between two bodies • Approximate may be ok • Negative if the bodies intersect • Convex polyhedra • Lin-Canny and GJK -- 2 classes of algorithms • Non-convex polyhedra • much more useful but hard to get distance fast • PQP/RAPID/SWIFT++ M. C. Lin

  37. Contacts(A,B) • Returns the set of features that are nearest for disjoint bodies or intersecting for penetrating bodies • Convex polyhedra • LC & GJK give the nearest features as a bi-product of their computation – only a single pair. Others that are equally distant may not be returned. • Non-convex polyhedra • much more useful but much harder problem especially contact determination for disjoint bodies • Convex decomposition M. C. Lin

  38. Compute_Time_Step(S,t,h) • Let’s recall a particle colliding with a plane M. C. Lin

  39. Compute_Time_Step(S,t,h) • We wish to compute tc to some tolerance M. C. Lin

  40. Compute_Time_Step(S,t,h) • A common method is to use bisection search until the distance is positive but less than the tolerance • This can be improved by using the ratio (disjoint distance) : (disjoint distance + penetration depth) to figure out the new time to try -- faster convergence M. C. Lin

  41. Compute_Time_Step(S,t,h) 0 for each pair of bodies (A,B) do 1 Compute_New_Body_States(Scopy, t, H); 2 hs(A,B) = H; // H is the target timestep 3 if Distance(A,B) < 0 then 4 try_h = H/2; try_t = t + try_h; 5 while TRUE do 6 Compute_New_Body_States(Scopy, t, try_t - t); 7 if Distance(A,B) < 0 then 8 try_h /= 2; try_t -= try_h; 9 else if Distance(A,B) <  then 10 break; 11 else 12 try_h /= 2; try_t += try_h; 13 hs(A,B) = try_t – t; 14 h = min( hs ); M. C. Lin

  42. Penalty Methods • If Compute_Time_Step does not affect the time step (h) then we have a simulation based on penalty methods • The objects are allowed to intersect and their penetration depth is used to compute a spring constant which forces them apart M. C. Lin

  43. Outline • Rigid Body Preliminaries • State and Evolution • Quaternions • Collision Detection and Contact Determination • Colliding Contact Response • Normal vector, restitution, and force application M. C. Lin

  44. What happens upon collision • Impulses provide instantaneous changes to velocity, unlike forces(P) = J • We apply impulses to the colliding objects, at the point of collision • For frictionless bodies, the direction will be the same as the normal direction: J = jTn M. C. Lin

  45. Colliding Contact Response • Assumptions: • Convex bodies • Non-penetrating • Non-degenerate configuration • edge-edge or vertex-face • appropriate set of rules can handle the others • Need a contact unit normal vector • Face-vertex case: use the normal of the face • Edge-edge case: use the cross-product of the direction vectors of the two edges M. C. Lin

  46. Colliding Contact Response • Point velocities at the nearest points: • Relative contact normal velocity: M. C. Lin

  47. Colliding Contact Response • If vrel > 0 then • the bodies are separating and we don’t compute anything • Else • the bodies are colliding and we must apply an impulse to keep them from penetrating • The impulse is in the normal direction: M. C. Lin

  48. Colliding Contact Response • We will use the empirical law of frictionless collisions: • Coefficient of restitution є [0,1] • є = 0 -- bodies stick together • є = 1 – loss-less rebound • After some manipulation of equations... M. C. Lin

  49. Apply_BB_Forces() • For colliding contact, the computation can be local 0 for each pair of bodies (A,B) do 1 if Distance(A,B) <  then 2 Cs = Contacts(A,B); 3 Apply_Impulses(A,B,Cs); M. C. Lin

  50. Apply_Impulses(A,B,Cs) • The impulse is an instantaneous force – it changes the velocities of the bodies instantaneously: Δv = J / M 0 for each contact in Cs do 1 Compute n 2 Compute j 3 P(A) += J 4 L(A) += (p - x(t)) x J 5 P(B) -= J 6 L(B) -= (p - x(t)) x J M. C. Lin

More Related