rigid body dynamics cse169: computer animation instructor: steve rotenberg ucsd, winter 2005

50
Rigid Body Dynamics CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005

Upload: stanley-harvey

Post on 18-Dec-2015

223 views

Category:

Documents


0 download

TRANSCRIPT

Rigid Body Dynamics

CSE169: Computer Animation

Instructor: Steve Rotenberg

UCSD, Winter 2005

Cross Product

xyyxzxxzyzzy

zyx

zyx

babababababa

bbb

aaa

ba

kji

ba

Cross Product

zyxxzz

zxyxzy

zyyzxx

xyyxzxxzyzzy

bbabac

babbac

bababc

babababababa

0

0

0

bac

ba

Cross Product

z

y

x

xy

xz

yz

z

y

x

zyxxzz

zxyxzy

zyyzxx

b

b

b

aa

aa

aa

c

c

c

bbabac

babbac

bababc

0

0

0

0

0

0

Cross Product

0

0

0

ˆ

ˆ

0

0

0

xy

xz

yz

z

y

x

xy

xz

yz

z

y

x

aa

aa

aa

b

b

b

aa

aa

aa

c

c

c

a

baba

Derivative of a Rotating Vector

Let’s say that vector r is rotating around the origin, maintaining a fixed distance

At any instant, it has an angular velocity of ω

rωr

dt

d

Derivative of Rotating Matrix

If matrix A is a rigid 3x3 matrix rotating with angular velocity ω

This implies that the a, b, and c axes must be rotating around ω

The derivatives of each axis are ωxa, ωxb, and ωxc, and so the derivative of the entire matrix is:

AωAωA

ˆdt

d

Product Rule

dt

dcabc

dt

dbabc

dt

da

dt

abcd

dt

dbab

dt

da

dt

abd

The product rule defines the derivative of products

Product Rule

It can be extended to vector and matrix products as well

dt

d

dt

d

dt

ddt

d

dt

d

dt

ddt

d

dt

d

dt

d

BAB

ABA

bab

aba

bab

aba

Dynamics of Particles

Kinematics of a Particle

onaccelerati

ity veloc

position

2

2

dt

d

dt

d

dt

d

xva

xv

x

Mass, Momentum, and Force

force

momentum

mass

ap

f

vp

mdt

d

m

m

Moment of Momentum

The moment of momentum is a vector

Also known as angular momentum (the two terms mean basically the same thing, but are used in slightly different situations)

Angular momentum has parallel properties with linear momentum

In particular, like the linear momentum, angular momentum is conserved in a mechanical system

prL

Moment of Momentum

prL

p

1r2r3r

pp

L is the same for all three of these particles

Moment of Momentum

prL

p

1r2r

3r

p

p

L is different for all of these particles

Moment of Force (Torque)

The moment of force (or torque) about a point is the rate of change of the moment of momentum about that point

dt

dLτ

Moment of Force (Torque)

frτ

frvvτ

frpvτ

prp

rLτ

prL

m

dt

d

dt

d

dt

d

Rotational Inertia

L=rxp is a general expression for the moment of momentum of a particle

In a case where we have a particle rotating around the origin while keeping a fixed distance, we can re-express the moment of momentum in terms of it’s angular velocity ω

Rotational Inertia

rrI

ωIL

ωrrL

ωrrrωrL

vrvrL

prL

ˆˆ

ˆˆ

m

m

mm

mm

Rotational Inertia

22

22

22

0

0

0

0

0

0

ˆˆ

yxzyzx

zyzxyx

zxyxzy

xy

xz

yz

xy

xz

yz

rrrrrr

rrrrrr

rrrrrr

m

rr

rr

rr

rr

rr

rr

m

m

I

I

rrI

Rotational Inertia

ωIL

I

22

22

22

yxzyzx

zyzxyx

zxyxzy

rrmrmrrmr

rmrrrmrmr

rmrrmrrrm

Rotational Inertia

The rotational inertia matrix I is a 3x3 matrix that is essentially the rotational equivalent of mass

It relates the angular momentum of a system to its angular velocity by the equation

This is similar to how mass relates linear momentum to linear velocity, but rotation adds additional complexity

ωIL

vp m

Systems of Particles

momentum tal to

mass ofcenter ofposition

particles all of mass l tota1

iiicm

i

iicm

n

iitotal

m

m

m

mm

vpp

xx

Velocity of Center of Mass

cmtotalcm

total

cmcm

i

ii

i

ii

cm

i

iicmcm

m

m

m

m

mdtd

m

m

m

dt

d

dt

d

vp

pv

vx

v

xxv

Force on a Particle

The change in momentum of the center of mass is equal to the sum of all of the forces on the individual particles

This means that the resulting change in the total momentum is independent of the location of the applied force

iiicm

icm

dt

d

dt

d

dt

d

fppp

pp

Systems of Particles

icmicm

iicm

pxxL

prL

The total moment of momentum around the center of mass is:

Torque in a System of Particles

iicm

iicm

iicmcm

iicm

dt

ddt

d

dt

d

frτ

prτ

prLτ

prL

Systems of Particles

We can see that a system of particles behaves a lot like a particle itself

It has a mass, position (center of mass), momentum, velocity, acceleration, and it responds to forces

We can also define it’s angular momentum and relate a change in system angular momentum to a force applied to an individual particle

iicm frτ

icm ff

Internal Forces

If forces are generated within the particle system (say from gravity, or springs connecting particles) they must obey Newton’s Third Law (every action has an equal and opposite reaction)

This means that internal forces will balance out and have no net effect on the total momentum of the system

As those opposite forces act along the same line of action, the torques on the center of mass cancel out as well

Kinematics of Rigid Bodies

Kinematics of a Rigid Body

For the center of mass of the rigid body:

2

2

dt

d

dt

d

dt

d

cmcmcm

cmcm

cm

xva

xv

x

Kinematics of a Rigid Body

For the orientation of the rigid body:

onacceleratiangular

locityangular ve

matrixn orientatio 3x3

dt

dωω

ω

A

Offset Position

Let’s say we have a point on a rigid body If r is the world space offset of the point relative

to the center of mass of the rigid body, then the position x of the point in world space is:

rxx cm

Offset Velocity

The velocity of the offset point is just the derivative of its position

rωvv

rxxv

rxx

cm

cm

cm

dt

d

dt

d

dt

d

Offset Acceleration

The offset acceleration is the derivative of the offset velocity

rωωrωaa

rωr

ωvva

rωvv

cm

cm

cm

dt

d

dt

d

dt

d

dt

d

Kinematics of an Offset Point

The kinematic equations for an fixed point on a rigid body are:

rωωrωaa

rωvv

rxx

cm

cm

cm

Dynamics of Rigid Bodies

Rigid Bodies

We treat a rigid body as a system of particles, where the distance between any two particles is fixed

We will assume that internal forces are generated to hold the relative positions fixed. These internal forces are all balanced out with Newton’s third law, so that they all cancel out and have no effect on the total momentum or angular momentum

The rigid body can actually have an infinite number of particles, spread out over a finite volume

Instead of mass being concentrated at discrete points, we will consider the density as being variable over the volume

Rigid Body Mass

With a system of particles, we defined the total mass as:

For a rigid body, we will define it as the integral of the density ρ over some volumetric domain Ω

dm

n

iimm

1

Rigid Body Center of Mass

The center of mass is:

d

dcm

xx

Rigid Body Rotational Inertia

zzyzxz

yzyyxy

xzxyxx

yxzyzx

zyzxyx

zxyxzy

III

III

III

drrdrrdrr

drrdrrdrr

drrdrrdrr

I

I22

22

22

Diagonalization of Rotational Inertial

z

y

xT

zzyzxz

yzyyxy

xzxyxx

I

I

I

where

III

III

III

00

00

00

00 IAIAI

I

Derivative of Rotational Inertial

ωIIωI

ωIIωωAIAIωI

AωIAIωI

AωIAAIAωI

AIAAI

AAIAI

ˆ

ˆˆ

ˆ

0

0

00

000

dt

ddt

ddt

ddt

d

dt

d

dt

d

dt

d

dt

d

TTT

T

TT

TT

T

Derivative of Angular Momentum

ωIωIωτ

ωIωωIωIωτ

ωIωωIIωτ

ωIω

ILτ

ωIL

ˆ

ˆdt

d

dt

d

dt

d

Newton-Euler Equations

ωIωIωτ

af

m

Applied Forces & Torques

ωIωτIω

fa

frτ

ff

1

1

m

iicg

icg

Properties of Rigid Bodies

af

vp

a

v

x

m

m

m

ωIωIωfrτ

ωIL

ω

ω

A

I

Rigid Body SimulationRigidBody {

void Update(float time);void ApplyForce(Vector3 &f,Vector3 &pos);

private:// constantsfloat Mass;Vector3 RotInertia; // Ix, Iy, & Iz from diagonal inertia

// variablesMatrix34 Mtx; // contains position & orientationVector3 Momentum,AngMomentum;

// accumulatorsVector3 Force,Torque;

};

Rigid Body Simulation

RigidBody::ApplyForce(Vector3 &f,Vector3 &pos) {

Force += f;

Torque += (pos-Mtx.d) x f

}

Rigid Body Simulation

RigidBody::Update(float time) {// Update positionMomentum += Force * time;Mtx.d += (Momentum/Mass) * time; // Mtx.d = position

// Update orientationAngMomentum += Torque * time;

Matrix33 I = Mtx·I0·MtxT // A·I0·AT

Vector3 ω = I-1·Lfloat angle = |ω| * time; // magnitude of ωVector3 axis = ω;axis.Normalize();Mtx.RotateUnitAxis(axis,angle);

}