rigid body dynamics - pennsylvania state university

39
Rigid Body Dynamics Simulation in Computer Graphics Computer Graphics University of Freiburg WS 11/12

Upload: others

Post on 06-Feb-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rigid Body Dynamics - Pennsylvania State University

Rigid Body Dynamics

Simulation in Computer Graphics

Computer Graphics

University of Freiburg

WS 11/12

Page 2: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

Motivation

www.hairyharry.de

Page 3: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� representation of a rigid body� position (center of mass)

� orientation

� rigid body kinematics� linear velocity

� angular velocity

� rigid body dynamics� inertia tensor

� linear and angular momentum

� force and torque

� simulation loop

� orientation

� contact handling

Outline

Page 4: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

MassMassMassMass----Point SystemPoint SystemPoint SystemPoint System

� 3n degrees of freedom (dof)

� interaction modeled explicitly

� system of 3n unknown

� no notion of orientation

� scalar mass

Mass-Point System vs. Rigid Body

Rigid BodyRigid BodyRigid BodyRigid Body

� springs with infinite stiffness

� modeled implicitly

� 6 remaining dof (position and

orientation of the entire body)

� meaningful orientation

� mass distribution

Page 5: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

xCM = (0, 0, 0)T

Representation of a Rigid Bodyworld frame

coordinates

body frame

coordinatesinitial

state

transformed

statexiri

xCM

xCM

ri

xi

ri = xi − xCM

� body frame (local

coordinate system)

� world frame (global

coordinate system)translation + rotation

xi = xCM + ri = xCM + t+Rot(ri)

Page 6: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

Center of Mass(Massenmittelpunkt, Schwerpunkt)

x1,m1 x5,m5

x3,m3

x2,m2

x4,m4

xCM ,M

xCM =�mixi�mi

=�mixiM

MxCM =�mixi

� same point under

translation and rotation

Page 7: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

Center of Mass - Motivation

x1,m1 x5,m5

x3,m3

x2,m2

x4,m4

xCM ,M

Newton's Second Law

MxCM =�mixi

fi =mixi

F =�fi =

�mixi =

∂2

∂t2

�mixi

= ∂2

∂t2MxCM =M xCM

F =MxCM

Page 8: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� rotation matrix

� 3x3 elements to represent 3 dof

Orientation in 3D

Rot(v) = Av =�a1 a2 a3

�·

vxvyvz

= vxa1 + vya2 + vza3

1

0

0

0

1

0

0

0

1

v

xv yv

zv

1a

2a3a

xv

yvzv

Av

Page 9: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� has to be orthonormal

� magnitude of eigenvalues is 1, so preserves the

length of

� position of a body point

Orientation in 3D

A

AAT =�a1 a2 a3

�·

aT1

aT2

aT3

= I

Det(A) = 1

Ar

translation + rotation

xi = xCM + ri = xCM + t+Ari

Page 10: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� representation of a rigid body� position (center of mass)

� orientation

� rigid body kinematics� linear velocity

� angular velocity

� rigid body dynamics� inertia tensor

� linear and angular momentum

� force and torque

� simulation loop

� orientation

� contact handling

Outline

Page 11: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� time-dependent position

� velocity

xi(t) = xCM(t) +A(t)ri

Body in Motion

linear velocity + angular velocity

xi = xCM(t) + Ari +A ˙ri = xCM(t) + Ari

Page 12: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� angular velocity is a 3D vector

� in direction of axis of rotation

� is the magnitude of the angular velocity [rad/s]

Angular Velocity in 3D(Winkelgeschwindigkeit)

ω

|ω|ω

x

x&

)sin(ϕ⋅x

ϕ

|x| = |ω| · r = |ω| · |x| · sin(φ)

x = ω × x

ω =

ωxωyωz

→ ω =

0 −ωz ωyωz 0 −ωx−ωy ωx 0

x = ω · x

Page 13: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� what is the relation between and ?

� angular velocity rotates all axis (columns of )

� position of a point

� velocity of a point

Rigid Body Kinematics

ω A

A

A =�a1 a2 a3

�=�ω · a1 ω · a2 ω · a3

�= ω ·A

xi(t) = xCM(t) +A(t) · ri

xi(t) = v(t) + ω(t) · (xi(t)− xCM(t))

xi(t) = xCM(t) + A(t) · ri +A(t) · ˙ri

xi(t) = v(t) + ω(t) ·A(t) · ri

Page 14: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

particle rigid body

State Vector

�x(t)v(t)

x(t)A(t)v(t)ω(t)

Page 15: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� representation of a rigid body� position (center of mass)

� orientation

� rigid body kinematics� linear velocity

� angular velocity

� rigid body dynamics� inertia tensor

� linear and angular momentum

� force and torque

� simulation loop

� orientation

� contact handling

Outline

Page 16: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� forces change

� linear velocity

� angular velocity

� linear velocity change

� like a particle, but ...

Rigid Body Dynamics

F =�fi =

�mixi =

∂2

∂t2

�mixi

= ∂2

∂t2MxCM =M xCM

xCM = FM=

�fi

M

Page 17: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� the angular momentum of a particle w.r.t. the center of

mass is

� the total angular momentum of the body is

Angular Momentum (Drehimpuls)

CMx

iriv

im

=�−miririω = (

�−miriri) · ω

= Iω

L =�Li =

�ri ×mi(ω × ri)

Li = ri ×mivi = ri ×mi(ω × ri)

Page 18: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� the total angular momentum is

with being a 3x3 matrix (the inertia tensor of the body)

� depends on the rotated configuration

� the inertia tensor for the original body can be pre-computed,e. g.

� similarity transform relates time-dependent and

pre-computed

Inertia Tensor (Trägheitstensor)

L = IωI

I I = (�−miriri)

I = (�−mi˜ri˜ri)

II I =AIAT

L = Iω = AIATAω = AIω

Page 19: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� the torque of a particle w.r.t. the center of mass is

� the total torque of the body is

Torque (Drehmoment)

τi = ri × fi

τ =�τi =

�ri × fi

CMx

ir

if

im

Page 20: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� angular momentum

� torque

� the angular version of Newton's Second law reads

� tells us, how the forces change the angular velocity

Newton's Second Law (Angular)

τ =�ri × fi

L =�ri ×mivi = Iω

L = τfi ω

τ =�ri × fi

L = L+∆t · τ

ω = I−1L

Page 21: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

linear momentum angular momentum

linear velocity angular velocity

time-derivative of time-derivative of

the linear momentum the angular momentum

Linear vs. Angular Quantities

p =Mv L = Iω

v =M−1p ω = I−1L

p = F L = τ

Page 22: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

Dynamics

ddtX(t) = d

dt

x(t)A(t)p(t)L(t)

=

v(t)ω ·A(t)F(t)τ(t)

Page 23: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

Simulation Loop (Euler)

Initialize:

( )

( ) 11 ~~

/

−− ∑

∑∑

−←

−←

iii

CMii

iiCM

i

m

Mm

mM

rrI

xxr

xx

LIω

AIAI

LAvx

1

11

,,,

−−

←← T

CMCM

LIω

AIAI

τLL

AωAA

Fvv

vxx

1

11

~/

−−

←⋅∆+←⋅∆+←

⋅∆+←⋅∆+←

T

CMCM

CMCMCM

t

t

Mt

t

∑∑

×←

i

ii

fF

frτ

iCMi

iCMi

ii

rωvv

rxx

rAr

×+←+←

⋅←

Pre-compute: sum up external forces

perform Euler integration step

per particle quantities

Page 24: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� orientation matrix is updated every time step

� errors accumulate

� is not orthonormal anymore

� use Gram-Schmidt orthonormalization

Reorthonormalizationof the Orientation

A

AωAA ~⋅∆+← t

333

23213133

222

12122

111

/

)()(

/

)(

/

bbb

babbabab

bbb

babab

aab

=⋅−⋅−=

=⋅−=

=

2a

121 )( bab ⋅

1b

1212 )( baba ⋅−

Page 25: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� is force being considered twice?

� to accelerate center of mass

� to cause the body to spin

Force vs. Torque Puzzle

τ =�ri × fi

F =�fi

F F v10 s later vvTME2

1=

F F

10 s laterIωωvv TTME

2

1

2

1 +=

longer path!

Page 26: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� representation of a rigid body� position (center of mass)

� orientation

� rigid body kinematics� linear velocity

� angular velocity

� rigid body dynamics� inertia tensor

� linear and angular momentum

� force and torque

� simulation loop

� orientation

� contact handling

Outline

Page 27: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� quaternions

� 4 components represent 3 dof

� often used in rigid body computations for rotations

Alternative OrientationRepresentations

ϕ

aq = (w, x, y, z)

Rot(v) = q ◦ (0, vx, vy, vz) ◦ q−1

q = (cos(φ2), sin(φ

2) · (ax, ay, az))

Page 28: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� quaternions are an extension of complex numbers

Quaternions

i2 = j2 = k2 = −1

i · j = k, j · k = i, k · i = j

j · i = −k, k · j = −i, i · k = −j

= w + x · i+ y · j+ z · k

q = (w,v) = w + v = (w,x, y, z)

Page 29: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� addition

� dot product

� conjugate

� magnitude

(module)

� inverse

Basic Operations

q1 + q2 = (w1 +w2) + (v1 + v2)

q = ¯w+ v = w − v

|q|2 = q · q = w2 + v · v

= w2 + v2x + v2y + v

2z

q−1 = q|q|2

q1 · q2 = w1w2 + v1 · v2

Page 30: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� multiplication

Basic Operations

q1 ◦ q2 = (w1 + v1)(w2 + v2)

= (w1w2 − v1v2) + (w1v2 +w2v1 + v1 × v2)

= (w1w2 − x1x2 − y1y2 − z1z2)

+(w1x2 +w2x1 + y2z1 − y1z2)i

+(w1y2 +w2y1 + z2x1 − z1x2)j

+(w1z2 +w2z1 + x2y1 − x1y2)k

Page 31: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� quaternions with

can be used to represent rotations

� corresponding rotation matrix

� rotation of a point

Unit Quaternions

|q| = 1

R = 2

0.5− y2 − z2 xy +wz xz −wyxy −wz 0.5− x2 − z2 yz +wxxz +wy yz −wx 0.5− x2 − y2

Rp = q ◦ (0,pT) ◦ q

Page 32: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� initialization of orientation and angular velocity

in the body frame

� update of the angular velocity using

� update of the orientation using

� updated orientation has to be normalized

� torque needs to be transformed from world to body frame,angular velocity from body to world frame

Application in the Simulation Loop

q ω

˙ω = I−1(τ − ω × (Iω))

q = 0.5q ◦ (0, ωT)

Page 33: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� representation of a rigid body� position (center of mass)

� orientation

� rigid body kinematics� linear velocity

� angular velocity

� rigid body dynamics� inertia tensor

� linear and angular momentum

� force and torque

� simulation loop

� orientation

� contact handling

Outline

Page 34: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� detect collisions (see collision detection slides)

� avoid penetrations

� change time step or

� push body back

� compute collision response

� colliding contact ("easy")

� resting contact (very hard)

Non-Penetration

relvn

0v =rel

n

nn n

Page 35: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� force driven

� penetration causes force (late, slow, easy to compute)

� impulse driven

� manipulation of velocities (J) instead of accelerations(fast, more difficult to compute)

� e – coefficient of restitution(e=0 plastic c., e=1 elastic c.)

Colliding Contact

nJ

JxxL

Jv

j

M

CM

CM

=

×−=∆=∆

)(

/

impact

[ ] nrnrIrnrI ⋅××+××++

+−=−−

bbbaaaba MM

vej

))(())((11

)1(11

rel

relv

aaM I,

bbM I,n

arbr

Page 36: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

Resting Contact

� find all collisions with small relative velocities

� solve for all contact forces simultaneously such that

for each contact force

� the force is strong enough to prevent interpenetration

� the force is repulsive only (not glue like)

� the force is zero if the bodies separate

� Linear complementary problem (LCP)

0v =rel

n

nn n

Page 37: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� representation of a rigid body� position (center of mass)

� orientation

� rigid body kinematics� linear velocity

� angular velocity

� rigid body dynamics� inertia tensor

� linear and angular momentum

� force and torque

� simulation loop

� orientation

� contact handling

Summary

Page 38: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� Murilo G. Coutinho, "Dynamic Simulations of "Dynamic Simulations of "Dynamic Simulations of "Dynamic Simulations of MultibodyMultibodyMultibodyMultibody Systems"Systems"Systems"Systems",Springer, ISBN 0-387-95192-X

� Andrew Witkin, David Baraff, Michael Kass,"Physically"Physically"Physically"Physically----based modeling"based modeling"based modeling"based modeling",ACM SIGGRAPH '01, Course Notes, 2001.

� David Eberly,"Game Physics""Game Physics""Game Physics""Game Physics",Elsevier, ISBN 1-55860-740-4.

� Kenny Erleben, J. Sporring, K. Henriksen, H. Dohlmann,"Physics"Physics"Physics"Physics----based Animation"based Animation"based Animation"based Animation",Charles River Media, Hingham, Massachusetts, ISBN 1-58450-380-7, 2005.

� Jan Bender, """"ImpulsbasierteImpulsbasierteImpulsbasierteImpulsbasierte DynamiksimulationDynamiksimulationDynamiksimulationDynamiksimulation von von von von MehrkoerpersystemenMehrkoerpersystemenMehrkoerpersystemenMehrkoerpersystemen in in in in derderderder virtuellenvirtuellenvirtuellenvirtuellen RealitaetRealitaetRealitaetRealitaet"""",Dissertation, Universitaet Karlsruhe, 2007

References

Page 39: Rigid Body Dynamics - Pennsylvania State University

University of Freiburg - Computer Science Department - Computer Graphics

� This slide set is courtesy of Matthias Mueller, NVIDIA Corp.

It has been modified.

Acknowledgement