introduction to quaternions quaternion properties: addition · quaternion to angle-axis...
TRANSCRIPT
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:
'
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
'
s
v
,[ ]
s
'
v
'
,[ ]≡
s
i
x
j
y
k
z
+ + +
( )
s
'
i
x
'
j
y
'
k
z
'+ + +
( )≡
'
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
'+ +
( )
+ + +
( )
'
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
'+ +
( )
+
'
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
'+
( )
+ +
Derivation of multiplication (continued)
Now:
, , , , ,
So:
'
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
–=
'
ss
'
s
v
'
s
'
v
xx
'
yy
'
zz
'+ +
( )
–
+ + +=
xy
'
k
xz
'
j
–
yx
'
k
–
yz
'
i
zx
'
j
zy
'
i
–+ +
Derivation of multiplication (continued)
'
ss
'
s
v
'
s
'
v
xx
'
yy
'
zz
'+ +
( )
–
+ + +=
xy
'
k
xz
'
j
–
yx
'
k
–
yz
'
i
zx
'
j
zy
'
i
–+ +
'
ss
'
s
v
'
s
'
v
xx
'
yy
'
zz
'+ +
( )
–
+ + +=
yz
'
zy
'–
( )
i
zx
'
xz
'–
( )
j
xy
'
yx
'–
( )
k
+ +
'
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
∗
=
∗
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
⁄
=
1
–
q
1
–
q qq
∗
q
2
⁄
q
2
q
2
⁄
1
0
,[ ]
= = = =
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
∗
=
'
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
⋅( )
+ + +
,[ ]
=
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
=
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)
'
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
( )∗
=
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
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
=
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.
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
Why nonconstant velocity?
Spherical linear interpolation (Slerp)
• Constant velocity...
velocity