10
Introduction to quaternions Defi nition : A quaternion consists of a scalar part , , and a vector part , : where, q s s v xyz , , ( ) = v 3 q s v , [ ] q s xyz , , ( ) , [ ] q s i x j y k z + + + i 2 j 2 k 2 1 = = = ij k = ji k = Quaternion properties: addition Defi nition : Addition is: associative commutative q s v , [ ] s xyz , , ( ) , [ ] = = q ' s ' v ' , [ ] s ' x ' y ' z ' , , ( ) , [ ] = = q q ' + s s ' + v v ' + , [ ] = s s ' + ( ) i x x ' + ( ) j y y ' + ( ) k z z ' + ( ) + + + = Quaternion properties: multiplication Defi nition : Note : qq ' ss ' v v ' v v ' × s v ' s ' v + + , [ ] = a b a x b x a y b y a z b z + + b a = a b × a y b z a z b y a z b x a x b z a x b y a y b x , , ( ) b a × = Derivation of multiplication qq ' s v , [ ] s ' v ' , [ ] s i x j y k z + + + ( ) s ' i x ' j y ' k z ' + + + ( ) qq ' ss ' s i x ' j y ' k z ' + + ( ) i xs ' i x i x ' j y ' k z ' + + ( ) + + + + = j ys ' j y i x ' j y ' k z ' + + ( ) k zs ' k z i x ' j y ' k z ' + + ( ) + + + ( ) qq ' ss ' s v ' s ' v i x i x ' j y ' k z ' + + ( ) + + + + = j y i x ' j y ' k z ' + + ( ) k z i x ' j y ' k z ' + + ( ) + qq ' ss ' s v ' s ' v xx ' yy ' zz ' + + ( ) + + + = i x j y ' k z ' + ( ) j y i x ' k z ' + ( ) k z i x ' j y ' + ( ) + +

Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Introduction to quaternions

Definition: A quaternion consists of a scalar part , ,and a vector part , :

where,

q

s

s

ℜ∈

v

x y z

, ,( )

=

v

3

q s

v

,[ ]≡

q s x y z

, ,( ),[ ]≡

q s

i

x

j

y

k

z

+ + +

i

2

j

2

k

2

1

–= = =

ij k

=

ji k

–=

Quaternion properties: addition

Definition:

Addition is:

• associative

• commutative

q s

v

,[ ]

s x y z

, ,( ),[ ]

= =

q

'

s

'

v

'

,[ ]

s

'

x

'

y

'

z

'

, ,( ),[ ]

= =

q q

'+

s s

'+

v v

'+

,[ ]

=

s s

'+

( )

i

x x

'+

( )

j

y y

'+

( )

k

z z

'+

( )

+ + +=

Quaternion properties: multiplication

Definition:

Note:

qq

'

ss

'

v v

'

v v

'

×

s

v

'

s

'

v

+ +

,[ ]

=

a b

a

x

b

x

a

y

b

y

a

z

b

z

+ +

b a

=

a b

×

a

y

b

z

a

z

b

y

a

z

b

x

a

x

b

z

a

x

b

y

a

y

b

x

, ,( )≡

b a

×

–=

Derivation of multiplication

qq

'

s

v

,[ ]

s

'

v

'

,[ ]≡

s

i

x

j

y

k

z

+ + +

( )

s

'

i

x

'

j

y

'

k

z

'+ + +

( )≡

qq

'

ss

'

s

i

x

'

j

y

'

k

z

'+ +

( )

i

xs

'

i

x

i

x

'

j

y

'

k

z

'+ +

( )

+ + + +=

j

ys

'

j

y

i

x

'

j

y

'

k

z

'+ +

( )

k

zs

'

k

z

i

x

'

j

y

'

k

z

'+ +

( )

+ + +

( )

qq

'

ss

'

s

v

'

s

'

v i

x

i

x

'

j

y

'

k

z

'+ +

( )

+ + + +=

j

y

i

x

'

j

y

'

k

z

'+ +

( )

k

z

i

x

'

j

y

'

k

z

'+ +

( )

+

qq

'

ss

'

s

v

'

s

'

v

xx

'

yy

'

zz

'+ +

( )

+ + +=

i

x

j

y

'

k

z

'+

( )

j

y

i

x

'

k

z

'+

( )

k

z

i

x

'

j

y

'+

( )

+ +

Page 2: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Derivation of multiplication (continued)

Now:

, , , , ,

So:

qq

'

ss

'

s

v

'

s

'

v

xx

'

yy

'

zz

'+ +

( )

+ + +=

i

x

j

y

'

k

z

'+

( )

j

y

i

x

'

k

z

'+

( )

k

z

i

x

'

j

y

'+

( )

+ +

ij k

=

ik j

–=

ji k

–=

jk i

=

ki j

=

kj i

–=

qq

'

ss

'

s

v

'

s

'

v

xx

'

yy

'

zz

'+ +

( )

+ + +=

xy

'

k

xz

'

j

yx

'

k

yz

'

i

zx

'

j

zy

'

i

–+ +

Derivation of multiplication (continued)

qq

'

ss

'

s

v

'

s

'

v

xx

'

yy

'

zz

'+ +

( )

+ + +=

xy

'

k

xz

'

j

yx

'

k

yz

'

i

zx

'

j

zy

'

i

–+ +

qq

'

ss

'

s

v

'

s

'

v

xx

'

yy

'

zz

'+ +

( )

+ + +=

yz

'

zy

'–

( )

i

zx

'

xz

'–

( )

j

xy

'

yx

'–

( )

k

+ +

qq

'

ss

'

s

v

'

s

'

v v v

'

v v

'

×

+ + +=

ss

'

v v

'

v v

'

×

s

v

'

s

'

v

+ +

,[ ]

=

Quaternion properties

Conjugate:

Note:

So:

Unit quaternion:

q qq

=

qq

s

2

v v

( )⋅( )

v v

( )×

s

v

s

v

( )

+ +

,[ ]

=

s

2

v v

+

0

,[ ]

=

q s

2

x

2

y

2

z

2

+ + +=

q

1

=

Quaternion properties

Inverse:

Note:

q

1

q

q

2

=

qq

1

q

1

q qq

q

2

q

2

q

2

1

0

,[ ]

= = = =

Page 3: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Quaternion rotations

Any unit quaternion can be expressed as:

where,

.

Such a unit quaternion represents a rotation of about thevector .

q

θ

2

⁄( )

cos

θ

2

⁄( )

sin

k

ˆ

,[ ]

=

k

ˆ

k

x

k

y

k

z

, ,( )

=

θ

k

ˆ

Quaternion rotation

Let,

denote the Cartesian coordinates of a point in 3-space.

Rotation of by about the vector to :

p

p

x

p

y

p

z

, ,( )

=

p

θ

k

ˆ

p

'

p

0

p

,[ ]

=

p

'

0

p

'

,[ ]

=

p

'

qpq

=

Quaternion rotation: angle-axis equivalence

Remember:

So:

p

'

qpq

=

qq

'

ss

'

v v

'

v v

'

×

s

v

'

s

'

v

+ +

,[ ]

=

p

'

s

v

,[ ]

0

p

,[ ]

s

v

,[ ]

=

p

'

v

p

v p

×

s

p

+

,[ ]

s

v

,[ ]

=

p

'

s

v p

⋅( )

v p

×( )

v

s

p v

⋅( )

+ +

,[

v p

×( )

v

×

s

p v

×( )

s

v p

×( )

s

2

p v v p

⋅( )

+ + +

]

=

Quaternion rotation: angle-axis equivalence

Scalar part:

(Why?

Mathematica

)

Vector part I:

So:

p

'

s

v p

⋅( )

v p

×( )

v

s

p v

⋅( )

+ +

,[

v p

×( )

v

×

s

p v

×( )

s

v p

×( )

s

2

p v v p

⋅( )

+ + +

]

=

s

v p

⋅( )

v p

×( )

v

s

p v

⋅( )

+ +

0

=

s

p v

×( )

s

v p

×( )

+

2

s

v p

×( )

=

p

'

0

v p

×( )

v

×

2

s

v p

×( )

s

2

p v v p

⋅( )

+ + +

,[ ]

=

Page 4: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Quaternion rotation: angle-axis equivalence

Vector part II:

(Why?

Mathematica

)

So:

p

'

0

v p

×( )

v

×

2

s

v p

×( )

s

2

p v v p

⋅( )

+ + +

,[ ]

=

v p

×( )

v

×

v v

⋅( )

p v p

⋅( )

v

–=

p

'

0

s

2

v v

( )

p

2

s

v p

×( )

2

v p

⋅( )

v

+ +

,[ ]

=

p

'

s

2

v v

( )

p

2

s

v p

×( )

2

v p

⋅( )

v

+ +=

Quaternion rotation: angle-axis equivalence

Remember unit quaternion:

So:

p

'

s

2

v v

( )

p

2

s

v p

×( )

2

v p

⋅( )

v

+ +=

q

θ

2

⁄( )

cos

θ

2

⁄( )

sin

k

ˆ

,[ ]

=

p

' cos

2

θ

2

⁄( )

sin

2

θ

2

⁄( )

[ ]

p

+=

2

θ

2

⁄( )

cos

θ

2

⁄( )

sin

k

ˆ

p

×

2

sin

2

θ

2

⁄( )

k

ˆ

p

⋅( )

k

ˆ+

Quaternion rotation: angle-axis equivalence

So:

θ

cos

cos

2

θ

2

⁄( )

sin

2

θ

2

⁄( )

–=

θ

sin 2

θ

2

⁄( )

cos

θ

2

⁄( )

sin

=

1

θ

cos

( )

1

cos

2

θ

2

⁄( )

– sin

2

θ

2

⁄( )

+

( )

=

2

sin

2

θ

2

⁄( )

=

p

' cos

2

θ

2

⁄( )

sin

2

θ

2

⁄( )

[ ]

p

+=

2

θ

2

⁄( )

cos

θ

2

⁄( )

sin

k

ˆ

p

×

2

sin

2

θ

2

⁄( )

k

ˆ

p

⋅( )

k

ˆ+

p

'

θ

cos

( )

p

θ

sin

( )

k

ˆ

p

×

1

θ

cos

( )

k

ˆ

p

⋅( )

k

ˆ+ +=

Quaternion rotation: angle-axis equivalence

where,

Equivalent to ?

(Best answered by

Mathematica

.)

p

'

θ

cos

( )

p

θ

sin

( )

k

ˆ

p

×

1

θ

cos

( )

k

ˆ

p

⋅( )

k

ˆ+ +=

p

'

c

θ( )

p

s

θ( )

k

ˆ

p

×

v

θ( )

k

ˆ

p

⋅( )

k

ˆ+ +=

c

θ θ

cos

=

s

θ θ

sin

=

v

θ

1

θ

cos

–=

p

'

R

k

ˆ

θ( )

p

=

Page 5: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Quaternion rotation: angle-axis equivalence

Answer from

Mathematica

:

Conclusion: same as derived earlier!

p

'

R

k

ˆ

θ( )

p

=

R

k

ˆ

θ( )

k

x

2

v

θ

c

θ

+

( )

k

x

k

y

v

θ

k

z

s

θ

( )

k

x

k

z

v

θ

k

y

s

θ

+

( )

k

x

k

y

v

θ

k

z

s

θ

+

( )

k

y

2

v

θ

c

θ

+

( )

k

y

k

z

v

θ

k

x

s

θ

( )

k

x

k

z

v

θ

k

y

s

θ

( )

k

y

k

z

v

θ

k

x

s

θ

+

( )

k

y

2

v

θ

c

θ

+

( )

=

Quaternion rotation: summary

Rotation through quaternions:

Rodrigues formula:

p

'

qpq

=

p

'

c

θ( )

p

s

θ( )

k

ˆ

p

×

v

θ( )

k

ˆ

p

⋅( )

k

ˆ+ +=

Composite quaternion rotations

Assume two rotations: followed by :

(first rotation)

(second rotation)

q

o

q

1

p

'

q

0

pq

0

=

p

''

q

1

p

'

q

1

=

p

''

q

1

q

0

pq

0

∗( )

q

1

=

p

''

q

1

q

0

( )

p q

0

q

1

∗( )

=

p

''

q

1

q

0

( )

p q

0

q

1

∗( )

=

p

''

q

1

q

0

( )

p q

1

q

0

( )∗

=

Conjugate multiplication

(multiplication)

qq

'

ss

'

v v

'

v v

'

×

s

v

'

s

'

v

+ +

,[ ]

=

q

0

q

1

∗( )

s

0

v

0

,[ ]

s

1

v

1

,[ ]

=

s

0

s

1

v

0

v

1

v

0

v

1

×

s

0

v

0

s

1

v

1

,[ ]

=

q

1

q

0

( )∗

s

1

v

1

,[ ]

s

0

v

0

,[ ]( )∗

=

s

1

s

0

v

1

v

0

v

1

v

0

×

s

0

v

1

s

1

v

0

+ +

,[ ]∗

=

s

1

s

0

v

1

v

0

v

1

v

0

×

s

0

v

1

s

1

v

0

+ +

( )

,[ ]

=

s

0

s

1

v

0

v

1

v

0

v

1

×

s

0

v

0

s

1

v

1

,[ ]

=

q

0

q

1

∗( )

q

1

q

0

( )∗

=

Page 6: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Quaternion to angle-axis representation

Unit quaternion:

So:

q s

v

,[ ]

=

q

θ

2

⁄( )

cos

θ

2

⁄( )

sin

k

ˆ

,[ ]

=

θ

2

v

s

,( )

atan

=

k

ˆ

v v

=

Quaternion to rotation matrix

Given:

what is

?

q s x y z

, ,( ),[ ]

=

R

r

11

r

12

r

13

r

21

r

22

r

23

r

31

r

32

r

33

=

Quaternion to rotation matrix

Now:

(...see

Mathematica

)

p

'

s

2

v v

( )

p

2

s

v p

×( )

2

v p

⋅( )

v

+ +=

s

2

v v

( )

p

s

2

x

2

y

2

z

2

( )

1 0 00 1 00 0 1

p

=

2

s

v p

×( )

2

s

0

z

yz

0

x

y

x

0

p

=

2

v p

⋅( )

v

2

x

2

xy xz

xy y

2

yz

xz yz z

2

p

=

Quaternion to rotation matrix (cont.)

p

'

s

2

x

2

y

2

z

2

( )

1 0 00 1 00 0 1

2

s

0

z

yz

0

x

y

x

0

+ +

=

2

x

2

xy xz

xy y

2

yz

xz yz z

2

p

Page 7: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Quaternion to rotation matrix (cont.)

Therefore, a unit quaternion corresponds to:

p

'

1 2

y

2

z

2

+

( )

2

xy sz

( )

2

xz sy

+

( )

2

xy sz

+

( )

1 2

x

2

z

2

+

( )

2

yz sx

( )

2

xz sy

( )

2

yz sx

+

( )

1 2

x

2

y

2

+

( )

p

=

q s x y z

, ,( ),[ ]

=

R

1 2

y

2

z

2

+

( )

2

xy sz

( )

2

xz sy

+

( )

2

xy sz

+

( )

1 2

x

2

z

2

+

( )

2

yz sx

( )

2

xz sy

( )

2

yz sx

+

( )

1 2

x

2

y

2

+

( )

=

Rotation matrix to quaternion

Given:

what is

?

R

r

11

r

12

r

13

r

21

r

22

r

23

r

31

r

32

r

33

=

q s x y z

, ,( ),[ ]

=

Rotation matrix to quaternion

or

R

1 2

y

2

z

2

+

( )

2

xy sz

( )

2

xz sy

+

( )

2

xy sz

+

( )

1 2

x

2

z

2

+

( )

2

yz sx

( )

2

xz sy

( )

2

yz sx

+

( )

1 2

x

2

y

2

+

( )

=

Rs

2

x

2

y

2

z

2

–+

2

xy sz

( )

2

xz sy

+

( )

2

xy sz

+

( )

s

2

x

2

y

2

z

2

–+

2

yz sx

( )

2

xz sy

( )

2

yz sx

+

( )

s

2

x

2

y

2

z

2

+

=

Rotation matrix to quaternion

So:

Rs

2

x

2

y

2

z

2

–+

2

xy sz

( )

2

xz sy

+

( )

2

xy sz

+

( )

s

2

x

2

y

2

z

2

–+

2

yz sx

( )

2

xz sy

( )

2

yz sx

+

( )

s

2

x

2

y

2

z

2

+

=

r

11

r

22

r

33

+ +

3

s

2

x

2

y

2

z

2

–=

r

11

r

22

r

33

1

+ + +

3

s

2

x

2

y

2

z

2

+=

s

2

x

2

y

2

z

2

+ + +

( )

r

11

r

22

r

33

1

+ + +

4

s

2

=

Page 8: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Rotation matrix to quaternion

Similarly:

r

11

r

22

r

33

1

+ + +

4

s

2

=

s

2

1 4

⁄( )

1

r

11

r

22

r

33

+ + +

( )

=

x

2

1 4

⁄( )

1

r

11

r

22

r

33

–+

( )

=

y

2

1 4

⁄( )

1

r

11

r

22

r

33

–+

( )

=

z

2

1 4

⁄( )

1

r

11

r

22

r

33

+

( )

=

Rotation matrix to quaternion

R

1 2

y

2

z

2

+

( )

2

xy sz

( )

2

xz sy

+

( )

2

xy sz

+

( )

1 2

x

2

z

2

+

( )

2

yz sx

( )

2

xz sy

( )

2

yz sx

+

( )

1 2

x

2

y

2

+

( )

=

r

32

r

23

2

yz sx

+

( )

2

yz sx

( )

–=

4

sx

=

sx

1 4

⁄( )

r

32

r

23

( )

=

sy

1 4

⁄( )

r

13

r

31

( )

=

sz

1 4

⁄( )

r

21

r

12

( )

=

xy

1 4

⁄( )

r

12

r

21

+

( )

=

xz

1 4

⁄( )

r

13

r

31

+

( )

=

yz

1 4

⁄( )

r

23

r

32

+

( )

=

Rotation matrix to quaternion

Now what?

s

2

1 4

⁄( )

1

r

11

r

22

r

33

+ + +

( )

=

x

2

1 4

⁄( )

1

r

11

r

22

r

33

–+

( )

=

y

2

1 4

⁄( )

1

r

11

r

22

r

33

–+

( )

=

z

2

1 4

⁄( )

1

r

11

r

22

r

33

+

( )

=

sx

1 4

⁄( )

r

32

r

23

( )

=

sy

1 4

⁄( )

r

13

r

31

( )

=

sz

1 4

⁄( )

r

21

r

12

( )

=

xy

1 4

⁄( )

r

12

r

21

+

( )

=

xz

1 4

⁄( )

r

13

r

31

+

( )

=

yz

1 4

⁄( )

r

23

r

32

+

( )

=

Quaternion advantages

1. Do not suffer from singularities, as 3-angle conventions do.

2. Most compact way of representing rotations without redun-dancy or singularity.

Page 9: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Quaternion advantages (cont.)

3. Distance metric between rotations:

4. Finite-precision re-normalization of compound rotations.

5. For simulation purposes, easy to generate a uniformly ran-dom distribution of rotations in quaternion space.

6. Computation of shortest-path, smooth, continuous-velocity trajectories between two rotations (represented as unit quaternions).

d q p

,( )

min

E q p

,( )

E q p

,( ),[ ]≡

E q p

,( )

s

q

s

p

( )

2

x

q

x

p

( )

2

y

q

y

p

( )

2

z

q

z

p

( )

2

+ + +

Trajectory generation between rotations

Linear interpolation (Lerp):

, ,

where,

.

Lerp

q

0

q

1

h

, ,( )

f q

0

q

1

h

, ,( )

f q

0

q

1

h

, ,( )

-------------------------------=

h

0 1

,[ ]∈

f q

0

q

1

h

, ,( )

q

0

1

h

( )

q

1

h

+=

Trajectory generation between rotations

Spherical Linear interpolation (Slerp):

• Constant velocity

• Shortest path

,

or equivalently as,

, (why?)

So what’s the difference?

Slerp

q

0

q

1

h

, ,( )

q

1

q

01

( )

h

q

0

=

h

0 1

,[ ]∈

Slerp

q

0

q

1

h

, ,( )

q

1

q

0

∗( )

h

q

0

=

h

0 1

,[ ]∈

Linear interpolation (Lerp)

• Nonconstant velocity...

velocity

Page 10: Introduction to quaternions Quaternion properties: addition · Quaternion to angle-axis representation Unit quaternion: So: qs v [], = q q 2 ()⁄ cos q 2 ()⁄ sin k ˆ [ , ] = q

Why nonconstant velocity?

Spherical linear interpolation (Slerp)

• Constant velocity...

velocity