Chapter 7
Chapter 7
Trajectory planning results in a certain velocity of the manipulator end link and any grasped tool. This
velocity comprised both time-varying positions and orientations. We now focus on how these velocities of
objects and manipulators may be described.
Previously, we considered how object position and orientation may be represented, before we considered
the forward and inverse kinematics for position of manipulators. Similarly, before discussing the velocities
of manipulators, we will consider the linear and angular velocity, as well as acceleration, of rigid bodies.
Suppose the link is moving due to joint angle velocity θ̇1 . Then the velocity of the endpoint is found by
differentiating (7.1):
−a1 θ̇1 sθ1
" #
0 −sθ1
ḋ01 = = a1 θ̇1 = a1 θ̇1 0 y1 (7.2)
a1 θ̇1 cθ1 cθ 1
The velocity direction is y1 , i.e., tangential to the position vector d 01 which points along the x1 axis. The
one-link motion is just like twirling with rotational velocity ω a ball on a string of radius r, where the
tangential velocity of the ball is v = rω (Figure 7.1(B)).
A more general derivation is based on the use of rotation matrices. Rewrite (7.1) as
0
d01 = 0 R1 a1 1 x1 (7.3)
Differentiating,
0
ḋ01 = 0 Ṙ1 a1 1 x1 + 0 R1 a1 1 ẋ1 = 0 Ṙ1 a1 1 x1 (7.4)
Joint axis 1 x1 = i is constant, so its time derivative is zero. The planar rotation matrix is:
cθ1 −sθ1
0
R1 = R(θ1 ) = (7.5)
sθ1 cθ1
c John M. Hollerbach, October 2000
1
2 CHAPTER 7. VELOCITY AND ACCELERATION
y1
x1
a1 O1
O0
1
7.2. SPHERICAL MOTION OF OBJECTS 3
y1 P R(θ +π /2)p1
y0 p1 x1 y1
y0 p x1
1
p0 θ1
O1
d 01
O0 x0 x0
(A) (B)
Figure 7.2: Motion of frame 1 relative to frame 0.
y1
y0
x1
a1 O1
θ1
O0
z1 x0
z0
where
0 −1 0
S(0 z0 ) = 1 0 0 (7.16)
0 0 0
is the skew-symmetric matrix formed from the components of 0 z0 = (0, 0, 1) (Appendix A). Substituting
into (7.13),
0
ḋ01 = a1 θ̇1 S(0 z0 )Rz (θ1 ) 1 x1 = a1 θ̇1 S(0 z0 ) 0 x1 = S(0 ω 0 ) 0 d01 (7.17)
noindent which agrees with (7.11).
p = k(k · p) + r (7.18)
ṗ = ṙ (7.19)
since the projection of p onto k is fixed. The velocity of the radial vector ṙ is tangent to the circle with
direction k × r, and from the well-known relation ṡ = r φ̇ for circular motion,
ṙ = φ̇k × r (7.20)
Hence
ṗ = φ̇k × p = ω × p (7.21)
where ω = φ̇k is the angular velocity vector.
Now let’s repeat the derivation with the angle-axis formulation R k (φ) of a rotation matrix. The rotation
matrix 0 R1 = Rk (φ) describes the evolution of coordinate system 1 relative to coordinate system 0, by
7.2. SPHERICAL MOTION OF OBJECTS 5
k
.
φ
kxp
Figure 7.4: Rotation of vector p about axis k with angular rate φ̇.
a time-dependent rotation φ(t) about the fixed axis k (Figure 7.5). The case where k can vary as well is
implicit in the derivation of the next section. This problem is a generalization of the time derivative of
Rz (θ1 ) from (7.15).
Proceed by using the chain rule:
dRk (φ) dRk (φ)
= φ̇ (7.22)
dt dφ
So the problem is that of finding dRk (φ)/dφ. Because the inverse of a rotation matrix is its transpose,
dRk (φ)T
ST = Rk (φ)
dφ
From the definitions above,
S + ST = 0 (7.26)
which is the defining condition for a skew-symmetric matrix. Reworking (7.24) using (7.26),
dRk (φ)
= −ST Rk (φ) = SRk (φ) (7.27)
dφ
Now we want to show that S = S(k). From the derivation of the rotational matrix corresponding to an
angle-axis rotation,
dRk (φ)
= −Isφ + kkT sφ + S(k)cφ (7.29)
dφ
6 CHAPTER 7. VELOCITY AND ACCELERATION
z0
z1
y1
k
y0
φ
x1
x0
Figure 7.5: Frame 1 rotates relative to frame 0 about k with angular velocity φ̇.
= −Isφcφ − kkT sφ(1 − cφ) + S(k)sφ2 + kkT sφcφ + kkT kkT sφ(1 − cφ)
The terms with S(k)k or kT S(k) are zero, because they involve taking the cross product of k with itself.
The term involving the double cross product can be simplified by seeing the result of applying to an arbitrary
vector v:
S(k)S(k)v = k × (k × v) = k(kT v) − v = (kkT − I)v (7.31)
Substituting into (7.30) and simplifying,
S = −Isφcφ − kkT sφ(1 − cφ) + S(k)(sφ2 + cφ2 ) + kkT sφcφ + kkT sφ(1 − cφ)
−(kkT − I)sφcφ
= S(k) (7.32)
where ω = φ̇k is the angular velocity of coordinate system 1 relative to coordinate system 0.
Consequently,
0 0 0 1 0 0 0 0 0
dRx (φ) T
S= R = 0 −sφ −cφ 0 cφ sφ = 0 0 −1 = S(x)
dφ
0 cφ −sφ 0 −sφ cφ 0 1 0
Hence
dRx (φ)
= S(x)Rx (φ)
dφ
RRT = I (7.35)
S + ST = 0 (7.37)
where
S = ṘRT
ST = RṘT
Ṙ = −ST R = SR
Extract a vector ω from the skew-symmetric matrix S = S(ω) (Appendix A), where ω is again the angular
velocity vector of the rotating frame with respect to the fixed frame. Then
Ṙ = S(ω)R (7.38)
Example 7.2: Suppose R(t) = Rx (φ(t)). Then from (7.38) and (7.27),
∂R dφ
Ṙ = = φ̇S(x)R = S(φ̇x)R = S(ω)R
∂φ dt
z0
p1
z1
y1
y0
x0 x1
Figure 7.6: Frame 1 rotates relative to frame 0 with angular velocity ω. Vector p 1 is fixed in frame 1.
z0
z1
z2 y2
y1
O0 O1 O2 y0
x0
x1 x2
Figure 7.7: Frame 2 rotates with respect to frame 1, while frame 1 rotates with respted to frame 0. The
origins stay coincident.
Consider two frames 0 and 1 with the same origin, and suppose frame 1 is rotating with respect to frame
0 and is instantaneously located by 0 R1 (t) (Figure 7.6). The time derivative of a vector fixed in frame 1,
1 p , relative to frame 0 is succinctly expressed using the concept of angular velocity vector.
1
0 0
p1 = R1 1 p1 (7.39)
0 0
ṗ1 = Ṙ1 1 p1 (7.40)
since again 1 ṗ1 = 0. Recalling (7.38),
0
ṗ1 = S(ω) 0 R1 1 p1 = S(ω) 0 p1 = ω × 0 p1 (7.41)
Sometimes one formally writes (7.38) as
Ṙ = ω × R (7.42)
where the cross product of a vector with a matrix is interpreted when applied to another vector as (7.41).
0 0
Ṙ2 = Ṙ1 1 R2 + 0 R1 1 Ṙ2 (7.44)
where 1 ω 12 is the angular velocity of frame 2 with respect to frame 1, expressed in frame 1, etc. Then
where
To prove (7.46), we apply each side to an arbitrary vector 0 b and show that the results are the same. Applying
the left side,
S(0 ω 12 ) 0 b = 0 ω 12 × 0 b (7.47)
= (0 R1 1 ω 12 ) × (0 R1 1 b)
0
= ω 12 × 0 b (7.48)
Since (7.47) and (7.48) are the same for all b, then (7.46) is established. From (7.45), we have the final
result:
φ x0
θ
x2 x1 z2,z3
ψ ψ
x3 z0,z1
φ
y0
θ
y1,y2 y3
Then supposing that the Euler angles are changing with rates φ̇, θ̇, ψ̇ and utilizing the result about summation
of angular velocities (7.50),
0
ω 03 = φ̇ 0 z0 + θ̇ 0 y1 + ψ̇ 0 z2 (7.51)
where
cφ −sφ 0 0 −sφ
0 1
y1 = Rz (φ) y1 = sφ cφ 0 1 = cφ (7.52)
0 0 1 0 0
cφ −sφ 0 cθ 0 sθ 0 cφsθ
0 2
z2 = Rz (φ)Ry (θ) z2 = sφ cφ 0 0 1 0 0 = sφsθ (7.53)
0 0 1 −sθ 0 cθ 1 cθ
where
0 −sφ cφsθ
Ωzyz = 0 cφ sφsθ (7.55)
1 0 cθ
The complication of the relation between the angular velocity vector ω and the Euler angle rates is due to
the non-orthogonality of the Euler angle rotation axes, as reflected in matrix Ω zyz .
The angular velocity vector is a fundamental aspect of object motion, which is explicitly represented in
the dynamics of motion. If object motion is planned in terms of Euler angle rates, then we must be able
to convert from the angular velocity vector to corresponding Euler angle rates. This is done by inverting
(7.54):
φ̇
−1 0
θ̇ = Ωzyz ω (7.56)
ψ̇
zyz may not exist. This happens when θ = 0. At such configurations, there are
There is a serious problem: Ω−1
valid angular velocities which cannot be represented by Euler angle rates. This is not a problem of physics,
but of the representation. Hence it is called a representational singularity.
This is a really bad problem. Together with the problem of indeterminate orientation when θ = 0, this
makes Euler angles in practice not that useful. One could switch between different Euler angle representa-
tions to avoid this problem, and this is sometimes done, but this artifice is distasteful.
In dynamic simulation of objects or robots in motion, applied forces or torques result in accelerations,
which are then integrated once to derive velocity and then again to derive position. Although angular velocity
can be found by integrating angular acceleration, there is a problem: what is the integral of angular velocity?
The answer unfortunately is that the integral of ω has no clear meaning. There is no set of Euler angles
that are its integral, because Euler angles represent rotation among nonorthogonal axes. On the other hand,
the components of ω are about orthogonal axes. More generally, there is no representation of orientation
which is the integral of the angular velocity vector.
Example 7.3: Consider the following two cases. Coordinate systems 0 and 1 are coincident at t = 0.
Case 1:
π/2
0 0≤t<1
0
0
ω 01 =
0
π/2 1≤t≤2
0
12 CHAPTER 7. VELOCITY AND ACCELERATION
z 0 ,z1 z 0 ,y1 z0
Case 1
y0 ,y 1 z1 y0 z1 y0
x0 ,x 1 x0 ,x 1
x0 ,y1
x1
t=0 t=1 t=2
z0 z 0 ,y1
Case 2
y0 ,y 1 y0 ,x 1
x0 ,z 1 x0 ,z 1
x1
Case 2:
0
π/2 0≤t<1
0
0
ω 01 =
π/2
0 1≤t≤2
0
Yet the results are different (Figure 7.9). For example, in case 1 the z 1 axis ends up as −y0 , whereas in case
2 it ends up a x0 .
On the other hand, the integral of Euler angle rates is meaningful, except for the representational singu-
larity problem mentioned above. Thus one converts from angular velocity to Euler angle rate, then integrates.
between quaternion rates and the angular velocity vector is stated below:
" # " #
d q0 1 −qT
= ω (7.57)
dt q 2 −S(q) + q0 I
The derivation is complicated, and can be found for example in [3]. In simulation, one converts from ω to q̇
as above, then integrates q̇ to arrive at q. Integration keeps ||q|| constant.
= S(0 ω 01 ) 0 R1 1 p1 + 0 ḋ01
0
= ω 01 × 0 R1 1 p1 + 0 ḋ01 (7.59)
0
= ω 01 × 0 p1 + 0 ḋ01
where 0 ω 01 is the angular velocity of frame 1 with respect to frame 0. Like any other vector, we have to
specify the frame in terms of which ω 01 is expressed, in this case frame 0. The motion of point P is due
both to linear motion of body 1 away from body 0, and rotational motion of body 1.
P
z1
p1
z0 p0 y1
O1
d 01 x1
O0 y0
x0
Figure 7.10: Frame 1 is moving with respect to frame 0, and point P is fixed with respect to frame 1.
P
z2 p2 y
2
z1 p1 O2
d12 x2
z0 p0 y
1
O1
d 01 x1
O0 y0
x0
Figure 7.11: Frame 2 is also moving with respect to frame 1, and point P is fixed with respect to frame 2.
.
zi θi zi
z i-1 z i-1
Link i Link i
ai ai
z i-2 .
di di z i-2
xi Oi x i-1 xi Oi x i-1
θi Oi-1 Lin θi Oi-1 Lin
k i- k i-
xi 1 xi 1
ai-1 ai-1
(A) (B)
Figure 7.12: (A) Rotary-joint motion of link i relative to link i − 1. (B) Prismatic-joint motion of link i
relative to link i − 1.
Linear motion is more complicated. The interorigin vector 0 di−1,i according to the DH parameters is:
0
di−1,i = di 0 zi−1 + ai 0 xi (7.64)
If joint i is rotary, then since only joint i is moving the axis z i−1 is stationary but xi is rotating about zi−1
with joint angle velocity θ̇i . Then the linear velocity 0 ḋi−1,i of origin Oi relative to Oi−1 is
0
ḋi−1,i = θ̇i 0 zi−1 × ai 0 xi (joint i rotary, only joint i is moving) (7.65)
where (7.62) and (7.64 have been substituted and the term with z i−1 crossed with itself is zero and doesn’t
change the linear velocity.
If joint i is prismatic, motion is due only to the prismatic variable d i , and so ω i−1,i = 0. Differentiating
(7.64) yields
0
ḋi−1,i = d˙i 0 zi−1 (joint i prismatic, only joint i is moving) (7.67)
d i−1,n
.
θi
yi−1
Oi−1
x i−1
Initially assume that all joints are rotary. Then from (7.76) and (7.81),
n
X
0
ω 0n = θ̇i 0 zi−1 (7.82)
i=1
n
X
0
ḋ0n = θ̇i 0 zi−1 × 0 di−1,n (7.83)
i=1
θ̇1
" #
0z × 0 d0n 0z × 0 d1n · · · 0z 0 θ̇2
0 1 n−1 × dn−1,n
= 0z 0z 0z
..
0 1 ··· n−1
.
θ̇n
18 CHAPTER 7. VELOCITY AND ACCELERATION
≡ Jv θ̇ (7.84)
where θ̇ = (θ̇1 , . . . , θ̇n ) is the vector of joint angle velocities and J v is the velocity Jacobian:
" #
0z × 0 d0n 0z × 0 d1n · · · 0z 0
0 1 n−1 × dn−1,n
Jv = 0z 0z 0z (7.85)
0 1 ··· n−1
O2
y1
z2 a2
y0 x1
Joint 2 θ2
a1 O1
z1
O0 x0
θ1
z0 Joint 1
= Jθ̇ (7.89)
7.4. JOINT-CONSTRAINED MOTION 19
The Jacobian matrix J is not the complete velocity Jacobian J v because it does not contain information
about the angular velocity or the z-component of position.
Now let’s derive the same result using the more general procedure of this section. The angular velocity
vectors of link 1 and 2 are:
0
ω 01 = θ̇1 0 z0 (7.91)
0
ω 12 = θ̇2 0 z1 (7.92)
0 0
ω 02 = ω 01 + 0 ω 12
Consequently,
0 0
ḋ02 = ω 01 × 0 d02 +0 ω 12 × 0 d12 (7.97)
O2
x2
z2
z 1 y0 i ai di αi θi
d2 1 0 0 −π/2 *
2 0 * π/2 0
x0 x 1
O0 O1
z0
(A) (B) (C)
Figure 7.15: Polar robot (A) with DH parameters (C) and zero-angle position (B).
This is just a rearrangement of (7.94). The advantage of the form (7.97) is that it is easily put into a Jacobian
matrix form, like (7.88) but in 3 dimensions:
" #
0
h
0z 0d 0z 0d
i θ̇1
ḋ02 = 0 × 02 1 × 12 = Jp θ̇ (7.98)
θ̇2
where Jp is now a 3-by-2 Jacobian matrix which is just the linear velocity part of the velocity Jacobian J v .
A full description also requires the angular velocity 0 ω 02 of the end link (7.93). Combine with (7.98)
into a single matrix-vector equation:
0 ḋ 0z × 0 d02 0z × 0 d12 θ̇1
02 0 1
= (7.99)
0ω 0z 0z
02 0 1 θ̇2
= Jv θ̇ (7.100)
where Jv is now the full velocity Jacobian.
= θ̇1 0 z0 (7.103)
The interorigin vectors are:
0
d01 = 0 (7.104)
0
d12 = d2 0 z1 (7.105)
7.4. JOINT-CONSTRAINED MOTION 21
z5 z6
y1 x2
x 4 x5 x6
O4 O5 O6 z2 O2
z3 a2
z4 O1 d4 d
d4 z1 26
O6
d16
O1 x1 x 2 x3
z0 x1
a2 O2 O3
z1 z0 d1 z3
z2 d06
d1
O0 y0
O0 x0
x0
(A) (B)
Figure 7.16: (A) Zero position of the elbow robot. (B) Diagram to derive the velocity Jacobian.
The interorigin linear velocities are derived from (7.78) and (7.79).
0
ḋ01 = 0 (7.106)
0
ḋ12 = 0
ω 02 × 0 d12 + d˙2 0 z1
= θ̇1 0 z0 × d2 0 z1 + d˙2 0 z1
Link n
d n,tool
Otool
On
ω
d 0n
v
d 0,tool
O0
x = (x1 , . . . , x6 )
The forward kinematics for position and orientation can be alternatively specified as:
xi = fi (θ)
x = f (θ)
for a vector function f = (f1 , . . . , f6 ) extracted from 0 Tn = 0 T1 · · · n−1 Tn . This extraction would be
straightforward for the position components, but would be a very complicated function indeed for the Euler
angles. We don’t actually do this extraction, but are representing this operation for formal development.
Next,
n
X ∂fi
ẋi = θ̇j (7.116)
j=1
∂θj
∂f
ẋ = θ̇
∂θ
∂f1 ∂f1
···
θ̇1
∂θ1 ∂θn
.. .. .. ..
≡
. . . .
∂f6 ∂f6 θ̇n
···
∂θ1 ∂θn
≡ Jθ̇ (7.117)
≡ Cẋ (7.119)
converts between the two end link velocity representations. Equating (7.114), (7.117), and (7.119),
Jv = CJ (7.121)
J = C−1 Jv (7.122)
This method of deriving J is vastly superior. On the other hand, there is a problem again with the invertibility
of C due to Ωzyz . In the literature, one often sees that people have mixed up J v and J and are unaware of
this invertibility problem.
where ω̇ 01 is the angular acceleration vector. The first term on the right is the transverse acceleration and
the second term is the centripetal acceleration.
Example 7.4: Consider motion in the x 0 , y0 plane (Figure 7.18). Although the motion is planar, all
vectors are three-dimensional. Then
0
ω 01 = θ̇1 0 z0
0
ω̇ 01 = θ̈1 0 z0
= −θ̇12 0 p1
As expected, the centripetal acceleration points inwards towards the center of rotation. Next, the tangential
component of acceleration due to rotation is
0
ω̇ 01 × 0 p1 = θ̈1 0 z0 × 0 p1
Suppose p1 is moving relative to frame 1, i.e., 1 ṗ1 6= 0. Then the derivative of (7.58) becomes
0 0
ṗ0 = Ṙ1 1 p1 + 0 R1 1 ṗ1 + 0 ḋ01
0
= ω 01 × 0 R1 1 p1 + 0 R1 1 ṗ1 + 0 ḋ01 (7.124)
7.7. MANIPULATOR ACCELERATIONS 25
y1 P
y0 p x1
1
p0 θ1
z1
d 01
z0 x0
Figure 7.18: Motion in the x0 , y0 plane. Axes of rotation z0 and z1 are parallel, and are indicated by circles.
The third term on the right is the coriolis acceleration, which is at right angles with the angular velocity ω
and the velocity 1 ṗ1 .
While this acceleration relationship is conceptually straightforward, the form of J̇v is complicated.
To compute the forward kinematic accelerations, the best procedure is to express the velocity relations
(7.76) and (7.79) recursively and differentiate those relations. Then
θ̇i 0 zi−1 for a rotary joint i
0 0
ω 0i = ω 0,i−1 + (7.127)
0 for a prismatic joint i
0 ω 0i × 0d
i−1,i for a rotary joint i
0 0
ḋ0i = ḋ0,i−1 + (7.128)
0ω ×
0i
0d ˙ 0
i−1,i + di zi−1 for a prismatic joint i
Differentiating,
θ̈i 0 zi−1 + θ̇i 0 ω 0,i−1 × 0z
i−1 for a rotary joint i
0 0
ω̇ 0i = ω̇ 0,i−1 + (7.129)
0 for a prismatic joint i
0 0d
ω̇ 0i × i−1,i + 0 ω 0i × (0 ω 0i × 0 di−1,i ) for a rotary joint i
0 0 0 ω̇
d̈0i = d̈0,i−1 + 0i × 0 di−1,i + 0 ω 0i × (0 ω 0i × 0 di−1,i ) (7.130)
+d¨i 0 zi−1 + 2d˙i 0 ω 0,i−1 × 0 zi−1
for a prismatic joint i
26 CHAPTER 7. VELOCITY AND ACCELERATION
Suppose that there is a fixed frame -1 in the environment with respect to which the base frame 0 is
referred. If the base is stationary, then the initial conditions for these recursive relations are ḋ−1,0 = 0,
ω −1,0 = 0, d̈−1,0 = 0, and ω̇ −1,0 . If the base is moving, such as for a mobile manipulator, then these initial
conditions must be provided to start the recursion.
Bibliography
[1] Chou, J.C.K., “Quaternion kinematic and dynamic differential equations,” IEEE Trans. Robotics and
Automation, vol. 8, pp. 53-64, 1992.
[2] Cooke, J.M., Zyda, M.J., Pratt, D.R., and McGhee, R.B., “NPSNET: flight simulation dynamic mod-
eling using quaternions,” Presence: Teleoperators and Virtual Environments, vol. 1, pp. 404-420,
1992.
[3] Nikravesh, P.E., Wehage, R.A., and Kwon, O.K., “Euler parameters in computational kinematics and
dynamics. Part 1,” J. Mechanisms, Transmissions, and Automation in Design, vol. 107, pp. 358-365,
1985.
[4] Salcudean, S., “A globally convergent angular velocity observer for rigid body motion,” IEEE
Trans. Automatic Control, vol. 36, pp. 1493-1497, 1991.
27