Graphics Reference
In-Depth Information
where
R
i
is the rotation matrix specifying the orientation of the
j
th
coordinate frame
with respect to the
i
th
coordinate frame, and
O
j
i
gives the coordinates of the
j
th
joint
in the
i
th
coordinate frame.
A key issue for working with motion capture data is the parameterization of the
rotation matrix at each joint. Using three Euler angles (i.e., rotations about the
x
,
y
,
and
z
axes) is a poor choice since they are difficult to naturally interpolate and suffer
from “gimbal lock,” a singularity (loss of a degree of freedom) that results when one
of the angles is near a critical value. Instead, pose is typically parameterized using
quaternions
or
twists
.
A
quaternion
represents a rotation with a unit vector in
4
, and is closely related
to the axis-angle parameterization discussed in Section
22
. In particular, the unit
quaternion given by
R
cos
2
,
v
1
sin
2
,
v
2
sin
2
,
v
3
sin
2
q
=
(7.9)
3
. We convert between quater-
nions and rotation matrices using the
Rodrigues formula
in Equation (
6.58
) and the
equations in Problem
6.21
. In a kinematic model, the rotation axis for each joint is
defined with respect to a local coordinate system, as discussed earlier. Quaternions
were introduced to the animation community by Shoemake [
444
], though they had
been used in mechanical engineering (e.g., spacecraft design) for some time.
The
twist
parameterization combines a rotation and translation (i.e., a rigid
motion) into a vector
represents a rotation of
θ
around the unit vector
v
in
R
6
. It uses the key observation that any rigid motion can be
expressed as a rotation around some axis followedby a translation along the same axis
(known as Chasles' theorem [
342
]). This so-called
screw transformation
is illustrated
in Figure
7.10
.
ξ
in
R
s
w
. The
3
, i.e.,
We break the twist vector into two vectors
s
and
w
in
R
ξ
=
first vector
s
encodes the direction of the screw axis (given by a unit vector
v
in
R
3
) and the amount of rotation around it (given by a scalar
ψ
) using the axis-angle
parameterization. That is,
s
v
. The vector
w
encodes the origin in space of the
screw axis, and the distance along the axis that must be traveled to accomplish the
translation. For a translation in world coordinates
t
=
ψ
3
, the vector
w
is computed as
∈ R
w
=
ρ
×
v
(7.10)
ρ
v
where
ρ
is a point on the axis satisfying
=
0, which can be computed as described
in Problem
7.5
.
Thematrices needed for the forwardkinematics equation (
7.8
) canbe conveniently
represented in terms of the twist vector
ξ
i
, namely
R
i
−
1
i
exp
O
i
−
1
i
ψ
[
v
i
]
×
ψ
i
w
i
i
=
(7.11)
0
0
1
0
exp
v
i
w
i
ψ
i
v
i
(ψ
i
[
v
i
]
×
)(
I
3
×
3
−
exp
(ψ
i
[
v
i
]
×
))(
v
i
×
w
i
)
+
=
(7.12)
0
1