Solution Manual For Robotics Ling Planning And Control

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 159

DownloadSolution-Manual-for-Robotics-ling-Planning-and-Control
Open PDF In BrowserView PDF
Luigi Villani, Giuseppe Oriolo, Bruno Siciliano

Solution Manual for

Robotics
Modelling, Planning and Control
February 6, 2009

Springer

Preface

This manual presents the solutions to all the end-of-chapter problems contained in the textbook Robotics: Modelling, Planning and Control
(ISBN 978-1-84628-641-4, e-ISBN 978-1-84628-642-1) by Bruno Siciliano,
Lorenzo Sciavicco, Luigi Villani and Giuseppe Oriolo, Springer-Verlag, London, 2009.
Solutions to analytical problems are developed by emphasizing the crucial
steps towards the solution. Some problems may be solved in different ways; the
solution reported in the manual is believed to be the most straightforward. The
solutions to several problems contain useful analytical developments which are
complementary to the theoretical derivation in the textbook.
Solutions to programming problems are accompanied by results of comR
R 1
(version 7.4) with Simulink
. The
puter implementations in Matlab
code (downloadable from www.springer.com/978-1-84628-641-4) is available free of charge to those adopting this volume as a text for courses.
The software is not aimed at providing a complete toolbox, but only at
solving the end-of-chapter problems. Nonetheless, the code has been developed
in a modular fashion which should allow direct expansion to more complex
problems as well as ease of changing the problems data.
For the problems solved in Matlab, the solution is contained in a file with
.m extension, where the first letter is an s, followed by the problem number,
e.g., s4 1.m is the file to execute for solving Problem 4.1.
The problems requiring simulation of a dynamic system have been solved
in Simulink and the solution is contained in a file with .mdl extension, e.g.,
s3 21.mdl is the file to execute for solving Problem 3.21. Each problem of
this kind requires the initialization of certain variables before starting the
simulation. This is performed in a file where the first letter is an i, followed
by the problem number, e.g., i3 21.m is the initialization file for Problem
3.21.
1

Matlab and Simulink are registered trademarks of The MathWorks, Inc.

vi

Preface

For both Matlab- and Simulink-based problems, the output plots of
relevant variables are obtained by executing a file where the first letter is
a p, followed by the problem number, e.g., p3 21.m is the file for plotting the
output variables of Problem 3.21.
Variable initialization and plot can be activated by double clicking respectively on the upper-left block and the lower-right block in the Simulink block
diagrams.
For problems requiring the simulation of two different systems, two files
have been created where letters a and b have been used to distinguish them,
e.g., s3 22a.mdl and s3 22b.mdl are the files for solving Problem 3.22 with
two different algorithms; accordingly, the files for plotting output variables
have been named p3 22a.m and p3 22b.m.
The above files are supplemented by other function and script files which
are needed to solve the programming problems.
All the files used to solve a given problem are collected into a folder with
the same label of the problem, e.g. Folder 3 21 contains the files of Problem
3.21.
Helpful comments are added to each file to describe its contents and functions. A readme.txt file is also provided.
Finally, the authors wish to thank Luigi Freda for his contributions to the
software developed for the solution of some problems of Chapter 12.

Naples and Rome
February 2009

Luigi Villani
Giuseppe Oriolo
Bruno Siciliano

Contents

2

Kinematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

3

Differential Kinematics and Statics . . . . . . . . . . . . . . . . . . . . . . . . 19

4

Trajectory Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5

Actuators and Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

6

Control Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

7

Dynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

8

Motion Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

9

Force Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

10 Visual servoing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
11 Mobile Robots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
12 Motion Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

2
Kinematics

Solution to Problem 2.1
Composition of rotation matrices with respect to the current frame gives
R(φ) = Rz (ϕ)Rx (ϑ)Rz (ψ).
Using the expressions of elementary rotation matrices in (2.6) and (2.8):
⎡
⎤
cϕ −sϕ 0
Rz (ϕ) = ⎣ sϕ cϕ 0 ⎦
0
0
1
⎤
⎡
1 0
0
Rx (ϑ) = ⎣ 0 cϑ −sϑ ⎦
0 sϑ cϑ
⎡
⎤
cψ −sψ 0
Rz (ϕ) = ⎣ sψ cψ 0 ⎦
0
0
1
and taking the products gives
⎡
cϕ cψ − s ϕ cϑ s ψ
R(φ) = ⎣ sϕ cψ + cϕ cϑ sψ
sϑ sψ

−cϕ sψ − sϕ cϑ cψ
−sϕ sψ + cϕ cϑ cψ
sϑ cψ

As for the inverse problem, given a rotation matrix
⎡
⎤
r11 r12 r13
R = ⎣ r21 r22 r23 ⎦ ,
r31 r32 r33

⎤
sϕ sϑ
−cϕ sϑ ⎦ .
cϑ

2

2 Kinematics

the set of Euler angles ZXZ is given by
ϕ = Atan2(r13 , −r23 )


2 + r2 , r
ϑ = Atan2
r31
32 33
ψ = Atan2(r31 , r32 )
when ϑ ∈ (0, π). Otherwise, if ϑ ∈ (−π, 0) then the solution is
ϕ = Atan2(−r13 , r23 )
 

2
2
ϑ = Atan2 − r31 + r32 , r33
ψ = Atan2(−r31 , −r32 ).

Solution to Problem 2.2
In the case sϑ = 0, the rotation matrix in (2.18)
⎡
cϕ+ψ −sϕ+ψ
R(φ) = ⎣ sϕ+ψ cϕ+ψ
0
0

becomes
⎤
0
0⎦
1

when ϑ = 0. Otherwise, if ϑ = π, then the matrix is
⎤
⎡
−cϕ−ψ −sϕ−ψ 0
0 ⎦.
R(φ) = ⎣ −sϕ−ψ cϕ−ψ
0
0
−1
From the elements [1, 2] and [2, 2] it is possible to compute only the sum or
difference of angles ϕ and ψ, i.e.,
ϕ ± ψ = Atan2(−r12 , r22 )
where the positive sign holds for ϑ = 0 and the negative sign holds for ϑ = π.
Solution to Problem 2.3
In the case cϑ = 0, the rotation matrix in (2.21) becomes
⎤
⎡
0 sψ−ϕ cψ−ϕ
R(φ) = ⎣ 0 cψ−ϕ −sψ−ϕ ⎦
−1
0
0
when ϑ = π/2. Otherwise, if ϑ = −π/2, then the matrix is
⎡
⎤
0 −sψ+ϕ −cψ+ϕ
R(φ) = ⎣ 0 cψ+ϕ −sψ+ϕ ⎦ .
1
0
0

2 Kinematics

3

From the elements [2, 2] and [2, 3] it is possible to compute only the sum or
difference of angles ψ and ϕ, i.e.,
ψ ± ϕ = Atan2(−r23 , r22 )
where the positive sign holds for ϑ = −π/2 and the negative sign holds for
ϑ = π/2.
Solution to Problem 2.4
The rotation matrix can be obtained as in (2.24)
R(ϑ, r) = Rz (α)Ry (β)Rz (ϑ)Ry (−β)Rz (−α),
where the elementary rotation matrices are given as in (2.6) and (2.7):
⎡
⎤
cα −sα 0
Rz (α) = ⎣ sα cα 0 ⎦
0
0
1
⎤
⎡
cβ 0 sβ
1 0 ⎦
Ry (β) = ⎣ 0
−sβ 0 cβ
⎡
⎤
cϑ −sϑ 0
Rz (ϑ) = ⎣ sϑ cϑ 0 ⎦ .
0
0
1
Taking the first product gives

⎡

cα cβ
Rz (α)Ry (β) = ⎣ sα cβ
−sβ
The next product gives

⎡

cα cβ cϑ − sα sϑ
Rz (α)Ry (β)Rz (ϑ) = ⎣ sα cβ cϑ + cα sϑ
−sβ cϑ

−sα
cα
0

⎤
cα sβ
sα sβ ⎦ .
cβ

−cα cβ sϑ − sα cϑ
−sα cβ sϑ + cα cϑ
sβ sϑ

⎤
cα sβ
sα sβ ⎦ .
cβ

Then, by observing that
Ry (−β)Rz (−α) = (Rz (α)Ry (β))T ,
the overall rotation matrix is
⎡
(s2α + c2α c2β )cθ + c2α s2β
R(ϑ, r) = ⎣ sα cα s2β (1 − cϑ ) + cβ sϑ
cα sβ cβ (1 − cϑ ) − sα sβ sϑ

sα cα s2β (1 − cϑ ) − cβ sϑ

(s2α c2β + c2α )cθ + s2α s2β
sα sβ cβ (1 − cϑ ) + cα sβ sϑ
⎤
cα sβ cβ (1 − cϑ ) + sα sβ sϑ
sα sβ cβ (1 − cϑ ) − cα sβ sϑ ⎦ .
s2β cϑ + c2β

4

2 Kinematics

Recalling the relations
ry
sα = 
rx2 + ry2
sβ =


rx2 + ry2

rx
cα = 
rx2 + ry2
cβ = rz

rx2 + ry2 + rz2 = 1
and using the following identities:
s2α + c2α c2β = 1 − rx2
s2α c2β + c2α = 1 − ry2
leads to expression (2.25).
Solution to Problem 2.5
From the expression of R(ϑ, r) in (2.25), summing the elements on the diagonal gives
r11 + r22 + r33 = 1 + 2 cos ϑ
from which the angle is
ϑ = cos −1



r11 + r22 + r33 − 1
2


.

Then, taking suitable differences between the off-diagonal elements gives
r32 − r23 = 2rx sin ϑ
r13 − r31 = 2ry sin ϑ
r21 − r12 = 2rz sin ϑ
and thus

⎤
⎡
r − r23
1 ⎣ 32
r=
r13 − r31 ⎦ .
2 sin ϑ
r21 − r12

In the case sin ϑ = 0, if r11 + r22 + r33 = 3, then ϑ = 0; this means that no
rotation has occurred and r is arbitrary. Instead, if r11 + r22 + r33 = −1, then
ϑ = π and the expression of the rotation matrix becomes
⎤
⎡ 2
2rx rz
2rx − 1 2rx ry
R(π, r) = ⎣ 2rx ry 2ry2 − 1 2ry rz ⎦ .
2rx rz
2ry rz 2rz2 − 1

2 Kinematics

5

The three components of the unit vector can be computed by taking any row
or column; for instance, from the first column it is
r11 + 1
2

rx = ±

r12
2rx
r13
rz =
.
2rx

ry =

However, if rx ≈ 0, then the computation of ry and rz is ill-conditioned. In
that case, it is better to use another column to compute either ry or rz , and
so forth.
Solution to Problem 2.6
With reference to (2.25), the quantities cϑ , ri sϑ and ri rj (1 − cϑ ) for i, j =
x, y, z can be respectively expressed as
cϑ = 2cos 2 (ϑ/2) − 1
= 2η 2 − 1
ri sϑ = 2ri sin (ϑ/2)cos (ϑ/2)
= 2η

i

ri rj (1 − cϑ ) = 2ri rj sin 2 (ϑ/2)
=2 i j
where (2.30) and (2.31) have been used. Hence, (2.33) follows.
Solution to Problem 2.7
Start observing that
R(ϑ, r)r = RT (ϑ, r)r = r
since r is the axis of the rotation described by R. Then, since  and r are
aligned, the result
R(η, ) = RT (η, ) = 
follows directly.
Solution to Problem 2.8
By taking the expressions of the diagonal elements of the matrix in (2.33),
the following equality holds:
1√
r11 + r22 + r33 + 1 = 6η 2 + 2(
2

2
x

+

2
y

+

2
z)

− 2,

6

2 Kinematics

and thus using the constraint in (2.32) gives (2.34).
By taking the expressions of the elements [2, 3] and [3, 2] of the matrix
in (2.33), together with the diagonal elements, the following equality holds:

√
1
1
sgn (r32 − r23 ) r11 − r22 − r33 + 1 = sgn (4η x ) 2( 2x − 2y − 2z − η 2 + 1),
2
2
and thus using again the constraint in (2.32) gives
√
1
sgn (r32 − r23 ) r11 − r22 − r33 + 1 = sgn (4η x )| x | =
2

x

where the assumption η ≥ 0 has been exploited. A similar argument can be
worked out to derive the expressions of y and z in (2.35).
Solution to Problem 2.9
Using the expression of the rotation matrix as a function of the unit quaternion
in (2.33), the product R1 R2 gives rise to a rotation matrix which is a function
of {η1 , 1 } and {η2 , 2 }. The diagonal elements of such matrix are
r11 = 2(η12 + 21x ) − 1 2(η22 + 22x ) − 1
+4( 1x 1y − η1 1z )( 2x 2y + η2 2z ) + 4(
r22 = 2(η12 +
+4(

1y 1z

r33 = 2(η12 +
+4(

2
1y )

− η1

2
1z )

1x 1z

−1

1x )(

−1

− η1

2(η22 +
2y 2z

2
2y )

1y )( 2x 2z

2
2z )

+ η1

1y )( 2x 2z

− η2

2y )

+ 4(

1x 1y

+ η1

1z )( 2x 2y

− η2

2z )

+ 4(

1y 1z

+ η1

1x )( 2y 2z

− η2

2x ).

−1

+ η2

2(η22 +

1x 1z

2x )

−1

+ η2

2y )

Then, compose these terms as follows:
r11 + r22 + r33 + 1 = 4

2 2
1x 2x

+2

+

2 2
1y 2y

1x 2x 1y

+ 21z 22z
2y + 2 1x 2x

1z 2z

+2

1y 2y 1z 2z )

−8η1 η2 (

1x 2x + 1y 2y + 1z 2z )
2
2
2
2
2x + 2y + 2z + (4η2
+12η12 η22 − 6η12 − 6η22 + 4.

+(4η12 − 2)

− 2)

2
1x

+

2
1y

+

2
1z

Using the constraint in (2.32) yields
1
(r11 + r22 + r33 + 1) = (η1 η2 − T1 2 )2
4
which, in view of (2.34), coincides with the square of the scalar part of the
quaternion product in (2.37).
A similar argument can be pursued to show the equivalence between the
vector part of the quaternion that can be extracted from the product R1 R2
using (2.33) and the vector part of the quaternion product in (2.37).

2 Kinematics

7

Fig. S2.1. Four-link closed-chain planar arm with frame assignment

Solution to Problem 2.10
The matrix

⎡
⎢
A01 = ⎣

⎤
R01

o01

0T

1

⎥
⎦

can be inverted as a block-partitioned matrix. In fact, by recalling that


−1  −1
A
−A−1 DB −1
A D
=
,
O
B −1
O B
expression (2.45) follows by observing that (R01 )−1 = R10 .
Solution to Problem 2.11
Joint 4 was selected as the cut joint. The link frames can be assigned as in
Fig. S2.1. With this choice, the Denavit-Hartenberg parameters are specified
in Table S2.1.
Table S2.1. DH parameters for the four-link closed-chain planar arm
Link
1
2
3
1
4

ai
a1
a2
0
a1
0

αi
0
0
π/2
−π/2
0

di
0
0
0
0
d4

ϑi
ϑ1
ϑ2
ϑ3
ϑ1
0

Notice that the parameters for Link 4 are all constant. For the first two revolute joints, the homogeneous transformation matrix defined in (2.52) has the

8

2 Kinematics

same structure as in (2.62), while for the third revolute joint, the homogeneous
transformation matrix is
⎤
⎡ 
c3 0 s3 0

⎢ s  0 −c3 0 ⎥
A23 (ϑ3 ) = ⎣ 3
⎦.
0 1
0
0
0 0
0
1
Therefore, the coordinate transformations for the two branches of the tree are
respectively:
⎡   
⎤
a1 c1 + a2 c1 2
c1 2 3 0 s1 2 3


⎢ s    0 −c1 2 3 a1 s1 + a2 s1 2 ⎥
A03 (q  ) = A01 A12 A23 = ⎣ 1 2 3
⎦
0
1
0
0
0
0
0
1
where q  = [ ϑ1

ϑ3 ]T , and
⎡ 
c1

s
⎢
A01 (q  ) = ⎣ 1
0
0

ϑ2

0 −s1
0
c1
−1
0
0
0

where q  = ϑ1 . To complete, the constant
the last link is
⎡
1 0 0

0 1 0
⎢
A34 = ⎣
0 0 1
0 0 0

⎤
a1 c1
a1 s1 ⎥
⎦
0
1

homogeneous transformation for
⎤
0
0 ⎥
⎦.
d4
1

With reference to (2.60), the orientation constraints are (ϑ3 1 = π)
z 03 (q  ) = z 01 (q  )

0

x0T
3 (q )x1 (q ) = −1

which give
s1 2 3 = −s1
c1 2 3 = −c1
and thus
ϑ2 + ϑ3 = π − ϑ1 + ϑ1 .

(S2.1)

On the other hand, the position constraints are
 
 0T  
0
x3 (q )
0

0

p3 (q ) − p1 (q ) =

0
(q
)
y 0T

3
which give
a1 cos (ϑ2 + ϑ3 ) + a2 cos ϑ3 − a1 cos (ϑ1 + ϑ2 + ϑ3 − ϑ1 ) = 0

2 Kinematics

9

Fig. S2.2. Cylindrical arm with frame assignment
Table S2.2. DH parameters for the cylindrical arm
Link
1
2
3

ai
0
0
0

αi
0
−π/2
0

di
0
d2
d3

ϑi
ϑ1
0
0

and, in view of (S2.1), it is
cos ϑ3 =

−a1 + a1 cos (ϑ1 − ϑ1 )
.
a2

(S2.2)

The solution to (S2.2) exists for any ϑ1 and ϑ1 provided that
a1 + a1 ≤ a2 .
Further, it is
s3 = ±


1 − c23

with c3 as in (S2.2). Therefore, it is
ϑ3 = Atan2(s3 , c3 )
ϑ2 = π − ϑ1 + ϑ1 − ϑ3 .
T

It follows that the vector of joint variables is q = [ ϑ1 ϑ1 ] . These joints
are natural candidates to be the actuated joints. The arm direct kinematics

can be computed as T 04 (q) = A03 (q)A34 where the expressions of ϑ2 and ϑ3
have to be substituted into the homogeneous transformation A03 .

10

2 Kinematics

Fig. S2.3. SCARA manipulator with frame assignment

Solution to Problem 2.12
The link frames can be assigned as in Fig. S2.2. With this choice, the DenavitHartenberg parameters are specified in Table S2.2.
The homogeneous transformation matrices (2.52) for the three joints are:
⎤
⎤
⎡
⎡
c1 −s1 0 0
1 0 0 0
c1 0 0 ⎥
⎢s
⎢0 0 1 0 ⎥
A12 (d2 ) = ⎣
A01 (ϑ1 ) = ⎣ 1
⎦
⎦
0
0
1 0
0 −1 0 d2
0
0
0 1
0 0 0 1
⎡
⎤
1 0 0 0
⎢0 1 0 0 ⎥
2
A3 (d3 ) = ⎣
⎦,
0 0 1 d3
0 0 0 1
and thus the arm direct kinematics is
⎡

c1
⎢ s1
0
0 1 2
T 3 (q) = A1 A2 A3 = ⎣
0
0

where q = [ ϑ1

d2

0 −s1
0
c1
−1
0
0
0

⎤
−d3 s1
d3 c1 ⎥
⎦
d2
1

d3 ]T .

Solution to Problem 2.13
The link frames can be assigned as in Fig. S2.3. Since the typical approach
to an object is from the top, it is reasonable to choose all the joint axes
pointing downwards. With this choice, the Denavit-Hartenberg parameters
are specified in Table S2.3.

2 Kinematics

11

Table S2.3. DH parameters for the SCARA manipulator
Link
1
2
3
4

ai
a1
a2
0
0

αi
0
0
0
0

di
0
0
d3
0

ϑi
ϑ1
ϑ2
0
ϑ4

The homogeneous transformation matrices (2.52) for the four joints are:
⎡

ci
⎢ si
i−1
Ai (ϑi ) = ⎣
0
0
⎡

1
⎢0
2
A3 (d3 ) = ⎣
0
0

0
1
0
0

−si
ci
0
0

⎤
0 0
0 0 ⎥
⎦
1 d3
0 1

0
0
1
0

⎤
a i ci
a i si ⎥
⎦
0
1

i = 1, 2
⎡

c4
⎢ s4
3
A4 (ϑ4 ) = ⎣
0
0

−s4
c4
0
0

0
0
1
0

⎤
0
0⎥
⎦,
0
1

and thus the manipulator direct kinematics is
⎡

c124
⎢ s124
0
0 1 2 3
T 4 (q) = A1 A2 A3 A4 = ⎣
0
0

−s124
c124
0
0

⎤
0 a1 c1 + a2 c12
0 a1 s1 + a2 s12 ⎥
⎦
1
d3
0
1

(S2.3)

where q = [ ϑ1 ϑ2 d3 ϑ4 ]T . It is worth noticing that the direct kinematics
of this structure can be conceptually derived from that of a three-link planar
arm in which a3 = 0, ϑ3 is replaced by ϑ4 , and the z coordinate is d3 .
Solution to Problem 2.14
The torso can be modelled as an anthropomorphic arm, corresponding to the
first three DOFs. Therefore T 03 in (2.78) and (2.79) has the expression (2.66).
The constant matrices T tl and T tr can be computed in terms of the angle
β and of the lengths dl and dr of segments Ot Ol and Ot Or , being Ot , Ol and
Or the origins of frames t, l and r, respectively. In detail:
 t
 t


Rl ott,l
Rr ott,r
t
=
T tl =
T
,
r
0T
1
0T
1
⎡

where
ott,l

⎤
dl cβ
=⎣ 0 ⎦
dl sβ

⎡

ott,r

⎤
dr cβ
=⎣ 0 ⎦
−dr sβ

12

2 Kinematics

are the positions of the origins of frames l and r with respect to frame t and
⎤
⎤
⎡
⎡
0 −sβ cβ
0 s β cβ
Rtl = ⎣ 1
Rtr = ⎣ 1 0
0
0 ⎦
0 ⎦
0 cβ sβ
0 cβ −sβ
are the corresponding rotation matrices.
Finally, matrices T rrh = T llh can be computed using (2.72) with (2.77) in
place of (2.73).
Solution to Problem 2.15
Consider two sets of Euler angles ZYZ:
⎡
⎤
⎡
⎤
π/2
−π/2
φ1 = ⎣ π/2 ⎦
φ2 = ⎣ −π/2 ⎦ .
0
0
The corresponding rotation matrices are
⎡
⎡
⎤
0 −1 0
0
R(φ1 ) = ⎣ 0
0 1⎦
R(φ2 ) = ⎣ 0
−1 0 0
1

1
0
0

⎤
0
1⎦.
0

Composition of rotations with respect to the current frame gives
⎡
⎤
0 0 −1
0 ⎦
R(φ1 )R(φ2 ) = ⎣ 1 0
0 −1 0
to which the following two sets of Euler angles correspond as for (2.19) and
(2.20):
⎡
⎤
⎡
⎤
π
0
φb = ⎣ −π/2 ⎦ .
φa = ⎣ π/2 ⎦
−π/2
π/2
On the other hand, composition of rotations
gives
⎡
0
R(φ2 )R( φ1 ) = ⎣ −1
0

with respect to the fixed frame
⎤
0 1
0 0⎦
−1 0

to which the following two sets of Euler angles correspond as for (2.19) and
(2.20):
⎡
⎤
⎡
⎤
0
π
φb = ⎣ −π/2 ⎦ .
φa = ⎣ π/2 ⎦
−π/2
π/2

2 Kinematics

13

It is evident that the two results differ, and then it is not possible to commute
the order of rotations. Notice, also, that the rotation matrix resulting from
direct sum of the two given sets of angles is
R(φ1 + φ2 ) = I
to which the set of Euler angles φ = [ 0

0 0 ]T corresponds.

Solution to Problem 2.16
In view of the approximations cos (dφ) ≈ 1 and sin (dφ) ≈ dφ, the elementary
rotation matrices for infinitesimal angles can be written as:
⎤ ⎡
⎤
⎡
1
0
0
1
0
0
Rx (dφx ) = ⎣ 0 cos (dφx ) −sin (dφx ) ⎦ ≈ ⎣ 0
1
−dφx ⎦
0 dφx
1
0 sin (dφx ) cos (dφx )
⎤ ⎡
⎤
⎡
1
0 dφy
cos (dφy ) 0 sin (dφy )
⎦≈⎣ 0
0
1
0
1
0 ⎦
Ry (dφy ) = ⎣
1
−sin (dφy ) 0 cos (dφy )
−dφy 0
⎡
⎤ ⎡
⎤
cos (dφz ) −sin (dφz ) 0
1
−dφz 0
1
0⎦.
Rz (dφz ) = ⎣ sin (dφz ) cos (dφz ) 0 ⎦ ≈ ⎣ dφz
0
0
1
0
0
1
Multiplying the first two matrices gives
⎡

1
Rx (dφx )Ry (dφy ) ≈ ⎣ 0
−dφy

0
1
dφx

⎤
dφy
−dφx ⎦
1

where higher order terms have been neglected. Reversing the order of multiplication gives
⎡
⎤
1
0
dφy
1
−dφx ⎦ ,
Ry (dφy )Rx (dφx ) ≈ ⎣ 0
−dφy dφx
1
which shows that the rotation resulting from any two elementary rotations is
independent of the order of rotations when the angles of rotation are infinitesimal.
Constructing the matrix of the three elementary rotations about coordinate axes for infinitesimal angles gives
⎡
⎤
1
−dφz dφy
1
−dφx ⎦ .
R(dφx , dφy , dφz ) = ⎣ dφz
−dφy dφx
1

14

2 Kinematics

For another set of infinitesimal angles, the rotation matrix can be formally
written as
⎡
⎤
1
−dφz dφy
R(dφx , dφy , dφz ) = ⎣ dφz
1
−dφx ⎦ .


−dφy dφx
1
Multiplying these two rotation matrices and neglecting higher order terms
gives
R(dφx , dφy , dφz )R(dφx , dφy , dφz ) =
⎡

⎤
dφy + dφy
1
−(dφz + dφz )
⎣ dφz + dφz
1
−(dφx + dφx ) ⎦


−(dφy + dφy )
dφx + dφx
1
= R(dφx + dφx , dφy + dφy , dφz + dφz ).

Solution to Problem 2.17
In order to find the arm reachable workspace, it is worth considering all the
joint configurations giving a loss of mobility. These are the 23 = 8 configurations for the joint limits:
⎡
⎤
⎡
⎤
⎡
⎤
⎡
⎤
−π/3
−π/3
−π/3
−π/3
q A = ⎣ −2π/3 ⎦ q B = ⎣ −2π/3 ⎦ q C = ⎣ 2π/3 ⎦ q D = ⎣ 2π/3 ⎦
−π/2
π/2
−π/2
π/2
⎡
⎤
⎡
⎤
⎡
⎤
⎡
⎤
π/3
π/3
π/3
π/3
q E = ⎣ −2π/3 ⎦ q F = ⎣ −2π/3 ⎦ q G = ⎣ 2π/3 ⎦ q H = ⎣ 2π/3 ⎦ ,
−π/2
π/2
−π/2
π/2
the 4 configurations for ϑ2 = 0:
⎡
⎤
⎡
⎤
−π/3
−π/3
qI = ⎣ 0 ⎦ qJ = ⎣ 0 ⎦
−π/2
π/2
the 4 configurations for ϑ3 = 0:
⎡
⎡
⎤
⎤
−π/3
−π/3
q M = ⎣ −2π/3 ⎦ q N = ⎣ 2π/3 ⎦
0
0

qK

⎡

⎤
π/3
=⎣ 0 ⎦
−π/2

⎤
π/3
qL = ⎣ 0 ⎦ ,
π/2

⎡

⎡

⎤
π/3
q O = ⎣ −2π/3 ⎦
0

and the 2 configurations for both ϑ2 = 0 and ϑ3 = 0:
⎡
⎡
⎤
⎤
−π/3
π/3
qQ = ⎣ 0 ⎦ qR = ⎣ 0 ⎦ .
0
0

⎡

⎤
π/3
q P = ⎣ 2π/3 ⎦ ,
0

2 Kinematics
1

[m]

0.5

R

P
H

0
−0.5

15

A

E
D

M

−1
−0.5

Q

0

0.5
[m]

1

1.5

Fig. S2.4. Reachable workspace for a three-link planar arm

Starting from point A in Cartesian space corresponding to q A , it is necessary
to draw all the arcs connecting such point to all other points corresponding
to configurations that differ only for one component, i.e., points B, C, E, I,
M . Repeating the procedure for each point leads to obtaining all the portions
of the requested workspace. It can be recognized that the external contour of
the area AM QRP HEDA delimits the reachable workspace, as illustrated in
Fig. S2.4.
Solution to Problem 2.18
When s3 = 0, the two cases c3 = 1 and c3 = −1 have to be considered.
In the case c3 = 1, the arm is outstretched with ϑ3 = 0. From (2.105)–
(2.108), it is



ϑ2,I = ϑ2,III = Atan2 pW z , p2W x + p2W y
(S2.4)



(S2.5)
ϑ2,II = ϑ2,IV = Atan2 pW z , − p2W x + p2W y .
Hence, if


p2W x + p2W y > 0, two different solutions exist for ϑ2 . The corre-

sponding values of ϑ1 are those in (2.109) or (2.110). On the other hand, if

p2W x + p2W y = 0, i.e., pW x = pW y = 0, the admissibility of the solution requires that pW z = ±(a2 + a3 ). Hence, from (S2.4) and (S2.5) it is ϑ2 = ±π/2.
Moreover, in view of (2.109) and (2.110), an infinity of solutions exists for ϑ1 .
In the case c3 = −1, the arm is retracted with ϑ3 = ±π. From (2.105)–
(2.108), it is



(S2.6)
ϑ2,I = ϑ2,III = Atan2 (a2 − a3 )pW z , (a2 − a3 ) p2W x + p2W y



ϑ2,II = ϑ2,IV = Atan2 (a2 − a3 )pW z , −(a2 − a3 ) p2W x + p2W y . (S2.7)
Hence, assuming that a2 = a3 , if


p2W x + p2W y > 0, two different solutions

exist for ϑ2 . The corresponding values of ϑ1 are those in (2.109) or (2.110). On

16

2 Kinematics

the other hand, if


p2W x + p2W y = 0, i.e., pW x = pW y = 0, the admissibility

of the solution requires that pW z = ±|a2 − a3 |. Hence, from (S2.6) and (S2.7),
it is ϑ2 = ±π/2. As in previous case, in view of (2.109), (2.110), an infinity
of solutions exists for ϑ1 . Notice that, if a2 = a3 , it is pW x = pW y = pW z = 0
necessarily. Therefore, an infinity of solutions exists both for ϑ1 and ϑ2 .
Solution to Problem 2.19
From the direct kinematics as in Problem 2.12, the end-effector position is
given by
px = −d3 s1
py = d3 c1
pz = d2 .
The first joint variable can be computed from the first two equations as
ϑ1 = Atan2(−px , py ).
Then, the third joint variable can be computed by squaring and summing
those same two equations leading to

d3 = p2x + p2y .
Finally, the second joint variables is
d2 = pz .

Solution to Problem 2.20
From the direct kinematics as in Problem 2.13, the end-effector position is
given by
px = a1 c1 + a2 c12
py = a1 s1 + a2 s12
pz = d3 .
The first two equations are the same as (2.91) and (2.92) for a three-link
planar arm. Then it is
p2x + p2y − a21 − a22
c2 =
2a1 a2
with −1 ≤ c2 ≤ 1 and
s2 = ±


1 − c22

2 Kinematics

17

where the positive sign corresponds to ϑ2 ∈ (0, π) and the negative sign corresponds to ϑ2 ∈ (−π, 0). The second joint variable is
ϑ2 = Atan2(s2 , c2 ).
The first joint variable can be computed from
s1 =

(a1 + a2 c2 )py − a2 s2 px
p2x + p2y

c1 =

(a1 + a2 c2 )px + a2 s2 py
p2x + p2y

and thus
ϑ1 = Atan2(s1 , c1 ).
The end-effector orientation can be expressed as
φ = ϑ1 + ϑ2 + ϑ4 ,
from which the fourth joint variable is
ϑ4 = φ − ϑ1 − ϑ2 .
Finally, the third joint variable is
d3 = pz .

3
Differential Kinematics and Statics

Solution to Problem 3.1
Let
R = [x

y

z]

T

where the unit vector triplet (x, y, z) forms a right-handed frame. Then, the
product RS(ω)RT can be written as
⎡ T⎤
x
RS(ω)RT = ⎣ y T ⎦ S(ω) [ x y z ]
zT
⎤
⎡ T
x S(ω)x xT S(ω)y xT S(ω)z
= ⎣ y T S(ω)x y T S(ω)y y T S(ω)z ⎦
z T S(ω)x z T S(ω)y z T S(ω)z
⎤
⎡ T
x (ω × x) xT (ω × y) xT (ω × z)
= ⎣ y T (ω × x) y T (ω × y) y T (ω × z) ⎦ .
z T (ω × x) z T (ω × y) z T (ω × z)
In view of the properties of scalar triple products, this matrix is skewsymmetric and then
⎤
⎡
ωy
0
−ωz
RS(ω)RT = S(ω ) = ⎣ ωz
(S3.1)
0
−ωx ⎦


−ωy ωx
0
where the elements of the previous matrix can be written as
ωx = z T (ω × y) = ωT (y × z) = ω T x
ωy = xT (ω × z) = ω T (z × x) = ω T y
ωz = y T (ω × x) = ω T (x × y) = ω T z.

20

3 Differential Kinematics and Statics

Hence, it is
ω  = [ ωx ωy ωz ]

T
= ωT [ x y z ]
T

= Rω.
Substituting ω in (S3.1) leads to conclude
RS(ω)RT = S(Rω).

Solution to Problem 3.2
For the cylindrical arm in Fig. 2.35, the Jacobian is


z 0 × (p − p0 ) z 1 z 2
J(q) =
z0
0 0
where the various vectors can be computed from arm direct kinematics
⎤
⎡ ⎤
⎡
0
−d3 s1
p0 = ⎣ 0 ⎦
p = ⎣ d3 c1 ⎦
d2
0
⎡ ⎤
⎡
⎤
0
−s1
z0 = z 1 = ⎣ 0 ⎦
z 2 = ⎣ c1 ⎦ .
0
1
Then, the expression of the geometric Jacobian is
⎡

−d3 c1
⎢ −d3 s1
⎢
⎢ 0
J =⎢
⎢ 0
⎣
0
1

0
0
1
0
0
0

⎤
−s1
c1 ⎥
⎥
0 ⎥
⎥
0 ⎥
⎦
0
0

(S3.2)

which reveals that it is inherently impossible to rotate about axes x and y.
Solution to Problem 3.3
For the SCARA manipulator in Fig. 2.36, the Jacobian is


z 0 × (p − p0 ) z 1 × (p − p1 ) z 2 z 3 × (p − p3 )
J (q) =
z1
0
z3
z0

3 Differential Kinematics and Statics

21

where the various vectors can be computed from manipulator direct kinematics
⎤
⎤
⎡
⎤
⎡ ⎤
⎡
⎡
a1 c1 + a2 c12
0
a 1 c1
a1 c1 + a2 c12
p0 = ⎣ 0 ⎦ p1 = ⎣ a1 s1 ⎦ p3 = ⎣ a1 s1 + a2 s12 ⎦ p = ⎣ a1 s1 + a2 s12 ⎦
0
0
d3
d3
⎡ ⎤
0
z 0 = z1 = z 2 = z 3 = ⎣ 0 ⎦ .
1
Then, the expression of the geometric Jacobian is
⎡
−a1 s1 − a2 s12 −a2 s12
a2 c12
⎢ a1 c1 + a2 c12
⎢
0
0
⎢
J =⎢
0
0
⎢
⎣
0
0
1
1

0
0
1
0
0
0

⎤
0
0⎥
⎥
0⎥
⎥
0⎥
⎦
0
1

which reveals that it is inherently impossible to rotate about axes x and y.
In view of this, if a four-dimensional operational space (r = 4) is of concern,
then the (4 × 4) analytical Jacobian can be extracted from J by eliminating
rows 4 and 5, i.e.,
⎡
⎤
−a1 s1 − a2 s12 −a2 s12 0 0
a2 c12 0 0 ⎥
⎢ a c + a2 c12
JA = ⎣ 1 1
(S3.3)
⎦.
0
0
1 0
1
1
0 1

Solution to Problem 3.4
From the expression of the geometric Jacobian in (3.35), it is possible to
extract the analytical Jacobian by eliminating the three null rows, i.e.,
⎡
⎤
−a1 s1 − a2 s12 − a3 s123 −a2 s12 − a3 s123 −a3 s123
a2 c12 + a3 c123
a3 c123 ⎦ .
J A = ⎣ a1 c1 + a2 c12 + a3 c123
1
1
1
In order to compute its determinant, it is worth subtracting the second column
from the first one and the third column from the second one, respectively,
giving
⎤
⎡
−a1 s1 −a2 s12 −a3 s123
a2 c12
a3 c123 ⎦
J A = ⎣ a1 c1
0
0
1
whose determinant is

det(J A ) = a1 a2 s2 .

22

3 Differential Kinematics and Statics

It follows that, for a1 , a2 = 0, the determinant vanishes whenever
ϑ2 = 0

ϑ2 = π,

that are the same singularities of the two-link planar arm. It may be verified
that the rank of the Jacobian does not further decrease, and thus the arm has
no other singularities.
Solution to Problem 3.5
For the spherical arm in Fig. 2.22, the Jacobian is


z 0 × (p − p0 ) z 1 × (p − p1 ) z 2
J (q) =
z0
z1
0
where the various vectors can be computed from arm direct kinematics
⎤
⎡ ⎤
⎡
0
c1 s2 d3 − s1 d2
p0 = p1 = ⎣ 0 ⎦ p = ⎣ s1 s2 d3 + c1 d2 ⎦
c2 d3
0
⎤
⎤
⎡ ⎤
⎡
⎡
0
−s1
c1 s 2
z 0 = ⎣ 0 ⎦ z 1 = ⎣ c1 ⎦ z 2 = ⎣ s1 s2 ⎦ .
0
c2
1
Then, the expression of the geometric Jacobian is
⎤
⎡
−s1 s2 d3 − c1 d2 c1 c2 d3 c1 s2
⎢ c1 s2 d3 − s1 d2 s1 c2 d3 s1 s2 ⎥
⎥
⎢
0
−s2 d3
c2 ⎥
⎢
J =⎢
⎥.
0
−s1
0 ⎥
⎢
⎦
⎣
0
0
c1
1
0
0
With three DOFs, it is worth considering
corresponding to the first three rows of the
⎡
−s1 s2 d3 − c1 d2
J P = ⎣ c1 s2 d3 − s1 d2
0

end-effector linear velocity only,
Jacobian, i.e.,
⎤
c1 c2 d3 c1 s2
s1 c2 d3 s1 s2 ⎦
−s2 d3
c2

which could have been also obtained by differentiating the vector p above
with respect to the joint variable vector q (analytical Jacobian). In order to
determine singularities of J P , its determinant has to be computed, giving
det(J P ) = −d23 s2 .
This vanishes if s2 = 0 and/or d3 = 0. The first situation occurs whenever
ϑ2 = 0

ϑ2 = π,

3 Differential Kinematics and Statics

23

whereas the second situation occurs whenever
d3 = 0,
i.e., when Frame 3 coincides with Frame 2 and thus Joint 2 velocity does not
contribute to end-effector linear velocity. Finally, it is worth observing that
both types of singularities are internal singularities.
Solution to Problem 3.6
From the geometric Jacobian in (S3.2), the Jacobian relative to end-effector
linear velocity can be extracted by considering only the first three rows, i.e.,
⎤
⎡
−d3 c1 0 −s1
J P = ⎣ −d3 s1 0 c1 ⎦ .
0
1
0
Its determinant is
det(J P ) = d3
which vanishes at the singularity
d3 = 0.
This occurs when the end effector is located along Joint 1 axis, and thus this
singularity is conceptually similar to the shoulder singularity of an anthropomorphic arm.
Solution to Problem 3.7
With reference to the analytical Jacobian in (S3.3), it is worth subtracting
the second column from the first one. The modified Jacobian becomes
⎡
⎤
−a1 s1 −a2 s12 0 0
a2 c12 0 0 ⎥
⎢ a c
J A = ⎣ 1 1
⎦,
0
0
1 0
0
0
0 1
whose determinant is

det(J A ) = a1 a2 s2 .

For a1 , a2 = 0, the determinant vanishes whenever
ϑ2 = 0

ϑ2 = π

which are the same singularities of the two-link and three-link planar arms.
In other words, the addition of a prismatic joint to a three-link planar arm
—which makes it become a SCARA manipulator— does not introduce further
singularities.

24

3 Differential Kinematics and Statics

Solution to Problem 3.8
The singular values of J are defined as the square roots of the eigenvalues of
the matrix JJ T . On the other hand, the determinant of a matrix is given by
the product of its eigenvalues, and thus the manipulability measure in (3.56)
is given by the product of the singular values of the Jacobian matrix.
Solution to Problem 3.9
Let R be the radius of the circular object. The expression of the minimum
distance of the arm from the obstacle can be written as
d = min(di − R)
di

i = 1, 2, 3,

(S3.4)

where di denotes the minimum distance of Link i from the centre o of the
obstacle. Let then pi = [ pix piy ]T denote the position vector of the point
along Link i which is closest to o. Link i lies along a line, whose equation can
be written in the parametric form
pix = xi−1 + si (xi − xi−1 )
piy = yi−1 + si (yi − yi−1 )

(S3.5)
(S3.6)

where (xi−1 , yi−1 ) and (xi , yi ) are the coordinates of the origins of Link i − 1
and Link i frames, respectively; obviously, the parameter si varies in the
range (0, 1). Therefore, computation of the minimum distance is given by the
solution to a minimization problem as a function of si , i.e.,
min (pix − xo )2 + (piy − yo )2
si

0 ≤ si ≤ 1

where (xo , yo ) are the coordinates of o. Using (S3.5) and (S3.6), and taking
the derivative with respect to si of the above function leads to the solution
si = −

(xi−1 − xo )(xi − xi−1 ) + (yi−1 − yo )(yi − yi−1 )
a2i

(S3.7)

where a2i = (xi − xi−1 )2 + (yi − yi−1 )2 . For the point pi to belong to Link i,
the parameter shall be subject to the constraint


(S3.8)
si = max 0, min{1, si } ,
which then allows computing pix and piy as in (S3.5), (S3.6). In sum, the
following operating procedure can be established.
Execute steps a and b for i = 1, 2, 3:
a. Compute si as in (S3.7) and si as in (S3.8).
b. Compute pi as in (S3.5), and

di = (pix − xo )2 + (piy − yo )2 .

3 Differential Kinematics and Statics

25

To complete, compute d as in (S3.4).
Solution to Problem 3.10
The problem is that to invert differential kinematics v e = J q̇ by tolerating a
finite error , i.e.,
v e − J q̇ = .
The solution can be obtained by minimizing the cost functional
g  (q̇, ) =

1 2 T
1
k q̇ q̇ + T .
2
2

To cast the problem as a classic constrained optimization problem, let
 
q̇
w=
A = [J I ].

With these positions, the above differential kinematics constraint can be
rewritten as
v e − Aw = 0,
while the cost functional becomes
g  (w) =


where
Q=

1 T
w Qw
2

k2 I
O

O
I



is a positive definite weighting matrix. By using the method of Lagrangian
multipliers, the modified cost functional can be written as
g  (w, λ) =

1 T
w Qw + λT (v e − Aw)
2

where λ is an (r × 1) vector. The optimal solution is conceptually similar
to (3.50), i.e.,
w = Q−1 AT (AQ−1 AT )−1 v e .
In view of the above expressions of w, A and Q, the solution can be formally
written after simple algebraic manipulation as
   T 
−1
q̇
J
T
2
+
k
I
ve.
J
J
=
k2 I

It follows that the joint velocity is given by

−1
q̇ = J T JJ T + k 2 I
ve

26

3 Differential Kinematics and Statics

where

J  = J T (J J T + k 2 I)−1

is the damped least-squares inverse of J , whereas the error is given by

−1
 = k2 J J T + k2 I
ve .
The damping factor k establishes the relative weight between the kinematic
constraint v e = J q̇ and the minimum norm joint velocity requirement. In
the neighbourhood of a singularity, k is to be chosen large enough so as to
render differential kinematics inversion well conditioned, whereas far from
singularities, k can be chosen small (even k = 0) so as to guarantee accurate
differential kinematics inversion.
Solution to Problem 3.11
From (3.6), it is
S(ω) = Ṙ(φ)RT (φ)
with R(φ) as in (2.18). Taking the required derivatives gives
S(ω) = Ṙz (ϕ)Ry (ϑ)Rz (ψ)RTz (ψ)RTy (ϑ)RTz (ϕ)
+Rz (ϕ)Ṙy (ϑ)Rz (ψ)RTz (ψ)RTy (ϑ)RTz (ϕ)
+Rz (ϕ)Ry (ϑ)Ṙz (ψ)RTz (ψ)RTy (ϑ)RTz (ϕ).
Then, in view of (2.4), (3.8), (3.11), the previous expression can be simplified
into
S(ω) = S(ϕ̇z)
+Rz (ϕ)S(ϑ̇y  )RTz (ϕ)
+Rz (ϕ)Ry (ϑ)S(ψ̇z  )RTy (ϑ)RTz (ϕ)
= S(ϕ̇z) + S(ϑ̇Rz (ϕ)y  ) + S(ψ̇Rz (ϕ)Ry (ϑ)z  )
and then
ω = [ z Rz (ϕ)y  Rz (ϕ)Ry (ϑ)z  ] φ̇
⎤
⎡
0 −sϕ cϕ sϑ
= ⎣ 0 cϕ sϕ sϑ ⎦ φ̇.
1
0
cϑ
Solution to Problem 3.12
From (2.21), the contributions to the angular velocity of the derivatives of the
three Roll–Pitch–Yaw angles can be written as:
⎡ ⎤
⎡ ⎤
⎡ ⎤
0
1
0


ϕ̇ = ϕ̇ ⎣ 0 ⎦
ψ̇ = ψ̇ ⎣ 0 ⎦ ,
ϑ̇ = ϑ̇ ⎣ 1 ⎦
0
0
1

3 Differential Kinematics and Statics

27

where the superscripts indicate that rotations occur about axes of current
frames. Then, expressing the last two vectors with respect to the reference
frame gives
⎤
⎡
−sϕ

ϑ̇ = Rz (ϕ)ϑ̇ = ϑ̇ ⎣ cϕ ⎦
0
⎤
⎡
cϕ cϑ

ψ̇ = Rz (ϕ)Ry (ϑ)ψ̇ = ψ̇ ⎣ sϕ cϑ ⎦ .
−sϑ
Summing the three contributions leads to
ω = ϕ̇ + ϑ̇ + ψ̇
⎡
⎤
0 −sϕ cϕ cϑ
= ⎣ 0 cϕ sϕ cϑ ⎦ φ̇,
1
0
−sϑ
⎡

from which it is

0 −sϕ
T (φ) = ⎣ 0 cϕ
1
0

⎤
cϕ cϑ
sϕ cϑ ⎦ .
−sϑ

The determinant of matrix T is −cϑ , which implies that the relationship
cannot be inverted for ϑ = −π/2, π/2. These are representation singularities of
φ; notice also that solutions (2.22) and (2.23) degenerate at such singularities.
Solution to Problem 3.13
The contributions to the angular velocity of the derivatives of the three Euler
angles can be written as:
ϕ̇ = ϕ̇eϕ



ϑ̇ = ϑ̇eϑ



ψ̇ = ψ̇eψ ,

where eϕ , eϑ and eψ are the constant unit vectors of the axes of the current
frames, which depend on the particular triplet of Euler angles. The superscripts indicate that vectors are expressed in the current frames. In the case
ϕ = ϑ = ψ = 0 the current frames coincide and the three contributions can
be added, i.e.,


ω = ϕ̇ + ϑ̇ + ψ̇ = T (0)φ̇
with T (0) = [ eϕ

eϑ

eψ ]. Therefore, with the choice
⎡ ⎤
⎡ ⎤
⎡ ⎤
1
0
0
eϕ = ⎣ 0 ⎦
eϑ = ⎣ 1 ⎦
eψ = ⎣ 0 ⎦ ,
0
0
1

i.e., for XYZ angles, it is T (0) = I.

28

3 Differential Kinematics and Statics

Fig. S3.1. Block scheme of the inverse kinematics algorithm for arm position

Solution to Problem 3.14
With reference to a 6-DOFs manipulator having a spherical wrist, let q P =
[ q1 q2 q3 ]T denote the vector of joint variables determining arm position
and q O = [ ϑ4 ϑ5 ϑ6 ]T the vector of joint variables determining wrist orientation. For such manipulator, it is possible to solve inverse kinematics in
two stages; namely, first solve for q P , and then solve for q O .
Let pd (t) and Rd (t) = [ nd (t) sd (t) ad (t) ] be the desired time history
of end-effector position and orientation. From (2.93), it is possible to compute
the desired time behaviour of wrist position as
pW d = pd − d6 ad .
Taking time derivative of both sides gives
ṗW d = ṗd − d6 ω d × ad
where the time derivative of the unit vector ad (constant norm) has been
expressed as ȧd = ω d × ad .
By using the block-partitioned form of the Jacobian in (3.42) with p =
pW , the differential kinematics equation for arm linear velocity is
ṗW = J P P (q P )q̇ P
where J P P formally coincides with J 11 evaluated for p = pW . In view of this,
the joint velocity solution of kind (3.70) can be written as
q̇ P = J −1
P P (q P )(ṗW d + K P eP W )
where eP W = pW d − pW and K P is a positive definite matrix. The resulting
block scheme is shown in Fig. S3.1.
Once the time behaviour of q P and q̇ P has been computed in the first
stage, the differential kinematics equation for wrist angular velocity is
ω = J OP (q P )q̇ P + J OO (q P , q O )q̇ O

3 Differential Kinematics and Statics

29

Fig. S3.2. Block scheme of the inverse kinematics algorithm for wrist orientation

where J OP and J OO respectively denote the Jacobians J 21 and J 22 in (3.42)
evaluated for p = pW . In view of this, the joint velocity solution of kind (3.70)
can be written as
q̇ O = J −1
OO (q P , q O ) ω d − J OP (q P )q̇ P + K O eO
where eO is the orientation error in (3.85) and K O is a positive definite matrix.
The resulting block scheme for the second stage is shown in Fig. S3.2.
It is anticipated that the two-stage algorithm leads to a computational
savings with respect to the algorithm based on the inverse of the full Jacobian.
Solution to Problem 3.15
In the case ẋd = 0, the time derivative of the Lyapunov function is given as
in (3.77)
V̇ (e) = eT K ẋd − eT KJ A (q)J TA (q)Ke
where the sign of the first term is indefinite, and the second term is less than
or equal to zero. This function can be upper bounded as
V̇ (e) ≤ |eT K ẋd | − J TA Ke 2 .
In the worst case, it is necessary to take the largest value of the first term and
the smallest value of the second term, leading to
V̇ (e) ≤ e λmax (K) ẋd

max

− σr2 (J A )λ2min (K) e 2 ,

where λmax (K) (λmin (K)) denotes the maximum (minimum) eigenvalue of K,
ẋd max denotes the maximum end-effector velocity, and σr (J A ) denotes the
minimum singular value of J A . The quadratic term in the error prevails over
the linear term as long as
e ≥

ẋd max λmax (K)
σr2 (J A )λ2min (K)

30

3 Differential Kinematics and Statics

and V̇ (e) ≤ 0. It follows that an upper bound on the error is given by
e

max

=

ẋd max
kσr2 (J A )

where K has been conveniently chosen as a diagonal matrix K = kI.
Solution to Problem 3.16
The matrix product Rd RT gives
R RT =
⎡d
ndx nx + sdx sx + adx ax
⎣ ndy nx + sdy sx + ady ax
ndz nx + sdz sx + adz ax

ndx ny + sdx sy + adx ay
ndy ny + sdy sy + ady ay
ndz ny + sdz sy + adz ay

⎤
ndx nz + sdx sz + adx az
ndy nz + sdy sz + ady az ⎦ .
ndz nz + sdz sz + adz az

In view of (3.84), subtracting the element [1, 2] from the element [2, 1] and
equating the difference to 2rz sϑ as in (2.28) gives
2rz sϑ = (ndy nx − ndx ny ) + (sdy sx − sdx sy ) + (ady ax − adx ay ),
and thus

1
(n × nd )z + (s × sd )z + (a × ad )z
2
where the subscripts z denote the z-components of the relevant vectors. In a
similar way, subtracting the elements [3, 1] from the respective elements [1, 3]
and equating the difference to 2ry sϑ gives
rz sϑ =

ry sϑ =

1
(n × nd )y + (s × sd )y + (a × ad )y .
2

Yet, subtracting the elements [2, 3] from the respective elements [3, 2] and
equating the difference to 2rx sϑ gives
1
(n × nd )x + (s × sd )x + (a × ad )x .
2
In turn, grouping the previous three expressions leads to
rx sϑ =

r sin ϑ =

1
(n × nd + s × sd + a × ad )
2

and, in view of the definition of orientation error as in (3.83), the result in
(3.85) follows.
Solution to Problem 3.17
The expression of the orientation error from (3.85) is
eO =

1
(n × nd + s × sd + a × ad ) .
2

3 Differential Kinematics and Statics

31

Taking the time derivative of the first term on the right-hand side gives
d
(n × nd ) = ṅ × nd + n × ṅd
dt
= −S(nd )ṅ + S(n)ṅd .
Expressing the time derivatives of the unit vectors as
ṅ = ω × n = −S(n)ω
ṅd = ω d × nd = −S(nd )ω d
leads to

d
(n × nd ) = S(nd )S(n)ω − S(n)S(nd )ω d .
dt
Proceeding in a similar way for the other two terms on the right-hand side of
(3.85) yields

d
(s × sd ) = S(sd )S(s)ω − S(s)S(sd )ω d
dt
d
(a × ad ) = S(ad )S(a)ω − S(a)S(ad )ω d .
dt
In turn, grouping the previous three contributions to the time derivative of
the orientation error gives
1
S(n)S(nd ) + S(s)S(sd ) + S(a)S(ad ) ωd
2
1
+ S(nd )S(n) + S(sd )S(s) + S(ad )S(a) ω
2
and, in view of the position (3.87), the result in (3.86) follows.
ėO = −

Solution to Problem 3.18
It is not difficult to see that, by using the skew-symmetric operator S(·), (2.33)
can be rewritten in compact form as
R(η, ) = (2η 2 − 1)I + 2T + 2ηS().

(S3.9)

Computing the time derivative of (S3.9) gives
˙ T + 2˙T + 2η̇S() + 2ηS().
˙
Ṙ(η, ) = 4η̇ηI + 2

(S3.10)

Substituting (S3.9) and (S3.10) into (3.6) gives:
S(ω) = ṘRT
= 4η̇η(2η 2 − 1)I + 8η̇ηT − 8η̇η 2 S()
˙ T + 4
˙ T T − 4η 
˙ T S()
+2(2η 2 − 1)
+2(2η 2 − 1)˙T + 4˙T T − 4η˙T S()
+2η̇(2η 2 − 1)S() + 4η̇S()T − 4η̇ηS()S()
˙ + 4ηS()
˙ T − 4η 2 S()S().
˙
+2η̇(2η 2 − 1)S()

(S3.11)

32

3 Differential Kinematics and Statics
unconstrained
solution

time

constrained
solution
constraint
velocity
e_p

Jacobian pseudo-inverse
with constraint

[T,dp_d]
[T,p_d]

dq

dq_0

+
-

K_p

+
+

0.001z

dag(J_p(q))dp + P(q)dq_0

q

z-1

direct
kinematics

sinusoidal
functions

k_p(q)

cs(q)

plot

Fig. S3.3. Simulink block diagram of closed-loop Jacobian pseudo-inverse algorithm with constraint

Next, taking the time derivative of the constraint in (2.32) gives
T ˙ = ˙ T  = −η η̇.

(S3.12)

Then, using (2.32), (S3.12) and the property S(x)S(y) = yxT − xT yI yields
the following equalities:
˙ T
˙ T T = (1 − η 2 )
˙T T = −η̇ηT
S()S() = T − (1 − η 2 )I
˙
S()S()
= ˙ T + η̇ηI
T
˙
− η̇ηI)S()
˙ S() = (S()S()
˙ T = S()(S()S()
˙
S()
+ (1 − η 2 )I).
By virtue of the above equalities and observing that S() = 0, (S3.11) becomes
˙ − 2η̇S()
˙ T − ˙ T ) + 2ηS()
S(ω) = 2(
which, in view of the property S(S(x)y) = yxT − xy T , can be written in the
form
˙ + 2ηS()
˙ − 2η̇S().
S(ω) = 2S(S())
Finally, the angular velocity can be computed as
ω = 2S()˙ + 2η ˙ − 2η̇.

(S3.13)

3 Differential Kinematics and Statics
joint pos

joint vel

2
0

0

[rad/s]

[rad]

2

3
3

1

1

−0.2

−1
2

−2
0

0.5

1

1.5

2

1
−0.4
0

2.5

0.5

1

−6

pos error norm

2.5

2

2.5

distance

5

0.1

4

0.05

3

0

2

−0.05

1

−0.1

0
0

2

0.15

[m]

[m]

x 10

1.5
[s]

[s]
6

33

0.5

1

1.5

2

2.5

0

0.5

1

[s]

1.5
[s]

Fig. S3.4. Time history of the joint positions and velocities, of the norm of endeffector position error, and of the distance from the obstacle in the unconstrained
case

Solution to Problem 3.19
Multiplying both sides of (S3.13) by T and using (S3.12), (2.32) yields
T ω = 2ηT ˙ − 2η̇T  = −2η̇
and thus

1
η̇ = − T ω.
2
Multiplying both sides of (S3.13) by S() yields
˙
S()ω = 2S()S()˙ + 2ηS(),

which, by virtue of (S3.12), (2.32), (S3.13) and the property S(x)S(y) =
yxT − xT yI, can be rewritten in the form
S()ω = −2η̇η − 2(1 − η 2 )˙ + η(ω − 2η ˙ + 2η̇)
= −2˙ + ηω
and thus
˙ =

1
(ηI − S()) ω.
2

34

3 Differential Kinematics and Statics
joint pos

joint vel
5

1

1

0

3

[rad/s]

[rad]

2
1

2

0
3

−1

2

−2
0

0.5

1

1.5

2

−5
0

2.5

0.5

1

−6

x 10

pos error norm

2.5

2

2.5

distance

5

0.1

4

0.05

3

0

2

−0.05

1

−0.1

0
0

2

0.15

[m]

[m]

6

1.5
[s]

[s]

0.5

1

1.5

2

2.5

0

0.5

1

[s]

1.5
[s]

Fig. S3.5. Time history of the joint positions and velocities, of the norm of endeffector position error, and of the distance from the obstacle in the constrained case

Solution to Problem 3.20
Differentiating (3.96) with respect to time gives
V̇ = 2(ηd − η)(η̇d − η̇) + 2(d − )T (˙ d − ˙ )
= ηTd − ηd T − S(d ) (ω d − ω)
where the quaternion propagation in (3.94), (3.95), and the property S() =
0 have been exploited. The result in (3.97) follows by using (3.91) and (3.93).
Solution to Problem 3.21
From the given pd (0), the initial posture of the arm q(0) is computed
according to the formulæ in Sect. 2.12.1 (elbow-up) with an arbitrary value
of φ, e.g., φ = π/4. The desired trajectory regards the vertical component of
end-effector position and is chosen as
pdy (t) = pdy (0) + 0.5 1 − cos (0.5πt) pdy (2) − pdy (0)

0≤t≤2

with pdy (0) = 0.2 and pdy (2) = −0.2. The desired velocity is found by differentiation of the above trajectory. As for the constraint, the minimum distance
of the arm from the obstacle (3.58) is computed according to the solution to

3 Differential Kinematics and Statics

35
time

variables
initialization

e

[T,dx_d]
[T,x_d]

dq

Jacobian
inverse
+

+
-

K

direct
kinematics

+

inv(J_a(q))dx

0.001z

q

z-1

sinusoidal
functions
cs(q)

k(q)

plot

Fig. S3.6. Simulink block diagram of closed-loop Jacobian inverse algorithm

Problem 3.11. Its gradient is found by numerical differentiation with a step of
10−6 .
The inverse kinematics algorithm based on (3.72) is used, with the matrix
gain K = diag{500, 500} and q̇ 0 as in (3.55) with k0 = 35. The resulting
Simulink block diagram is shown in Fig. S3.3, where both the unconstrained
case (k0 = 0) and the constrained case can be run.
The files with the solution can be found in Folder 3 21.
The resulting joint positions and velocities, as well as the norm of endeffector position error and the distance from the obstacle, in the two cases,
are shown in Figs. S3.4 and S3.5, respectively.
It can be recognized that the position error is small along the trajectory
and tends to zero at steady state in both cases. In the unconstrained case, the
arm is seen to collide with the obstacle (negative distance). On the other hand,
in the constrained case, large initial values of joint velocities occur which are
needed to move the arm away from the obstacle.
Solution to Problem 3.22
From the given xd (0), the initial posture of the manipulator q(0) is computed
according to the formulæ in the solution to Problem 2.20 (elbow-up). The
desired trajectory for the end-effector position is chosen as
xd (t) = xd (0) + 0.5 1 − cos (0.5πt) xdy (2) − xdy (0)

0≤t≤2

36

3 Differential Kinematics and Statics
joint pos

joint vel
2

2

1

1

4

0

3

1

1

3
[rad/s]

[rad]

3

0

−1

−3
0

0.5

1

1.5

2

−2
0

2.5

4

2

−1

2

−2

0.5

1

−6

2

x 10

1.5

2

2.5

2

2.5

[s]

[s]
pos error norm

−5

1.5

x 10

orien error

1
1.5
[rad]

[m]

0.5
1

0
−0.5

0.5
−1
0
0

0.5

1

1.5
[s]

2

2.5

−1.5
0

0.5

1

1.5
[s]

Fig. S3.7. Time history of the joint positions and velocities, of the norm of endeffector position error, and of the end-effector orientation error with closed-loop
Jacobian inverse algorithm

with xd (0) = [ 0.7 0 0 0 ]T and xd (2) = [ 0 0.8 0.5 π/2 ]T . The desired velocity is found by differentiation of the above trajectory.
First, the inverse kinematics algorithm based on (3.70) is used where the
analytical Jacobian is given in (S3.3). The matrix gain is chosen as K =
diag{500, 500, 500, 100}. The resulting Simulink block diagram is shown in
Fig. S3.6.
The files with the solution can be found in Folder 3 22.
The resulting joint positions and velocities, as well as the norm of endeffector position error and the end-effector orientation error, are shown in
Fig. S3.7. The tracking performance is satisfactory and the errors vanish at
steady state.
Next, the inverse kinematics algorithm based on (3.76) is used with the
same matrix gain as above. The resulting Simulink block diagram is shown
in Fig. S3.8.
The resulting joint positions and velocities, as well as the norm of endeffector position error and the end-effector orientation error, are shown in
Fig. S3.9. It can be recognized that tracking errors slightly increase, but
steady-state performance remains satisfactory.

3 Differential Kinematics and Statics

37

time
variables
initialization

e

dq

Jacobian
transpose
[T,x_d]

+
-

K

direct
kinematics

tr(J_a(q))Ke

0.001z

q

z-1

sinusoidal
functions
cs(q)

k(q)

plot

Fig. S3.8. Simulink block diagram of closed-loop Jacobian transpose algorithm

Solution to Problem 3.23
The core of the quadratic form defining the velocity manipulability ellipsoid
in (3.123) is given by the inverse of the core of the quadratic form defining
the force manipulability ellipsoid in (3.126). Let A = J J T denote such core.
The eigenvalues λi and the eigenvectors ui of A satisfy the equation
Aui = λi ui .
Premultiplying both sides by A−1 and dividing by λi gives
A−1 ui =

1
ui ,
λi

which demonstrates the notable result that the directions of the principal axes
(eigenvectors) of the force and velocity manipulability ellipsoids coincide while
their dimensions (eigenvalues) are in inverse proportion.

38

3 Differential Kinematics and Statics
joint pos

joint vel
2

2

1

1

4

0

3

1

1

3
[rad/s]

[rad]

3

0

−1

−3
0

0.5

1

1.5

2

−2
0

2.5

4

2

−1

2

−2

0.5

1

−3

6

0.008

4

2

2.5

x 10

2

2.5

orien error

2

0.006

[rad]

[m]

pos error norm
0.01

0.004

0
−2

0.002
0
0

1.5
[s]

[s]

−4
0.5

1

1.5
[s]

2

2.5

−6
0

0.5

1

1.5
[s]

Fig. S3.9. Time history of the joint positions and velocities, of the norm of endeffector position error, and of the end-effector orientation error with closed-loop
Jacobian transpose algorithm

4
Trajectory Planning

Solution to Problem 4.1
In order to satisfy initial and final constraints on position, velocity and acceleration, a fifth-order polynomial is needed
q(t) = a5 t5 + a4 t4 + a3 t3 + a2 t2 + a1 t + a0 .
The coefficients can be determined by solving the following system of linear
equations:
a0 = qi
a1 = q̇i
2a2 = q̈i
a5 t5f + a4 t4f + a3 t3f + a2 t2f + a1 tf + a0 = qf
5a5 t4f + 4a4 t3f + 3a3 t2f + 2a2 tf + a1 = q̇f
20a5 t3f + 12a4 t2f + 6a3 tf + 2a2 = q̈f .
With the given data, the files used to compute the coefficients and to generate
the time behaviour of position, velocity and acceleration can be found in Folder
4 1.
The coefficients are:
15
45
9
a4 = −
a5 =
a0 = 1
a1 = 0
a2 = 0
a3 =
4
16
16
and the resulting trajectory is illustrated in Fig. S4.1.
Solution to Problem 4.2
Imposing velocity constraints yields
q̇i = 0
q̇f = k(1 − cos (atf )).

40

4 Trajectory Planning
pos

[rad]

4
3
2
1
0

0.5

1
[s]

1.5

2

1.5

2

1.5

2

vel
2.5
[rad/s]

2
1.5
1
0.5
0
−0.5
0

0.5

1
[s]
acc

[rad/s^2]

5

0

−5
0

0.5

1
[s]

Fig. S4.1. Time history of position, velocity and acceleration with a fifth-order
polynomial timing law

The second equation implies that
0≤

q̇f
≤2
k

which is satisfied for all k as long as q̇f = 0. In that case, it is a = 2π/tf .
Then, integrating the given velocity profile gives



2πt
tf
sin
q(t) = k1 + k t −
,
2π
tf
and imposing position constraints yields the two coefficients
k1 = qi

4 Trajectory Planning

41

pos

[rad]

3
2
1
0
0

0.5

1
[s]

1.5

2

1.5

2

1.5

2

vel

[rad/s]

3
2
1
0
0

0.5

1
[s]
acc

[rad/s^2]

5

0

−5
0

0.5

1
[s]

Fig. S4.2. Time history of position, velocity and acceleration with a raised cosine
timing law

k=

qf − qi
.
tf

With the given data, the files used to compute the two coefficients and to
generate the time behaviour of position, velocity and acceleration can be found
in Folder 4 2.
The coefficients are:
k = 1.5
k1 = 0
and the resulting trajectory is illustrated in Fig. S4.2.

42

4 Trajectory Planning
pos

[rad]

3
2
1
0
0

1

2
[s]

3

4

3

4

3

4

vel
2

[rad/s]

1.5
1
0.5
0
−0.5
0

1

2
[s]
acc

3

[rad/s^2]

2
1
0
−1
−2
−3
0

1

2
[s]

Fig. S4.3. Time history of position, velocity and acceleration with two fifth-order
interpolating polynomials

Solution to Problem 4.3
It is required to satisfy initial and final constraints on position, velocity and
acceleration (6 equations), intermediate position constraints (2 equations),
and continuity of velocity and acceleration at the intermediate point (2 equations). Therefore, with two fifth-order interpolating polynomials it is possible
to specify also velocity and acceleration at the intermediate point.
Let qm denote the intermediate point at time tm . A viable choice is to
compute the mean velocities in the two intervals
q̇a =

qm − qi
tm − ti

q̇b =

qf − qm
,
tf − tm

4 Trajectory Planning

43

and then to choose velocity at the intermediate point as
q̇m =

q̇a + q̇b
.
2

Likewise, for acceleration it is
q̈a =

q̇m − q̇i
tm − ti

q̈b =

q̇f − q̇m
tf − tm

and then

q̈a + q̈b
.
2
With the given data and null initial and final velocities and accelerations, the
files used to generate the time behaviour of position, velocity and acceleration
can be found in the Folder 4 3.
The resulting trajectory is illustrated in Fig. S4.3.
q̈m =

Solution to Problem 4.4
By using (4.13), (4.14), (4.23), (4.16), (4.25), the time derivative of Πk (t) in
(4.27) can be written as
Π̈k (tk )
Π̈k+1 (tk+1 )
(tk+1 − t)2 +
(t − tk )2
2Δtk
2Δtk

Δtk 
qk+1 − qk
Π̈k (tk ) − Π̈k+1 (tk+1 )
+
+
Δtk
6

Π̇k (t) = −

(S4.1)
k = 1, . . . , N + 1

where q2 and qN +1 are unknown. Then, using (4.15), (4.24) leads to
Δtk + Δtk+1
Δtk+1
Δtk
Π̈k (tk ) +
Π̈k+1 (tk+1 ) +
Π̈k+2 (tk+2 ) (S4.2)
6
3
6


1
qk
1
qk+2
=
−
+
k = 1, . . . , N
qk+1 +
Δtk
Δtk+1
Δtk
Δtk+1
where Π̈1 (t1 ) = q̈i as in (4.19) and Π̈N +2 (tN +2 ) = q̈f as in (4.22).
Evaluating (S4.1) for k = 1 at t = t1 and applying (4.17), (4.18) yields
q2 = qi + q̇i Δt1 + q̈i

Δt21
Δt2
+ Π̈2 (t2 ) 1 .
3
6

(S4.3)

Likewise, evaluating (S4.1) for k = N + 1 at t = tN +2 and applying (4.20),
(4.21) yields
qN +1 = qf − q̇f ΔtN +1 + q̈f

Δt2N +1
Δt2
+ Π̈N +1 (tN +1 ) N +1 .
3
6

(S4.4)

In the case N > 3, substituting (S4.3) into (S4.2) for k = 1, 2 and (S4.4) into
(S4.2) for k = N − 1, N leads to writing the linear system of N equations into
N unknowns given in (4.28).

44

4 Trajectory Planning

The coefficient matrix takes on the tridiagonal band structure
⎡

a11
⎢ a21
⎢ .
A=⎢
⎢ ..
⎣ 0
0
where

a12
a22
..
.
0
0

...
...
..
.

0
0
..
.

0
0
..
.

. . . aN −1,N −1
...
aN,N −1

⎧
Δt2
Δt21
Δt1
⎪
⎪
a11 =
⎪
+
+
⎪
⎪
2
3
6Δt2
⎪
⎪
⎪
⎪
⎪
Δtk + Δtk+1
⎪
⎪
akk =
⎪
⎪
3
⎪
⎪
⎪
⎪
⎪
Δt2N +1
⎪
ΔtN +1
ΔtN
⎪
⎪
a
+
+
=
N
N
⎪
⎪
3
2
6ΔtN
⎪
⎪
⎪
⎨
2
Δt1
Δt2
−
a21 =
⎪
6
6Δt
⎪
2
⎪
⎪
⎪
⎪
Δt
⎪
k
⎪
⎪ ak,k−1 =
⎪
⎪
6
⎪
⎪
⎪
⎪
⎪
Δt
k+1
⎪a
⎪
k,k+1 =
⎪
⎪
6
⎪
⎪
⎪
⎪
⎪
Δt2N +1
ΔtN
⎪
⎪
⎩ aN −1,N =
−
6
6ΔtN

aN −1,N
aN N

⎤
⎥
⎥
⎥
⎥
⎦

k = 2, . . . , N − 1

k = 3, . . . , N
k = 1, . . . , N − 2

which depend only on the given time intervals Δtk , k = 1, . . . , N + 1.
Further, the components of the vector b of known terms in (4.28) are:
⎧



1
Δt21
Δt1
q3 − qi
1
⎪
⎪
b1 =
−
+
q̇i Δt1 + q̈i
− q̈i
⎪
⎪
⎪
Δt
Δt
Δt
3
6
2
2
1
⎪
⎪
⎪




⎪
⎪
⎪
1
Δt2
1
1
q4
⎪
⎪
b2 =
+
qi + q̇i Δt1 + q̈i 1 −
q3 +
⎪
⎪
Δt
3
Δt
Δt
Δt
⎪
2
3
2
3
⎪
⎪


⎪
⎨
1
qk
1
qk+2
bk =
−
+
k = 3, . . . , N − 2
qk+1 +
Δtk
Δtk+1
Δtk
Δtk+1
⎪
⎪
⎪
⎪




⎪
⎪
Δt2N +1
⎪
qN −1
1
1
1
⎪
⎪
b
=
−
+
+
−
q̇
Δt
+
q̈
q
q
N −1
N
f
f
N +1
f
⎪
⎪
ΔtN −1
ΔtN
ΔtN −1
ΔtN
3
⎪
⎪
⎪
⎪



⎪
2
⎪
Δt
1
ΔtN +1
qN − qf
1
⎪
⎪
⎩ bN =
−
+
−q̇f ΔtN +1 + q̈f N +1 − q̈f
ΔtN
ΔtN +1
ΔtN
3
6
where the values qk are given for k = 1, 3, . . . , N, N + 2.

4 Trajectory Planning

45

On the other hand, in the case N = 3, the same expressions for the a’s
can be used; for the b’s, instead, b1 and b3 can be computed as above and b2
takes on the expression


 
1
Δt2
1
1
b2 =
+
qi + q̇i Δt1 + q̈i 1 −
q3
Δt2
3
Δt3
Δt2


Δt2
1
+
qf − q̇f Δt4 + q̈f 4 .
Δt3
3
Solution to Problem 4.5
The time instants of the two virtual points are chosen as t1 = 1 and t4 =
3. With the given data, the files used to compute the matrix A and the
vector b in (4.28), and to generate the time behaviour of position, velocity
and acceleration can be found in the Folder 4 5.
The matrix of coefficients is
⎡
⎤
⎡
⎤
1 1/6 0
2
A = ⎣ 0 2/3 0 ⎦
b = ⎣ −1 ⎦ ,
0 1/6 1
−1
and the resulting trajectory is illustrated in Fig. S4.4.
Solution to Problem 4.6
The interpolating trajectory given by a sequence of linear polynomials with
parabolic blends can be analytically described as
⎧
Δtk+1
Δtk
⎪
⎪
⎨ ak1 (t − tk ) + ak0
≤ t < tk+1 −
tk +
2
2
q(t) =


⎪
Δt
Δt
⎪
k
k
⎩ bk2 (t − tk )2 + bk1 (t − tk ) + bk0
≤ t < tk +
.
tk −
2
2
The velocity in the linear segments is
⎧
q̇i
⎪
⎪
⎨ qk − qk−1
q̇k−1,k =
Δtk−1
⎪
⎪
⎩
q̇f

k=1
k = 2, . . . , N
k = N + 1,

and then the coefficients of the linear polynomials are
ak0 = qk

ak1 = q̇k,k+1

k = 1, . . . , N − 1.

Imposing continuity of velocity between the linear and parabolic polynomials
at time instants (tk −Δtk /2) and (tk +Δtk /2) allows computing the coefficients
bk1 =

q̇k,k+1 + q̇k−1,k
2

bk2 =

q̇k,k+1 − q̇k−1,k
2Δtk

k = 1, . . . , N .

46

4 Trajectory Planning
pos

[rad]

3
2
1
0
0

1

2
[s]

3

4

3

4

3

4

vel
2

[rad/s]

1.5
1
0.5
0
−0.5
0

1

2
[s]
acc

3

[rad/s^2]

2
1
0
−1
−2
−3
0

1

2
[s]

Fig. S4.4. Time history of position, velocity and acceleration with a cubic spline
timing law

Then, imposing continuity of position at (tk + Δtk /2) yields
bk0 = qk + (q̇k,k+1 − q̇k−1,k )

Δtk
8

k = 1, . . . , N ;

it can be verified that this choice guarantees continuity of position also at
(tk − Δtk /2).
The duration of the blend times is chosen as Δtk = 0.2 for k = 1, 2, 3.
With the given data, the files used to compute the above coefficients, and
to generate the time behaviour of position, velocity and acceleration can be
found in Folder 4 6.

4 Trajectory Planning

47

pos

[rad]

3
2
1
0
0

1

2
[s]

3

4

3

4

3

4

vel
2

[rad/s]

1.5
1
0.5
0
−0.5

0

1

2
[s]
acc

6

[rad/s^2]

4
2
0
−2
−4
−6

0

1

2
[s]

Fig. S4.5. Time history of position, velocity and acceleration with a timing law of
interpolating linear polynomials with parabolic blends

The coefficients are:
a10 = 0

a11 = 1

b10 = 0.025

a20 = 2
b11 = 0.5

a21 = 0.5

b12 = 2.5

b20 = 1.9875

b21 = 0.75

b22 = −1.25

b30 = 2.9875

b31 = 0.25

b32 = −1.25,

and the resulting trajectory is illustrated in Fig. S4.5.

48

4 Trajectory Planning
x−pos

y−pos
0.6

1
0.4
0.8
[m]

[m]

0.2
0.6
0.4

0
−0.2

0.2
−0.4
0
0

0.5

1
[s]

1.5

2

0

0.5

x−vel

0.5
[m/s]

0.5
[m/s]

1

0
−0.5

1.5

2

1.5

2

−0.5

0.5

1
[s]

1.5

−1
0

2

0.5

x−acc

1
[s]
y−acc

2

1

1
[m/s^2]

[m/s^2]

2

0

2

0
−1
−2
0

1.5

y−vel

1

−1
0

1
[s]

0
−1

0.5

1
[s]

1.5

2

−2
0

0.5

1
[s]

Fig. S4.6. Time history of position, velocity and acceleration of x- and ycomponents along a straight path with a trapezoidal velocity profile timing law

Solution to Problem 4.7
A trapezoidal velocity profile for the path coordinate s is assigned according
to (4.8) with maximum velocity ṡc = 1. The timing law for p(t) and its
derivatives is generated via (4.34) and (4.42).
With the given data, the files used to generate the time behaviour of
position, velocity and acceleration can be found in Folder 4 7.
The resulting trajectories for the x- and y-components are illustrated in
Fig. S4.6.

4 Trajectory Planning
y−pos

49

z−pos

1

1.5

0.5
[m]

[m]

1
0

0.5
−0.5
−1
0

0.5

1
[s]

1.5

0
0

2

0.5

y−vel

0.5
[m/s]

0.5
[m/s]

1

0
−0.5

1.5

2

1.5

2

−0.5

0.5

1
[s]

1.5

−1
0

2

0.5

y−acc

1
[s]
z−acc

2

1

1
[m/s^2]

[m/s^2]

2

0

2

0
−1
−2
0

1.5

z−vel

1

−1
0

1
[s]

0
−1

0.5

1
[s]

1.5

2

−2
0

0.5

1
[s]

Fig. S4.7. Time history of position, velocity and acceleration of x- and ycomponents along a circular path with a trapezoidal velocity profile timing law

Solution to Problem 4.8
The unit vectors of the axes of the reference frame for the circle are chosen as
x = y

y  = −z

z  = −x;

notice that the choice z  = −x ensures that the path is executed clockwise
about axis x. From (4.39), the path representation is
⎡
⎤
0
p(s) = ⎣ 0.5 cos (2s) ⎦ .
1 − 0.5 sin (2s)

50

4 Trajectory Planning

Since it is required to execute half a circle with tf = 2, the final value of the
path coordinate is sf = s(2) = π/2. Then, a trapezoidal velocity profile for
the path coordinate s is assigned according to (4.8) with maximum velocity
ṡc = 1. The timing law for p(t) and its derivatives is generated via (4.39),
(4.44).
With the given data, the files used to generate the time behaviour of
position, velocity and acceleration can be found in Folder 4 8.
The resulting trajectories for the y- and z-components are illustrated in
Fig. S4.7.

5
Actuators and Sensors

Solution to Problem 5.1
At steady state, (5.1)–(5.4) can be written in the time domain as

where

va = Ra ia + vg

(S5.1)

vg = kv ωm

(S5.2)

cm = Fm ωm + cr
cm = kt ia

(S5.3)
(S5.4)

va = Ci (0)Gv (vc − ki ia ).

(S5.5)

Combining (S5.1), (S5.2), (S5.5) with ki = 0 and K = Ci (0)Gv gives
Kvc = Ra ia + kv ωm
and yet, using (S5.3) and (S5.4) with cr = 0, it is


Fm Ra

Kvc =
+ kv ωm .
kt
If Fm

kv kt /Ra , then
ωm ≈

K 
v .
kv c

If instead ki = 0, on reduction of (S5.1)–(S5.5), it is


Ra + Kki

Kvc =
cm + kv ωm .
kt
If Kki

Ra , then
cm

kt
≈
ki



kv

vc − ωm .
K

52

5 Actuators and Sensors
time

variables
initialization

curr

G_v

C_i

+
-

T_v.s+1

V'_c

1
L_a.s

k_t

R_a

+

1

-

I_m.s

omega

F_m
k_v

plot

Fig. S5.1. Simulink block diagram of electric servomotor

From the block scheme in Fig. 5.3, the output can be computed via the closedloop transfer functions; namely, the input/output and disturbance/output
transfer functions, i.e.,

Ωm

If Fm

Kkt
1
Ra (sIm + Fm )
sIm + Fm

=
Vc −
Cr .
kv kt
kv kt
1+
1+
Ra (sIm + Fm )
Ra (sIm + Fm )

kv kt /Ra , then

Ωm

K
Ra
kv
kv kt

=
V −
C .
Ra Im c
Ra Im r
1+s
1+s
kv kt
kv kt

Finally, from the block scheme in Fig. 5.4, it is straightforward to compute
the output as
kt
1
ki Fm
Fm
Ωm =
V−
C .
Im c
Im r
1+s
1+s
Fm
Fm
Solution to Problem 5.2
With reference to the scheme in Fig. 5.2 (ki = 0 and Cr = 0) and the given
data, the resulting Simulink block diagram is shown in Fig. S5.1. The servo-

5 Actuators and Sensors
velocity

2.5

6

2

5

1.5

4
[rad/s]

[A]

current

1

3

0.5

2

0

1

−0.5
0

0.05

53

0.1

0.15

0
0

[s]

0.05

0.1

0.15

[s]

Fig. S5.2. Time history of current and velocity step response for an electric servomotor

motor is simulated as a continuous-time system using a variable-step integration method with a maximum step size of 1 ms. Notice that the amplifier time
constant is too small to produce appreciable effects at this sampling time.
The files with the solution can be found in Folder 5 2.
The resulting current and velocity responses to a unit step voltage input Vc
are shown in Fig. S5.2. It can be seen that the steady-state velocity slightly
deviates from the value of 5 rad/s as in (5.7), because of the presence of
mechanical friction (Fm ). This also implies that the steady-state current is
different from zero.
Solution to Problem 5.3
By closing a current loop with large loop gain, the current response is expected
to become much faster than the velocity response. Velocity plays the role of a
disturbance for the voltage-to-current closed-loop system. Hence, it is worth
choosing a PI control structure for Ci (s) in order to obtain a null steady-state
error, i.e.,
1 + sTI
.
Ci (s) = KI
s
With the given data, by setting Ωm = 0, the closed-loop input/output transfer
function (Tv ≈ 0) is
Ia
=
Vc

1 + sTI
.
0.002
0.2 + KI TI
1+s
+ s2
KI
KI

Since the settling time within 1% is given by
ts =

4.6
,
ζωn

either the damping ratio or the natural frequency can be imposed. Choosing
ζ = 0.7 with ts = 2 ms yields
KI = 21592

TI = 0.000416.

54

5 Actuators and Sensors
current

time

velocity

k_i

+

C_i(s)

curr

G_v

+
-

T_v.s+1

V'_c

1

k_t

L_a.s

+

1

-

I_m.s

R_a

omega

F_m
k_v

plot

Fig. S5.3. Simulink block diagram of electric servomotor with current feedback
loop and PI control
current

velocity

2

25
20
[rad/s]

[A]

1.5
1
0.5
0
0

15
10
5

1

2

3
[s]

4

5
−3

x 10

0
0

0.2

0.4

0.6

0.8

1

[s]

Fig. S5.4. Time history of current and velocity step response for an electric servomotor with current feedback loop and PI control

The resulting Simulink block diagram is shown in Fig. S5.3. The servomotor
is simulated as a continuous-time system using a variable-step integration
method. Since the current dynamics is much faster than the velocity dynamics,
the maximum step size has been chosen much smaller than in Problem 5.2, i.e.,
0.05 ms. Further, in order to make a comparison between the velocity response
in this case and the case of Problem 5.2, the block diagram in Fig. S5.3 features
a separate execution with a longer final time and a sampling time of 1 ms.
The files with the solution can be found in Folder 5 3.
The resulting current and velocity are shown in Fig. S5.4. The current
response goes as expected, while the velocity response is slowed down with
respect to the response in Fig. S5.2 because it is dominated by the time
constant Im /Tm .

5 Actuators and Sensors

55

Fig. S5.5. Reduction on the block scheme of a hydraulic motor with servovalve and
distributor

Solution to Problem 5.4
From this block scheme, the following relations can be found:
Θm =

1
Ωm
s

Ωm =

Cm − Cr
sIm + Fm

Cm = kt P
1
P =
skc + kl
=
X=



kx
kr




P
X−
− kq Ωm
kx

kx X − kr kq Ωm
1 + kr kl + skr kc
Gs
Vc .
1 + sTs

Substituting (S5.6) into (S5.6), and then (S5.6) into (S5.6), yields


kt kr kq
kt kx
1+
X
Ωm =
(sIm + Fm )(1 + kr kl + skr kc )
(1 + kr kl + skr kc )(sIm + Fm )
1
−
Cr .
sIm + Fm
Solving for Ωm , substituting it into (S5.6), and using (S5.6) leads to

Θm =



Fm
s(1 + sTs ) 1 +
kt kr kq

kx Gs
kr kq

 Vc


Im
1+s
(1 + kr kl + skr kc )
Fm

56

5 Actuators and Sensors

1 + kr kl + skr kc
kt kr kq
 Cr .
− 


Fm
Im
s 1+
1+s
(1 + kr kl + skr kc )
kt kr kq
Fm

Solution to Problem 5.5
Without loss of generality, the case of 4 bits is considered. The truth table of
the interconversion logic circuit is reported in Table S5.1.
Table S5.1. Truth table of the interconversion logic circuit from Gray-code to
binary code
#
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Gray Code
x1 x2 x3 x4
0 0 0 0
0 0 0 1
0 0 1 1
0 0 1 0
0 1 1 0
0 1 1 1
0 1 0 1
0 1 0 0
1 1 0 0
1 1 0 1
1 1 1 1
1 1 1 0
1 0 1 0
1 0 1 1
1 0 0 1
1 0 0 0

Binary Code
y1 y2 y3 y4
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

The first columns of the two codes are equal, and thus
y1 = x1 .
From the second column at the output, it can be recognized that y2 = 1 when
x1 = 0 and x2 = 1, or else when x1 = 1 and x2 = 0, and thus
y2 = x̄1 x2 + x1 x̄2 = x1 ⊕ x2 = y1 ⊕ x2
where “⊕” is the symbol for the logical operator XOR. From the third column
at the output, it can be recognized that y3 = 1 when y2 = 0 and x3 = 1, or
else when y2 = 1 and x3 = 0, and thus
y3 = y2 ⊕ x3 .

5 Actuators and Sensors

57

Fig. S5.6. Interconversion logic circuit from Gray code to binary code

Finally, from the fourth column it is
y4 = y3 ⊕ x4 .
The resulting interconversion logic circuit is illustrated in Fig. S5.6 where the
conventional symbol of XOR is used.
Solution to Problem 5.6
The skew-symmetric operator is

⎡

0
S(r ccs ) = ⎣ 0.2
0
and thus applying (5.32)
⎡
0
⎢
 c ⎢ 0
fc
⎢ 1
=⎢
μcc
⎢ 0
⎣
0.3
0

⎤
−0.2 0
0
0.3 ⎦ ,
−0.3 0

gives
0
1 0
−1 0 0
0
0 0
0.2 0 0
0 0.2 0
0.3 0 1

0
0
0
0
−1
0

⎤⎡ ⎤ ⎡ ⎤
0
20
0
0⎥⎢ 0 ⎥ ⎢ 0 ⎥
⎥⎢ ⎥ ⎢ ⎥
0 ⎥ ⎢ 0 ⎥ ⎢ 20 ⎥
⎥⎢ ⎥ = ⎢ ⎥,
1⎥⎢ 0 ⎥ ⎢ 0 ⎥
⎦⎣ ⎦ ⎣ ⎦
0
6
0
0
0
0

that is,
f cc = [ 0 0

20 ]T N

μcc = [ 0

0 0 ]T N·m.

As can be seen, there is no resulting moment in the contact frame.
Solution to Problem 5.7
Let the end-effector frame coincide with Frame 4 in Fig. S2.3. Then, with
reference to (S2.3), the homogeneous transformation from the base frame to
the end-effector frame at q = [ 0 π/4 0.1 0 ] is
⎡
⎤
0.707 −0.707 0 0.854
⎢ 0.707 0.707 0 0.354 ⎥
T bc = ⎣
⎦.
0
0
1 0.1
0
0
0
1

58

5 Actuators and Sensors

Using (5.35) gives

⎡

⎤
0.066
⎢ 0.141 ⎥
p̃c = ⎣
⎦
0.8
1

and, in view of (5.41), it is
⎡

⎤
633.6 0 250
Ω=⎣ 0
964 250 ⎦
0
0
1
and thus from (5.40)
xI = 241.82
yI = 335.92
λ = 0.8.
Hence
XI = 302.27

YI = 419.90.

6
Control Architecture

Solution to Problem 6.1
With reference to the hierarchical control architecture in Fig. 6.1, the solution
can be articulated at the task and action levels as follows.
At the task level, in order to decompose the task into a sequence of actions, the decision module shall consult the knowledge base available in the
modelling module concerning the manipulator and the environment. If the
environment is scarcely structured, the knowledge base shall be updated with
the information to be presented by the sensor module via the use of heteroceptive sensors, e.g., vision. Once the environment is structured, the modelling
module provides the relative location between the manipulator, the object
and the obstacle. Feasibility of the task shall be verified, and a possible sequence of actions is generated: approach position A, pick object, move object
while avoiding obstacle, approach position B, place object. The two approach
actions are opportune to ensure smooth pick-and-place of the object.
At the action level, the symbolic commands coming from the task level
are interpreted by the decision module which shall take the resolutions needed
to execute the given sequence of actions, that is, choice of reference frame,
motion in operational space, intermediate path or via points C, D, E, F
(see Fig. S6.1), duration of time intervals, path primitives off the obstacle,
and type of interpolating functions. By doing so, the decision module shall
consult the knowledge base available in the modelling module to verify path
feasibility. As for the approach actions, the decisions imparted to the primitive
level shall regard low values of velocities and vertical orientation of the end
effector, whereas the knowledge base shall be updated with the information
available in the sensor module via the use of range or proximity sensors.

60

6 Control Architecture

Fig. S6.1. Choice of reference frame and intermediate positions for an object pickand-place task

Solution to Problem 6.2
With reference to the sequence of points illustrated in Fig. S6.1, the operational space motion primitives can be determined in the two cases of path
points and via points, respectively, as follows.
In the case of path points, the various points can be connected by segments. To ensure safe grasp of the object at point C and safe release of the
object at point F , it is advisable to choose null velocity and acceleration at
each of those points. As for the intermediate points D and E, it is sufficient
to impose null velocities. Hence, the timing law along the segments CD and
EF shall be polynomials of at least fourth order, whereas the timing law
along the segment DE shall be either a cubic polynomial or a trajectory with
trapezoidal velocity profile.
In the case of via points, the actual path in the neighbourhood of D and
E is of no concern, as long as it is kept at a safety distance from the obstacle.
The passage in the proximity of the two via points can be obtained by using
the same interpolating functions as for the previous case, on condition that
the generation of the timing laws along the segments DE and EF are suitably
anticipated in time. As above, null initial and final velocity and acceleration
are to be imposed.
Finally, the presence of a redundant DOFs relative to a bidimensional
position task can be exploited to keep end-effector orientation constant along
−y.
Solution to Problem 6.3
Before executing the peg-in-hole task, the end effector shall approach the hole.
It can be argued that it is difficult to guarantee exact positioning of the peg
relative to the hole; this may render the insertion phase quite critical. It is
assumed that the main cause of uncertainty regards only position, that is the
axis of the peg can be considered to be aligned with the axis of the hole during

6 Control Architecture

61

Fig. S6.2. Flow chart for the execution of a peg-in-hole task

the approach to the hole; also, it is assumed that no jamming occurs during
insertion.
Choose a reference frame at the base of the arm, with axis x along the
horizontal direction (positive from the base to the hole) and axis y along the
positive vertical direction. A possible solution is to split the whole task into
three subtasks as follows.
At first, a fast motion towards the position (xH , Δy) shall be executed,
where xH is the estimated x coordinate of the center of the hole and Δy is a
small distance from the estimated height of the hole (y = 0). This is meant
to avoid colliding the surface around the hole during the approach phase. A
pure motion control strategy is needed to accomplish this subtask.
Next, a slow motion along −y shall be executed, still with a pure motion control strategy. This goes on until y is below the given distance −Δy

62

6 Control Architecture

(when the peg is considered to have entered the hole), unless a contact force
fy is sensed above a threshold , due to a collision with the surface. In that
case, before proceeding with insertion, it is necessary to slide along the surface in either positive or negative horizontal direction until a force below the
threshold is sensed; if the x coordinate of end-effector position goes too far
from xH (greater than a distance Δx), then the motion shall be inverted. A
force/position control strategy is needed to accomplish this subtask where position is controlled along x and force is controlled along y to a desired pushing
force. This goes on until the peg enters the hole.
Finally, the insertion along −y is accomplished by using a force/position
control strategy where position is controlled along y, force is controlled along
x, and moment is controlled about z; moment control is needed to keep the
peg in axis with the hole during insertion.
The flow chart corresponding to the articulation of the whole task into
the above three subtasks is illustrated in Fig. S6.2.
Solution to Problem 6.4
The task can be divided into the following sequence of actions:
• command new object on conveyor,
• fast motion of end effector to a location above object to pick,
• slow motion of end effector towards object,
• pick object from conveyor,
• fast motion of object to a loading location above pallet,
• slow motion of object downwards,
• release object.
At the beginning, the end effector is moved to a home location from which
the task starts. The above sequence is iterated until the pallet is filled, and
then the end effector is taken back to the home location.
Below a PASCAL program is listed to execute the given task.
program FILL PALLET;
type point: array[1..6] of real;
const home: point=(------);
{end-effector home location}
object: point=(------);
{object location}
pallet: point=(------);
{lower-left pallet location}
lift: -.-;
{z-offset above object}
length: -.-;
{object x-dimension}
width: -.-;
{object y-dimension}
fast: -.-;
{fast velocity}
slow: -.-;
{slow velocity}
var
i,j: integer;
current: point;
{end-effector current location}
procedure MOVETO(var endpoint:point,velocity:real);
procedure GRASP;
procedure RELEASE;

6 Control Architecture

procedure NEW OBJECT;
begin
MOVETO(home,fast);
for i:=0 to 3 do
for j:= 0 to 3 do
begin
NEW OBJECT;
current:=object;
current[3]:=current[3]+lift;
MOVETO(current,fast);
MOVETO(object,slow);
GRASP;
MOVETO(current,slow);
current:=pallet;
current[1]:=current[1]+i*length;
current[2]:=current[2]+j*width;
current[3]:=current[3]+lift;
MOVETO(current,fast);
current[3]:=current[3]-lift;
MOVETO(current,slow);
RELEASE;
current[3]:=current[3]+lift;
MOVETO(current,slow);
end
MOVETO(home,fast);
end

63

7
Dynamics

Solution to Problem 7.1
Consider the Cartesian arm in Fig. S7.1, for which the vector of generalized
coordinates is q = [ d1 d2 ]T .
Let m 1 , m 2 be the masses of the two links and mm1 , mm2 the masses
of the rotors of the two joint motors. Let also Im1 , Im2 be the moments of
inertia about the axes of the two rotors. It is assumed that pmi = pi−1 and
z mi = z i−1 , for i = 1, 2, i.e., the motors are located on the joint axes with
centres of mass located at the origins of the respective frames.
√
√
With the choice of the frames in Fig. S7.1, it is z 1 = [ 1/ 2 0 1/ 2 ]T .
Hence, computation of the Jacobians in (7.16), (7.18) yields
√ ⎤
⎡
⎤
⎡
0 0
0 1/ 2
( 1)
(
)
0√ ⎦ .
JP 2 = ⎣ 0
JP = ⎣ 0 0 ⎦
1 1/ 2
1 0
(

)

(

)

Obviously it is J O 1 = J O 2 = O.
Computation of the Jacobians in (7.25), (7.26), (7.28), (7.29) respectively
yields
⎡
⎤
⎡
⎤
0 0
0 0
(m )
(m )
JP 1 = ⎣ 0 0 ⎦
JP 2 = ⎣ 0 0 ⎦
0 0
1 0
√ ⎤
⎡
⎡
⎤
0 0
0 kr2 / 2
(m )
(m )
JO 1 = ⎣ 0 0 ⎦
0√ ⎦
JO 2 = ⎣ 0
0 kr2 / 2
kr1 0
where kri is the gear reduction ratio of motor i.
From (7.32), the inertia matrix is
√


2
m 1 + mm2 + kr1
Im1 + m 2
m 2/ 2
√
B=
.
2
m 2 + kr2
Im2
m 2/ 2

66

7 Dynamics

Fig. S7.1. Two-link Cartesian arm where Joint 2 axis forms an angle of π/4 with
Joint 1 axis

Notice that B is constant, which implies that C = O. As for the gravitational
terms, with g 0 = [ 0 0 −g ]T , (7.39) gives:
√
g1 = (m 1 + mm2 + m 2 )g
g2 = m 2 g/ 2.
In the absence of friction and tip contact forces, the resulting equations of
motion are
(m

1

m
2
+ mm2 + kr1
Im1 + m 2 )d¨1 + √ 2 d¨2 + (m 1 + mm2 + m 2 )g = τ1
2
m2¨
m
2
√ d1 + (m 2 + kr2
Im2 )d¨2 + √ 2 g = τ2
2
2

where τ1 and τ2 denote the forces applied to the two joints. It is worth pointing
out that, differently from the arm in Fig. 7.3, the dynamic model is coupled
(nonnull off-diagonal terms in the inertia matrix) and gravity acts also on the
second joint.
Solution to Problem 7.2
A natural choice for the elements of matrix C satisfying (7.43) with hijk as
in (7.41) is

n 

∂bij
1 ∂bjk
q̇k .
−
cij =
∂qk
2 ∂qi
k=1

For the two-link planar arm of Fig. 7.4, they become
c11 =

2 

∂b11
k=1

1 ∂b1k
−
∂qk
2 ∂q1


q̇k = −2m 2 a1 2 s2 ϑ̇2

7 Dynamics

c12 =

c21 =

c22 =

2 

k=1
2 

k=1
2 

k=1

∂b12
1 ∂b2k
−
∂qk
2 ∂q1
∂b21
1 ∂b1k
−
∂qk
2 ∂q2
1 ∂b2k
∂b22
−
∂qk
2 ∂q2

Setting h = −m 2 a1 2 s2 leads to

C=

67


q̇k = −m 2 a1 2 s2 ϑ̇2


1
q̇k = m 2 a1 2 s2 ϑ̇1 − m 2 a1 2 s2 ϑ̇2
2


q̇k =

1
m a1 2 s2 ϑ̇1 .
2 2

2hϑ̇2
h
−hϑ̇1 + ϑ̇2
2

hϑ̇2
h
− ϑ̇1
2



while the time derivative of the inertia matrix can be written as


2hϑ̇2 hϑ̇2
Ḃ =
.
hϑ̇2
0
Therefore, the matrix N (q, q̇) = Ḃ − 2C becomes


−2hϑ̇2 −hϑ̇2
N (q, q̇) =
2hϑ̇1
hϑ̇1
which clearly is not skew-symmetric. Nevertheless, it is easy to show that the
product
q̇ T N (q, q̇)q̇ = 0,
confirming that (7.49) holds even for a choice of C so that (7.48) does not
hold.
Solution to Problem 7.3
Consider the SCARA arm in Fig. S7.1, for which the vector of generalized coordinates is q = [ ϑ1 ϑ2 d3 ϑ4 ]T and link frames assigned as in Fig. S2.3.
For the first two links, consider the same kinematics and dynamic parameters
of the two-link planar arm of Exmple 7.2. Moreover, links 3 and 4 can be
considered as a unique rigid body, referred as “last link”, which translates
along axis z2 of the prismatic Joint 3 and rotates about axis z3 of the revolute
Joint 4. Let m 3 denote the mass of the last link. For simplicity, it is assumed
that the centre of mass p 4 of the last link is located on axis z3 ; let I 4 denote
the element [3, 3] of the inertia tensor of the last link relative to the centre
of mass. Also, assume that the motors of Joints 3 and 4 have negligible mass
and inertia.
Due to the additivity property, the kinetic energy of the SCARA manipulator can be computed by adding the kinetic energy of the last link to the

68

7 Dynamics

kinetic energy of the two-link planar arm. Therefore, from (7.32), the inertia
matrix can be computed as
B(q) = B  (q) + B  (q)
where B  is the (4 × 4) matrix obtained completing the (2 × 2) inertial matrix
of the two-link planar arm of Sect. 7.3.2 with two null columns and two null
rows, while B  is the contribution of the last link, which can be computed as
B  (q) = m 3 J P 4 J P 4 + J O 4 R4 I i i RT4 J O 4 .
(

)T

(

The computation of the Jacobians in
⎡
−a1 s1 − a2 s12 −a2 s12
( 4)
J P = ⎣ a1 c1 + a2 c12
a2 c12
0
0

)

(

)T

(

)

(7.16), (7.17) yields
⎤
⎡
0 0
0
(
)
0 0⎦
J O4 = ⎣ 0
1 0
1

(S7.1)

0
0
1

⎤
0 0
0 0⎦
0 1

Hence, from (S7.1), the nonnull elements of matrix B  (q) are
b11 = m 3 (a21 + a22 + 2a1 a2 c2 ) + I 4
b12 = b21 = m 3 (a22 + a1 a2 c2 ) + I 4
b14 = b41 = I

4

b22 = m 3 a22 + I
b24 = b42 = I 4

4

b33 = m 3
b44 = I 4 .
Therefore, the nonnull elements of the inertia matrix of the SCARA manipulator are:
2
b11 = I 1 + m 1 21 + kr1
Im1 + I 2 + m 2 (a21 + 22 + 2a1 2 c2 )

b12

+Im2 + mm2 a21 + m 3 (a21 + a22 + 2a1 a2 c2 ) + I 4
= b21 = I 2 + m 2 (22 + a1 2 c2 ) + kr2 Im2 + m 3 (a22 + a1 a2 c2 ) + I

b14 = b41 = I 4
2
b22 = I 2 + m 2 22 + kr2
Im2 + m 3 a22 + I
b24 = b42 = I
b33 = m 3

4

4

4

b44 = I 4 .
The Christoffel symbols for the SCARA manipulator can be computed as
cijk = cijk + cijk

7 Dynamics

69

Fig. S7.2. Two-link planar arm with a prismatic joint and a revolute joint

where cijk are the Christoffel symbols of the two-link planar arm of Sect. 7.3.2,
while cijk are those computed from the elements bij of B  (q) as in (7.45).
The nonnull elements are:
c112 = −m 2 a1 2 s2 − m 3 a1 a2 s2 = k
c122 = k
c211 = −k,
leading to the matrix

⎡

k ϑ̇2
⎢ −k ϑ̇1
C(q, q̇) = ⎢
⎣ 0
0

k(ϑ̇1 + ϑ̇2 )
0
0
0

0
0
0
0

⎤
0
0⎥
⎥.
0⎦
0

As for the gravitational terms, it can be easily understood that gravity contributes only to Joint 3 force, which has the expression
g3 = m 3 g.
Solution to Problem 7.4
By using the expressions of the parameters in (7.83), the equations of motion
(7.82) can be rewritten as
2
π4 + (a21 + 2a1 a2 c2 + a22 )π5
τ1 = a21 π1 + 2a1 π2 + π3 + kr1
+(2a1 c2 + 2a2 )π6 + π7 + π8 )ϑ̈1
+ (a1 a2 c2 + a22 )π5 + (a1 c2 + 2a2 )π6 + π7 + kr2 π8 ϑ̈2

−(2a1 a2 s2 π5 + 2a1 s2 π6 )ϑ̇1 ϑ̇2 − (a1 a2 s2 π5 + a1 s2 π6 )ϑ̇22
+(a1 π1 + π2 + a1 π5 )gc1 + (a2 π5 + π6 )gc12
2
τ2 = (a22 π5 + 2a2 π6 + π7 + kr2
π8 )ϑ̈2
2
+ (a1 a2 c2 + a2 )π5 + (a1 c2 + 2a2 )π6 + π7 + kr2 π8 ϑ̈1

+(a1 a2 s2 π5 + a1 s2 π6 )ϑ̇21
+(a2 π5 + π6 )gc12 .

70

7 Dynamics

It is then possible to find the following linear combinations between the parameters which bring the number thereof down to a minimum of 5:
π1 = a1 π1 + π2 + a1 π5 = a1 m1 + m1 C1 + a1 m2
2
2
π2 = a1 π2 + π3 + kr1
π4 = a1 m1 C1 + I¯1 + kr1
Im1
π3 = a2 π5 + π6 = a2 m2 + m2 C2
π4 = a2 π6 + π7 = a2 m2 C2 + I¯2

(S7.2)

π5 = π8 = Im2 .
Accordingly, the elements of the regressor become

y11
= a1 ϑ̈1 + gc1

y12
= ϑ̈1

y13 = (2a1 c2 + a2 )ϑ̈1 + (a1 c2 + a2 )ϑ̈2 − 2a1 s2 ϑ̇1 ϑ̇2 − a1 s2 ϑ̇22 + gc12

y14
= ϑ̈1 + ϑ̈2

y15
= ϑ̈1 + kr2 ϑ̈2

(S7.3)


y21
=0

y22
=0

y23 = a2 ϑ̈2 + (a1 c2 + a2 )ϑ̈1 + a1 s2 ϑ̇21 + gc12

y24
= ϑ̈2 + ϑ̈1

2
y25
= kr2
ϑ̈2 + kr2 ϑ̈1 .

Solution to Problem 7.5
Consider the planar arm in Fig. S7.2, for which the vector of generalized
coordinates is q = [ d1 ϑ2 ]T .
Let m 1 , m 2 be the masses of the two links, 1 , 2 the distances of the
centres of mass from the respective joint axes, and mm1 , mm2 the masses of
the rotors of the two joint motors. Let also I 2 be the inertia tensor of Link
2 about Joint 2 axis, and Im1 , Im2 the moments of inertia about the axes of
the two rotors. It is assumed that pmi = pi−1 and z mi = z i−1 , for i = 1, 2,
i.e., the motors are located on the joint axes with centres of mass located at
the origins of the respective frames.
With the choice of the frames in Fig. S7.2, it is z 1 = [ 0 1 0 ]T ,
p1 = pm2 = [ 0 0 d1 ]T , p 2 = [ −2 c2 0 d1 + 2 s2 ]T . Computation of
the Jacobians in (7.16), (7.18) yields
⎤
⎡
⎡
⎤
0 0
0  2 s2
( )
( )
JP 1 = ⎣ 0 0 ⎦
0 ⎦,
JP 2 = ⎣ 0
1  2 c2
1 0

7 Dynamics

whereas computation of the Jacobians in (7.17), (7.19) yields
⎡
⎤
⎡
⎤
0 0
0 0
( )
( )
J O1 = ⎣ 0 0 ⎦
J O2 = ⎣ 0 1 ⎦ .
0 0
0 0
Computation of the Jacobians in (7.25), (7.26) yields
⎡
⎤
⎡
⎤
0 0
0 0
(m )
(m )
JP 2 = ⎣ 0 0 ⎦ ,
JP 1 = ⎣ 0 0 ⎦
0 0
1 0
whereas computation of the Jacobians in (7.28), (7.29) yields
⎤
⎤
⎡
⎡
0 0
0 0
(m )
(m )
JO 1 = ⎣ 0 0 ⎦
J O 2 = ⎣ 0 kr2 ⎦
0 0
kr1 0
where kri is the gear reduction ratio of motor i.
From (7.32), the inertia matrix is


b11
b12 (ϑ2 )
B(q) =
b22
b12 (ϑ2 )
b11 = m

1

+ m m2 + m

2

2
+ kr1
Im1

b12 = m 2 2 c2
2
b22 = I 2 + m 2 22 + kr2
Im2
where I 2 = I 2 zz is the constant moment of inertia about Joint 2 axis.
Computation of Christoffel symbols as in (7.45) gives:
c111 = c112 = c121 = c211 = c212 = c221 = c222 = 0
∂b12
1 ∂b22
c122 =
−
= −m 2 2 s2
∂q2
2 ∂q1
leading to the matrix

C(q, q̇) =

0
0


−m 2 2 s2 ϑ̇2
.
0

Computing the matrix N in (7.47) gives
N (q, q̇) = Ḃ(q) − 2C(q, q̇)


0
m 2 2 s2 ϑ̇2
=
−m 2 2 s2 ϑ̇2
0
which is skew-symmetric.

71

72

7 Dynamics

As for the gravitational terms, with g 0 = [ −g

0 0 ]T , (7.39) gives:

g1 = 0
g2 = m 2 2 gs2 .
In the absence of friction and tip contact forces, the resulting equations of
motion are
(m

1

2
+ mm2 + m 2 + kr1
Im1 )d¨1 + m 2 2 c2 ϑ̈2 − m 2 2 s2 ϑ̇22 = τ1 (S7.4)
2
m 2 2 c2 d¨1 + (I 2 + m 2 22 + kr2
Im2 )ϑ̈2 + m 2 2 gs2 = τ2 (S7.5)

where τ1 and τ2 respectively denote the force applied to Joint 1 and the torque
applied to Joint 2.
The presence of a concentrated tip payload of mass mL alters Link 2
parameters as follows:
m 2 = m

2

2 =

+ mL

m 2  2 + m L a2
m 2

I 2 = I 2 + m 2 (2 − 2 )2 + mL (a2 − 2 )2
and the same formal dynamic model can be written as above in terms of the
new parameters.
A minimum parameterization of the dynamic model can be obtained in
terms of the following parameter vector:
π  = [ π1

π2

π3 ]T

2
π1 = m 1 + mm2 + m 2 + kr1
Im1

 
π2 = m 2 2
2
π3 = I 2 + m 2 2
2 + kr2 Im2 .

Accordingly, the elements of the regressor are

y11
= d¨1

y12
= c2 ϑ̈2 − s2 ϑ̇22

y13
=0

y21
=0

= c2 d¨1 + gs2
y22

y23
= ϑ̈2 .

Solution to Problem 7.6
Let x1 and x2 denote the absolute angles of the two joints. The relationship
between relative and absolute angles is
x1 = ϑ1

x2 = ϑ1 + ϑ2 .

7 Dynamics

73

This can be formally treated as a coordinate transformation from the joint
space to the operational space of absolute angles. The analytical Jacobian
characterizing such transformation at velocity level is then


1 0
JA =
,
1 1
which is always nonsingular, implying that the absolute angles constitute a
set of generalized coordinates for the system.
Therefore, the terms of the operational space dynamic model can be computed according to (7.134)–(7.136). From (7.134), the inertia matrix is


b
b
B A = A11 A12
bA12 bA22
where, using the expressions of bij in Sect. 7.3.2, the elements in the new
coordinates are
bA11 = b11 + b22 − 2b12
2
= I 1 + m 1 21 + kr1
Im1 + m 2 a21 + (1 − kr2 )2 Im2 + mm2 a21
bA12 = b12 − b22
= m 2 a1 2 cos (x2 − x1 ) + kr2 (1 − kr2 )Im2
bA22 = b22
2
= I 2 + m 2 22 + kr2
Im2 .

Notice that the diagonal elements are configuration-invariant; also, if kr2 = 1
(direct drive), then the effect of motor 2 inertia on both bA12 and bA22 vanishes.
Further, from (7.135), the velocity-dependent term is


c − c12 c21 − c22
C A ẋ = 11
c21
c22
which, using the expressions of cij in Sect. 4.3.2, in the new coordinates becomes


hẋ22
C A ẋ =
−hẋ21
where h = −m 2 a1 2 sin (x2 − x1 ). Interestingly enough, there is no Coriolis
effect; this can be explained by observing that rotation of Link 2 is represented
with reference to Frame 0 and thus is independent of rotation of Link 1.
Finally, from (7.136), the gravity term is


g1 − g2
gA =
g2
which, using the expressions of gi in Sect. 4.3.2, in the new coordinates becomes


(m 1 1 + mm2 a1 + m 2 a1 )g cos x1
gA =
.
m 2 2 g cos x2

74

7 Dynamics
4

x 10

joint 1 torque

4

1.5

1

1

0.5

0.5

[Nm]

[Nm]

1.5

0
−0.5

x 10

joint 2 torque

0
−0.5

−1
0

0.2

0.4

−1
0

0.6

0.2

[s]

0.4

0.6

[s]

Fig. S7.3. Time history of joint torques for the first trajectory of Example 7.2
4

x 10

joint 1 torque

4

1.5

1

1

0.5

0.5

[Nm]

[Nm]

1.5

0
−0.5

x 10

joint 2 torque

0
−0.5

−1
0

0.2

0.4

−1
0

0.6

0.2

[s]

0.4

0.6

[s]

Fig. S7.4. Time history of joint torques for the second trajectory of Example 7.2
4

x 10

joint 1 torque

4

1.5

1

1

0.5

0.5

[Nm]

[Nm]

1.5

0
−0.5
−1
0

x 10

joint 2 torque

0
−0.5

0.2

0.4
[s]

0.6

−1
0

0.2

0.4

0.6

[s]

Fig. S7.5. Time history of joint torques for the third trajectory of Example 7.2

Solution to Problem 7.7
The various terms of the dynamic model are computed by using the minimum parameterization in the solution to Problem 7.4. The tip forces can be
incorporated in the model as in (7.42), i.e., via the Jacobian transpose.
The files with the solution can be found in Folder 7 7.
The resulting torques for the three trajectories of Example 7.2 are illustrated in Figs. S7.3, S7.4, S7.5, respectively.

7 Dynamics

75

Solution to Problem 7.8
Start by imposing the initial conditions for the velocities and accelerations:
p̈00 − g 00 = [ g

0 0 ]T

ω 00 = ω̇00 = 0.

All quantities shall be referred to the current link frame. With the choice of
the frames as in Fig. S7.2, the following vectors are obtained:
⎡
⎡ ⎤
⎡
⎤
⎡ ⎤
⎤
0
0
C2
a2
r11,C1 = ⎣ C1 ⎦ r10,1 = ⎣ d1 ⎦ r22,C2 = ⎣ 0 ⎦ r 21,2 = ⎣ 0 ⎦
0
0
0
0
where C1 and C2 are both negative quantities. The rotation matrices needed
for vector transformation from one frame to another are:
⎡
⎤
⎡
⎤
−1 0 0
c2 −s2 0
R12 = ⎣ s2 c2 0 ⎦ .
R01 = ⎣ 0 0 1 ⎦
0 1 0
0
0
1
Further it is assumed that the axes of rotations of the rotors coincide with
T
the respective joint axes, i.e., z i−1
mi = z 0 = [ 0 0 1 ] for i = 1, 2.
According to (7.107)–(7.114), the Newton-Euler algorithm requires the
execution of the following steps.
• Forward recursion: Link 1
ω11 = 0
ω̇11 = 0
⎡

⎤
−g
⎥
⎢
p̈11 = ⎣ d¨1 ⎦

p̈1C1

0
⎤
⎡
−g
⎥
⎢
= ⎣ d¨1 ⎦
0
⎡

0

⎢
ω̇0m1 = ⎣

0

⎤
⎥
⎦.

kr1 d¨1
•

Forward recursion: Link 2
⎡ ⎤
0
⎢ ⎥
2
ω2 = ⎣ 0 ⎦
ϑ̇2

76

7 Dynamics

⎡

0

⎤

⎢ ⎥
ω̇22 = ⎣ 0 ⎦
ϑ̈2
⎤
s2 d¨1 − a2 ϑ̇22 − gc2
⎥
⎢
p̈22 = ⎣ c2 d¨1 + a2 ϑ̈2 + gs2 ⎦
⎡

0
⎤
s2 d¨1 − (C2 + a2 )ϑ̇22 − gc2
⎥
⎢
= ⎣ c2 d¨1 + (C + a2 )ϑ̈2 + gs2 ⎦
⎡

p̈2C2

2

0
⎡

⎤

0

⎢
ω̇1m2 = ⎣

⎥
⎦.

0
kr2 ϑ̈2

•

Backward recursion: Link 2
⎤
⎡
m2 s2 d¨1 − m2 (C2 + a2 )ϑ̇22 − m2 gc2
⎥
⎢
f 2 = ⎣ m2 c2 d¨1 + m2 (C + a2 )ϑ̈2 + m2 gs2 ⎦
2

2

0
⎡

⎤

∗

⎢
μ22 = ⎣

⎥
⎦

∗
m2 (C2 +a2 )c2 d¨1 + I¯2zz +m2 (C2 +a2 )2 ϑ̈2 +m2 (C2 +a2 )gs2

2
Im2 ϑ̈2
τ2 = m2 (C2 + a2 )c2 d¨1 + I¯2zz + m2 (C2 + a2 )2 + kr2
+m2 (C2 + a2 )gs2 ,

where the components marked by the symbol ‘∗’ have not been computed,
since they are not related to the joint torque τ2 .
•

Backward recursion: Link 1
⎤
⎡
−m2 (C2 + a2 )s2 ϑ̈2 − m2 (C2 + a2 )c2 ϑ̇22 − (m1 + m2 )g
⎥
⎢
f 1 = ⎣ (m1 + m2 )d¨1 + m2 (C + a2 )c2 ϑ̈2 − m2 (C + a2 )s2 ϑ̇2 ⎦
1

2

2

2

0
2
Im1 )d¨1 + m2 (C2 + a2 )c2 ϑ̈2 − m2 (C2 + a2 )s2 ϑ̇22 .
τ1 = (m1 + m2 + kr1

In view of the following equalities:
m1 = m

1

+ m m2

m2 = m

2

 2 =  C 2 + a2

I¯2zz = I 2 ,

7 Dynamics

77

the above dynamic model coincides with the model derived in (S7.4), (S7.5),
with Lagrange formulation.
Solution to Problem 7.9
In order to differentiate matrix B A in (7.130) with respect to time, it is worth
recalling the formula for the derivative of the inverse of a matrix A
d −1
A (t) = −A−1 (t)Ȧ(t)A−1 (t).
dt
Therefore, the time derivative of B A can be expressed as


T
Ḃ A = −B A J̇ A B −1 J TA − J A B −1 ḂB −1 J TA + J A B −1 J̇ A B A .
As regards C A , in view of (3.62), the relation in (7.131) can be written as
C A J A q̇ = B A J A B −1 C q̇ − B A J̇ A q̇,
and using a right pseudo-inverse of J A , e.g., the one in (7.138), leads to
C A = B A J A B −1 C J̄ A − B A J̇ A J̄ A .
Hence, the matrix Ḃ A − 2C A can be expressed as
T

T

T

Ḃ A − 2C A = J̄ A (Ḃ − 2C)J̄ A + B A J̇ A J̄ A − J̄ A J̇ A B A .
From the skew-symmetry of Ḃ − 2C it follows that the first term represents
a skew-symmetric matrix. Also, by observing that the second term on the
right-hand side is the transpose of the third term, the matrix resulting from
the difference of those terms is skew-symmetric too. It can be concluded that
the whole matrix Ḃ A − 2C A is skew-symmetric.
Solution to Problem 7.10
For a given (r × 1) vector of end-effector forces γ A , the problem can be formulated as that to find the (n × 1) vector τ that satisfies the linear equation
T

J̄ A τ = γ A ,

(S7.6)

where J̄ A is given in (7.138), and minimize the quadratic cost functional
g(τ ) =

1
(τ − τ a )T B −1 (τ − τ a ),
2

where τ a is an (n × 1) vector of arbitrary torques.

78

7 Dynamics

This problem can be solved with the method of Lagrangian multipliers.
Consider the modified cost functional
1
T
g(τ , λ) = (τ − τ a )T B −1 (τ − τ a ) + λT (γ A − J̄ A τ )
2
where λ is an (r × 1) vector of Lagrangian multipliers. The solution has to
satisfy the necessary conditions:
 T

T
∂g
∂g
=0
= 0.
∂τ
∂λ
From the first condition, it is
τ = B J̄ A λ + τ a ,

(S7.7)

while the second condition gives the constraint (S7.6). Substituting (S7.7) in
(S7.6) yields
T
T
λ = (J̄ A B J̄ A )−1 (γ A − J̄ A τ a ).
Then, substituting λ back in (S7.7) gives


T
T
T
τ = B J̄ A (J̄ A B J̄ A )−1 γ A + I − B J̄ A (J̄ A B J̄ A )−1 J̄ A τ a .
In view of (7.138) and (7.130), it is
J̄ A = B −1 J TA (J A B −1 J TA )−1 ,
and thus the above expression can be simplified into
T

τ = J TA (q)γ A + I − J TA (q)J̄ A (q) τ a
T

which is the sought solution. Notice that J TA is a right pseudo-inverse of J̄ A
weighted by B −1 , or else J̄ A is a right pseudo-inverse of J A weighted by B.
Solution to Problem 7.11
For a nonredundant manipulator, the core of the dynamic manipulability ellipsoid is given as in (7.149) which can be written as
J −T (q)B T (q)B(q)J −1 (q) = (J (q)B −1 (q)B −T (q)J T (q))−1 .
By analogy to the velocity manipulability ellipsoid (3.123), the dynamic manipulability measure can be defined as

w (q) = det J (q)B −1 (q)B −T (q)J T (q) .
Since J and B are square matrices and det(B) > 0 for all q, then
w (q) =
with w(q) as in (3.56).

|det J(q) |
w(q)
=
det B(q)
det B(q)

8
Motion Control

Solution to Problem 8.1
The transfer function of the forward path of the scheme in Fig. 5.10 is
P (s) = CP (s)M (s) =

km KP (1 + sTP )
,
s2 (1 + sTm )

being CP (s) the transfer function of he PI position controller and
M (s) =

km
.
s(1 + sTm )

The transfer function of the return path is
H(s) = kT P .
It follows that the closed-loop input/output transfer function is
Θm (s)
P (s)
=
=
Θr (s)
1 + P (s)H(s)

1
kT P
,
s2 (1 + sTm )
1+
km KP kT P (1 + sTP )

while the closed-loop disturbance/output transfer function is
Θm (s)
M (s)
=−
=−
D(s)
1 + P (s)H(s)

sRa
kt KP kT P (1 + sTP )
.
s2 (1 + sTm )
1+
km KP kT P (1 + sTP )

Solution to Problem 8.2
Operating by the rules for block reduction on the scheme in Fig. 5.11, it
is worth moving the input to the block kT V onto Θm and subtracting the

80

8 Motion Control

Fig. S8.1. Reduction on the block scheme of position and velocity feedback control

output to Θr . Then, the reduced block scheme of the system becomes that in
Fig. S8.1.
The transfer function of the forward path is then
P (s) = KP CV (s)M (s) =

km KP KV (1 + sTV )
,
s2 (1 + sTm )

being CV (s) the transfer function of the PI velocity controller and M (s) the
transfer function of the actuator. The transfer function of the return path is


kT V
.
H(s) = kT P 1 + s
KP kT P
It follows that the closed-loop input/output transfer function with TV = Tm
is
1
P (s)
Θm (s)
kT P
=
=
.
Θr (s)
1 + P (s)H(s)
skT V
s2
1+
+
KP kT P
km KP kT P KV
The closed-loop disturbance/output transfer function is
M (s)
Θ(s)
=−
=−
D(s)
1 + P (s)H(s)

sRa
kt KP kT P KV (1 + sTm )
.
skT V
s2
1+
+
KP kT P
km KP kT P KV

Solution to Problem 8.3
First, it is worth observing that the block scheme of Fig. 8.9 has been obtained
from the scheme of Fig. 8.6 operating by the usual rules for block reduction.
In particular, the input to the block kT A has been moved onto Θ̇m , while the
output to the same block has been moved onto the output of CA (s). Likewise,
the input to the block kT V has been moved onto Θm , while the output to the

8 Motion Control

81

Fig. S8.2. Reduction on the block scheme of position, velocity and acceleration
feedback control

same block has been moved onto the input to KP ; then, the resulting two
blocks in parallel have been summed giving (kT P + skT V /KP ). Solving the
inmost feedback loop gives the transfer function
1
kt
km
sRa I
kv
=
=
,
sM (s) =
sRa I
kt kv
1 + sTm
1+
1+
kv kt
sRa I
and thus the block scheme of the system becomes that in Fig. S8.2.
Solving the inner feedback loop gives the transfer function
km
1 + sTm
G (s) =
km kT A KA (1 + sTA )
1+
(1 + sTm )


=

km


⎞,
TA
sTm 1 + km KA kT A
⎜
Tm ⎟
⎟
(1 + km KA kT A ) ⎜
1
+
⎝
⎠
(1 + km KA kT A )
⎛

and thus the block scheme of the system becomes that in Fig. S8.3.
The transfer function of the forward path is then
P (s) =

KP KV KA (1 + sTA ) 
KP KV CA (s)G (s)
=
G (s).
s
s2

The transfer function of the return path is


skT V
H(s) = kT P 1 +
.
KP kT P

82

8 Motion Control

Fig. S8.3. Further reduction on the block scheme of position, velocity and acceleration feedback control

It follows that the closed-loop input/output transfer function with TA = Tm
is
1
P (s)
Θm (s)
kT P
=
=
,
Θr (s)
1 + P (s)H(s)
skT V
s2 (1 + km KA kT A )
1+
+
KP kT P
km KP kT P KV KA
while the closed-loop disturbance/output transfer function is
G (s)
Θm (s)
s
=−
=−
D(s)
1 + P (s)H(s)

sRa
kt KP kT P KV KA (1 + sTA )
.
skT V
s2 (1 + km KA kT A )
1+
+
KP kT P
km KP kT P KV KA

Solution to Problem 8.4
With the given data, the condition Fm
kv kt /Ra is verified and km =
2 rad/(V · s), Tm = 7.2 s, kT P = 1. The closed-loop input/output transfer
function is
(1 + sTP )
.
W (s) =
s2 (1 + sTm )
1 + sTP +
km KP kT P
Choosing TP = 10Tm = 72 s leads to the root locus in Fig. S8.4 as a function
of the gain K  = 20KP .
If a damping ratio ζ = 0.4 is desired, the resulting controller gain is
KP = 0.0013. For such value, two complex poles (−0.062, ±j0.142) and a real
pole (−0.015) are obtained. Hence, the above transfer function can be written
as
(1 + 72s)
.
W (s) =
(1 + 5.161s + 41.62s2)(1 + 66.66s)

8 Motion Control

83

0.2

image axis

0.1
0
−0.1
−0.2
−0.2

−0.1

0
0.1
real axis

0.2

Fig. S8.4. Root locus for the position feedback control scheme

Correspondingly, the disturbance rejection factor is XR = 0.0013, while an
estimate of the output recovery time is TR = 72 s. These values reveal the
poor disturbance rejection performance of the closed-loop system under simple
position feedback control.
Solution to Problem 8.5
With the given data, the condition Fm
kv kt /Ra is verified and km =
2 rad/(V· s), Tm = 7.2 s, kT P = 1, kT V = 1. Choosing TV = Tm yields the
closed-loop input/output transfer function
W (s) =

1
.
s
s2
1+
+
KP
2KP KV

With the given specifications for ζ and ωn , the controller gains can be determined according to (8.30) and (8.31), giving KP = 25 and KV = 8, and thus
the above transfer function becomes
W (s) =

1
1 + 0.04s + 0.0025s2

which has two complex poles (−8, ±j18.33). Correspondingly, the disturbance
rejection factor is XR = 200, while an estimate of the output recovery time is
TR = 7.2 s. These values reveal the good disturbance rejection performance of
the closed-loop system under position and velocity feedback control; however,
it is not possible to further decrease the output recovery time which is limited
by the time constant Tm of the drive system.

84

8 Motion Control

Solution to Problem 8.6
With the given data, the condition Fm
kv kt /Ra is verified and km =
2 rad/(V · s), Tm = 7.2 s, kT P = 1, kT V = 1, kT A = 1. Choosing TA = Tm
yields the closed-loop input/output transfer function
W (s) =

1
.
s
s2 (1 + 2KA )
1+
+
KP
2KP KV KA

With the given specifications for ζ, ωn and XR , the controller gains can be
determined according to (8.39), (8.40), (8.41) giving KP = 25, KV = 32,
KA = 0.5, and thus the above transfer function becomes
W (s) =

1
1 + 0.04s + 0.0025s2

which is the same transfer function of the previous problem. Remarkably,
in the case of position, velocity and acceleration feedback control, the disturbance rejection performance is improved in terms of XR , although the
output recovery time TR is still the same as in the previous case. Finally,
in order to reconstruct acceleration from velocity measurement, a first-order
filter as in Fig. 8.11 can be used. With the given ζ and ωn , the closed-loop
system bandwidth is ω3 = 26.84 rad/s, and then the filter bandwidth shall
be chosen wide enough with respect to the drive system bandwidth, e.g.,
ω3f = kf = 400 rad/s.
Solution to Problem 8.7
As for the block scheme in Fig. 8.12, where the saturation block can be neglected, it is worth moving both the output of the block Tm /km and the
output of the block 1/km onto the input to the block kP (1 + sTP )/s; also the
quantities Θ̇d and Θ̈d can be generated from Θd as sΘd and s2 Θd , respectively.
Therefore, the reduced block scheme becomes that in Fig. S8.5.
The relationship between the desired input and the new reference input
is then



 2
s
s
s
T
m
+
Θd (s)
Θr (s) = kT P +
km
km KP (1 + sTP )


s2 (1 + sTm )
= kT P +
Θd (s).
km KP (1 + sTP )
As for the block scheme in Fig. 8.13, where the saturation block can be
neglected, it is worth moving both the output of the block 1/km KV and
the output of the block kT V onto the input to the block KP ; as above, the
quantities Θ̇d and Θ̈d can be generated from Θd as sΘd and s2 Θd , respectively.
Therefore, the reduced block scheme becomes that in Fig. S8.6.

8 Motion Control

85

Fig. S8.5. Reduction on the block scheme of position feedback control with decentralized feedforward compensation

Fig. S8.6. Reduction on the block scheme of position and velocity feedback control
with decentralized feedforward compensation

The relationship between the desired input and the new reference input
is then


skT V
s2

Θr (s) = kT P +
+
Θd (s).
KP
km KP KV
As for the block scheme in Fig. 8.14, where the saturation block can be
neglected, it is worth moving both the output of the block (kT A + 1/km KA )
and the output of the block kT V onto the input to the block KP ; again, the
quantities Θ̇d and Θ̈d can be generated from Θd as sΘd and s2 Θd , respectively.
Therefore, the reduced block scheme becomes that in Fig. S8.7.

86

8 Motion Control

Fig. S8.7. Reduction on the block scheme of position, velocity and acceleration
feedback control with decentralized feedforward compensation

The relationship between the desired input and the new reference input
is then


skT V
(1 + km KA kT A )s2
Θr (s) = kT P +
+
Θd (s).
KP
km KP KV KA
Solution to Problem 8.8
The block scheme in Fig. 8.15 is clearly equivalent to that in Fig. 8.12, since
the block KP (1 + sTP )/s can be split into two blocks in parallel, i.e., KP TP
and KP /s.
Concerning the block scheme in Fig. 8.28, it is worth considering the input
U and the output Y of the block KV (1 + sTV )/s. By neglecting the effect of
the saturation block and setting E = kT P (Θd − Θm ), the input U is given by
U = KP E + kT V (Θ̇d − Θ̇m ) +

= KP 1 +

1
Θ̈d
km KV


1
kT V
Θ̈d .
s E+
KP kT P
km KV

Then the output can be expressed (TV = Tm ) as




KV (1 + sTV )
1
kT V
Θ̈d
KP 1 +
Y =
s E+
s
KP kT P
km KV

= KP KV

1
+ TV
s




1
kT V
1
+ Tm Θ̈d
s E+
KP kT P
km s

KV TV kT V
KP KV
1
Tm
Θ̇d +
Θ̈d
+
+
s E+
s
kT P
km
km


1+


KV kT V
= KP KV TV +
kT P

8 Motion Control

87

corresponding to the block scheme in Fig. 8.16.
In a similar way, concerning the block scheme in Fig. 8.29, it is worth
considering the input U and the output Y of the block KA (1 + sTA )/s. By
neglecting the effect of the saturation blocks and setting E = kT P (Θd − Θm ),
the input U is given by


 
1
U = KV KP E + kT V (Θ̇d − Θ̇m ) + kT A +
Θ̈d − kT A Θ̈m
km KA


KV kT V
kT A 2
1
Θ̈d .
= KP KV +
s+
s E+
kT P
kT P
km KA
Then the output can be expressed (TA = Tm ) as


 

1
KV kT V
kT A 2
1
Θ̈d
+ TA
s+
s E+
Y = KA
KP KV +
s
kT P
kT P
km KA

=

KV kT V KA
KP KV KA
+
kT P
s



KV kT V KA TA + KA kT A
KA TA kT A 2
+
s E
s+
kT P
kT P
1
Tm
Θ̇d +
Θ̈d
+
km
km

KP KV KA TA +

corresponding to the block scheme in Fig. 8.17.
Solution to Problem 8.9
From (8.75), the following matrix inequality can be written:
Bm I ≤ B −1 ≤ BM I
where all three matrices are positive definite. Setting
% =
B

2
I,
BM + Bm

which is positive definite, allows writing the matrix inequality
2Bm
2BM
% ≤
I ≤ B −1 B
I.
BM + Bm
BM + Bm
Subtracting the identity matrix from each term gives
% − I ≤ αI
−αI ≤ B −1 B
where
α=

BM − Bm
BM + Bm

88

8 Motion Control
q_d=[pi/4 -pi/2]

time

q_d=[-pi -3pi/4]

K_d

arm
q_d

+
+

+
K_p

-

dq

inv(B(q))(tau-tau')

q

gravity
compensation
g(q)

plot

Fig. S8.8. Simulink block diagram of joint space PD control with gravity compensation
joint 1 pos

joint 2 pos

0.8

−1.55

0.75

−1.6

[rad]

[rad]

−1.5

0.7
0.65
0.6
0

−1.65
−1.7

0.5

1

1.5

2

2.5

−1.75
0

[s]

0.5

1

1.5

2

2.5

[s]

Fig. S8.9. Time history of the joint positions with joint space PD control with
gravity compensation for the first posture

and 0 < α < 1. The matrix in the middle is lower bounded by a negative
definite diagonal matrix and upper bounded by a positive definite diagonal
matrix, where these two matrices have the same norm. Thus, it follows that
% − I ≤ α.
B −1 B

8 Motion Control
joint 2 pos

−3.1

−2.3

−3.15

−2.35

−3.2

−2.4

[rad]

[rad]

joint 1 pos

−3.25
−3.3
−3.35
0

89

−2.45
−2.5

0.5

1

1.5

2

2.5

0

[s]

0.5

1

1.5

2

2.5

[s]

Fig. S8.10. Time history of the joint positions with joint space PD control with
gravity compensation for the second posture

Solution to Problem 8.10
The control scheme in Fig. 8.20 is used with the same matrix gains as for case
F in Sect. 8.7, i.e.,
K P = 3750I
K D = 750I.
The initial arm postures for the two cases are chosen as q − [ 0.1 0.1 ]T . The
various terms of the dynamic model are computed by using the minimum
parameterization in the solution to Problem 7.4.
The resulting Simulink block diagram is shown in Fig. S8.8, where both
desired postures can be assigned. The arm is simulated as a continuous-time
system using a variable-step integration method with a maximum step size of
1 ms. All the blocks of the controller are simulated as discrete-time subsystems
with the given sampling time of 1 ms.
The with the solution can be found in Folder 8 10.
The resulting joint positions for the two postures are shown in Figs. S8.9
and S8.10, respectively. The dashed line indicates the desired joint position,
while the solid line indicates the actual joint position. It can be seen that both
postures are reached at steady state.
Solution to Problem 8.11
With reference to the dynamic model in the solution to Problem 7.4, the
presence of a payload alters the dynamic parameters of augmented Link 2.
Since the payload is a mass mL concentrated at the tip, the only parameter
that varies is the mass of the augmented link which becomes
m2 = m2 + mL ;
in fact, both the inertia first moment m2 C2 and inertia moment I¯2 remain
the same because they are evaluated with respect to a frame located at the
tip. Hence, only parameters π1 and π3 in (S7.2) have to be recomputed with
the modified m2 .

90

8 Motion Control
K_p = 5
K_v = 10

time

K_p = 6.25
K_v = 32
computed torque
tau_d

[T,ddq_d]

k_fa

[T,dq_d]

k_fv

[T,q_d]

k_fp

+
-

K_p

+
+
+
-

voltage-controlled
arm
K_v

PI

+
+

M

q
dq

k_tv

k_tp
plot

Fig. S8.11. Simulink block diagram of joint space computed torque control with
feedforward compensation of the diagonal terms of the inertia matrix and of gravitational terms, and independent joint control with position and velocity feedback

The desired trajectories for the two joints are generated via trapezoidal velocity profiles with maximum velocities q̇c1 = 3π/4 rad/s and q̇c2 = π/3 rad/s,
respectively.
The control scheme in Fig. 8.19 is used with feedforward compensation
of the diagonal terms of the inertia matrix and of gravitational terms. As for
the decentralized controller, the independent joint control with position and
velocity feedback in Fig. 5.11 is adopted.
Initially, the same gains for each joint servo are chosen as for case A in
Sect. 8.7, i.e., (kT P = kT V = 1)
KP = 5

KV = 10,

corresponding to ωn = 5 rad/s and ζ = 0.5, and thus to a closed-loop bandwidth ω3 = 6.36 rad/s. This gives a disturbance rejection factor XR = 50.
Then, by observing that the required trajectory is faster than the corresponding trajectory in Sect. 8.7, a larger bandwidth is imposed. Setting
ωn = 10 rad/s and ζ = 0.8 gives ω3 = 10.78 rad/s. From (8.30) and (8.31), the
gains become
KV = 32
KP = 6.25

8 Motion Control
joint torques

4000

4000

2000

2000
[Nm]

[Nm]

joint torques

0
−2000
−4000
0

0
−2000

0.5

1

1.5

2

2.5

−4000
0

0.5

1

[s]
joint pos errors

2

2.5

2

2.5

joint pos errors
0.05

[rad]

[rad]

1.5
[s]

0.05

0

−0.05
0

91

0.5

1

1.5
[s]

2

2.5

0

−0.05
0

0.5

1

1.5
[s]

Fig. S8.12. Time history of the joint torques and position errors with joint space
computed torque control with feedforward compensation of the diagonal terms of
the inertia matrix and of gravitational terms, and independent joint control with
position and velocity feedback; left—first choice of servo gains, right—second choice
of servo gains

and, from (8.33), it is XR = 200, i.e., a disturbance rejection factor which is
four times as much as the previous one.
The resulting Simulink block diagram is shown in Fig. S8.11, where both
choices of servo gains can be executed. The arm is voltage-controlled as in
the scheme of Fig. 8.3 and is simulated as a continuous-time system using
a variable-step integration method with a maximum step size of 1 ms. All
the blocks of the controller are simulated as discrete-time subsystems with
the given sampling time of 1 ms; in particular, the PI block is discretized
assuming a zero-order hold on the inputs.
The files with the solution can be found in Folder 8 11.
The resulting joint torques and position errors are shown in Fig. S8.12.
The solid line refers to Joint 1, while the dashed line refers to Joint 2. It can
be seen that the tracking performance with the second choice of the servo
gains is considerably improved, at the expense of a sharper behaviour of joint
torques, though.

92

8 Motion Control
noncompensated
load mass

time

compensated
load mass

[T,ddq_d]

+
-

[T,dq_d]

+

[T,q_d]

+

inertia

arm

+

K_d

B(q)u

+
+

+

q

nonlinear
compensation

K_p

-

dq

inv(B(q))(tau-tau')

n(q,dq)

e

plot

Fig. S8.13. Simulink block diagram of joint space inverse dynamics control
joint pos errors

joint pos errors

−4

0.02

5

x 10

[rad]

[rad]

0.01
0

0

−0.01
−0.02
0

0.5

1

1.5
[s]

2

2.5

−5
0

0.5

1

1.5

2

2.5

[s]

Fig. S8.14. Time history of the joint position errors with joint space inverse dynamics control; left—noncompensated load mass, right—compensated load mass

Solution to Problem 8.12
The modification of the dynamic model to account for the load mass and
the generation of joint trajectories are accomplished as in the solution to
Problem 8.11.
The control scheme in Fig. 8.22 is used where the matrix gains are chosen
as
K D = 16I
K P = 100I
corresponding to an error dynamics for both joints characterized by ωni =
10 rad/s and ζi = 0.8 for i = 1, 2.
The resulting Simulink block diagram is shown in Fig. S8.13, where both
the noncompensated load mass case and the compensated load mass case can

8 Motion Control

93

time

variables
initialization
robustness
UV

constant
inertia

+
[T,ddq_d]

tau
arm

+
-

[T,dq_d]

+

[T,q_d]

+
-

B_h

+

K_d

dq

+
+

inv(B(q))(tau-tau')
q

+
friction and gravity
compensation
K_p
F_vdq+g(q)
e

plot

Fig. S8.15. Simulink block diagram of joint space robust control
joint torques

joint pos errors

−3

4000

1.5

x 10

1
2000
[rad]

[Nm]

0.5
0

0
−0.5

−2000
−1
−4000
0

0.5

1

1.5
[s]

2

2.5

−1.5
0

0.5

1

1.5

2

2.5

[s]

Fig. S8.16. Time history of the joint torques and position errors with joint space
robust control

be executed. The arm is torque-controlled as in the scheme of Fig. 8.4 and
is simulated as a continuous-time system using a variable-step integration
method with a maximum step size of 0.1 ms. All the blocks of the controller
are simulated as discrete-time subsystems with the given sampling time of
1 ms.
The files with the solution can be found in Folder 8 12.
The resulting joint position errors in the two cases are shown in Fig. S8.14.
The solid line refers to Joint 1, while the dashed line refers to Joint 2. It
can be seen that the tracking performance is excellent when load mass is
compensated, while it is degraded both during transient and at steady state

94

8 Motion Control
time

variables
initialization

adaptive
control

[T,ddq_d]
+

+

[T,dq_d]

ddq_r

arm

+

Lam

Y( . )pi_h

+
+

[T,q_d]

+
+
-

q

dq_r

+

Lam

dq

inv(B(q))(tau-tau')

+
-

K_d
sig

e

plot

Fig. S8.17. Simulink block diagram of joint space adaptive control
joint pos errors

−3

1

x 10

load mass estimate
20
15
[kg]

[rad]

0.5
0
−0.5
−1
0

10
5

0.5

1

1.5

2

2.5

0
0

0.5

[s]

1

1.5

2

2.5

[s]

Fig. S8.18. Time history of the joint position errors and of the load mass estimate
with joint space adaptive control

when the load mass is not compensated. Also, in the case of noncompensated
load mass, steady-state errors occur.
Solution to Problem 8.13
The modification of the dynamic model to account for the load mass and
the generation of joint trajectories are accomplished as in the solution to
Problem 8.11.
% = B̄)
The control scheme in Fig. 8.23 is used with constant inertia (B
and compensation of friction and gravity (%
n = F v q̇ + g). The gains defining
the error dynamics are chosen as in the solution to Problem 8.12, i.e.,
K P = 100I

K D = 16I;

8 Motion Control

95

furthermore, the matrix P in (8.81) is chosen as
P = I,
and the gain ρ and the thickness of the boundary layer in (8.89) are respectively chosen as
ρ = 70
= 0.001.
The resulting Simulink block diagram is shown in Fig. S8.15. The arm
is simulated as a continuous-time system using a variable step integration
method with a maximum step size of 1 ms. All the blocks of the controller are
simulated as discrete-time subsystems with the given sampling time of 1 ms.
The files with the solution can be found in Folder 8 13.
The resulting joint torques and position errors are shown in Fig. S8.16.
The solid line refers to Joint 1, while the dashed line refers to Joint 2. It can be
seen that, in spite of the imperfect dynamic model compensation, the tracking
performance is satisfactory, thanks to the use of the robustness action.
Solution to Problem 8.14
A minimum parameterization of the dynamic model is obtained as in the solution to Problem 7.4, with suitable modification of augmented Link 2 parameters as in the solution to Problem 8.11. The generation of joint trajectories
is also accomplished as in the solution to Problem 8.11.
The control scheme in Fig. 8.26 is used. In terms of the new reference
velocity and acceleration vectors in (8.92), the regressor in (S7.3) becomes

= a1 ϑ̈r1 + gc1
y11

y12
= ϑ̈r1

y13
= (2a1 c2 + a2 )ϑ̈r1 + (a1 c2 + a2 )ϑ̈r2 − a1 s2 ϑ̇r1 ϑ̇2 − a1 s2 ϑ̇1 ϑ̇r2 − a1 s2 ϑ̇2 ϑ̇r2
+gc12

y14
= ϑ̈r1 + ϑ̈r2

y15
= ϑ̈r1 + kr2 ϑ̈r2

y21
=0

=0
y22

y23
= (a1 c2 + a2 )ϑ̈r1 + a2 ϑ̈r2 + a1 s2 ϑ̇1 ϑ̇r1 + gc12

y24 = ϑ̈r1 + ϑ̈r2

2
y25
= kr2 ϑ̈r1 + kr2
ϑ̈r2 .

In view of the presence of a concentrated tip load mass, the only variations
occurring on the parameters in (S7.2) are:
Δπ1 = a1 mL

Δπ3 = a2 mL .

96

8 Motion Control

Hence, the control law in (8.98) can be formally written as
u = Y  (q, q̇, q̇r , q̈ r )π + F v q̇ r + mL y L + K D σ
where Y  is computed as above and


 
+ a2 y13
a1 y11
yL =
,


a1 y21
+ a2 y23
being π = mL the only unknown parameter.
The gains are chosen as
Λ = 10I

K D = 10000I

kπ = 0.005;

the initial estimate of π is set to 0, and the true value of mL is utilized only
to update the simulated arm model.
The resulting Simulink block diagram is shown in Fig. S8.17. The arm
is simulated as a continuous-time system using a variable-step integration
method with a maximum step size of 1 ms. All the blocks of the controller are
simulated as discrete-time subsystems with the given sampling time of 1 ms.
The files with the solution can be found in Folder 8 14.
The resulting joint position errors and load mass estimate are shown in
Fig. S8.18. For the joint position errors, the solid line refers to Joint 1, while
the dashed line refers to Joint 2. It can be seen that the tracking performance
is satisfactory, thanks to the adaptive action on the load mass; in this case,
the parameter estimate converges to the true value.
Solution to Problem 8.15
The modification of the dynamic model to account for the load mass is accomplished as in the solution to Problem 8.11.
The control scheme in Fig. 8.29 is used with the same matrix gains as for
case K in Sect. 8.7, i.e.,
K P = 16250I

K D = 3250I.

The initial tip positions for the two postures are chosen as p − [ 0.1 0.1 ]T .
The resulting Simulink block diagram is shown in Fig. S8.19, where both
desired positions can be assigned. The arm is simulated as a continuous-time
system using a vaiable-step integration method with a maximum step size of
1 ms. All the blocks of the controller are simulated as discrete-time subsystems
with the given sampling time of 1 ms.
The files with the solution can be found in Folder 8 15.
The resulting components of tip position for the two postures are shown
in Figs. S8.20 and S8.21, respectively. The dashed line indicates the desired
tip coordinate, while the solid line indicates the actual tip coordinate. It can
be seen that both postures are reached at steady state.

8 Motion Control
p_d=[0.5 0.5]

97
time

p_d=[0.6 -0.2]

J_a(q)
Jacobian
transpose
K_d

-

arm

+
p_d

tr(J_a(q))

+

+
K_p

p

dq

+
inv(B(q))(tau-tau')

q

gravity
compensation

direct
kinematics

sinusoidal
functions

k(q)

cs(q)

g(q)

plot

Fig. S8.19. Simulink block diagram of operational space PD control with gravity
compensation
y−pos
0.55

0.5

0.5
[m]

[m]

x−pos
0.55

0.45
0.4
0.35
0

0.45
0.4

0.5

1

1.5

2

2.5

0.35
0

0.5

[s]

1

1.5

2

2.5

[s]

Fig. S8.20. Time history of the tip position components with operational space PD
control with gravity compensation for the first posture

Solution to Problem 8.16
The modification of the dynamic model to account for the load mass is accomplished as in the solution to Problem 8.11. The desired tip trajectory is
generated in terms of the path coordinate s via a trapezoidal velocity profile
with maximum velocity ṡc = 1.5.
The control scheme in Fig. 8.30 is used with the matrix gains:
K P = 100I

K D = 16I.

98

8 Motion Control
y−pos
−0.15

0.6

−0.2
[m]

[m]

x−pos
0.65

0.55
0.5

−0.25
−0.3

0.45
0

0.5

1

1.5

2

2.5

0

0.5

1

[s]

1.5

2

2.5

[s]

Fig. S8.21. Time history of the tip position components with operational space PD
control with gravity compensation for the second posture
noncompensated
load mass

time

compensated
load mass

[T,ddp_d]
[T,dp_d]

+
-

+

Jacobian
inverse

+

K_d

+

inertia
inv(J_a(q))

arm

B(q)u

+
+

[T,p_d]

+
-

dq
inv(B(q))(tau-tau')

q

K_p
nonlinear
compensation
e

Jacobian
derivative

direct
kinematics

sinusoidal
functions

k(q)

cs(q)

n(q,dq)

dJ_a(q,dq)

analytical
Jacobian
J_a(q)
plot

Fig. S8.22. Simulink block diagram of operational space inverse dynamics control

The resulting Simulink block diagram is shown in Fig. S8.22, where both
the noncompensated load mass case and the compensated load mass case
can be executed. The arm is simulated as a continuous-time system using a
variable-step integration method with a maximum step size of 1 ms. All the
blocks of the controller are simulated as discrete-time subsystems with the
given sampling time of 1 ms.
The files with the solution can be found in Folder 8 16.

8 Motion Control
tip pos errors

−3

6

x 10

tip pos errors

−4

4

99

x 10

4
2
[m]

[m]

2
0

0

−2
−2
−4
−6
0

0.5

1

1.5
[s]

2

2.5

−4
0

0.5

1

1.5

2

2.5

[s]

Fig. S8.23. Time history of the components of tip position error with operational space inverse dynamics control; left—noncompensated load mass, right—
compensated load mass

The resulting components of tip position error in the two cases are shown
in Fig. S8.23. The solid line refers to x component, while the dashed line refers
to y component. It can be seen that the performance is excellent when the
load mass is compensated, while it is degraded both during transient and at
steady state when the load mass is not compensated.

9
Force Control

Solution to Problem 9.1
Computing the time derivative of odd,e = RTd (oe − od ) gives
T

ȯdd,e = RTd (ȯe − ȯd ) − Ṙd (oe − od ).

(S9.1)

In view of (3.10), (3.7) and (3.11) the following equality holds
T

Ṙd = −RTd S(ω d ) = −S(RTd ω d )RTd = −S(ω dd )RTd

(S9.2)

which, replaced in (S9.1), gives (9.10).
To derive (9.11), consider the equality
d

T

Ṙe = Ṙd Re + RTd Ṙe = −S(ω dd )Red + S(ω de )Red = S(ω dd,e )Red ,
where (S9.2), (3.10), and (3.11) have been used. It follows that (3.64) can be
rewritten as
ωdd,e = T (φd,e )φ̇d,e
being φd,e the vector of Euler angles extracted from Rde and ω dd,e the angular
d

velocity corresponding to Ṙe . Hence, expression (9.11) follows.
Solution to Problem 9.2
Pre-multiplying by K both sides of the equality
dxr,e = dxr,d − dxe,d ,
and using (9.21) and (9.20) gives
he = Kdxr,d − KK −1
P he

102

9 Force Control

and thus

(I 6 + KK −1
P )he = Kdxr,d ,

from which expression (9.22) follows. Equality (9.23) is obtained replacing (9.22) into (9.20).
Solution to Problem 9.3
Similarly to Example 9.2, all the quantities can be referred to a base frame and
control law with force measurement (9.30), (9.31) can be adopted. To compute
the model of the contact force, in view of the geometry of the environment, it
is useful to consider also a rotated base frame with axes parallel to the axes
xc and yc of Fig. 9.16 and with the same origin of the base frame of axes x0
and y0 . The corresponding rotation matrix is
√ 
 √
1/√2 −1/√ 2
Rc =
.
1/ 2 1/ 2
In the rotated base frame, the environment stiffness matrix has the simple
expression
K c = diag{0, ky },
corresponding to the absence of interaction forces along the direction of axis
xc (f ce = [ 0 fyc ]T ). The elastic force in the rotated base frame has the
expression
f ce = K c (oce − ocr ),
being oce the end-effector position and ocr the equilibrium position of the plane
in the rotated base frame. The above expression can be rewritten in the base
frame in the form
f e = K(oe − or ),


with
K = Rc K

c

RTc

= ky

1/2 −1/2
−1/2 1/2



and or = [ 1 0 ]T .
The impedace parameters can be set similarly to Example 9.2, on the
basis of the equations
mdx ẍce + kDx ẋce + kP x xce = kP x xcd
mdy ÿec

+ kDy ẏec + (kP y + ky )yec = ky yrc + kP y ydc

referred to the rotated base frame, where the diagonal matrices
M cd = diag{mdx , mdy }

K cD = diag{kDx , kDy }

K cP = diag{kP x , kP y }

define an active impedance in the rotated base frame. The corresponding
impedance matrices referred to the base frame are
M d = Rc M cd RTc

K D = Rc M cd RTc

K P = Rc M cd RTc .

9 Force Control
variables
initialization

103
time

f_e

operational space
decoupled arm

[T,ddo_d]

environment
K(o_e−o_r)

u = ddo_e
[T,do_d]
K_d

f_e
do_e

inv(M_d)

o_e

[T,o_d]
K_p

e

plot

Fig. S9.1. SIMULINK block diagram of impedance control.

Notice that, differently from Example 9.2, the interaction occurs along yc .
Therefore, for the unconstrained motion along xc , the behaviour is determined
by
kDx
kP x
ζx = √
,
ωnx =
mdx
2 mdx kP x
while, for the constrained motion along axis yc , the behaviour is determined
by
&
kP y + ky
kDy
ωny =
ζy = '
.
mdy
2 mdy (kP y + ky )
With the choice
mdx = mdy = 100

kDx = kDy = 1600

kP x = kP y = 5000,

and the given value of environment stiffness ky , the dynamics is characterized
by
ωnx = 7.07 rad/s
ζx = 1.13
and
ωny = 10 rad/s

ζy = 0.8.

The desired tip trajectory is generated in terms of the path coordinate s
via a trapezoidal velocity profile with maximum velocity ṡc = 0.5.
The resulting Simulink block diagram is shown in Fig. S9.1. The arm is
simulated as a continuous-time system using the a variable-step integration
method with a minimum step size of 1 ms. All the blocks of the controller are
simulated as discrete-time subsystems with the given sampling time of 1 ms.

104

9 Force Control
pos error

force

0.06

500
x

0.04

x
[N]

[m]

0.02
0

0
y

−0.02

y

−0.04
−0.06
0

0.5

1

1.5

2

−500
0

2.5

0.5

1

[s]

1.5

2

2.5

2

2.5

[s]

pos error

force

0.06

500

0.04
xc

0

[N]

[m]

0.02

xc

0

yc

−0.02
yc

−0.04
−0.06
0

0.5

1

1.5

2

2.5

−500
0

[s]

0.5

1

1.5
[s]

Fig. S9.2. Time history of the tip position error and of the contact force with
impedance control. Top: components in the base frame. Bottom: components in the
rotated base frame.

The files with the solution can be found in Folder 9 3.
The resulting tip position error and contact force are shown in Fig. S9.2,
both referred to the base frame (top) and to the rotated base frame (bottom).
It can be verified that the position error keeps small during the task execution,
ensuring a bounded contact force. In particular, it can be observed that the
position error is null along the unconstrained motion direction (axis xc ), where
the force is null; on the other hand, the force response along the constrained
motion direction (axis yc ) remains bounded and converges to a constant value
which depends on the plane stiffness and undeformed position as well as on
the active compliance.
Solution to Problem 9.4
From the block scheme in Fig. 9.8, at the equilibrium, it is ẋ ≡ 0, ẍ ≡ 0.
Then, the input to the block K P must be null, which implies
xd + xF − xe = 0.
In view of (9.21) and (9.41), it follows that
xd + C F K(xr − xe ) + f d − xe = 0,

9 Force Control

105

and thus the equilibrium location satisfies the equation
xe = xd + C F K(xr − xe ) + f d .

Solution to Problem 9.5
The norm of vector
 = he − S f λ
with weighting matrix W is defined as
√
 W = T W .

(S9.3)

The vector λ which minimizes the norm (S9.3) can computed also as the
solution of a minimization problem for the quadratic cost functional
g() =

1 T
 W .
2

The solution has to satisfy the necessary condition


∂g
∂λ

T
=0

which gives
−S Tf W (he − S f λ) = 0,
and thus

λ = (S Tf W S f )−1 S Tf W he .

Solution to Problem 9.6
Taking into account that CK = KC = I 6 , Equation (9.70) can be rewritten
in the form
K  = S f (S Tf CS f )−1 S Tf CK
which, considering the definition (9.55) of weighted pseudo-inverse with weight
C, can be rewritten as
K  = S f S †f K = P f K.

Solution to Problem 9.7
Assuming that the screwdriver can move along the slot of the screw, it is worth
choosing the constraint frame attached to the screwdriver as in Fig. S9.3.
Natural constraints can be determined first. Motion constraints describe
the impossibility to generate arbitrary linear velocities along axes yc , zc and

106

9 Force Control

Fig. S9.3. Driving a screw in a hole.
Table S9.1. Natural and artificial constraints for the task of Fig. S9.3.
Natural
Constraints
ṗcy
ṗcz
ωxc
ωyc
fxc
μcz

Artificial
Constraints
fyc
fzc
μcx
μcy
ṗcx
ωzc

angular velocities about axes xc , yc . Force constraints describe the impossibility to exert arbitrary forces along axis xc and moment about axis zc .
As a consequence, artificial constraints regard the variables not subject to
natural constraints. Hence, with reference to natural velocity constraints along
axes yc , zc and about xc , yc , it is possible to specify artificial constraints for
forces along yc , zc and moments about xc , yc . Also, with reference to natural
generalized force constraints along axis yc and about axis zc , it is possible to
specify artificial constraints for linear velocity along xc and angular velocity
about zc . The set of constraints is summarized in Table S9.1. Notice that, in
the case of a frictionless groove, once ωzc is specified, then ṗcz is determined
according to the pitch of the screw.
Solution to Problem 9.8
The control input (9.77) referred to the constraint frame, in view of the expressions of S cf , S cv and C  c in Example 9.4, can be computed as
αcx = αν
αcy = c2,2 fλ .

9 Force Control

107

Taking into account (9.81), the control input αcy can be expressed as
αcy = −c2,2 kDλ λ̇ + kP λ (λd − λ),
where a constant desired force λd was considered. In view of the equalities
ȯcy = c2,2 λ̇ and λ = fyc , the equation can be rewritten in the form
αcy = −kDλ ȯcy + kP λ (λd − fyc ),
showing that the the control action in the force controlled subspace consists
of a proportional force control with inner velocity loop.
Solution to Problem 9.9
The computation of S c†
f using the compliance matrix


c1,2
c2,2

c
C = 1,1
c1,2
c



as a weighting matrix gives
cT c c −1 cT c
S c†
S f C = [ c−1
2,2 c1,2
f = (S f C S f )

1].

On the other hand, computing S †f in the base frame gives
S †f

=

(S Tf CS f )−1 S Tf C

1
= √
2



c1,2 − c2,2
c2,2

c1,2 + c2,2
c2,2


,

T
where C = Rc C c RTc . Notice that S †f = S c†
f Rc and the same transformation

rule holds for S †v . Also, if f ce = [ fxc

T

fyc ] , then

†
c
λ = S c†
f f e = Sf f e =

c1,2 c
f + fyc ,
c2,2 x

independently from the frame to which S †f and f e are referred. On the other
T

hand, if the contact force f ce belongs to subspace R(S cf ), i.e., f ce = [ 0 fyc ] ,
then it is λ = fyc independently from the particular weighting matrix.
Analogously, the computation of S c†
v using the stiffness matrix


k
k1,2
K c = 1,1
k1,2 k2,2
as a weighting matrix gives
cT
c c −1 cT
S c†
Sv K c = [ 1
v = (S v K S v )

−1
k1,1
k1,2 ]

108

9 Force Control

in the constraint frame, and
S †v

1
=√
2



k1,1 − k1,2
k1,1

k1,1 + k1,2
k1,1



in the base frame.
Solution to Problem 9.10
In view of the results of Example 9.4, the hybrid control law can be designed
by choosing the control inputs αν and fλ according to (9.80) and (9.84),
respectively, with suitable control gains.
In detail, the control gains in (9.80) can be set to
kP ν = 16

kIν = 100,

corresponding to ωnν = 10 rad/s and ζν = 0.8 for the dynamics of the velocity
error νd − ν.
The same dynamics can be imposed to the force λ with the choice
kDλ = 16

kP λ = 100,

in the case that the stiffness of the environment is known.
In the case that only an estimate of the stiffness of the environment is
available, the quantity Lf = lf has the value
lf =
and thus

ĉ2,2
c2,2

˙
c
λ̂ = ĉ−1
2,2 ȯy .

3
Assuming, for example, ĉ−1
2,2 = 4 · 10 N/m, then lf = 1.25, corresponding
to ωnλ = 11.18 rad/s and ζλ = 0.71 for the dynamics of the force.
The initial tip position is chosen on the plane as oe (0) = [ 1 0 ]T . The
desired velocity along axis xc is set as in Problem 9.3, while the desired force
along axis yc is set to −50 N.
The resulting Simulink block diagram is shown in Fig. S9.4. The arm
is simulated as a continuous-time system using a variable-step integration
method with a minimum step size of 1 ms. All the blocks of the controller are
simulated as discrete-time subsystems with the given sampling time of 1 ms.
The files with the solution can be found in Folder 9 10.
The resulting tip velocity error along xc and contact force along yc are
shown in Fig. S9.5. It can be verified that the velocity error keeps small during
task execution; also, the contact force reaches the desired value at steady state.
In Fig. S9.6, the continuous line represents the end-effector path in the base
frame, while the dashed line corresponds to the plane at rest. It can be verified
that the plane complies during the interaction.

9 Force Control
lam

variables
initialization

K_Dl

time

pS_f

trR_c

G_f

trR_c

C’S_f

operational space
decoupled arm

K_Pl
h_d

109

pS_f

environment
o_e

f_e

K’(o_e−o_r)

u = ddo_e

do_e

R_c
[T,a_d]

pS_v

[T,v_d]

pS_v

o_e
K_Pnu

K Ts

S_v

K_Inu

z−1

pS_v

trR_c

e_nu

plot

Fig. S9.4. SIMULINK block diagram of hybrid force/motion control.
vel error

−3

2

x 10

force
0
−10

1
[N]

[m/s]

−20
0

−30
−40

−1
−50
−2
0

0.5

1

1.5
[s]

2

2.5

−60
0

0.5

1

1.5

2

2.5

[s]

Fig. S9.5. Time history of the tip velocity error and of the contact force with hybrid
force/motion control.

Solution to Problem 9.11
In view of equality q̇ = J ρ (r)ṙ and (9.63) the following equality holds
v e = J(q)q̇ = J(q)J ρ (r)ṙ = S v (q)ṙ.
Hence, pre-multiplying both sides of the above equation by S †v and using (9.59)
gives
ν = ṙ.
Also, it is ν̇ = r̈. Therefore, control law (9.95) yields the closed-loop equation
r̈ − r̈ d + K Dr (ṙ d − ṙ) + K P r (r d − r) = 0,
showing that tracking of a desired position rd (t) is achieved.

110

9 Force Control
0.25
0.2

[m]

0.15
0.1
0.05
0
1

1.1
[m]

1.2

Fig. S9.6. Tip’s path in the base frame (continous line) and undeformed contact
plane (dashed line).

10
Visual servoing

Solution to Problem 10.1
The principal moments of the region are the eigenvalues of matrix I which
are


1
λ=
μ2,0 + μ0,2 + 4μ21,1 + (μ0,2 − μ2,0 )2
2


1

λ =
μ2,0 + μ0,2 − 4μ21,1 + (μ0,2 − μ2,0 )2
2
with λ ≥ λ > 0. The principal axis (i.e., the eigenvector of I) corresponding
to λ is aligned to vector


μ1,1
aλ =
.
λ − μ2,0
Therefore
tα =



1 
μ0,2 − μ2,0 + 4μ21,1 + (μ0,2 − μ2,0 )2 ,
2μ1,1

where tα = tan α. Considering that
t2α =

2tα
2μ1,1
=
,
1 − t2α
μ2,0 − μ0,2

Equation (10.2) follows.
Solution to Problem 10.2
The singular value decomposition of the (12 × 9) matrix A is given by
A = U ΣV T ,

(S10.1)

112

10 Visual servoing

where U is a (12 × 12) orthogonal matrix, V is a (9 × 9) orthogonal matrix
and


D 0
Σ=
D = diag{σ1 , σ2 , . . . , σ8 }
O 0
whith σ1 ≥ σ2 ≥ . . . ≥ σ8 > 0 being the non-null singular values of matrix A,
which is of rank 8. Post-multiplying by V both sides of Eq. (S10.1) gives
AV = U Σ
and thus Av i = σi ui , for i = 1, . . . , 8 and Av 9 = 0, being v i the i-th
column of V , known as right eigenvector, and ui the i-th column of U , known
as left eigenvector, corresponding to σi . In sum, the right eigenvector v 9 ,
corresponding to the null singular value of A, is a non-null solution to (10.10).
Solution to Problem 10.3
T
T cT
Notice that equality Tr(RcT
o U ΣV ) = Tr(V Ro U Σ) derives from property Tr(AB) = Tr(BA), for square matrices A and B. Also, since V T RcT
o U
is an an orthogonal matrix, all its elements have absolute value lower than or
equal to 1.
The problem of minimizing the Frobenius norm is equivalent to that of
minimizing the quantity




Rco − Q 2F = Tr (Rco − Q)T (Rco − Q) = 3 + Tr QT Q − 2Tr RcT
o Q ,



which is minimum when Tr RcT
o Q is maximum. Consider the singular value
decomposition
Q = U ΣV T
where Σ = diag{σ1 , σ2 , σ3 }, σi > 0. The following equality holds
3



 
T
= Tr V T RcT
Tr RcT
zi,i σi
o U ΣV
o UΣ =
i=1

where zi,i , i = 1, 2, 3 are the diagonal elements of the orthogonal matrix
V T RcT
o U , whose absolute values are lower than or equal to 1. Thus
3
 

T
≤
Tr RcT
U
ΣV
σi
o
i=1



and the equality holds when zi,i = 1. Hence the maximum of Tr RcT
o Q is
achieved by choosing Rc as in (10.12), which ensures that V T RcT
o U = I.

10 Visual servoing

113
time

variables
initialization

es

s

Jacobian
inverse

K_s

K Ts
z−1

inv(J_as)vs

xh

s(xh)
plot
sh

Fig. S10.1. Simulink block diagram of the pose estimation algorithm based on the
inverse of image Jacobian. Case of two feature points.
image plane

error norm
0.3

0.4

0.2
0.3
0.1
0.2

0
−0.1

0.1
−0.2
0
0

0.01

0.02
[s]

0.03

0.04

−0.2 −0.1

0

0.1 0.2

Fig. S10.2. Time history of the norm of the estimation error and corresponding
paths of the feature points projections on image plane

Solution to Problem 10.4
In view of the results of Example 10.3, the Jacobian J As , based on the feature
vector of two points, is a square (4 × 4) matrix. Hence, the pose estimation
algorithm based on the inverse of image Jacobian can be adopted.
According to (10.40) and (10.41), the following equality holds
%cc,o = Γ (occ,o )L−1
%̇ c,o = v
x
s K s es ,
where Ls is the (4 × 4) interaction matrix of points P1 and P2 , obtained from
the (4 × 6) interaction matrix of a set of two points by removing the fourth
and fifth column. Also, Γ (occ,o ) is the (4 × 4) matrix


Γ (occ,o )

−I
=
0T


s3 (occ,o )
,
−1

114

10 Visual servoing
pos

orien

0.8

0
z
−0.5

0.4

[rad]

[m]

0.6

0.2

y

0

x

−0.2
0

0.01

0.02
[s]

0.03

−1

0.04

−1.5
0

0.01

0.02
[s]

0.03

0.04

Fig. S10.3. Time history of camera pose estimate
time
variables
initialization

es

s

K_s

Jacobian
inverse
inv(J_asl)vs

K Ts
z−1

xh

sl(xh)
plot
sh

Fig. S10.4. Simulink block diagram of the pose estimation algorithm based on the
inverse of image Jacobian. Case of two feature points.

being s3 (·) is the third column of matrix S(·).
Matrix gain K s has been chosen as K s = 160I 4 . The initial estimate has
been set to x̂c,o (0) = [ 0 0 0.5 0 ]. The resulting Simulink block diagram
is shown in Fig. S10.1. The Euler numerical integration method has been
adopted, with sampling time of 1 ms.
The files with the solution can be found in Folder 10 4.
The results in Fig. S10.2 show that the norm of the estimation error of
the feature parameters es tends to zero asymptotically with convergence of
exponential type; moreover, due to the fact that matrix gain K s was chosen
diagonal with equal elements, the paths of the projections of the feature points
on the image plane (between the initial positions marked with crosses and the
final positions marked with circles) are line segments.
% c,o for
The corresponding time histories of the components of vector x
position and orientation are reported in Fig. S10.3. It can be verified that, with
the chosen value of K s , the algorithm converges in about 0.03 s, corresponding

10 Visual servoing
error norm

115

image plane
0.3

1.2

0.2

1

0.1

0.8

0

0.6

−0.1

0.4

−0.2

0.2
0
0

0.01

0.02
[s]

0.03

0.04

−0.2 −0.1

0

0.1 0.2

Fig. S10.5. Time history of the norm of the estimation error and corresponding
paths of the feature points projections on image plane
pos

orien

0.8

0
z
−0.5

0.4

[rad]

[m]

0.6

0.2

y

0

x

−0.2
0

0.01

0.02
[s]

0.03

−1

0.04

−1.5
0

0.01

0.02
[s]

0.03

0.04

Fig. S10.6. Time history of camera pose estimate

to 30 iterations. The final value, namely, the estimated relative pose of the
T
object with respect to the camera, is x̂c,o  [ −0.1 0.1 0.6 −π/3 ] .
Solution to Problem 10.5
The solution is similar to that of Problem 10.4, but the feature parameters
are defined according to (10.28), and the interaction matrix of a line segment
is used.
Matrix gain K s has been chosen as K s = 160I 4 . The initial estimate has
been set to x̂c,o = [ 0 0 0.5 0 ]. The feature vector of the line segment
corresponding to that of Problem 10.4 is
T

s = [ −0.1250 0.0945 0.1668 −1.0470 ] .
The resulting Simulink block diagram is shown in Fig. S10.4. The Euler
numerical integration method has been adopted, with sampling time of 1 ms.
The files with the solution can be found in Folder 10 5.
The results in Figs. S10.5 and S10.6 are quite similar to those of Problem 10.4. Notice that, however, the paths of the projections of the feature
points on the image plane are not perfectly linear, due to the different choice

116

10 Visual servoing

of feature vector. This is reflected also by a different time history of the z
component of the camera position during the transient. Obviously, the same
final value is achieved for the estimated relative pose of the object with respect
T
to the camera, namely x̂c,o  [ −0.1 0.1 0.6 −π/3 ] .
Solution to Problem 10.6
In view of the equalities pi = p̄i + p̄ and pi = p̄i + p̄ , function (10.55) can
be rewritten as
g(o) =

n


pi − o − Rpi

2

= n p̄ − o − Rp̄

2

+

i=1

n


p̄i − Rp̄i

2

i=1

+2

n


(p̄ − o − Rp̄ ) (p̄i − Rp̄i )
T

i=1

= n p̄ − o − Rp̄

2

+

n


p̄i − Rp̄i 2 ,

i=1

(n

(n


considering that
i=1 p̄i =
i=1 p̄i = 0. Hence, with the choice of o as
in (10.56), function (10.55) is minimum. The same result can be obtained
computing the value of o which satisfies the necessary condition (∂g/∂o)T =
0.

Solution to Problem 10.7
Function (10.57) can be rewritten as
n


p̄i −

i=1

Rp̄i 2

=

n


p̄i

2

−2

i=1

n

i=1

p̄Ti RT p̄i

+

n


Rp̄i

2

i=1

(n

which is minimum when the quantity i=1 p̄Ti RT p̄i is maximum. This quantity, in view of the property aT b = Tr(ba), can be rewritten as
n


p̄Ti RT p̄i =

i=1

n




Tr RT p̄i p̄Ti = Tr(RT K),

i=1

(n

with K = i=1 p̄i p̄i T . Hence, the matrix R which minimizes function (10.57)
is the matrix which maximizes the trace of RT K.
Solution to Problem 10.8
The control scheme in Fig. 10.14 is adopted, with the same matrix gains used
in control scheme A of Sect. 10.9, namely,
K P = diag{500, 500, 10, 10}

K D = diag{500, 500, 10, 10}.

10 Visual servoing

117
time

variables
initialization

J_Aq(q)
Jacobian
transpose

K_d

SCARA arm

dq

tr(J_Aq(q))
inv(B(q))(tau−tau’)

q

sinusoidal
functions
cs(q)

cs x_co

x_do
xtilde

K_p
gravity
g(q)

estimate

features

s

plot

Fig. S10.7. Simulink block diagram of the position-based visual servoing scheme
of PD type with gravity compensation

The initial pose of the camera frame is xc (0) = [ 1 1 0.5 π/4 ]T and the
desired pose of the object frame with respect to the camera frame has been set
to xd,o = [ −0.1 0.1 0.6 −π/3 ]T . The various terms of the dynamic model
of the SCARA manipulator are computed as in the solution to Problem 7.3.
The pose estimation algorithm is based on the measurements of the features of the line segment P1 P2 , as in the solution to Problem 10.5, using the
same matrix gain, namely, K s = 160I 4 . The initial pose estimate is chosen
as x̂c,o (0) = xd,o .
The resulting Simulink block diagram is shown in Fig. S10.7. The arm
is simulated as a continuous-time system using a variable-step integration
method with a maximum step size of 1 ms. All the blocks of the controller are
simulated as discrete-time subsystems with the given sampling time of 4 ms,
while the sampling time of the estimation algorithm has been set to 1 ms.
The files with the solution can be found in Folder 10 8.
The results of Figs. S10.8 and S10.9 (right) are very similar to those of
Figs. 10.18 and 10.19 (right), as expected. In fact, the two control schemes differ only for the estimation algorithms which, in both cases, have fast dynamics
with negligible effects on the control loop dynamics.
Notice that, in Fig. S10.9 (left), the time history of the feature parameters
of the line segment P1 P2 used by the estimation algorithm in Fig. S10.7 is
reported.

118

10 Visual servoing
y−pos
1.4

1.3

1.3
[m]

[m]

x−pos
1.4

1.2
1.1

1.2
1.1

1
0

2

4
[s]

6

1
0

8

2

4
[s]

z−pos

8

6

8

alpha
2

0.5
0.4

1.5
[rad]

[m]

6

0.3

1

0.2
0.1
0

2

4
[s]

6

0.5
0

8

2

4
[s]

Fig. S10.8. Time history of camera frame position and orientation with positionbased visual servoing scheme of PD type with gravity compensation
param

image plane
0.3

0.2

0.2

0
0.1

−0.2
−0.4

0

−0.6

−0.1

−0.8
−0.2

−1
0

2

4
[s]

6

8

−0.2 −0.1

0

0.1 0.2

Fig. S10.9. Time history of feature parameters and corresponding path of feature
points projections on image plane with position-based visual servoing scheme of PD
type with gravity compensation

Solution to Problem 10.9
The control scheme in Fig. 10.17 is adopted, with the same matrix gain used
in control scheme B of Sect. 10.9, namely, K = I 4 .
The initial pose of the camera frame is xc (0) = [ 1 1 0.5 π/4 ]T , and
the desired pose of the object frame with respect to the camera frame has
been set to xd,o = [ −0.1 0.1 0.6 −π/3 ]T .

10 Visual servoing

119
time

variables
initialization

Jacobian
inverse

x_do
xtilde

K
inv(J_Aq(q))

controlled
manipulator
q
1
s

estimate

sinusoidal
functions
cs(q)

cs x_co

features

s

plot

Fig. S10.10. Simulink block diagram of the resolved-velocity position-based visual
servoing scheme

The pose estimation algorithm is based on the measurements of the features of the line segment P1 P2 , as in the solution to Problem 10.5, using the
same matrix gain, namely, K s = 160I 4 . The initial pose estimate is chosen
as x̂c,o (0) = xd,o .
The resulting Simulink block diagram is shown in Fig. S10.10. Notice
that the dynamics of the controlled robot manipulator is approximated by a
simple integrator. All the blocks of the controller are simulated as discretetime subsystems with the given sampling time of 4 ms, while the sampling
time of the estimation algorithm has been set to 1 ms.
The files with the solution can be found in Folder 10 9.
The results of Figs. S10.11 and S10.12 (right) are very similar to those
of Figs 10.20 and 10.21 (right), as expected (see also the solution to Problem 10.8).
Solution to Problem 10.10
The control scheme in Fig. 10.16 is adopted with the matrix gains
K P s = diag{300, 300, 150, 50}

K Ds = diag{330, 330, 165, 40},

which guarantee a closed-loop dynamics similar to that of control scheme C in
Sect. 10.9. Notice that, in this case, the dynamics of the closed-loop depends
on the type of feature parameters extracted from visual measurements.
The various terms of the dynamic model of the SCARA manipulator are
computed as in the solution to Problem 7.3.
The initial pose of the camera frame is xc (0) = [ 1 1 0.5 π/4 ]T , and
the desired value of the feature parameters of the line segment P1 P2 has

120

10 Visual servoing
y−pos
1.4

1.3

1.3
[m]

[m]

x−pos
1.4

1.2
1.1

1.2
1.1

1
0

2

4
[s]

6

1
0

8

2

4
[s]

z−pos

8

6

8

alpha
2

0.5
0.4

1.5
[rad]

[m]

6

0.3

1

0.2
0.1
0

2

4
[s]

6

0.5
0

8

2

4
[s]

Fig. S10.11. Time history of camera frame position and orientation with resolvedvelocity position-based visual servoing
param

image plane
0.3

0.2

0.2

0
0.1

−0.2
−0.4

0

−0.6

−0.1

−0.8
−0.2

−1
0

2

4
[s]

6

8

−0.2 −0.1

0

0.1 0.2

Fig. S10.12. Time history of feature parameters and corresponding path of feature points projections on image plane with resolved-velocity position-based visual
servoing

been set to sd = [ −0.1250 0.0945 0.1667 −1.0472 ]T , corresponding to
the desired pose xd,o .
% s = Ls (s, zd ),
Matrix Ls (s, z c ) has been approximated with matrix L
where zd is the third component of vector xd,o .
The resulting Simulink block diagram is shown in Fig. S10.13. The arm
is simulated as a continuous-time system using a variable-step integration
method with a maximum step size of 1 ms. All the blocks of the controller are

10 Visual servoing

121
time

variables
initialization
J_L(s,zc,q)
Jacobian
transpose

K_d

SCARA arm
tr(J_L(s,zc,q))
inv(B(q))(tau−tau’)

x_do

dq

sinusoidal
functions

q

cs(q)

cs x_co

features
K_p
gravity
g(q)

features

s

plot

Fig. S10.13. Simulink block diagram of the image-based visual servoing scheme
of PD type with gravity compensation

simulated as discrete-time subsystems with the given sampling time of 4 ms,
while the sampling time of the estimation algorithm has been set to 1 ms.
The files with the solution can be found in Folder 10 10.
The results are shown in Figs. S10.14 and S10.15. With respect to the
results of Figs 10.22 and 10.23, it can be observed that the phenomenon of
camera retreat is mitigated.
Solution to Problem 10.11
The control scheme in Fig. 10.17 is adopted with the same matrix gain used
in control scheme C of Sect. 10.9, namely, K s = I 4 .
The initial pose of the camera frame is xc (0) = [ 1 1 0.5 π/4 ]T , and
the desired value of the feature parameters of the line segment P1 P2 has
been set to sd = [ −0.1250 0.0945 0.1667 −1.0472 ]T , corresponding to
the desired pose xd,o .
% s = Ls (s, zd ),
Matrix Ls (s, z c ) has been approximated with matrix L
where zd is the third component of vector xd,o .
The resulting Simulink block diagram is shown in Fig. S10.16. Notice
that the dynamics of the controlled robot manipulator is approximated by a
simple integrator. All the blocks of the controller are simulated as discretetime subsystems with the given sampling time of 4 ms, while the sampling
time of the estimation algorithm has been set to 1 ms.
The files with the solution can be found in Folder 10 11.

122

10 Visual servoing
y−pos
1.4

1.3

1.3
[m]

[m]

x−pos
1.4

1.2
1.1

1.2
1.1

1
0

2

4
[s]

6

1
0

8

2

4
[s]

z−pos

8

6

8

alpha
2

0.5
0.4

1.5
[rad]

[m]

6

0.3

1

0.2
0.1
0

2

4
[s]

6

0.5
0

8

2

4
[s]

Fig. S10.14. Time history of camera frame position and orientation with imagebased visual servoing scheme of PD type with gravity compensation
param

image plane
0.3

0.2

0.2

0
0.1

−0.2
−0.4

0

−0.6

−0.1

−0.8
−0.2

−1
0

2

4
[s]

6

8

−0.2 −0.1

0

0.1 0.2

Fig. S10.15. Time history of feature parameters and corresponding path of feature
points projections on image plane with image-based visual servoing scheme of PD
type with gravity compensation

The results of Figs. S10.17 and S10.18 (right), with the given choice of
the control gains, are quite similar to those of Figs 10.22 and 10.23 (right).
However, it can be noticed the absence of the phenomenon of camera retreat.
Solution to Problem 10.12
The distance dc can be computed as
dc = ncT r cc = zc ncT )
sp ,

10 Visual servoing

123
time

variables
initialization

x_do

Jacobian
inverse

features
K

controlled
manipulator

sinusoidal
functions

1
s

cs(q)

inv(J_L(s,zc,q))

q

cs x_co

features

s

plot

Fig. S10.16. Simulink block diagram of the resolved-velocity image-based visual
servoing scheme

and thus
zc =

dc
.
cT
n )
sp

Analogously, the following equality can be derived
zd =

dd
.
ndT )
sp,d

Hence, expression (10.94) follows directly.
In order to derive (10.95), consider that the distance dc can be computed
also as
dc = dd + ncT occ,d ,
and thus

occ,d
dc
= 1 + ncT
.
dd
dd

Moreover, the following equality holds





1
1
det(H) = det Rcd + occ,d ndT = det
I + occ,d ncT Rcd
dd
dd


1
= det I + occ,d ncT .
dd
By direct computation, it is possible to verify the identity


occ,d
1
det I + occ,d ncT = 1 + ncT
,
dd
dd

124

10 Visual servoing
y−pos
1.4

1.3

1.3
[m]

[m]

x−pos
1.4

1.2
1.1

1.2
1.1

1
0

2

4
[s]

6

1
0

8

2

4
[s]

z−pos

8

6

8

alpha
2

0.5
0.4

1.5
[rad]

[m]

6

0.3

1

0.2
0.1
0

2

4
[s]

6

0.5
0

8

2

4
[s]

Fig. S10.17. Time history of camera frame position and orientation with resolvedvelocity image-based visual servoing
param

image plane
0.3

0.2

0.2

0
0.1

−0.2
−0.4

0

−0.6

−0.1

−0.8
−0.2

−1
0

2

4
[s]

6

8

−0.2 −0.1

0

0.1 0.2

Fig. S10.18. Time history of feature parameters and corresponding path of feature
points projections on image plane with resolved-velocity image-based visual servoing

and thus

dc
= det(H).
dd

10 Visual servoing

Solution to Problem 10.13
Notice that
⎡
∂ep (r cc )
∂rcc

⎢
⎢
zc ⎢
⎢
=
z d ρz ⎢
⎢
⎣
⎡

0
S(r cc ) = zc ⎣ 1
−Y

1
zc

xc
zc2
yc
1
0
−
zc
zc2
1
0
0
−
zc
⎤
−1 Y
0 −X ⎦ .
X
0

−

0

⎤
⎡
⎤
⎥
−1 0
X
⎥
⎥
⎥
⎥= 1 ⎢
⎥ zd ρz ⎣ 0 −1 Y ⎦
⎥
0
0 −1
⎦

Hence, in view of (10.26) and (10.96), the following equalities hold
⎡
⎤
−1 0
X
c
∂ep (r c )
1 ⎢
⎥
Jp =
=
⎣ 0 −1 Y ⎦
c
∂rc
z d ρz
0
0 −1
⎡
⎤
XY
−1 − X 2 Y
c
∂ep (r c )
⎢
⎥
S(r cc ) = ⎣ 1 + Y 2
−XY
−X ⎦ .
Jo = −
∂r cc
−Y
X
0

125

11
Mobile Robots

Solution to Problem 11.1
Denote by (x, y) the Cartesian coordinates of a representative point on the
tricycle (e.g., the midpoint of the rear wheel axle), by φ the steering angle
of the front wheel with respect to the vehicle, and by θ0 the orientation of
the vehicle with respect to the x axis. Once the configuration of the tricycle
and of the first i − 1 trailers are given, the configuration of the i-th trailer
is completely described by the its orientation θi with respect to the x axis.
The configuration vector for the complete vehicle is therefore obtained as q =
[ x y φ θ0 θ1 . . . θN ]T , and takes values in IR2 × SO(2) × . . . × SO(2)
(with SO(2) appearing N + 2 times). Another possibility is to replace the
absolute angle θi with the relative angle θi − θi−1 to describe the orientation
of each trailer.
Solution to Problem 11.2
Add the kinematic constraints side-by-side to obtain
3  q̇3 + r(q̇4 + q̇5 + q̇6 ) = 0
that can be integrated as
r
(q4 + q5 + q6 ) + c,
3
where c is an integration constant. The kinematic constraints are then partially integrable. In particular, the orientation q3 of the robot is a linear function of the wheel rotation angles q4 , q5 , q6 .
q3 = −

Solution to Problem 11.3
Consider a single Pfaffian constraint
aT (q)q̇ =

n

j=1

aj (q)q̇j = 0.

128

11 Mobile Robots

The corresponding kinematic model is
q̇ =

n−1


g j (q)uj ,

j=1

where {g 1 (q), . . . , g n−1 (q)} is a basis of N (aT (q)). Without loss of generality,
assume that a1 (q) = 0, and consider the following choice of input vector fields
⎡
⎡
⎡
⎤
⎤
⎤
−γ(q)a2 (q)
−γ(q)a3 (q)
−γ(q)an (q)
⎢ γ(q)a1 (q) ⎥
⎢
⎢
⎥
⎥
0
0
⎢
⎢
⎢
⎥
⎥
⎥
⎢
⎢ γ(q)a1 (q) ⎥
⎢
⎥
⎥
0
0
⎢
⎢
⎢
⎥
⎥
⎥
⎢
⎢
⎢
⎥
⎥
⎥
0
0
0
g1 = ⎢
⎥
⎥ g2 = ⎢
⎥ . . . g n−1 = ⎢
⎢
⎢
⎢
⎥
⎥
⎥
..
..
..
⎢
⎢
⎢
⎥
⎥
⎥
.
.
.
⎢
⎢
⎢
⎥
⎥
⎥
⎣
⎣
⎣
⎦
⎦
⎦
0
0
0
γ(q)a1 (q)
0
0
where γ(q) = 0. The distribution Δ = span{g 1 , . . . , g n−1 } is involutive if any
Lie bracket [g i , g j ] can be written as a linear combination of g 1 , . . . , g n−1 .
For example, consider [g 1 , g 2 ]. A simple computation gives


⎡
⎤
∂(γa3 ) ∂(γa2 )
∂(γa3 )
∂(γa2 )
−
γa1 ⎥
⎢ ∂q1 γa3 − ∂q1 γa2 +
∂q2
∂q3
⎢
⎥
⎢
⎥
∂(γa1 )
∂(γa1 )
⎢
⎥
γa1 −
γa3
⎢
⎥
∂q3
∂q1
⎢
⎥
⎢
⎥
∂(γa1 )
∂(γa1 )
[g 1 , g 2 ] = ⎢
⎥
γa2 −
γa1
⎢
⎥
∂q1
∂q2
⎢
⎥
⎢
⎥
0
⎢
⎥
⎢
⎥
..
⎣
⎦
.
0
Using the integrability condition expressed by (11.9), one easily verifies that
[g 1 , g 2 ] =

∂(γa3 )
∂(γa2 )
∂(γa1 ) a3 g 1 + a2 g 2
g1 −
g2 +
,
∂q1
∂q1
∂q1
a1

i.e., [g 1 , g 2 ] is a linear combination of g 1 , g 2 .
A similar construction can be repeated for any Lie bracket [g i , g j ]; hence,
the distribution Δ is involutive under the integrability condition (11.9).
Solution to Problem 11.4
Consider a set of k Pfaffian constraints
AT q̇ = 0

11 Mobile Robots

129

with a constant constraint matrix AT . Then, the associated kinematic model
q̇ =

m


g j uj = G u

m=n−k

(S11.1)

j=1

has constant input vector fields g 1 , . . . , g m . Its accessibility distribution ΔA
is clearly involutive, because [g i , g j ] = 0 for any i, j. The controllability
condition (11.11) is hence violated, and in particular
dim ΔA (q) = m.
Therefore, the above set of Pfaffian constraints is completely integrable, i.e.,
holonomic. This obvious conclusion could have also been reached by noting
that (S11.1) is in fact a driftless linear system, and using directly the controllability rank condition (D.15).
Solution to Problem 11.5
Integration of the kinematic model (11.13) under the given input sequence
starting from the initial configuration q 0 = [ x0 y0 θ0 ]T provides
x(4ε) = x0 + ε cos θ0 − ε cos (θ0 + ε)
y(4ε) = y0 + ε sin θ0 − ε sin (θ0 + ε)
θ(4ε) = θ0 .
The displacement is therefore
⎡

⎤
ε cos θ0 − ε cos (θ0 + ε)
q(4ε) − q 0 = ⎣ ε sin θ0 − ε sin (θ0 + ε) ⎦ = ε2 t,
0

with

⎡

⎤
cos θ0 − cos (θ0 + ε)
⎢
⎥
ε
⎢
⎥
⎢
⎥
sin
θ
−
sin
(θ
+
ε)
t=⎢
0
0
⎥
⎣
⎦
ε
0

— compare with the expression of the displacement for a generic two-input
system as given in Appendix D.
Finally, one obtains
*
⎤
⎡
*
⎤
⎡
− dcos θ *
dθ θ=θ0 ⎥
sin θ0
⎢
*
⎥
⎢
lim t = ⎢ − dsin θ **
⎥ = ⎣ −cos θ0 ⎦ ,
ε→0
⎣
dθ θ=θ0 ⎦
0
0

130

11 Mobile Robots

that coincides with the value at q 0 of the Lie Bracket of the two input vector
fields (see Sect. 11.2.1).
Solution to Problem 11.6
With reference to Figs. 1.13 and 11.3, denote by pR = [ xR yR ]T , pL =
[ xL yL ]T and pM = [ xM yM ]T respectively the position vector of the
right wheel centre, of the left wheel centre and of the midpoint between the
two. Since
ẋi = r ωi cos θ
ẏi = r ωi sin θ,
where i = R, L, one obtains
ωR + ωL
ẋR + ẋL
= r cos θ
2
2
ωR + ωL
ẏR + ẏL
= r sin θ
=
2
2

ẋM =
ẏM
and therefore
v=


2 = r (ωR + ωL ) .
ẋ2M + ẏM
2

The expression of the angular velocity of the robot can be obtained by
applying the general velocity composition rule (B.4) and making use of the
skew-symmetric operator S(·):
ṗR = ṗL + S(ω)(pR − pL ),
where



0 −ω
S(ω) =
ω 0

(S11.2)



because the motion of the robot is planar. Using the expressions of ṗR , ṗL
and the fact that


d sin θ
pR = pL +
,
−d cos θ
Equation (S11.2) becomes
 
 



r ωL cos θ
0 −ω
d sin θ
r ωR cos θ
=
+
.
ω 0
−d cos θ
r ωR sin θ
r ωL sin θ
Squaring and adding side-by-side these two equations leads to
ω2 =

r2 (ωR − ωL )2
.
d2

11 Mobile Robots

131

Using again one of the two equations, it can be concluded that the only
solution is
r(ωR − ωL )
.
ω=
d
Solution to Problem 11.7
With reference to Fig. 11.4, denote by (xC , yC ) the Cartesian coordinates of
the instantaneous centre of rotation C in the world reference frame, and by

) its coordinates in a moving frame having the origin at the centre of
(xC , yC
the rear wheel and the x axis aligned with the bicycle body. Simple geometry
gives

  
0
xc
=
yc
/tan φ
and thus



xc
yc


=

 
  

x
x
x −  sin θ/tan φ
+ R(θ) c =
,
yc
y
y +  cos θ/tan φ


where
R(θ) =

cos θ −sin θ
sin θ cos θ



is the (planar) rotation matrix of the moving frame with respect to the world
frame.
Since the velocity vector of a generic point P on the robot body is tangent
to the circle centred at C and passing through P , the modulus of the angular
velocity of the bicycle is obtained as
ωbody = vP /RP ,

(S11.3)

where vP is the modulus of the velocity of P , and RP is its instantaneous
radius of rotation (i.e., its radius of curvature):
'
RP = (xP − xC )2 + (yP − yC )2 .
The resulting ωbody is obviously the same for any choice of P . In particular,
by choosing P as the centre of the rear wheel, one has RP = /tan φ, and thus
ωbody = θ̇ = v tan φ/,
consistently with the evolution of θ predicted by the kinematic model (11.19).
Finally, plugging this expression of ω in (S11.3) yields
vP = Rp v tan φ/.

132

11 Mobile Robots

Solution to Problem 11.8
With the configuration vector q = [ x y φ θ0 θ1 . . . θN ]T defined in the
solution to Problem 11.1, the N + 2 kinematic constraints are
ẋf sin (θ0 + φ) − ẏf cos (θ0 + φ) = 0
ẋ sin θ0 − ẏ cos θ0 = 0
ẋi sin θi − ẏi cos θi = 0

i = 1, . . . , N ,

where (xf , yf ) and (xi , yi ) are the Cartesian coordinates of the centre of the
tricycle front wheel and of the i-th trailer wheel axle midpoint, respectively
(compare with (11.15), (11.16)). Denote by  the distance between the front
wheel and the rear axle of the tricycle, and by i the hinge-to-hinge length of
the i-th trailer. It is
xf = x +  cos θ0
yf = y +  sin θ0
and
xi = x −

i


j cos θj

j=1

yi = y −

i


j sin θj ,

j=1

so that the kinematic constraints become
ẋ sin (θ0 + φ) − ẏ cos (θ0 + φ) − θ̇0  cos φ = 0
ẋ sin θ0 − ẏ cos θ0 = 0
ẋ sin θi − ẏ cos θi +

i


θ̇j j cos (θi − θj ) = 0

i = 1, . . . , N .

j=1

The null space of the constraint matrix is spanned by the two columns of
⎡
⎤
cos θ0
0
⎢
sin θ0
0⎥
⎢
⎥
⎢
0
1⎥
⎢
⎥
1
⎢
tan φ
0⎥
⎢
⎥
⎢
− 11 sin (θ1 − θ0 )
0⎥
⎢
⎥
⎢
⎥
0⎥
− 12 cos (θ1 − θ0 ) sin (θ2 − θ1 )
⎢
G(q) = ⎢
⎥ = [ g 1 (q) g 2 (q) ]
..
.. ⎥
⎢
⎢
.
.⎥


⎢
⎥
⎢ − 1 +i−1 cos (θ − θ ) sin (θ − θ ) 0 ⎥
j
j−1
i
i−1
⎢
⎥
j=1
i
⎢
⎥
⎢
..
.. ⎥
⎢
.
.⎥
+

⎣
⎦
N
−1
− 1N
j=1 cos (θj − θj−1 ) sin (θN − θN −1 ) 0

11 Mobile Robots

133

(compare with (11.19)). The kinematic control system is then
q̇ = g 1 (q) v + g 2 (q) ω,
where v and ω are respectively the driving velocity of the rear wheels and the
steering velocity of the tricycle.
Solution to Problem 11.9
According to (11.14), the velocity inputs of the equivalent unicycle model are
given by
r (ωR + ωL )
2
r (ωR − ωL )
ω=
,
d
v=

where r is the wheel radius and d is the distance between the wheel centres.
Solving for ωR in the first and replacing the obtained expression in the second
yields
2v − d ω
2r
2v + d ω
.
ωR =
2r
ωL =

The resulting constraints on v, ω are then
*
*
* 2v(t) − d ω(t) *
* ≤ ωRL
*
*
*
2r
*
*
* 2v(t) + d ω(t) *
* ≤ ωRL ,
*
*
*
2r
that correspond to a rhombus-shaped admissible region in the v, ω plane.
In particular, the maximum achievable values for these velocities are easily
computed as the intercepts of the sides of the rhombus with the v, ω axes,
i.e., ±r ωRL for the driving velocity and ±2 r ωRL /d for the steering velocity.
Solution to Problem 11.10
The geometric version of the (2,4) chained form is
z1 = v)1
z2 = v)2
z3 = z2 )
v1
z4 = z3 )
v1 .

134

11 Mobile Robots

Choose the geometric inputs v)1 , v)2 in the parameterized form (11.49), with
Δ = z1,f − z1,i and s ∈ [si , sf ] = [0, |Δ|]. Integrating in a recursive fashion the
second, third and fourth equations and setting z2 (sf ) = z2,f , z3 (sf ) = z3,f
and z4 (sf ) = z4,f leads to a linear system in the form (11.50) where
⎡
⎤
|Δ|3
Δ2
⎡
⎤
|Δ|
2
3
z2,f − z2,i
⎢
⎥
2
3
4 ⎥
⎢
Δ
⎦.
D = ⎢ sgn(Δ) Δ
z3,f − z3,i − z2,i Δ
⎥ d=⎣
sgn(Δ) Δ
2
6
12 ⎦
⎣
z4,f − z4,i − z3,i Δ − z2,i |Δ|
|Δ|3
|Δ|5
Δ4
6
24
60
Solution to Problem 11.11
It is sufficient to modify (11.48) as follows:
v)1 = Δ = z1,f − z1,i ,
with the second input (11.49) unchanged. With this choice, z1 will reach its
final desired value exactly at sf = 1. The coefficients c0 , . . . , cn−2 in (11.49)
are computed by solving a linear system of equations that is still in the general
form (11.50). For example, in the case of the (2, 3) chained form, one obtains




1
1/2
z2,f − z2,i
.
D=
d=
z3,f − z3,i − z2,i Δ
Δ/2 Δ/6
Solution to Problem 11.12
As shown in the solution to Problem 11.11, the path planning scheme based
on parameterized inputs (scheme A in the following) must be modified by
letting
v)1 = Δ = z1,f − z1,i
to obtain sf = 1 and allow a comparison with the scheme that uses interpolating polynomials of different degree (scheme B in the following). With scheme
A one has then
z1 (s) = z1,i + (z1,f − z1,i )s
that coincides with the expression of z1 (s) generated by scheme B. Moreover,
being
v)2 = c0 + c1 s
for a (2,3) chained form, it is
z2 (s) = z2,i + c0 s + c1 s2 /2
and

,

s

(c0 σ + c1 σ 2 /2)dσ = z3,i + Δ (c0 s2 /2 + c1 s3 /6).

z3 (s) = z3,i + Δ
0

11 Mobile Robots

135

tilde v(s)
[m]

4

[m]

1

2
0
0

0.5

0.2

0.4
0.6
tilde omega(s)

0.8

1

0.8

1

[rad]

10

0
0

0.5

1
[m]

1.5

2

5
0
0

0.2

0.4

0.6

Fig. S11.1. Path planning via Cartesian polynomials; left: Cartesian path of the
unicycle for the required parking manoeuvre, right: geometric inputs along the path

Hence, z3 (s) with scheme A is a cubic polynomial in s, as is with scheme B.
However, there is a unique cubic polynomial that meets the two boundary
conditions on z3 and the two boundary conditions on z2
z3 (0)
= z2i
z1 (0)

z3 (1)
= z2f .
z1 (1)

Hence, the expressions of z3 (s) generated by the two schemes coincide. Since
z1 and z3 are flat outputs for a (2,3) chained form (see the end of Sect. 11.5.2),
a unique z2 (s) is associated to z1 (s) and z3 (s). One can then conclude that
the paths in the z space (and the associated geometric inputs) generated by
the two schemes are exactly the same.
Solution to Problem 11.13
The files with the solution can be found in Folder 11 13. For the required
manoeuvre, the coefficients of the interpolating polynomials
x(s) = s3 xf − (s − 1)3 xi + αx s2 (s − 1) + βx s(s − 1)2
y(s) = s3 yf − (s − 1)3 yi + αy s2 (s − 1) + βy s(s − 1)2
are found to be
αx = −6

βx = 1

αy = −2

βy = 0

where ki = kf = 1. The corresponding unicycle path is shown in Fig. S11.1.
Using the flatness property of the unicycle, expressed by (11.45), (11.46)
and (11.47), File s11 13.m also generates the geometric inputs )
v (s), ω
) (s)
along the path, as shown in Fig. S11.1.
There are several ways to find a feasible timing law s = s(t) over the
planned path. For example, one may simply let s = t, so that v(t) and ω(t)

136

11 Mobile Robots

coincide with v)(s) and ω
) (s), respectively. However, both the inputs violate the
given bounds; in particular, the maximum value is attained by ω at 10 rad/sec.
A uniform scaling procedure with T = 10 can then be used to slow down the
trajectory and recover the feasibility of the inputs (see (11.54), (11.55)).
Solution to Problem 11.14
The (2,3) chained form is
ż1 = v1
ż2 = v2
ż3 = z2 v1 .
Assume that a desired state trajectory (z1d (t), z2d (t), z3d (t)) is given. For the
desired trajectory to be feasible, it must satisfy the equations
ż1d = v1d
ż2d = v2d
ż3d = z2d v1d
for some choice of the reference inputs (v1d (t), v2d (t)). Defining the state errors
ei = zid − zi , for i = 1, 2, 3, and the input errors ui = vid − vi , for i = 1, 2,
one has the following error dynamics
ė1 = u1
ė2 = u2
ė3 = z2d v1d − z2 v1 = v1d e2 + z2d u1 − e2 u1 .
Linearization around the reference trajectory yields the time-varying system
⎡ ⎤ ⎡
⎤⎡ ⎤ ⎡
⎤
ė1
e1
0 0 0
1 0  
u
ė = ⎣ ė2 ⎦ = ⎣ 0 0 0 ⎦ ⎣ e2 ⎦ + ⎣ 0 1 ⎦ 1 = A(t)e + B(t)u.
u2
ė3
e3
0 v1d 0
z2d 0
With the linear time-varying feedback
u1 = −k1 e1
u2 = −k2 e2 −

k3
e3
v1d

the closed-loop linearized error dynamics becomes
⎡
⎤
−k1
0
0
⎢
⎥
3 ⎦ e.
ė = ⎣ 0
−k2 − vk1d
−k1 z2d v1d 0

11 Mobile Robots

137

The characteristic polynomial of this system is constant:
p(λ) = (λ + k1 )(λ2 + k2 λ + k3 ).
The eigenvalues are thus constant, and have negative real part provided that
k1 , k2 and k3 are positive. As discussed in Sect. 11.6.1, this does not guarantee
stability in view of the time-varying nature of the linearized error dynamics,
except for the case when v1d and z2d are constant1 . In this case, the linearized
error system becomes time-invariant, and therefore it is asymptotically stable
with the above choice of gains. Hence, the original error system is also asymptotically stable at the origin, although this result is not guaranteed to hold
globally.
Solution to Problem 11.15
With reference to the kinematic model (11.19) and Fig. 11.4, consider the
following outputs:
y1 = x +  cos θ + b cos (θ + φ)
y2 = y +  sin θ + b sin (θ + φ)
with b = 0. They represent the Cartesian coordinates of a point P on the line
passing through the centre of the front wheel and oriented as the wheel itself,
located at a distance |b| from the contact point of the wheel with the ground.
The time derivatives of y1 and y2 are
  
 
cos θ − tan φ(sin θ + b sin (θ + φ)/) −b sin (θ + φ)
ẏ1
v
=
sin θ + tan φ(cos θ + b cos (θ + φ)/) b cos (θ + φ)
ω
ẏ2
 
v
= T (θ, φ)
.
ω
Matrix T (θ, φ) has determinant b/cos φ, and is therefore always invertible
under the assumption that b = 0 and |φ(t)| ≤ π/2. It is then sufficient to use
the following input transformation
 
 
u
v
= T −1 (θ, φ) 1
u2
ω
to put the equations of the bicycle in the input-output linearized form:
ẏ1 = u1
ẏ2 = u2
θ̇ = sin φ(cos (θ + φ)u1 + sin (θ + φ)u2 )/
φ̇ = −(cos (θ + φ)sin φ/ + sin (θ + φ)/b)u1
−(sin (θ + φ)sin φ/ − cos (θ + φ)/b)u2 .
1

One may verify that, if the (2,3) chained form represents a unicycle under the
transformation (11.23), (11.24), constant values of v1d and z2d correspond to
reference trajectories over which ωd is constant and vd increases linearly over
time (as in an Archimedean spiral).

138

11 Mobile Robots
variables
initialization

inputs

x

v
configuration

y

inputs
omega

Cartesian regulator

configuration

theta

unicycle
plot

Fig. S11.2. Simulink block diagram of the unicycle with the modified cartesian
regulator

At this point, a simple linear controller such as
u1 = ẏ1d + k1 (y1d − y1 )
u2 = ẏ2d + k2 (y2d − y2 ),
with k1 > 0, k2 > 0, guarantees exponential convergence to zero of the Cartesian tracking error, with decoupled dynamics on its two components. Note
that the orientation and the steering angle, whose evolutions are governed by
the third and fourth equation, are not controlled.
Solution to Problem 11.16
First of all, note that the Cartesian regulator (11.78), (11.79) may be equivalently written as
v = k1 nT ep
ω = k2 γ,

(S11.4)
(S11.5)

where n = [ cos θ sin θ ]T is the unit vector aligned with the sagittal axis,
ep = [ −x −y ]T is the Cartesian error and γ = Atan2(y, x) − θ + π is
the pointing error, i.e., the angle between n and ep (see also Fig. 11.18).
Expression (S11.5) shows that ω induces a rotation until n and ep align, i.e.,
until the unicycle points to the origin; as a consequence, the latter will always
be reached in forward motion.
Now, redefine the steering velocity (S11.5) as follows:
if nT ep > 0
k2 γ
ω=
(S11.6)
k2 (γ − sign(γ)π) if nT ep ≤ 0.
With this modification, the unicycle is forced to align with ep if the pointing
error is acute, and with −ep otherwise. In the second case, the origin will be
reached in backward motion.
Unicycle control with the modified position regulator (S11.4), (S11.6) is
implemented by the Simulink block diagram shown in Fig. S11.2. The files

11 Mobile Robots
driving velocity

2
[m/s]

0

1
[m]

139

-2
0

2

0
-0.5
-1
-1.5
0

2

0

[rad/s]

-1
-2
-2

-1

0
[m]

1

2

-1
4

6
[s]
steering velocity

4

6

8

10

8

10

[s]

Fig. S11.3. Regulation to the origin of the Cartesian position of the unicycle with
the modified controller (S11.4), (S11.6); left: Cartesian motion of the unicycle, right:
time evolution of the velocity inputs v and ω

with the solution can be found in Folder 11 16. The unicycle is simulated
as a continuous-time system using a variable-step integration method, with
a maximum step size of 0.01 s. The controller gains can be chosen in the
initialization file.
When the initial pointing error is an acute angle, the modified and the
original position regulators produce exactly the same trajectories. For example, this is the case of the simulation in Fig. 11.19 (left). However, in the case
of Fig. 11.19 (right), the initial pointing error is obtuse, and thus the modified position regulator leads the unicycle to the origin in backward motion, as
shown in Fig. S11.3.
Solution to Problem 11.17
Assume that the velocity inputs are constant within each sampling interval:
v(t) = vk

ω(t) = ωk

t ∈ [tk , tk+1 ].

Integration of the kinematic equations (11.13) of the unicycle readily provides
θ(t) = θk + ωk (t − tk )
and
,
x(t) = xk + vk

t−tk

cos (θk + ωk τ )dτ = xk +
0

vk
(sin (θk + ωk (t − tk )) − sin θk )
ωk

vk
= xk +
(sin θ(t) − sin θk )
ωk
, t−tk
vk
y(t) = yk + vk
sin (θk + ωk τ )dτ = yk −
(cos (θk + ωk (t − tk )) − cos θk )
ω
k
0
vk
= yk −
(cos θ(t) − cos θk ).
ωk

140

11 Mobile Robots
variables
initialization

inputs

x

v
polar configuration

inputs

y
omega

configuration

theta

posture regulator

unicycle

delta

x

x_k

v
omega

gamma

y

y_k

x
y

rho

theta

conversion to
polar coordinates

theta_k

theta

plot

odometric localization
with Runge−Kutta

Fig. S11.4. Simulink block diagram of the unicycle with the posture regulator and
Runge–Kutta odometric localization

Evaluating the above expressions at t = tk+1 = tk + Ts leads to the odometric prediction (11.85). Alternative proofs can be devised using geometric
arguments (the unicycle travels along an arc of circle during each sampling
interval) or resorting to a chained-form transformation.
Solution to Problem 11.18
Control of the unicycle with the posture regulator (11.81), (11.82) and Runge–
Kutta odometric localization (11.84) is implemented by the Simulink block
diagram shown in Fig. S11.4. The files with the solution can be found in
Folder 11 18. The unicycle is simulated as a continuous-time system using a
variable-step integration method, with a maximum step size of 0.01 s. The
controller gains and the duration Ts of the sampling interval for odometric
localization can be chosen in the initialization file.
The results obtained with Ts = 0.01 s and Ts = 0.1 s are shown in
Fig. S11.5 and Fig. S11.6, respectively. The initial configuration of the unicycle
is the same of Fig. 11.20 (right). Notice how for Ts = 0.1 s the low accuracy of
the odometric localization does not hinder the convergence of the unicycle to
the destination. However, a further increase of Ts will ultimately destabilize
the controlled unicycle.

11 Mobile Robots
driving velocity

2
[m/s]

2

1
[m]

141

0
−2
0

0
−1

2

4
6
[s]
steering velocity

8

10

8

10

[rad/s]

10

−2
−2

−1

0
[m]

1

0
−10
0

2

2

4

6
[s]

Fig. S11.5. Regulation to the origin of the posture of the unicycle with the controller (11.81), (11.82) and odometric localization (11.84) with Ts = 0.01 s; left:
Cartesian motion of the unicycle (continuous) and odometric estimate (dots), right:
time evolution of the velocity inputs v and ω

driving velocity

2
[m/s]

2

[m]

1

0
-2
0

0

[rad/s]

-1
-2
-2

-1

0
[m]

1

2

2

4
6
[s]
steering velocity

8

10

8

10

10
0
-10
0

2

4

6
[s]

Fig. S11.6. Regulation to the origin of the posture of the unicycle with the controller (11.81), (11.82) and odometric localization (11.84) with Ts = 0.1 s; left:
Cartesian motion of the unicycle (continuous) and odometric estimate (dots), right:
time evolution of the velocity inputs v and ω

12
Motion Planning

Solution to Problem 12.1
The configuration of the mobile manipulator is q = [ x y θ0 θ1 . . . θ6 ]T ,
where (x, y) are the Cartesian coordinates of the contact point of the wheel
with the ground (equivalently, of the wheel centre), θ0 is the orientation of the
unicycle with respect to the x axis, and θ1 , . . . , θ6 are the manipulator joint
variables. The configuration space is therefore C = IR2 × SO(2) × . . . × SO(2)
(with SO(2) appearing 7 times), and has dimension 9.
Solution to Problem 12.2
Assume that the configuration q takes values in the subset Q of Fig. 12.1 —
this can be obtained by computing the joint variables q1 and q2 modulo 2π).
Given two configurations q A = (q1,A , q2,A ), q B = (q1,B , q2,B ) in Q, define
Δ1 = min(|q1,A − q1,B |, 2π − |q1,A − q1,B |)
Δ2 = min(|q2,A − q2,B |, 2π − |q2,A − q2,B |)
and let
d3 (q A , qB ) =


Δ21 + Δ22 .

This definition of configuration space distance clearly satisfies the requirement
of the problem.
It can be easily shown that d3 (q A , q B ) coincides with d2 (q A , q B ) given by
eq. (12.2)
√ whenever the Euclidean distance between q A and q B is not larger
than 2 π.
Solution to Problem 12.3
A possible solution is shown in Fig. S12.1. In the first scene, the robot is
triangular and there is a single square obstacle, while in the second the robot

144

y

12 Motion Planning

B

O

q2

x

B

y
x

O
O

q1

CO

q1

CO

q2

Fig. S12.1. Two different scenes (above/below) that result in the same C-obstacle
region. For each scene, left: the robot B, the obstacle O and the growing procedure
for building C-obstacles, right: the configuration space C and the C-obstacle CO

is square and the obstacle is a pentagon. Under the assumption that the robots
can freely translate without changing their orientation, the C-obstacle region
is exactly the same for the two scenes.
Solution to Problem 12.4
The problem can be solved by visual inspection of Fig. 12.4. For example,
the following configurations of the 2R manipulator lie in the three disjoint
components of Cfree :






π/4
4.12
4.12
qb =
qc =
[rad].
qa =
π/2
π/6
2.88
The manipulator posture and the position in C for each of these configurations
is shown in Fig. S12.2.
Solution to Problem 12.5
Consider the lists V = {V1 , . . . , Vv } and S = {S1 , . . . , Ss } of all the vertices
and sides of the given limited polygonal subset K of IR2 . A rough sketch of

12 Motion Planning

145

Fig. S12.2. Three configurations of the 2R manipulator that lie in disjoint components of Cfree : q a (top), q b (centre) and q c (bottom). For each of them, left: the
corresponding manipulator posture, right: the position in C

a naive algorithm for computing the generalized Voronoi diagram of K is the
following.
1. Build all the equidistance curves as follows:
1a. For each vertex-vertex pair (Vi , Vj ), derive the equation of the line LVi Vj
passing through the midpoint of the segment Vi Vj and orthogonal to
the segment itself.
1b. For each vertex-side pair (Vi , Sj ), denote by LSj the line containing Sj ,
and derive the equation of the parabola PVi Sj having Vi as focus and
LSj as directrix.
1c. For each side-side pair (Si , Sj ), denote by LSi and LSj the lines containing Si and Sj , respectively, and derive the equation of the bisectrix
LSi Sj of the angle formed by LSi and LSj which contains Si and Sj .

146

12 Motion Planning

2. For each possible pair of equidistance curves, compute the intersection
points — at most one in the case of a line/line pair, at most two for a
line/parabola or parabola/parabola pair. Each of these points is characterized by the two distances from the features (vertex/vertex, line/line or
line/vertex) that generate the two intersecting equidistance curves.
3. Discard all intersection points that do not belong to K.
4. Discard all intersection points for which the two characteristic distances
are not equal.
5. For each remaining intersection point, compute its clearance, and discard
all intersection points for which the clearance is not equal to the characteristic distance.
6. All the remaining intersection points are nodes of the generalized Voronoi
diagram. Its arcs are the portions of the equidistance curves that are enclosed by these nodes.
Solution to Problem 12.6
Refer to the example shown in Fig. 12.7, and assume that the goal configuration q g is moved somewhere in cell c6 , so that cs = c3 and cg = c6 . The
shortest channel joining cs to cg is clearly {c3 , c2 , c6 }. The path extraction
procedure described in Sect. 12.4.1 would produce a broken line with the following 4 vertices: q s , the midpoint of the common boundary between c3 and
c2 , the midpoint of the common boundary between c2 and c6 , and finally q g .
Hence, the second of the 3 edges forming the path would lie completely on the
boundary of cell c2 , and in particular would go through the leftmost vertex
of the obstacle.
To solve this problem, the path extraction procedure can be modified
by including additional vertices in the path. For example, in addition to q s ,
q g and the midpoints of the common boundaries in the channel, one may
include the centroids (or a generic internal point) of all the cells crossed by
the channel, with the exception of cs and cg . In the above case, the resulting
free path would be a broken line with 5 vertices: q s , the midpoint of the
common boundary between c3 and c2 , the centroid of cell c2 , the midpoint of
the common boundary between c2 and c6 , and finally q g .
Solution to Problem 12.7
The files with the solution can be found in Folder 12 7; run s12 7.m to execute the program. The robot is a planar manipulator whose first two joints
are prismatic (so that the base can move arbitrarily) followed by an arbitrary
number of revolute joints. An admissible range can be specified for each joint
variable; in particular, a fixed-base manipulator is specified by setting to zero
the minimum and maximum values of the prismatic joint variables. The obstacles may be line segments, circles or polygons. The user must also input
the start and goal configurations, the maximum number of configurations in

12 Motion Planning

147

configuration space

workspace
3
1.5
2
1
1

0.5
0

0

-0.5

-1

-1

-2

-1.5
-3
-1.5

-1

-0.5

0

0.5

1

1.5

2

-3

-2

-1

0

1

2

3

Fig. S12.3. Motion planning for a 2R planar manipulator via the PRM method;
left: stroboscopic motion of the robot in the workspace, right: the PRM and the
solution path (thick gray) in the configuration space

the roadmap, the maximum number of neighbours to which a new sample can
be connected, and the maximum distance between neighbours.
The solution of a specific planning problem for a 2R fixed-base manipulator is reported in Fig. S12.3. The start and goal configurations are
q s = [−π/4 3π/4]T and q g = [5π/8 − π/2]T [rad,rad], respectively. Note
that the configuration space, shown as a square in the figure, is correctly
treated as a two-dimensional torus in the program. In particular, the configuration space distance is a generalization of the definition proposed in the
solution to Problem 12.2.
Solution to Problem 12.8
The files with the solution can be found in Folder 12 8; run s12 8.m to execute
the program. The obstacles may be line segments, circles or polygons. The user
must also input the start and goal configurations, the motion primitives (the
discrete set of admissible constant values of the driving and steering velocities
within the time interval Δ), the value of Δ and the maximum number of
configurations in the roadmap.
Since the unicycle cannot reach arbitrary configurations in Cfree with this
planner, the program terminates whenever a configuration is reached that is
sufficiently close to the desired goal; to this end, a user-selectable distance
threshold is used. Moreover, to bias the search towards the goal, q rand may
be set to q goal — rather than to a random configuration — with a probability
that can be chosen arbitrarily.
The solution of a specific problem is reported in Fig. S12.4. The start and
goal configurations are q s = [−3 0 0]T and q g = [3 − 3.5 0]T [m,m,rad],
respectively. Note that the unicycle does not exactly reach q g , shown in gray

148

12 Motion Planning
workspace

configuration space

5
4
3
2
2

1
0

T 0

-1

-2

-2

-5

5

-3
0

-4
-5
-5

0

0
5 -5

5

x

y

Fig. S12.4. Motion planning for a unicycle via the RRT method; left: stroboscopic
motion of the robot and projection of the RRT on the workspace, right: the RRT
and the solution path (thick gray) in the configuration space

in the stroboscopic plot. The configuration space, shown as a parallelepiped
in the figure, is correctly treated as IR2 × SO(2) in the program. In particular,
the configuration space distance is an adaptation of the definition proposed
in the solution to Problem 12.2.
Solution to Problem 12.9
Let

⎧
⎨ 1 ka e(q)
Ua (q) = 2
⎩
kb e(q)

2

if

e(q) ≤ ρ

if

e(q) > ρ.

Continuity of the attractive force at the transition radius ρ is guaranteed by
imposing
e(q)
ka e(q) = kb
for e(q) = ρ,
e(q)
i.e., kb = ρ ka .
Solution to Problem 12.10
Consider Fig. S12.5, and in particular the half-line that originates at q g and
passes through the centre of the obstacle. Visualize a point that travels along
this half-line, coming from the point at infinity, where the total potential is
infinity — because of the attractive potential. The total potential goes back
to infinity when the point reaches the boundary of the obstacle — because of
the repulsive potential. Therefore, there is a point on the line where U has a
local minimum; call this point P .

12 Motion Planning

149

R/

h
\

r

4

?

Fig. S12.5. The emergence of local minima due to the superposition of attractive
and repulsive potentials

Now consider points A and B that are located along the same equipotential contour of the repulsive potential Ur as P . Since the attractive potential
is higher at A and B than at C, P is a local minimum also in the direction of
the line AB. In formulæ:
*
*
∂U **
∂U **
=0
= 0,
∂x *P
∂y *P
which imply that P is a stationary point for U , i.e., the gradient of U is zero
at P . To show that P is indeed a local minimum, one should consider the
Hessian matrix of U
⎡ 2
⎤
∂ U ∂U
⎢ ∂x2 ∂x∂y ⎥
⎢
⎥
⎢
⎥
⎣ ∂U ∂ 2 U ⎦
∂y∂x ∂y 2
and prove that it is positive definite in P . This can be verified by using the
analytic expression of U . Note that the elements of the diagonal are certainly
positive in P in view of the above arguments.
Solution to Problem 12.11
Denote by (x, y) the Cartesian coordinates of the robot, by (xi , yi ) the Cartesian coordinates of the centre Ci of the i-th circular obstacle, and by ρi its
radius. The attractive potential is
Ua (x, y) =

1
ka (x2 + y 2 ),
2

150

12 Motion Planning

while the repulsive potentials (γ = 2) are
⎧
2

1
1
⎪
⎨ kr,i
−
if ηi (x, y) ≤ η0,i
2
ηi (x, y) η0,i
Ur,i (x, y) =
⎪
⎩
0
if ηi (x, y) > η0,i ,
'
for i = 1, 2, 3, with ηi (x, y) = (x − xi )2 + (y − yi )2 − ρi . The total potential
is
3

Ur,i (x, y),
Ut (x, y) = Ua (x, y) +
i=1

while the total force is
f (x, y) = f a (x, y) +

3


f r,i (x, y)

i=1

 
x
f a (x, y) = −ka
y

with

and

f r,i (x, y) =



⎧
kr,i
1
1
⎪
⎪
−
∇ηi (x, y) if ηi (x, y) ≤ η0,i
⎪
⎨ ηi2 (x, y) ηi (x, y) η0,i
⎪
⎪
⎪
⎩

0

In view of the above expression for ηi (x, y), one has
⎡
x − xi
'
⎢ (x − xi )2 + (y − yi )2
⎢
∇ηi (x, y) = ⎢
y − yi
⎣
'
(x − xi )2 + (y − yi )2

if ηi (x, y) > η0,i .
⎤
⎥
⎥
⎥.
⎦

The actual numerical expressions depend on the choice of the constants ka
and kr,i , for i = 1, 2, 3, as well as of the obstacle range of influence η0,i .
Assuming that the ranges of influence of the obstacles do not overlap,
the saddle points of the total potential will be clearly located along the lines
that join the origin of the reference frame (the goal) with the centres of the
circular obstacles, in the ‘shadow zone’ of each obstacle. In particular, the
saddle points are found by solving the equations

 

1
1
kr,i
x
−
=
∇ηi (x, y)
i = 1, 2, 3,
−ka
y
ηi2 (x, y) ηi (x, y) η0,i
each representing the balance between the attractive force and the i-th repulsive force.

12 Motion Planning

151

.1

.n
nn

.d

URERW

n

ODVHUVFDQ
DUHD

Fig. S12.6. On-line planning based on artificial potential fields for a circular mobile
robot equipped with a rotating laser range finder.

Solution to Problem 12.12
In principle, there are two main approaches for on-line motion planning based
on sensor data.
• The first approach is to store the data coming from the sensors in a map —
i.e., a representation of the portion of the environment that the robot has
visited so far — and use it to plan in an incremental fashion (deliberative
planning).
• The second approach is to react only to the obstacles that are currently
perceived of the robot, without any form of memory (reactive planning).
The artificial potential field technique naturally lends itself to a reactive
implementation, as briefly discussed below.
Refer to the situation shown in Fig. S12.6. The workspace obstacles O1 ,
O2 and O3 are depicted in black for the portion falling inside the laser scan
area, and in gray outside. Note how the perceived obstacle is larger than
the actual obstacle for O2 , due to the fact that the laser range finder is a
visibility-based sensor.
Consider first the case of a point robot. Since the goal is known, the
attractive potential can be built as in the off-line case — this is true provided
that the robot is equipped with a localization module. To build the repulsive
potential, it is reasonable to define the range of influence η0,i of the obstacles
to be smaller than the maximum measurable range R — if the robot does not
detect the obstacle, it does not react to it. A typical choice is η0,i = R, for all
i. As seen in Sect. 12.6.2, the perceived obstacle region must be decomposed
in convex components to guarantee continuity of the repulsive potential field;
in the case of Fig. S12.6, only O2 needs to undergo this procedure. At this
point, the repulsive force produced by each convex component is computed as

152

12 Motion Planning

Fig. S12.7. The assigned occupancy grid, the navigation function and the solution
path from cell (1, 1) to cell (7, 7); left: using 1-adjacency, right: using 2-adjacency

in (12.15), with ηi , ∇ηi directly obtained from the range scan profile — see
the example in Fig. S12.6.
In the case of a robot with a finite nonzero radius ρ, one simply uses ηi − ρ
in place of ηi in (12.15), and obtains ∇ηi as in the point robot case.
It is easy to realize that this reactive version of the artificial potential
method behaves exactly as the off-line version, in the sense that the resulting
motion of the robot is the same. Clearly, this is true as long as the environment is continuously scanned during the motion and the above procedure
for computing the potential field can be efficiently implemented, so as to be
executed within the duration of the motion control cycle.
Solution to Problem 12.13
The files with the solution can be found in Folder 12 13. The user is required to
input the binary gridmap representing the configuration space, the start and
goal cells, and the adjacency type (1- or 2-adjacency). The cells are assumed
to be squares with unit side. During the expansion of the wavefront that
originates at q g , the increase of the navigation function between adjacent cells
(cost-to-go) is set equal to the Euclidean distance between the cell centres.
The solution path is then found by following the steepest descent from the
goal cell.
For illustration, Fig. S12.7 shows the results obtained on a (7×7) gridmap,
with (1, 1) as the start cell and (7, 7) as the goal cell. The path found using
2-adjacency is shorter as expected. It is easy to realize that even when the
solution paths are in the same homotopy class — i.e., one can be continuously deformed into the other — the 1-adjacency√path may be longer than
the 2-adjacency path by a factor of as much as 2. On the other hand, 2adjacency produces paths that may graze the C-obstacles; as a consequence,
it is recommended that these are slightly enlarged before planning.

http://www.springer.com/978-1-84628-641-4



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Page Count                      : 159
Producer                        : iText® 5.1.2 ©2000-2011 1T3XT BVBA
Modify Date                     : 2011:11:04 04:23:23+01:00
Create Date                     : 2011:11:04 04:23:23+01:00
EXIF Metadata provided by EXIF.tools

Navigation menu