Supplementary Information
Supplementary Information
Supplementary Information
A Installing the Toolboxes – 716
C Geometry – 725
I Graphs – 768
References – 774
The most up-to-date instructions on installing the required software, and getting
started, can always be found at
> https://github.com/petercorke/RVC3-python
which in turn have dependencies on other packages created by the author and third
parties.
The Python package rvc3python provides a simple one-step installation of
these Toolboxes and their dependencies
$ pip install rvc3python
or
$ conda install rvc3python
The package provides additional resources for readers of the book including:
4 rvctool, a command line script that is an IPython wrapper. It imports the above
mentioned packages using import * and then provides an interactive com-
puting environment. By default rvctool has prompts like the regular Python
REPL not IPython, and it automatically displays the results of expressions like
MATLAB® does – put a semicolon on the end of the line to suppress that.
rvctool allows cutting and pasting in lines from the book, and prompt charac-
ters are ignored.
4 Jupyter notebooks, one per chapter, containing all the code examples.
4 The code to produce every Python-generated figure in the book.
4 All example scripts.
4 All block diagram models.
Block diagram models are simulated using the Python package bdsim which can
run models:
4 written in Python using bdsim block classes and wiring methods.
4 created graphically using bdedit and saved as a .bd (JSON format) file.
The GitHub repository RVC3-python hosts a number of other resources for users:
4 Wiki pages provides answers to frequently asked questions.
4 Discussions between users on aspects of the book and the core toolboxes.
4 Issues can be used for reporting and discussing issues and bugs.
717
B Linear Algebra
B Linear Algebra
B.1 Vectors
The term vector has multiple meanings which can lead to confusion:
4 In computer science, a vector is an array of numbers or a tuple.
4 In physics and engineering, a vector is a physical quantity like force or velocity
which has a magnitude, direction and unit.
4 In mathematics, a vector is an object that belong to a vector space.
4 In linear algebra, a vector is a one-dimensional matrix organized as either a row
or a column.
In this book, we use all these interpretations and rely on the context to disambiguate,
but this section is concerned with the last two meanings. We consider only real vec-
tors which are an ordered n-tuple of real numbers which is usually written as
v D .v0 ; v1 ; : : : ; vn1 / 2 Rn
where v0 , v1 , etc. are called the scalar components of v, and vi is called the i th com-
ponent of v. The symbol Rn D R R R is a Cartesian product that denotes
the set of ordered n-tuples of real numbers. For a 3-vector, we often write the ele-
ments as v D .vx ; vy ; vz /.
The coordinate of a point in an n-dimensional space is also represented by an
n-tuple of real numbers. A coordinate vector is that same tuple but interpreted as
a linear combination v D v0 e 0 C v1 e 1 C C vn1 e n1 of the orthogonal basis
vectors fe 0 ; e 1 ; : : : ; e n1 g of the space – this is a vector from the origin to the
point. In this book, the basis vectors are denoted by fx; O yg
O or fx;
O y;
O zO g for 2 or 3
dimensions respectively.
In mathematics, an n-dimensional vector space (also called a linear space) is
a group-like object that contains a collection of objects called vectors v 2 Rn . It
supports the operations of vector addition a C b D .a0 C b0 ; a1 C b1 ; : : : ; an1 C
bn1 /, and multiplication (“scaling”) by a number s called a scalar sa D .sa0 ; sa1 ;
: : : ; san1 /. The negative of a vector, scaling by 1, is obtained by negating each
element of the vector a D .a0 ; a1 ; : : : ; an1 /.
The symbol Rn is used to denote a space of points or vectors, and context is
needed to resolve the ambiguity. We need to be careful to distinguish points and
vectors because the operations of addition and scalar multiplication, while valid for
vectors, are meaningless for points. We can add a vector to the coordinate vector of
a point to obtain the coordinate vector of another point, and we can subtract one co-
ordinate vector from another, and the result is the displacement between the points.
For many operations in linear algebra, it is important to distinguish between
column and row vectors
0 1
v0
B v1 C
B C
v D B : C or v D .v0 ; v1 ; : : : ; vn1 /
@ :: A
vn1
which are equivalent to an n 1 and a 1 n matrix (see next section) respec-
tively. Most vectors in this book are column vectors which are sometimes written
compactly as .v0 ; v1 ; : : : ; vn1 /> , where > denote a matrix transpose. Both can
be denoted by Rn , or distinguished by Rn1 or R1n for column and row vectors
respectively.
718 B Linear Algebra
The Euclidean length of a vector is given by kvk2 which is also referred to as the
L2 norm and is generally assumed when p is omitted, for example kvk. A unit
The unit vector corresponding to the vector 9 is one where kvk2 D 1 and is denoted as v.O The L1 norm is the sum of the
vector v is vO D kvk
1
2
v. absolute value of the elements of the vector, and is also known as the Manhattan
distance, it is the distance traveled when confined to moving along the lines in a
grid. The L1 norm is the maximum element of the vector.
The dot or inner product of two vectors is a scalar
X
n1
where is the angle between the vectors. a b D 0 when the vectors are orthogonal.
If a and b are column vectors, a; b 2 Rn1 , the dot product can be written as
a b D a> b D b> a
The outer product ab> 2 Rnn has a maximum rank of one, and if b D a is a
symmetric matrix.
For 3-vectors, the cross product
0 1
xO yO zO
np.cross(a, b) a b D b a D det@a0 a1 a2 A D kak kbk sin nO
b0 b1 b2
where xO is a unit vector parallel to the x-axis, etc., and nO is a unit vector normal to
the plane containing a and b whose direction is given by the right-hand rule. If the
vectors are parallel, a b D 0.
B.2 Matrices
Real matrices are a subset of all In this book we are concerned, almost exclusively, with real m n matrices 9
matrices. For the general case of 0 1
complex matrices, the term Hermitian a0;0 a0;1 a0;n1
B a1;0 a1;1 a1;n1 C
is the analog of symmetric, and unitary B C
ADB : : : :: C 2 Rmn
is the analog of orthogonal. AH denotes @ :: :: :: : A
the Hermitian transpose, the complex
am1;0 am1;1 am1;n1
conjugate transpose of the complex
matrix A. Matrices are rank-2 tensors. with m rows and n columns. If n D m, the matrix is square.
Matrices of the same size A 2 Rmn and B 2 Rmn can be added
A+B C D A C B; ci;j D ai;j C bi;j ; i D 0; :::; m1; j D 0; :::; n1
or multiplied element-wise
A*B C D A ı B; ci;j D ai;j bi;j ; i D 0; :::; m1; j D 0; :::; n1
which is also called the Hadamard product. Two matrices with conforming dimen-
sions A 2 Rmn and B 2 Rnp can be multiplied
X
n1
A@B C D AB; ci;j D ai;k bk;j ; i D 0; :::; m1; j D 0; :::; p1
kD0
all matrices
complex real
det≠0 det=0
det=+1 det=-1
diagonal
identity
. Fig. B.1 Taxonomy of matrices. Matrices shown in blue are never singular
where
0 1
1
B 0 C
B 1 C
np.eye(n) 1nn D B :: C 2 Rnn
@ : A
0
1
is the identity matrix, a unit diagonal matrix, sometimes written as I. The in-
verse A1 exists provided that the matrix A is non-singular, that is, its determinant
np.linalg.det(A) det.A/ ¤ 0. The inverse can be computed from the matrix of cofactors. If A and B
are square and non-singular, then
and also
> 1 1 >
A D A D A> :
where adj.A/ is the transpose of the matrix of cofactors and known as the adjugate
Confusingly, sometimes also referred matrix and sometimes denoted by A . 9 If A is non-singular, the adjugate can be
to as the adjoint matrix, but in this computed by
book that term is reserved for the
matrix introduced in 7 Sect. 3.1.3. adj.A/ D det.A/A1 :
v D _ .A/ : vex(A)
x 0 D Ax
which results in another vector, generally with a change in its length and direction.
For example, in two dimensions, if x is the set of all points lying on a circle, then
x 0 defines points that lie on some ellipse. However, there are some important spe-
cial cases. If A 2 SO.n/, the transformation is isometric and the vector’s length is
unchanged, kx 0 k D kxk. The (right) eigenvectors of the matrix are those vectors x np.linalg.eig(A)
such that
Ax D i x; i D 0; : : : ; n 1 (B.2)
that is, their direction is unchanged when transformed by the matrix. They are
simply scaled by i , the corresponding eigenvalue. The matrix A has n eigenvalues
(the spectrum of the matrix) which can be real or complex pairs. For an orthogonal
matrix, the eigenvalues lie on a unit circle in the complex plane, j i j D 1, and the
eigenvectors are all orthogonal to one another.
The Toolbox demo
>>> %run -m eigdemo 1 2 3 4
X
n1
tr.A/ D ai;i np.trace(A)
i D0
X
n1
tr.A/ D i :
i D0
For a rotation matrix, either 2D or 3D, the trace is related to the angle of rotation
tr.R/ 1
D cos1
2
722 B Linear Algebra
about the rotation axis, but due to the limited range of cos1 , values of above
cannot be properly determined.
The determinant of the matrix is equal to the product of the eigenvalues
Y
n1
det.A/ D i
i D0
The diagonal elements of a positive-definite matrix are positive, ai;i > 0, and its
determinant is positive det.A/ > 0. The inverse of a positive-definite matrix is also
positive-definite.
We will frequently encounter the matrix quadratic form
s D x > Ax (B.3)
X
n1
sD ai;i xi2
i D0
A D LL>
A D SS
1
where S is the square root of A or A 2 which is positive definite (and symmetric) if
np.linalg.qr(A) A is positive definite, and QR-decomposition
A D QR
A D TBT1
AX D Xƒ
A D XƒX1
which is the eigen or spectral decomposition of the matrix. This implies that the
matrix can be diagonalized by a similarity transformation
ƒ D X1 AX :
A D XƒX> : (B.4)
The determinant of a square matrix A 2 Rnn is the factor by which the transfor-
mation scales volumes in an n-dimensional space. For two dimensions, imagine
a shape defined by points x i with an enclosed area ƒ. The shape formed by
the points Ax i would have an enclosed area of ƒdet.A/. If A is singular, the
points Ax i would be coincident or collinear and have zero enclosed area. In a
similar way for three dimensions, the determinant is a scale factor applied to the
volume of a set of points transformed by A.
The columns of A D .c 0 ; c 1 ; : : :; c n1 / can be considered as a set of vectors that
define a space – the column space. Similarly, the rows of A can be considered as
a set of vectors that define a space – the row space. The column rank of a matrix np.linalg.matrix_rank(A)
is the number of linearly independent columns of A. Similarly, the row rank is the
number of linearly independent rows of A. The column rank and the row rank are
always equal and are simply called the rank of A, and this has an upper bound of
n. A square matrix for which rank.A/ < n is said to be rank deficient or not of full
rank. The rank shortfall n rank.A/ is the nullity of A. In addition, rank.AB/
min.rank.A/; rank.B// and rank.A C B/ rank.A/ C rank.B/. If x is a column
vector, the matrix xx > , the outer product of x, has rank 1 for all x ¤ 0.
AC A D 1nn
AAC D 1mm
724 B Linear Algebra
where AC D A> .AA> /1 . The qualifier left or right denotes which side of A the
pseudoinverse appears.
If the matrix A is not of full rank, then it has a finite null space or kernel. A
vector x lies in the null space of the matrix if
sp.linalg.null_space(A) Ax D 0 :
More precisely, this is the right-null space. A vector lies in the left-null space if
x>A D 0 :
Avi D i ui
where ui 2 Rm and vi 2 Rn are respectively the right and left singular vectors
of A, and i its singular values. The singular values are nonnegative real numbers
that are the square root of the eigenvalues of AA> and ui are the corresponding
eigenvectors. vi are the eigenvectors of A> A.
The singular value decomposition or SVD of the matrix A is
np.linalg.svd(A) A D U†V>
where r D rank.A/ is the rank of A and i C1 i . For the case where r < n, the
diagonal will have n r zero elements as shown. Columns of V corresponding
np.linalg.cond(A) to the zero columns of † define the null space of A. The condition number of a
matrix A is max. /= min. / and a high value means the matrix is close to singular
or “poorly conditioned”.
725
C Geometry
C Geometry
Geometric concepts such as points, lines, ellipses and planes are critical to the
fields of robotics and robotic vision. We briefly summarize key representations in
both Euclidean and projective (homogeneous coordinate) space.
C.1.1 Points
C.1.2 Lines
C.1.2.1 Lines in 2D
A line is defined by ` D .a; b; c/> such that
ax C by C c D 0 (C.1)
!0a1
x1 y1 1 @ A
b D0
x2 y2 1
c
which is found from the right null space of the leftmost term. The intersection point
of two lines ` 1 and ` 2 is l1.intersects(l2)
! ! !
a1 b1 x c
D 1
a2 b2 y c2
which has no solution if the lines are parallel – the leftmost term is singular.
We can also represent the line in polar form
x cos C y sin C D0
where is the angle from the x-axis to the line and is the normal distance between
the line and the origin, as shown in . Fig. 12.20.
` D .! q; p q/ D .v; !/ 2 R6
This is not intuitive but consider two
parallel planes and an arbitrary 3D line where ! is the direction of the line and v is the moment of the line – a vector
passing through them. The line can be from the origin to a point on the line and which is normal to the line. This is a
described by the 2-dimensional Plücker coordinate vector – a 6-dimensional quantity subject to two constraints:
coordinates of its intersection point on the coordinates are homogeneous and thus invariant to overall scale factor; and
each plane – a total of four coordinates. v ! D 0. Lines therefore have 4 degrees-of-freedom 9 and the Plücker coordinates
lie on a 4-dimensional manifold – the Klein quadric – in 6-dimensional space.
Ideal as in imaginery, not as in perfect. Lines with ! D 0 lie at infinity and are known as ideal lines. 9
We will first define two points
>>> P = [2, 3, 4]; Q = [3, 5, 7];
Since lines have infinite length, we To plot this line, we first define a region of 3D space 9 then plot it in blue
need to specify a finite volume in
>>> plotvol3([-5, 5]);
which to draw it. >>> L.plot("b");
.x q/ !
D :
! !
For the point .1; 2; 3/> , the closest point on the line, and its distance, is given by
>>> [x, d] = L.closest_to_point([1, 2, 3])
>>> x
array([ 1.571, 2.143, 2.714])
>>> d
0.6547
v n d!
xD :
! n
For the xy-plane, the line intersects at
>>> p, _ = L.intersect_plane([0, 0, 1, 0])
>>> p
array([ 0.6667, 0.3333, 0])
Two lines can be identical, coplanar or skewed. Identical lines have linearly
dependent Plücker coordinates, that is, ` 1 D ` 2 or Ò 1 D Ò 2 . If coplanar, they can
be parallel or intersecting, and, if skewed they can be intersecting or not. If lines
have !1 !2 D 0 they are parallel, otherwise, they are skewed.
The minimum distance between two lines is
d D !1 v 2 C !2 v 1
which is zero if the lines intersect or are parallel, and is computed by the side
method. For Line3 objects L1 and L2, the operators L1 ^ L2 and L1 | L2 are true
if the lines are respectively intersecting or parallel.
where the adjoint of the rigid-body motion is described by (D.2). This can be com-
puted by premultiplying a Line3 instance by an SE3 instance.
C.1.3 Planes
A plane is defined by a 4-vector D .a; b; c; d /> and is the set of all points x D
.x; y; z/> such that
ax C by C cz C d D 0
n> .x p/ D 0
where n D .a; b; c/ is the normal to the plane, and p 2 R3 is a point in the plane.
A plane with the normal n and containing the point with coordinate vector p is
Plane.PointNormal(p, n) D .nx ; ny ; nz ; n p/> . A plane can also be defined by 3 points p1 , p 2 and p3 ,
where p i D .xi ; yi ; zi /
0 1
x1 y1 z1 1
Plane.ThreePoints(p) @x 2 y2 z2 1A D 0
x3 y3 z3 1
and solved for using the right null space of the leftmost term, or by two nonparallel
lines ` 1 and ` 2
Plane.LinePoint(l, p) D .! p v; v p/ :
A point can also be defined as the intersection point of three planes 1, 2 and 3
0 10 1 0 1
a1 b1 c1 x d1
Plane.intersection() @a 2 b2 c2 A@y A D @d2 A :
a3 b3 c3 z d3
If the left-hand matrix is singular, then two or more planes are parallel and have
either zero or infinitely many intersection points.
The Plücker line formed by the intersection of two planes 1 and 2 is
` D .n1 n2 ; d2 n1 d1 n2 / :
An ellipse belongs to the family of planar curves known as conics. The simplest
form of an ellipse, centered at .0; 0/, is defined implicitly by the points .x; y/ such
that
x2 y2
2
C 2 D1
a b
729
C.1 Euclidean Geometry
and is shown in . Fig. C.2a. 7 This canonical ellipse is centered at the origin and A circle is a special case of an ellipse
has its major and minor axes aligned with the x- and y-axes. The radius in the where a D b D r and r is the radius.
x-direction is a and in the y-direction is b. The longer of the two radii is known as
the semi-major axis length, and the other is the semi-minor axis length.
We can write the ellipse in matrix quadratic form (B.3) as
! !
1=a2 0 x
x y D1
0 1=b 2 y
x> E x D 1 (C.2)
.x x c /> E.x x c / D 1
E D XƒX>
x > XƒX> x D 1
> > >
X x ƒ X x D1
x 0> ƒx 0 D 1
a b
. Fig. C.2 Ellipses. a Canonical ellipse centered at the origin and aligned with the x- and y-axes; b general form of ellipse
730 C Geometry
which is similar to (C.2) but with the ellipse defined by the diagonal matrix ƒ with
respect to the rotated coordinated frame x 0 D X> x. The major and minor ellipse
axes are aligned with the eigenvectors of E.
The radii of the ellipse are related to the inverse square root of the eigenvalues
1
ri D p (C.4)
i
so the major and minor radii of the ellipse, a and b respectively, are determined by
the smallest and largest eigenvalues respectively. The area of an ellipse is
ƒ D r1 r2 D p (C.5)
det.E/
Q
since det.E/ D i. The eccentricity is
p
a2 b 2
"D :
a
Alternatively, the ellipse can be represented in polynomial form by writing as
!
> ˛
.x x c / .x x c / D 1
ˇ
and expanding to
e0 x 2 C e1 y 2 C e2 xy C e3 x C e4 y C e5 D 0
x 2 C 0 y 2 C 1 xy C 2 x C 3 y C 4 D 0 (C.6)
which is shown in . Fig. C.3. The eigenvectors and eigenvalues of E are respec-
tively
>>> e, v = np.linalg.eig(E)
>>> e
array([ 0.382, 2.618])
>>> v
array([[ -0.8507, -0.5257],
[ 0.5257, -0.8507]])
731
C.1 Euclidean Geometry
. Fig. C.3 Ellipse corresponding to a symmetric 2 2 matrix. The arrows indicate the major and minor
axes of the ellipse
If either radius is equal to zero the ellipse is degenerate and becomes a line. If both
radii are zero the ellipse is a point.
The eigenvectors are unit vectors in the major and minor axis directions 7 and Note that np.linalg.eig does not
we will scale them by the radii to yield radius vectors which we can plot sort the eigenvalues
>>> plot_arrow((0, 0), v[:,0]*r[0], color="r", width=0.02);
>>> plot_arrow((0, 0), v[:,1]*r[1], color="b", width=0.02);
The orientation of the ellipse is the angle of the major axis with respect to the
horizontal axis and is
vy
D tan1
vx
y >y D 1 : (C.7)
We rewrite (C.2) as
1 1
x> E 2 E 2 x D 1 (C.8)
1
where E 2 is the matrix square root, and equating (C.7) and (C.8), we can write
1 1
x> E 2 E 2 x D y >y :
732 C Geometry
which leads to
1
y D E2 x
1
that transforms a point on the unit circle to a point on an ellipse, and E 2 is the
inverse of the matrix square root. If the ellipse is centered at x c , rather than the
origin, we can perform a change of coordinates
.x x c /> E 2 E 2 .x x c / D 1
1 1
In many cases we wish to plot an ellipse given by A1 . Computing the inverse of
A is inefficient because plot_ellipse will invert it again, so in this case we write
plot_ellipse(A, inverted=True).
X
N 1 X
N 1
m00 D N; m10 D xi ; m01 D yi :
i D0 i D0
The center of the ellipse is taken to be the centroid of the set of points
>
m10 m01
x c D .xc ; yc /> D ;
m00 m00
733
C.1 Euclidean Geometry
X
N 1
20 D .xi xc /2
i D0
X
N 1
02 D .yi yc /2
i D0
X
N 1
11 D .xi xc /.yi yc / :
i D0
where the diagonal terms are the moments of inertia and the off-diagonal terms are
the products of inertia. Inertia can be computed more directly as the summation of
N rank-1 matrices
X
N 1
JD .x i x c /.x i x c /> :
i D0
The inertia tensor and its equivalent ellipse are inversely related by
m00 1
ED J :
4
To demonstrate this, we can create a set of points that lie within the ellipse used in
the example above
>>> rng = np.random.default_rng(0);
>>> # create 200 random points inside the ellipse
>>> x = [];
>>> while len(x) < 200:
... p = rng.uniform(low=-2, high=2, size=(2,1))
... if np.linalg.norm(p.T @ E @ p) <= 1:
... x.append(p)
>>> x = np.hstack(x); # create 2 x 50 array
>>> plt.plot(x[0, :], x[1, :], "k."); # plot them
>>>
>>> # compute the moments
>>> m00 = mpq_point(x, 0, 0);
>>> m10 = mpq_point(x, 1, 0);
>>> m01 = mpq_point(x, 0, 1);
>>> xc = np.c_[m10, m01] / m00;
>>>
>>> # compute the central second moments
>>> x0 = x - xc.T;
>>> u20 = mpq_point(x0, 2, 0);
>>> u02 = mpq_point(x0, 0, 2);
>>> u11 = mpq_point(x0, 1, 1);
>>>
>>> # compute inertia tensor and ellipse matrix
>>> J = np.array([[u20, u11], [u11, u02]]);
>>> E_est = m00 / 4 * np.linalg.inv(J);
that is similar to the original value of E. The point data is shown in . Fig. C.4. We
can overlay the estimated ellipse on the point data
>>> plot_ellipse(E_est, "r")
and for N 5 we can solve for the ellipse parameter vector using least squares.
xQ i
xi D ; i D 0; : : : ; n 1
xQ nC1
xQ D .x0 ; x1 ; : : : ; xn1 ; 1/ :
The extra degree of freedom offered by projective coordinates has several ad-
vantages. It allows points and lines at infinity, known as ideal points and lines, to be
735
C.2 Homogeneous Coordinates
ay
er
tiv
jec
pro
1
or
ect
ev
tiv
jec
pro
Euclidean plane
projective space
. Fig. C.5 A point p on the Euclidean plane is described by a coordinate vector p 2 R2 which is
equivalent to the three-dimensional vector in the projective space pQ 2 P 2
represented using only finite numbers. It also means that scale is unimportant, that
0
is, xQ and xQ D xQ both represent the same Euclidean point for all ¤ 0. We ex-
0
press this as xQ ' xQ . We can apply a rigid-body transformation to points xQ 2 P n by
multiplying the homogeneous coordinate by an n n homogeneous transformation
matrix.
Homogeneous vectors are important in computer vision when we consider
points and lines that exist in a plane, for example, a camera’s image plane.
We can also consider that the homogeneous form represents a ray in projec-
tive space as shown in . Fig. C.5. Any point on the projective ray is equivalent
to p and this relationship between points and rays is at the core of the pro-
jective transformation. You can experiment with this by running the notebook
examples/homogeneous-coords.ipynb.
Q̀ > xQ D 0
which is the point equation of a line. This expands to `0 x C`1 y C`2 D 0 and can be
manipulated into the more familiar representation of a line y D ``01 x ``21 . Note that
this form can represent a vertical line which the familiar form y D mx C c cannot.
The nonhomogeneous vector .`0 ; `1 /> is normal to the line, 7 and .`1 ; `0 /> is Hence, this line representation is
parallel to the line. referred to as normal form.
A point is defined by the intersection of two lines. If we write the point equa-
> >
tions for two lines Q̀ 1 xQ D 0 and Q̀ 2 xQ D 0, their intersection is the point with
homogeneous coordinates
pQ D Q̀ 1 Q̀ 2
and is known as the line equation of a point. Similarly, a line passing through two
points pQ 1 ; pQ 2 2 P 2 , said to be joining the points, is given by the cross-product
Q̀ 12 D pQ 1 pQ 2 :
736 C Geometry
Consider the case of two parallel lines at 45ı to the horizontal axis
>>> l1 = [1, -1, 0];
>>> l2 = [1, -1, -1];
This is an ideal point since the third coordinate is zero – the equivalent Euclidean
point would be at infinity. Projective coordinates allow points and lines at infinity
to be simply represented and manipulated without special logic.
The distance from a line Q̀ to a point pQ is
Q̀ > pQ
d D q : (C.9)
pQ2 `Q20 C `Q21
C.2.1.2 Conics
Conic sections are an important family of planar curves that includes circles, el-
lipses, parabolas and hyperbolas. They can be described generally as the set of
points xQ 2 P 2 such that
xQ > xQ D 0
The determinant of the top-left submatrix indicates the type of conic: positive for
an ellipse, zero for a parabola, and negative for a hyperbola.
C.2.2.1 Lines
Q qQ 2 P 3 in homogeneous form, the line that joins them is defined
For two points p;
by a 4 4 skew-symmetric matrix
L D qQ pQ > pQ qQ >
0 1
0 v3 v2 !1
Bv3 0 v1 !2 C
DB@ v2 v1
C (C.11)
0 !3 A
!1 !2 !3 0
whose six unique elements comprise the Plücker coordinate representation of the
line. This matrix is rank 2 and the determinant is a quadratic in the Plücker co-
ordinates – a 4-dimensional quadric hypersurface known as the Klein quadric.
All points that lie on this manifold are valid lines. Many of the relationships in
737
C.3 Geometric Transformations
7 App. C.1.2.2 (between lines and points and planes) can be expressed in terms of
this matrix. This matrix is returned by the skew method of the Line3 class.
For a perspective camera with a camera matrix C 2 R34 , the 3-dimensional
Plücker line represented as a 4 4 skew-symmetric matrix L is projected onto the
image plane as
Q̀ D CLC> 2 P 2
C.2.2.2 Planes
A plane Q 2 P 3 is described by the set of points xQ 2 P 3 such that Q > xQ D 0. A
plane can be defined by a line L 2 R44 and a homogeneous point pQ
Q D LpQ Plane.LinePoint()
or three points
0 >1
pQ 1
B >C
@pQ 2 A Q D 0 Plane.ThreePoints()
pQ >
3
and the solution is found from the right-null space of the matrix.
The intersection, or incidence, of three planes is the dual
0 1
Q>
1
B >C
@ Q 2 ApQ D 0 Plane.intersection()
Q>
3
and is an ideal point, zero last component, if the planes do not intersect at a point.
C.2.2.3 Quadrics
Quadrics, short for quadratic surfaces, are a rich family of 3-dimensional sur-
faces. There are 17 standard types including spheres, ellipsoids, hyperboloids,
paraboloids, cylinders and cones, all described by the set of points xQ 2 P 3 such
that
xQ > QxQ D 0
D CQ C>
A linear transformation is
y D Ax (C.12)
738 C Geometry
y D Ax C b (C.13)
which is unique up to scale and one element has been normalized to one. It has
8 degrees of freedom.
The affine transformation is a subset where the elements of the last row are
fixed
0 1
a0;0 a0;1 tx
H D @a1;0 a1;1 ty A
0 0 1
and has 6 degrees of freedom, two of which are the translation .tx ; ty /.
The similarity transformation is a more restrictive subset
! 0sr sr0;1 tx
1
0;0
sR t
HD D @sr1;0 sr1;1 ty A
0 1
0 0 1
where R 2 SO.2/ resulting in only 4 degrees of freedom, and s < 0 causes a reflec-
tion. Similarity transformations, without reflection, are sometimes referred to as a
Procrustes transformation.
Finally, the Euclidean or rigid-body transformation
! 0r r0;1 tx
1
0;0
R t
HD D @r1;0 r1;1 ty A 2 SE.2/
0 1
0 0 1
is the most restrictive and has only 3 degrees of freedom. Some graphical examples
of the effect of the various transformations on a square are shown in . Fig. C.6.
739
C.3 Geometric Transformations
. Fig. C.6 A 2-dimensional dark gray square with various transformations applied: from the most
limited (Euclidean) to the most general (projective)
. Table C.1 For various planar transformation families, the possible geometric transformations
and the geometric properties which are preserved are listed
Geometric transformation
Rotation X X X X
Translation X X X X
Reflection X X X
Uniform scaling X X X
Nonuniform scaling X X
Shear X X
Perspective projection X
Angle X X
Ratio of lengths X X
Parallelism X X X
Incidence X X X X
Cross ratio X X X X
The possible geometric transformations for each type of transformation are sum-
marized in . Table C.1 along with the geometric properties which are unchanged,
or invariant, under that transformation. We see that while Euclidean is most restric-
tive in terms of the geometric transformations it can perform, it is able to preserve
important properties such as length and angle.
740 D Lie Groups and Algebras
We cannot go very far in the study of rotations or rigid-body motion without com-
ing across the terms Lie groups, Lie algebras or Lie brackets – all named in honor
of the Norwegian mathematician Sophus Lie. Rotations and rigid-body motion in
two and three dimensions can be represented by matrices that have special struc-
ture, they form Lie groups, and they have Lie algebras.
We will start simply by considering the set of all real 2 2 matrices A 2 R22
!
a0;0 a0;1
AD
a1;0 a1;1
has only one free parameter, and varying that parameter moves the point along the
manifold.
Invoking mathematical formalism, we say that rotations SO(2) and SO(3), and
rigid-body motions SE(2) and SE(3) are matrix Lie groups and this has two impli-
cations. Firstly, they are an algebraic group, a mathematical structure comprising
elements and a single operator. In simple terms, a group G has the following prop-
erties:
1. If g1 and g2 are elements of the group, that is, g1 ; g2 2 G, then the result of
the group’s operator ˘ is also an element of the group: g1 ˘g2 2 G. In general, In this book’s notation, ˚ is the group
groups are not commutative, so g1 ˘g2 ¤ g2 ˘g1 . For rotations and rigid-body operator for relative pose.
motions, the group operator ˘ represents composition. 7
2. The group operator is associative, that is, .g1 ˘g2 /˘g3 D g1 ˘.g2 ˘g3 /. In this book’s notation, the identity for
3. There is an identity element I 2 G such, for every g 2 G, g˘I D I ˘g D g. 7 relative pose (implying null motion) is
4. For every g 2 G, there is a unique inverse h 2 G such that g˘h D h˘g D I . 7 denoted by ¿ so we can say that
˚ ¿ D ¿ ˚ D .
The second implication of being a Lie group is that there is a smooth (differen-
tiable) manifold structure. At any point on the manifold, we can construct tangent In this book’s notation, we use the
vectors. The set of all tangent vectors at that point form a vector space – the tan- operator to form the inverse of a
gent space. This is the multidimensional equivalent to a tangent line on a curve, or relative pose.
a tangent plane on a solid. We can think of this as the set of all possible derivatives
of the manifold at that point.
The tangent space at the identity is described by the Lie algebra of the group,
and the basis directions of the tangent space are called the generators of the group.
Points in this tangent space map to elements of the group via the exponential func-
tion. If g is the Lie algebra for group G, then
eX 2 G; 8X 2 g
where the elements of g and G are matrices of the same size and each of them has
a specific structure.
The surface of a sphere is a manifold in a 3-dimensional space and at any point
on that surface we can create a tangent vector. In fact, we can create an infinite
number of them and they lie within a plane which is a 2-dimensional vector space
– the tangent space. We can choose a set of basis directions and establish a 2-
dimensional coordinate system and we can map points on the plane to points on
the sphere’s surface.
Now, consider an arbitrary real 3 3 matrix A 2 R33
0 1
a0;0 a0;1 a0;2
A D @a1;0 a1;1 a1;2 A
a2;0 a2;1 a2;2
which we could write as a linear combination of basis matrices
0 1 0 1 0 1
1 0 0 0 1 0 0 0 0
A D a0;0 @0 0 0A C a0;1 @0 0 0A C C a2;2 @0 0 0A
0 0 0 0 0 0 0 0 1
where each basis matrix represents a direction in a 9-dimensional space of 3
3 matrices. Every possible 3 3 matrix is represented by a point in this space.
Not all matrices in this space are proper rotation matrices belonging to SO(3),
but those that do will lie on a manifold since SO(3) is a Lie group. The null rotation,
represented by the identity matrix, is one point in this space. At that point, we can
construct a tangent space which has only 3 dimensions. Every point in the tangent
space can be expressed as a linear combination of basis matrices
0 1 0 1 0 1
0 0 0 0 0 1 0 1 0
D !1 @0 0 1A C!2 @ 0 0 0A C!3 @1 0 0A (D.1)
0 1 0 1 0 0 0 0 0
„ ƒ‚ … „ ƒ‚ … „ ƒ‚ …
G1 G2 G3
The equivalent algebra is denoted
which is the Lie algebra of the SO(3) group. The bases of this space: G1 , G2 and using lowercase letters and is a set of
G3 are called the generators of SO(3) and belong to so(3). 7 matrices.
742 D Lie Groups and Algebras
Œ W R 7! so.2/; R3 7! so.3/;
_ . /W so.2/ 7! R; so.3/ 7! R3 :
The first mapping is performed by the Toolbox function skew and the second by
vex(which is named after the _ operator).
The exponential of any matrix in so(3) is a valid member of SO(3)
O
O D eŒ !
R. !/ 2 SO.3/
O D 1 C sin Œ!
R. !/ O 2
O C .1 cos /Œ!
0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 1
0 0 0 1 0 0 0 0 0 0 0 0
B0 0 0 0C B0 0 0 1 C B0 0 0 0C
C v1 B
@0
C C v2 B C B
@0 0 0 0A C v3 @0
C
0 0 0A 0 0 1A
0 0 0 0 0 0 0 0 0 0 0 0
743
D Lie Groups and Algebras
and these generator matrices belong to the Lie algebra of the group SE(3) which is
enoted by se(3). This can be written in general form as
0 1
0 !3 !2 v1
B C
B !3 0 !1 v2 C
† D ŒS D B C 2 se.3/
@ !2 !1 0 v3 A
0 0 0 0
Œ W R3 7! se.2/; R6 7! se.3/;
_. /W se.2/ 7! R3 ; se.3/ 7! R6 :
O
T. SO / D eŒ S 2 SE.3/
or the inverse using the matrix logarithm. The exponential and the logarithm each
have an efficient closed-form solution given by trexp and trlog.
We have seen in 7 Sect. 2.4.7 that rigid-body motions can be described by a twist
which represents motion in terms of a screw axis direction and position. For ex-
ample, in . Fig. D.1, the twist AS can be used to transform points on the body. If
the screw is rigidly attached to the body which undergoes some rigid-body motion
A
B the new twist is
B A
B
S D Ad A S
where
A A !
A
RB t B RB
Ad AB D A
2 R66 (D.2)
0 RB
. Fig. D.1 Points in the body (gray cloud) can be transformed by the twist AS . If the body and the
screw axis undergo a rigid-body transformation AB , the new twist is BS
744 D Lie Groups and Algebras
SE3.Ad
adjoint
logm
Twist()
expm Twist.T
SE (3)
Twist.ad
SE3.log SE3.exp
log
adjoint
vexa,Twist()
se (3)
skewa,Twist.se
6x1 vectors: 6x6 matrices 4x4 matrices 4x1 homogenous vectors
- twist - adjoint - SE(3), homogeneous -points
- velocity twist - log adjoint - se(3)
- wrench
- Plücker coordinates
. Fig. D.2 The menagerie of SE.3/ related quantities. Matrix values are coded as: 0 (black), 1 (white), other values (gray). Transformations between
types are indicated by blue arrows with the relevant class plus method name. Operations are indicated by red arrows: the tail-end object operates on the
head-end object and results in another object of the head-end type
Ad.eŒS / D ead.S /
where ad.S / is the logarithm of the adjoint and defined in terms of the twist pa-
rameters as
!
Œ! Œv
ad.S / D 2 R66 :
0 Œ!
The relationship between the various mathematical objects discussed are shown
in . Fig. D.2.
745
E Linearization, Jacobians and Hessians
In robotics and computer vision, the equations we encounter are often nonlin-
ear. To apply familiar and powerful analytic techniques, we must work with lin-
ear or quadratic approximations to these equations. The principle is illustrated in
. Fig. E.1 for the 1-dimensional case, and the analytical approximations shown in
red are made at x D x0 . The approximation equals the nonlinear function at x0 but
is increasingly inaccurate as we move away from that point. We call this a local
approximation since it is valid in a region local to x0 – the size of the valid region
depends on the severity of the nonlinearity. This approach can be extended to an
arbitrary number of dimensions.
df 1 d2 f
f .x0 C / D f .x0 / C C 2
C
dx 2 dx 2
which we truncate to form a first-order or linear approximation
f 0 . / f .x0 / C J.x0 /
or a second-order approximation
1
f 0 . / f .x0 / C J.x0 / C H.x0 / 2
2
where 2 R is an infinitesimal change in x relative to the linearization point x0 ,
and the first and second derivatives are given by
ˇ ˇ
df ˇˇ d2 f ˇˇ
J.x0 / D ; H.x0 / D
dx ˇx0 dx 2 ˇx0
respectively.
a b
. Fig. E.1 The nonlinear function f .x/ is approximated at the point x D x0 by a the red line – a linear
or first-order approximation, b the red parabola – a second-order approximation. At the linearization
point, both curves are equal and tangent to the function while for b the second derivatives also match
746 E Linearization, Jacobians and Hessians
f 0 . / f .x 0 / C J.x 0 /
or a second-order approximation
1
f 0 . / f .x 0 / C J.x 0 / C >
H.x 0 /
2
where 2 Rn is an infinitesimal change in x 2 Rn relative to the linearization
point x 0 , J 2 R1n is the vector version of the first derivative, and H 2 Rnn is the
Hessian – the matrix version of the second derivative.
The derivative of the function f . / with respect to the vector x is
0 @f 1
@x0
B C
B @f
C
B @x1 C
J.x/ D rf .x/ D B :: C 2 Rn
B C
@ : A
@f
@xn1
and is a column vector that points in the direction at which the function f .x/ has
maximal increase. It is often written as rx f to make explicit that the differentiation
is with respect to x.
The Hessian is an n n symmetric matrix of second derivatives
0 2 2 2
1
@ f @ f @ f
B @x02 @x0 @x1 @x0 @xn1
C
B @2 f @2 f @2 f C
B C
H.x/ D B C 2 Rnn :
@x0 @x1 @x12 @x1 @xn1
B :: :: :: :: C
B : : : : C
@ A
@2 f @2 f @2 f
@x0 @xn1 @x1 @xn1 2
@xn1
747
E.3 Vector Function of a Vector
which is frequently approximated by just the first term and this is key to Gauss-
Newton least-squares optimization discussed in 7 App. F.2.3.
B @x0 @xn1
C
J.x/ D B
@
::
:
::
:
::
:
C 2 Rmn
A
@fm1 @fm1
@x0 @xn1
Jacobians of functions are required for many optimization algorithms, for example
pose-graph optimization, as well as for the extended Kalman filter. They can be
computed either numerically or symbolically.
Consider (6.9) for the range and bearing angle of a landmark given the pose
of the vehicle and the position of the landmark. We can express this as a lambda
function
>>> zrange = lambda xi, xv, w: np.array([
... np.linalg.norm(xi - xv[:2]) + w[0],
... np.arctan((xi[1] - xv[1]) / (xi[0] - xv[0]))
... -xv[2] + w[1]]);
748 E Linearization, Jacobians and Hessians
To estimate the Jacobian Hxv D @h=@x v for x v D .1; 2; 3 / and x i D .10; 8/,
we can compute a first-order numerical difference
>>> xv = np.r_[1, 2, pi/3]; xi = np.r_[10, 8]; w = np.r_[0, 0];
>>> h0 = zrange(xi, xv, w)
array([ 10.82, -0.4592])
>>> d = 0.001;
>>> J = np.column_stack([
... zrange(xi, xv + [d, 0, 0], w) - h0,
... zrange(xi, xv + [0, d, 0], w) - h0,
... zrange(xi, xv + [0, 0, d], w) - h0
... ]) / d
array([[ -0.832, -0.5547, 0],
[ 0.05129, -0.07693, -1]])
which shares the characteristic last column with the Jacobian shown in (6.14). Note
that in computing this Jacobian we have set the measurement noise w to zero. The
principal difficulty with this approach is choosing d, the difference used to compute
the finite-difference approximation to the derivative. Too large and the results will
be quite inaccurate if the function is nonlinear, too small and numerical problems
will lead to reduced accuracy.
The Toolbox provides a convenience function to perform this
>>> numjac(lambda x: zrange(xi, x, w), xv)
array([[ -0.8321, -0.5547, 0],
[ 0.05128, -0.07692, -1]])
where the arguments are a scalar function of a vector and the value of the vector
about which to linearize.
Alternatively, we can perform the differentiation symbolically. This particular
function is relatively simple and the derivatives can be determined easily by hand
using differential calculus. The numerical derivative can be used as a quick check
for correctness. To avoid the possibility of error, or for more complex functions, we
can perform the symbolic differentiation using any of a large number of computer
algebra packages. Using SymPy we define some symbolic column vectors for x i
and x v which are 2D arrays
>>> from sympy import Matrix, MatrixSymbol, sqrt, atan, simplify,
... pycode
>>> xi = MatrixSymbol("xi", 2, 1)
xi
>>> xv = MatrixSymbol("xv", 3, 1)
xv
>>> w = Matrix([0, 0])
Matrix([
[0],
[0]])
Now we have to rewrite the function in a SymPy friendly way, removing NumPy
NumPy functions will not accept functions and replacing them with equivalent SymPy functions 9
symbolic variables.
>>> zrange = lambda xi, xv, w: Matrix([
... sqrt((xi[0] - xv[0])**2 + (xi[1] - xv[1])**2) + w[0],
... atan((xi[1] - xv[1]) / (xi[0] - xv[0]))
... -xv[2] + w[1]]);
>>> z = zrange(xi, xv, w)
Matrix([[sqrt((xi[0, 0] - xv[0, 0])**2 + (xi[1, 0] - xv[1, 0])**2)],
[atan((xi[1, 0] - xv[1, 0])/(xi[0, 0] - xv[0, 0]))
- xv[2, 0]]])
which is simply (6.9) in SymPy symbolic form and using SymPy Matrix rather
than NumPy array. The result is less compact because SymPy supports only 2D
749
E.4 Deriving Jacobians
and the characteristic last column. We could cut and paste this code into our pro-
gram or automatically create a Python callable function using pycode.
Another approach is automatic differentiation (AD) of code. The package
ADOL-C is an open-source tool that can differentiate C and C++ programs, that
is, given a function written in C, it will return a Jacobian or higher-order derivative
function written in C. It is available at 7 https://github.com/coin-or/ADOL-C. For
Python code, there is an open-source tool called Tangent available at 7 https://
github.com/google/tangent.
750 F Solving Systems of Equations
where this time † 1 is the element-wise inverse of the nonzero diagonal elements
of †, all other zeros are left in place.
All these problems can be solved using SciPy
>>> x = linalg.spsolve(A, b)
RP D Q :
X
m1
MD q i p>
i
i D0
and then take the SVD such that M D U†V> . The least squares estimate of the
rotation matrix is
0 1
1 0 0
R D U@0 1 0AV> ; s D det.U/ det V> (F.2)
0 0 s
Many problems in robotics and computer vision involve sets of nonlinear equa-
tions. Solution of these problems requires linearizing the equations about an es-
timated solution, solving for an improved solution and iterating. Linearization is
discussed in 7 App. E.
f .x/ D 0 (F.3)
1 >
f .x 0 C / D f 0 C J.x 0 / C H.x 0 / C H.O.T. (F.4)
2
where f 0 D f .x 0 / 2 Rm1 is the function value and J D J.x 0 / 2 Rmn the Jaco-
bian, both evaluated at the linearization point, 2 Rn1 is an infinitesimal change
in x relative to x 0 and H.O.T. denotes higher-order terms. H.x 0 / is the n n m
Hessian tensor. 7 To evaluate > H.x 0 / we write it as
>
We take the first two terms of (F.4) to form a linear approximation N 2 / which uses a mode-2
.H.x 0 /
tensor-vector product.
f 0 . / f 0 C J.x 0 / (F.5)
f 0 C J.x 0 / D0 ) D J1 .x 0 /f 0 :
752 F Solving Systems of Equations
repeat
compute f 0 D f .x 0 /; J D J.x 0 /
J 1f 0
x0 x0 C
until kf 0 k
A very common class of problems involves finding the minimum of a scalar func-
tion f .x/W Rn 7! R which can be expressed as
x D arg min f .x/ :
x
and the challenge is to choose the appropriate value of ˇ which controls the step
size. If too small, then many iterations will be required. If too large, the solution
may be unstable and not converge.
If we include the second-order term from (F.4), the approximation becomes
1
f 0 . / f 0 C J.x 0 / C >
H.x 0 /
2
and includes the n n Hessian matrix. To find its minima we take the derivative
and set it to zero
df 0
D 0 ) J.x 0 / C H.x 0 / D0
d
and the update is
D H1 .x 0 /J.x 0 / :
This leads to another iterative solution – Newton’s method. The challenge is deter-
mining the Hessian of the nonlinear system, either by numerical approximation or
symbolic manipulation.
753
F.2 Nonlinear Problems
Very commonly, the scalar function we wish to optimize is a quadratic cost function
f 0. / f 0 C J
F . / .f 0 C J /> .f 0 C J /
f 0> f 0 C f 0> J C > >
J f0 C > >
J J
f 0> f 0 C 2f 0> J C > >
J J
where J> J 2 Rnn is the approximate Hessian from 7 App. E.2. 7 One of the underlined terms is the
To minimize the error of this linearized least squares system, we take the deriva- transpose of the other, but since both
tive with respect to and set it to zero result in a scalar, the transposition
doesn’t matter.
dF
D 0 ) 2f 0> J C > >
J JD0
d
which we can solve for the locally optimal update
1
D J> J J> f 0 (F.6)
Numerical Issues
When solving (F.6), we may find that the Hessian J> J is poorly conditioned or
singular and we can add a damping term
1
D J> J C 1nn J> f 0
which makes the system more positive-definite. Since J> J C 1nn is effectively in
the denominator, increasing will decrease k k and slow convergence.
How do we choose ? We can experiment with different values, but a better
way is the Levenberg-Marquardt algorithm (. Fig. F.1) which adjusts to ensure
convergence. If the error increases compared to the last step, then the step is re-
peated with increased to reduce the step size. If the error decreases, then is
reduced to increase the convergence rate. The updates vary continuously between
Gauss-Newton (low ) and gradient descent (high ).
For problems where n is large, inverting the n n approximate Hessian is ex-
pensive. Typically, m < n which means the Jacobian is not square and (F.6) can be
rewritten as
1
D J> JJ> f 0
which is the right pseudoinverse and involves inverting a smaller matrix. We can
reintroduce a damping term
1
D J> JJ> C 1mm f 0
754 F Solving Systems of Equations
1 initialize
2 repeat
3 compute f 0 D f .x 0 /, J D J.x 0 /, H D J> J
4 .H C 1n n / 1 J> f 0
5 if f .x 0 C / < f .x 0 / then
6 – error decreased: reduce damping
7 x0 x0 C
8
9 else
10 – error increased: discard and raise damping
11
12 end
13 until k k
ˇJ> f 0
F .x/ D .f k .x//
the squared norm is replaced by a loss function . / which models the likelihood
of its argument. Unlike the squared norm, these functions flatten off for large val-
ues, and some common examples include the Huber loss function and the Tukey
biweight function.
For a large class of problems, the overall cost is the sum of quadratic costs
X X
F .x/ D kf k .x/k2 D f k .x/> f k .x/ : (F.7)
k k
f k .x/ D zk .wk I x/ 2 Rm
where e #k is the observed value of the edge parameter and eO k .x/ is the estimate
based on the state x of the pose graph. This is linearized
f k0 . / f 0;k C Jk
where k 2 Rmm is a positive-definite constant matrix 7 which we combine as This can be used to specify the
> significance of the edge det.k / with
Fk . / f 0;k C Jk k f 0;k C Jk respect to other edges, as well as the
> > > > > > relative significance of the elements of
f 0;k k f 0;k C f 0;k k Jk C Jk k f 0;k C Jk k Jk
f k . /.
ck C 2b>
k C >
Hk
>
where ck D f 0;k k f 0;k , b> > >
k D f 0;k k Jk and Hk D Jk k Jk . The total cost is the
sum of all edge costs
X
F. / D Fk . /
k
X
ck C 2b>
k C >
Hk
k
! !
X X X
ck C 2 b>
k C >
Hk
k k k
c C 2b> C >
H
where
X X
b> D >
f 0;k k Jk ; HD J>
k k Jk
k k
are summations over the edges of the graph. Once they are computed, we proceed
as previously, taking the derivative with respect to and setting it to zero, solving
for the update and iterating using . Fig. F.2.
State Vector
The state vector is a concatenation of all poses and coordinates in the optimization
problem. For pose-graph SLAM, it takes the form
x D f 0 ; 1 ; : : : ; N 1 g 2 RNx :
Poses must be represented in a vector form and preferably one that is compact and
singularity free. For SE.2/, this is quite straightforward and we use .x; y; / 2
R3 , and N D 3. For SE.3/, we will use .t; r/ 2 R6 which comprises translation
t 2 R3 and rotation r 2 R3 , and N D 6. Rotation r can be triple angles (Euler or
roll-pitch-yaw), axis-angle (Euler vector), exponential coordinates or the vector
part of a unit quaternion as discussed in 7 Sect. 2.3.1.7. The state vector x has
length Nx D N N , and comprises a sequence of subvectors one per pose – the i th
subvector is x i 2 RN .
For pose-graph SLAM with landmarks, or bundle adjustment, the state vector
comprises poses and coordinate vectors
x D f 0 ; 1 ; : : : ; N 1 jP 0 ; P 1 ; : : : ; P M 1 g 2 RNx
a b
. Fig. F.2 Inherent structure of the error vector, Jacobian and Hessian matrices for graph-based least-squares problems. a Pose-graph SLAM with
N vertices representing robot pose as RN ; b bundle adjustment with N vertices representing camera pose as RN and M vertices representing
landmark position as RNP . The indices i and j denote the i th and j th block – not the i th and j th row or column. Zero values are indicated by white
Inherent Structure
A key observation is that the error vector f k .x/ for edge k depends only on the
associated vertices i and j , and this means that the Jacobian
@f k .x/
Jk D 2 RmNx
@x
is mostly zeros
@f k .x/ @f k .x/
Jk D 0 Ai Bj 0 ; Ai D ; Bj D
@x i @xj
1 repeat
2 H 0; b 0
3 foreach k do
4 f 0;k .x 0 / D eO k .x/ ˇ e #k
5 .i; j / D vertices.k/
6 compute Ai .x i /, Bj .xj /
>
7 bi bi C f 0;k k Ai
>
8 bj bj C f 0;k k Bj
9 Hi;i Hi;i C A> i k Ai
>
10 Hi;j Hi;j C Ai k Bj
11 Hj;i Hj;i C Bj> k Ai
12 Hj;j Hj;j C Bj> k Bj
13 end
14 H 1
b
15 x0 x0
16 until k k
. Fig. F.3 Pose graph optimization. For Levenberg-Marquardt optimization, replace line 14 with
lines 4–12 from . Fig. F.1
0 0
50
1000
100
2000
150
3000 200
250
4000
300
5000
350
0 1000 2000 3000 4000 5000 0 50 100 150 200 250 300 350
a nz = 67795 b nz = 20646
. Fig. F.4 Hessian sparsity maps produced using the plt.spy function, the number of nonzero elements is shown beneath the plot. a Hessian for
the pose-graph SLAM problem of . Fig. 6.18, the diagonal elements represent pose constraints between successive vertices due to odometry, the
off-diagonal terms represent constraints due to revisiting locations (loop closures); b Hessian for a bundle adjustment problem with 10 cameras and
110 landmarks (examples/bademo)
758 F Solving Systems of Equations
Firstly, in both cases the Hessian is sparse – that is, it contains mostly zeros.
Instead of storing all those zeros (at 8 bytes each) we can employ sparse matrix
techniques that maintain a list of the nonzero elements. SciPy provides classes in
scipy.sparse to create sparse matrices which have similar behavior to nonsparse
NumPy arrays, as well as spsolve to solve Ax D b where the matrices and vectors
are sparse.
Secondly, for the bundle adjustment case in . Fig. F.2b, we see that the Hessian
has a block structure, so we partition the system as
! ! !
B E b
D
E> C P bP
A block diagonal matrix is inverted by where B and C are block diagonal. 9 The subscripts and P denote the blocks
simply inverting each of the nonzero of and b associated with camera poses and landmark positions respectively. We
blocks along its diagonal. solve first for the camera pose updates
S D b EC1 bP
Anchoring
Optimization provides a solution where the relative poses and positions give the
lowest overall cost, and the solution will have an arbitrary transformation with
respect to a global reference frame. To obtain absolute poses and positions, we
must anchor or fix some vertices – assign them values with respect to the global
frame and prevent the optimization from adjusting them. The appropriate way to
achieve this is to remove from H and b the rows and columns corresponding to the
anchored poses and positions. We then solve a lower dimensional problem for 0
which will be shorter than x. Careful bookkeeping is required to add the subvectors
of 0 into x for the update.
759
G Gaussian Random Variables
is completely described by the position of its peak and its width . The total area
under the curve is unity and g.x/ > 0, 8x. The function can be plotted using the
RVC Toolbox function
>>> x = np.linspace(-6, 6, 500);
>>> plt.plot(x, gauss1d(0, 1, x), "r");
>>> plt.plot(x, gauss1d(0, 2**2, x), "b--");
and . Fig. G.1 shows two Gaussians with zero mean and D 1 and D 2. Note
that the second argument to gauss1d is 2 .
If the Gaussian is considered to be a probability density function (PDF), then
this is the well known normal distribution and the peak position is the mean value
and the width is the standard deviation. A random variable drawn from a normal
distribution is often written as X N.; 2 ), and 2 is the variance. N.0; 1/ is re-
ferred to as the standard normal distribution – the NumPy function random.normal
draws random numbers from this distribution. To draw one hundred Gaussian ran-
dom numbers with mean mu and standard deviation sigma is
>>> g = np.random.normal(loc=mu, scale=sigma, size=(100,));
The probability that a random value falls within an interval x 2 Œx1 ; x2 is ob-
tained by integration
Zx2 Zx
P D g.x/ dx D ˆ.x2 / ˆ.x1 /; where ˆ.x/ D g.x/ dx
x1 1
. Fig. G.1 Two Gaussian functions, both with mean D 0, and with standard deviation D 1, and
D 2. The markers indicate the points x D ˙ 1 . The area under both curves is unity
760 G Gaussian Random Variables
. Fig. G.2 The 2-dimensional Gaussian with covariance P D diag.12 ; 22 /. Contour lines of constant
probability density are shown beneath
and compared to the scalar case of (G.1) x 2 Rn and 2 Rn have become vectors,
the squared term in the exponent has been replaced by a matrix quadratic form,
and 2 , the variance, has become a symmetric positive-definite matrix P 2 Rnn .
We can plot a 2-dimensional Gaussian
>>> x, y = np.meshgrid(np.linspace(-5, 5, 100),
... np.linspace(-5, 5, 100));
>>> P = np.diag([1, 2])**2;
>>> g = gauss2d([0, 0], P, x, y);
>>> ax = plotvol3();
>>> ax.plot_surface(x, y, g);
>>> ax.contour(x, y, g, zdir="z", offset=-0.05);
as a surface which is shown in . Fig. G.2. The contour lines are ellipses and in this
example, the radii in the y- and x-directions are in the ratio 2 W 1 as defined by the
ratio of the standard deviations. If the covariance matrix is diagonal, as in this case,
then the ellipses are aligned with the x- and y-axes as we saw in 7 App. C.1.4,
otherwise they are rotated.
If the 2-dimensional Gaussian is considered to be a PDF, then P is the covari-
ance matrix where the diagonal elements pi;i represent the variance of xi and the
off-diagonal elements pi;j are the correlationss between xi and xj . The inverse of
the covariance matrix is known as the information matrix. If the variables are inde-
pendent or uncorrelated, the matrix P would be diagonal. In this case, D .0; 0/
and P D diag.12 ; 22 / which corresponds to uncorrelated variables with standard
deviation of 1 and 2 respectively. If the PDF represented the position of a vehicle,
it is most likely to be at coordinates .0; 0/. The probability of being within any
region of the xy-plane is the volume under the surface of that region, and involves
a non-trivial integration to determine.
The connection between Gaussian probability density functions and ellipses
can be found in the quadratic exponent of (G.2) which is the equation of an ellipse
It is also the definition of Mahalanobis or ellipsoid. 9 All the points that satisfy
distance, the covariance weighted
distance between x and . .x /> P1 .x / D s
result in a constant probability density value, that is, a contour of the 2-dimensional
Gaussian. If p is the probability that the point x lies inside the ellipse, then s is
761
G Gaussian Random Variables
given by the inverse-cumulative 2 distribution function 7 with n degrees of free- If we draw a vector of length n from
dom, 2 in this case. For example, the 50% confidence interval is the multivariate Gaussian, each
>>> from scipy.stats.distributions import chi2
element is normally distributed. The
>>> chi2.ppf(0.5, 2) sum of squares of independent
1.386 normally distributed values has a 2
(chi-squared) distribution with
where the first argument is the probability and the second is the number of degrees
n degrees of freedom.
of freedom.
To draw a 2-dimensional covariance ellipse, we use the general approach for
ellipses outlined in 7 App. C.1.4, but the right-hand side of the ellipse equation is s
not 1, and E D P1 . Using the Toolbox this is plot_ellipse(P, confidence=0.5,
inverted=True).
762 H Kalman Filter
H Kalman Filter
Consider the system shown in . Fig. H.1. The physical robot is a “black box”
which has a true state or pose x that evolves over time according to the applied
inputs. We cannot directly measure the state, but sensors on the robot have outputs
which are a function of that true state. Our challenge is: given the system inputs
and sensor outputs, estimate the unknown true state x and how certain we are of
that estimate.
At face value, this might seem hard or even impossible, but we will assume
Often called the process or motion that the system has the model shown inside the black box, and we know how this
model. system behaves. Firstly, we know how the state evolves over time as a function of
the inputs – this is the state transition 9 model f . /, and we know the inputs u that
For example, wheel slippage on a are applied to the system. Our model is unlikely to be perfect 9 and it is common
mobile ground robot or wind gusts for to represent this uncertainty by an imaginary random number generator which is
a UAV. corrupting the system state – process noise. Secondly, we know how the sensor
output depends on the state – this is the sensor model h. / and its uncertainty is
also modeled by an imaginary random number generator – sensor noise.
The imaginary random number sources v and w are inside the black box so
the random numbers are also unknowable. However, we can describe the charac-
teristics of these random numbers – their distribution which tells us how likely it
is that we will draw a random number with a particular value. A lot of noise in
physical systems can be modeled well by the Gaussian (aka normal) distribution
N.; 2 / which is characterized by a mean and a standard deviation , and the
There are infinitely many possible Gaussian distribution has some nice mathematical properties that we will rely on. 9
distributions that these noise sources Typically, we assume that the noise has zero mean, and that the covariance of the
could have, which could be process and sensor noise are V and W respectively.
asymmetrical or have multiple peaks.
We should never assume that noise is
Gaussian – we should attempt to
determine the distribution by
understanding the physics of the
process and the sensor, or from careful
measurement and analysis.
z k+1 = h(x k+1 , w k )
N (0, W)
f (·) V̂
x̂ k+1
h(·) Ŵ P̂ k+1
x k+1 = f (x k , u k , v k )
N (0, V)
. Fig. H.1 The physical robot on the left is a “black box” whose true state cannot be directly measured.
However, it can be inferred from sensor output which is a function of the unknown true state, and the
assumed model shown inside the black box
763
H.1 Linear Systems – Kalman Filter
where xO C is the predicted estimate of the state and PO 2 Rnn is the predicted es-
timate of the covariance, or uncertainty, in xO C . The notation C makes explicit that
the left-hand side is a prediction at time k C 1 based on information from time k.
O is a constant and our best estimate of the covariance of the process noise.
V
The underlined term in (H.4) projects the estimated covariance from the current
time step to the next. Consider a one dimensional example where F is a scalar
and the state estimate xO hki has a PDF which is Gaussian with a mean hki and a
764 H Kalman Filter
variance 2 hki. The prediction equation maps the state and its Gaussian distribution
to a new Gaussian distribution with a mean Fhki and a variance F 2 2 hki. The term
FhkiPhkiFhki> is the matrix form of this since
Some of this difference is due to noise in the sensor, the measurement noise, but
the remainder provides valuable information related to the error between the actual
and the predicted value of the state. Rather than considering this as error, we refer
to it more positively as innovation – new information.
The second step of the Kalman filter, the update step, maps the innovation into
a correction for the predicted state, optimally tweaking the estimate based on what
the sensors observed
Uncertainty is now decreased or deflated, since new information, from the sensors,
is being incorporated. The matrix
1
O
K D PChkC1i H> HPChkC1iH> C W 2 Rnp (H.8)
is known as the Kalman gain. The term in parentheses is the estimated covariance of
the innovation, and comprises the uncertainty in the state and the estimated measure-
ment noise covariance. If the innovation has high uncertainty in some dimensions,
then the Kalman gain will be correspondingly small, that is, if the new information is
uncertain, then only small changes are made to the state vector. The underlined term
O is a
projects the covariance of the state estimate into the space of sensor values. W
constant and our best estimate of the covariance of the sensor noise.
The covariance matrix must be symmetric, but after many updates the accumu-
lated numerical errors may result in the matrix no longer being symmetric. The
symmetric structure can be enforced by using the Joseph form of (H.7)
C
PO hkC1i D .1nn KH/PO hkC1i.1nn KH/> C KVK
O >
The equations above constitute the classical Kalman filter which is widely used
in robotics, aerospace and econometric applications. The filter has a number of
important characteristics. Firstly, it is optimal, but only if the noise is truly Gaussian
with zero mean and time-invariant parameters. This is often a good assumption but
not always. Secondly, it is recursive, the output of one iteration is the input to the
next. Thirdly, it is asynchronous. At a particular iteration, if no sensor information
is available, we only perform the prediction step and not the update. In the case that
there are different sensors, each with their own H, and different sample rates, we
just apply the update with the appropriate z and H whenever sensor data becomes
available.
The filter must be initialized with some reasonable value of xO and P, O as well as
good choices of the estimated covariance matrices V O and W. O As the filter runs, the
estimated covariance kPk O decreases but never reaches zero – the minimum value
can be shown to be a function of V O and W.O The Kalman-Bucy filter is a continuous-
time version of this filter.
The covariance matrix PO is rich in information. The diagonal elements pOi;i are
the variance, or uncertainty, in the state xi . The off-diagonal elements pOi;j are the
correlations between states xi and xj and indicate that the errors in the states are not
independent. The correlations are critical in allowing any piece of new information
to flow through to adjust all the states that affect a particular process output.
If elements of the state vector represent 2-dimensional position, the correspond-
ing 2 2 submatrix of PO is the inverse of the equivalent uncertainty ellipse E1 ,
see 7 App. C.1.4.
For the case where the system is not linear, it can be described generally by two
functions: the state transition (the motion model in robotics) and the sensor model
. Fig. H.2 One dimensional example illustrating how the nonlinear state transition function f : xk 7!
xkC1 shown in black is linearized about the point .xO hki; xO hkC1i/ shown in red
xO hkC1i D xO ChkC1i C K
C C
PO hkC1i D PO hkC1i KHx PO hkC1i
1
K D PChkC1iH> C > O >
x Hx P hkC1iHx C Hw WHw : (H.13)
These equations are only valid at the linearization point xO hki – the Jacobians Fx , Fv ,
Properly, these matrices should be Hx , Hw must be computed at every iteration. 9 The full procedure is summarized
denoted as depending on the time step, in . Fig. H.3.
i.e. Fx hki, but this has been dropped in A fundamental problem with the extended Kalman filter is that PDFs of the
the interest of readability. random variables are no longer Gaussian after being operated on by the nonlinear
functions f . / and h. /. We can illustrate this by considering a nonlinear scalar
function y D .x C 2/2 =4. We will draw a million Gaussian random numbers from
the normal distribution N.5; 4/ which has a mean of 5 and a standard deviation of 2
which is shown in . Fig. H.4. We see that the PDF of y is substantially changed
and no longer Gaussian. It has lost its symmetry, so the mean value is greater
than the mode. The Jacobians that appear in the EKF equations appropriately scale
the covariance but the resulting non-Gaussian distribution breaks the assumptions
which guarantee that the Kalman filter is an optimal estimator. Alternative ap-
proaches to dealing with system nonlinearity include the iterated EKF described
767
H.2 Nonlinear Systems – Extended Kalman Filter
compute Jacobians: Fx 2 Rn n ; Fv 2 Rn n ; Hx 2 Rp n ; Hw 2 Rp p
. Fig. H.4 PDF of the state x which is Gaussian N.5; 4/ and the PDF of the nonlinear function y D
.x C 2/2 =4. The distribution of y is no longer Gaussian and the mean no longer corresponds to the peak
by Jazwinski (2007), the Unscented Kalman Filter (UKF) (Julier and Uhlmann
2004), or the sigma-point filter which uses discrete sample points (sigma points) to
approximate the PDF.
768 I Graphs
I Graphs
and, by default, the vertices of the graph exist in 2-dimensional space. We can add
five randomly-placed vertices to the graph
>>> np.random.seed(0) # ensure repeatable results
>>> for i in range(5):
... g.add_vertex(np.random.rand(2));
The method add_vertex returns a reference to the newly created vertex object, but
we can obtain the reference by indexing the graph object. For example vertex 1 is
>>> g[1]
UVertex[#1, coord=(0.6028, 0.5449)]
and the add_edge method returns a reference to the edge object just created. By
default, the edge cost is the Euclidean distance between the vertices, but this can
be overridden by a third argument to add_edge.
A summary of the graph can be displayed
>>> print(g)
UGraph: 5 vertices, 6 edges, 1 component
This graph has one component, that is, all the vertices are connected into one net-
work. The graph can be plotted by
>>> g.plot()
as shown in . Fig. I.1. The vertices are shown as blue circles, and the edges are
shown as lines joining vertices. Many options exist to change default plotting be-
havior. Note that only graphs embedded in 2- and 3-dimensional space can be
plotted.
The neighbors of vertex 1 are
>>> g[1].adjacent()
[UVertex[#0, coord=(0.5488, 0.7152)],
UVertex[#2, coord=(0.4237, 0.6459)],
UVertex[#3, coord=(0.4376, 0.8918)]]
Arbitrary data can be attached to any vertex or edge by adding attributes to the
vertex or edge objects, or by subclassing the UVertex and Edge classes.
The vertex closest to the coordinate .0:5; 0:5/ is
>>> g.closest((0.5, 0.5))
(UVertex[#1, coord=(0.6028, 0.5449)], 0.1121)
The minimum-distance path between any two vertices in the graph can be com-
puted using well-known algorithms such as A (Hart et al. 1968)
>>> path, length, _ = g.path_Astar(g[2], g[4])
>>> path
[UVertex[#2, coord=(0.4237, 0.6459)],
UVertex[#0, coord=(0.5488, 0.7152)],
UVertex[#3, coord=(0.4376, 0.8918)],
UVertex[#4, coord=(0.9637, 0.3834)]]
J Peak Finding
J.1 1D Signal
In this case, there is more than one peak and we can use the RVC Toolbox function
findpeaks instead
>>> k, ypk = findpeaks(y)
>>> k
array([ 7, 0, 24, 15])
>>> ypk
array([ 0.9905, 0.873, 0.6718, -0.5799])
which has returned four maxima ordered by descending value. A common test of
the quality of a peak is its magnitude, and the ratio of the height of the second peak
to the first peak
>>> ypk[1] / ypk[0]
0.8813
a b
. Fig. J.1 Peak fitting. a A signal with several local maxima; b close-up view of the first maximum with the fitted parabola
771
J.1 1D Signal
to the points surrounding the peak: .1; yk1 /, .0; yk / and .1; ykC1 / where ıx D 0
when k D 7. Substituting these into (J.1), we can write three equations
yk1 D a b C c
yk D c
ykC1 D a C b C c
or in compact matrix form as
0 1 0 10 1
yk1 1 1 1 a
@ yk A D @0 0 1A@b A
ykC1 1 1 1 c
and then solve for the parabolic coefficients
0 1 0 11 0 1 0 10 1
a 1 1 1 yk1 1 2 1 yk1
1
@b A D @0 0 1A @ yk A D @1 0 1A@ yk A : (J.2)
2
c 1 1 1 ykC1 0 2 0 ykC1
The maximum of the parabola occurs when its derivative is zero
2aıx C b D 0
and substituting the values of a and b from (J.2), we find the displacement of the
peak of the fitted parabola with respect to the discrete maximum
1 yk1 ykC1
ıx D ; ıx 2 .1; 1/
2 yk1 2yk C ykC1
so the refined, or interpolated, position of the maximum is at
xO D k C ıx 2 R
and the estimated value of the maximum is obtained by substituting ıx into (J.1).
The coefficient a will be negative for a maximum. If jaj is large, it indicates a
well-defined sharp peak, whereas a low value indicates a very broad peak for which
estimation of a refined peak may not be so accurate.
Continuing the earlier example, we can use the function findpeaks to estimate
the refined peak positions
>>> findpeaks(y, interp=True)
(array([ 7.439, 23.73, 15.24]), array([ 0.9969, 0.7037,
-0.578]))
where the argument interp uses a second-order polynomial by default, but this
can be overridden by setting interp to the desired polynomial order. The fitted
parabola for the first peak is shown in red in . Fig. J.1b.
If the signal has superimposed noise, then there are likely to be multiple peaks,
many of which are quite minor, and this can be overcome by specifying the scale
of the peak. For example, the peaks that are greater than all other values within
˙5 values in the horizontal direction are
>>> findpeaks(y, scale=5)
(array([ 7, 0, 24]), array([ 0.9905, 0.873, 0.6718]))
772 J Peak Finding
This technique is called nonlocal maxima suppression and requires that an appro-
priate scale is chosen. In this case, the result is unchanged since the signal is fairly
smooth.
J.2 2D Signal
and the maximum value of 0.8766 is at [3, 2] using NumPy indexing conventions.
We can find this by
>>> k = np.argmax(img)
17
Starting with 0 at the top-left, across and the maximum is at element 17 in row-major order. 9 We can think of this as a
each row, then back to the left side of 1D index into a flattened version of the image
the next lower row, and so on. >>> img.ravel()[k]
0.8766
We can find this concisely using the RVC Toolbox function findpeaks2d
>>> xy = findpeaks2d(img)
array([[ 2, 3, 0.8766],
[ 1, 1, 0.3754]])
which has returned two local maxima, one per row, using the image coordinate
indexing convention. The third column is the peak value. This function will return
all nonlocal maxima where the size of the local region is given by the scale option
that is the half width of the 2D window in which the maximum is found.
We can refine the estimate of the 2D peak by following a similar procedure to
the 1D case. We fit a paraboloid
z D ax 2 C by 2 C cx C dy C e (J.3)
which has five coefficients that can be calculated from the center value (the dis-
crete maximum) and its four neighbors (north, south, east and west) using a similar
A paraboloid normally has an xy term procedure to above. 9 The displacement of the estimated peak with respect to the
giving a total of 6 parameters. This central point is
would require using one additional
point in order to solve the equation, 1 ze zw
ıx D ; ıx 2 .1; 1/
which breaks the simplicity and 2 2zc ze zw
symmetry of this scheme. All 1 zn za
ıy D ; ıy 2 .1; 1/
neighbors could be used, requiring a 2 2zc zn zs
least-squares solution.
The coefficients a and b represent the sharpness of the peak in the x- and y-
directions, and the quality of the peak can be considered as being min.jaj; jbj/.
773
J.2 2D Signal
which has one row per peak, comprising the coordinates, the interpolated height of
the peak, and the sharpness of the peak. The highest peak in this case is at image
coordinate .2:109; 2:964/ with a height of 0.8839. When this process is applied to
image data, it is referred to as subpixel interpolation.
774 References
References
Achtelik MW (2014) Advanced closed loop visual navigation for micro aerial vehicles. Ph.D. thesis,
ETH Zurich
Adorno B, Marinho M (2021) DQ Robotics: A Library for Robot Modeling and Control. IEEE Robotics
Automation Magazine, vol. 28, 102–116
Agarwal S, Furukawa Y, Snavely N, Simon I, Curless B, Seitz SM, Szeliski R (2011) Building Rome
in a day. Commun ACM 54(10):105–112
Agarwal P, Burgard W, Stachniss C (2014) Survey of geodetic mapping methods: Geodetic approaches
to mapping and the relationship to graph-based SLAM. IEEE Robot Autom Mag 21(3):63–80
Agrawal M, Konolige K, Blas M (2008) CenSurE: Center surround extremas for realtime feature de-
tection and matching. In: Forsyth D, Torr P, Zisserman A (eds) Lecture notes in computer science.
Computer Vision – ECCV 2008, vol 5305. Springer-Verlag, Berlin Heidelberg, pp 102–115
Albertos P, Mareels I (2010) Feedback and control for everyone. Springer-Verlag, Berlin Heidelberg
Altmann SL (1989) Hamilton, Rodrigues, and the quaternion scandal. Math Mag 62(5):291–308
Alton K, Mitchell IM (2006) Optimal path planning under defferent norms in continuous state spaces.
In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA).
pp 866–872
Andersen N, Ravn O, Sørensen A (1993) Real-time vision based control of servomechanical systems.
In: Chatila R, Hirzinger G (eds) Lecture notes in control and information sciences. Experimental
Robotics II, vol 190. Springer-Verlag, Berlin Heidelberg, pp 388–402
Andersson RL (1989) Dynamic sensing in a ping-pong playing robot. IEEE T Robotic Autom 5(6):728–
739
Antonelli G (2014) Underwater robots: Motion and force control of vehicle-manipulator systems, 3rd ed.
Springer Tracts in Advanced Robotics, vol 2. Springer-Verlag, Berlin Heidelberg
Arandjelović R, Zisserman A (2012) Three things everyone should know to improve object retrieval.
In: IEEE Conference on Computer Vision and Pattern Recognition (CVPR). pp 2911–2918
Arkin RC (1999) Behavior-based robotics. MIT Press, Cambridge, Massachusetts
Armstrong WW (1979) Recursive solution to the equations of motion of an N-link manipulator. In:
Proceedings of the 5th World Congress on Theory of Machines and Mechanisms, Montreal, Jul,
pp 1343–1346
Armstrong BS (1988) Dynamics for robot control: Friction modelling and ensuring excitation during
parameter identification. Stanford University
Armstrong B (1989) On finding exciting trajectories for identification experiments involving systems
with nonlinear dynamics. Int J Robot Res 8(6):28
Armstrong B, Khatib O, Burdick J (1986) The explicit dynamic model and inertial parameters of the
Puma 560 Arm. In: Proceedings of the IEEE International Conference on Robotics and Automation
(ICRA), vol 3. pp 510–518
Armstrong-Hélouvry B, Dupont P, De Wit CC (1994) A survey of models, analysis tools and compen-
sation methods for the control of machines with friction. Automatica 30(7):1083–1138
Arun KS, Huang TS, Blostein SD (1987) Least-squares fitting of 2 3-D point sets. IEEE T Pattern Anal
9(5):699–700
Asada H (1983) A geometrical representation of manipulator dynamics and its application to arm de-
sign. J Dyn Syst-T ASME 105:131
Astolfi A (1999) Exponential stabilization of a wheeled mobile robot via discontinuous control. J Dyn
Syst-T ASME 121(1):121–126
Azarbayejani A, Pentland AP (1995) Recursive estimation of motion, structure, and focal length. IEEE
T Pattern Anal 17(6):562–575
Bailey T, Durrant-Whyte H (2006) Simultaneous localization and mapping: Part II. IEEE Robot Autom
Mag 13(3):108–117
Bakthavatchalam M, Chaumette F, Tahri O (2015) An improved modelling scheme for photometric mo-
ments with inclusion of spatial weights for visual servoing with partial appearance/disappearance.
In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA).
pp 6037–6043
Baldridge AM, Hook SJ, Grove CI, Rivera G (2009) The ASTER spectral library version 2.0. Remote
Sens Environ 113(4):711–715
Ball RS (1876) The theory of screws: A study in the dynamics of a rigid body. Hodges, Foster & Co.,
Dublin
Ball RS (1908) A treatise on spherical astronomy. Cambridge University Press, New York
Ballard DH (1981) Generalizing the Hough transform to detect arbitrary shapes. Pattern Recogn
13(2):111–122
Banks J, Corke PI (2001) Quantitative evaluation of matching methods and validity measures for stereo
vision. Int J Robot Res 20(7):512–532
Barfoot T (2017) State Estimation for Robotics. Cambridge University Press
775
References
Bar-Shalom Y, Fortmann T (1988) Tracking and data association. Mathematics in science and engineer-
ing, vol 182. Academic Press, London Oxford
Bar-Shalom Y, Li XR, Kirubarajan T (2001) Estimation with applications to tracking and navigation.
John Wiley & Sons, Inc., Chichester
Bateux Q, Marchand E, Leitner J, Chaumette F, Corke P (2018) Training Deep Neural Networks for
Visual Servoing. IEEE International Conference On Robotics And Automation (ICRA). pp 3307–
3314
Bauer J, Sünderhauf N, Protzel P (2007) Comparing several implementations of two recently published
feature detectors. In: IFAC Symposium on Intelligent Autonomous Vehicles (IAV). Toulouse
Bay H, Ess A, Tuytelaars T, Van Gool L (2008) Speeded-up robust features (SURF). Comput Vis Image
Und 110(3):346–359
Benosman R, Kang SB (2001) Panoramic vision: Sensors, theory, and applications. Springer-Verlag,
Berlin Heidelberg
Benson KB (ed) (1986) Television engineering handbook. McGraw-Hill, New York
Berns RS (2019) Billmeyer and Saltzman’s Principles of Color Technology, 4th ed. Wiley
Bertolazzi E, Frego M (2014) G1 fitting with clothoids. Mathematical Methods in the Applied Sciences
38(5):881–897
Bertozzi M, Broggi A, Cardarelli E, Fedriga R, Mazzei L, Porta P (2011) VIAC expedition: Toward
autonomous mobility. IEEE Robot Autom Mag 18(3):120–124
Besl PJ, McKay HD (1992) A method for registration of 3-D shapes. IEEE T Pattern Anal 14(2): 239–
256
Bhat DN, Nayar SK (2002) Ordinal measures for image correspondence. IEEE T Pattern Anal 20(4):
415–423
Biber P, Straßer W (2003) The normal distributions transform: A new approach to laser scan match-
ing. In: Proceedings of the IEEE/RSJ International Conference on intelligent robots and systems
(IROS), vol 3. pp 2743–2748
Bishop CM (2006) Pattern recognition and machine learning. Information science and statistics.
Springer-Verlag, New York
Blewitt M (2011) Celestial navigation for yachtsmen. Adlard Coles Nautical, London
Bolles RC, Baker HH, Marimont DH (1987) Epipolar-plane image analysis: An approach to determin-
ing structure from motion. Int J Comput Vision 1(1):7–55, Mar
Bolles RC, Baker HH, Hannah MJ (1993) The JISCT stereo evaluation. In: Image Understanding Work-
shop: proceedings of a workshop held in Washington, DC apr 18–21, 1993. Morgan Kaufmann, San
Francisco, pp 263
Bolton W (2015) Mechatronics: Electronic control systems in mechanical and electrical engineering,
6th ed. Pearson, Harlow
Borenstein J, Everett HR, Feng L (1996) Navigating mobile robots: Systems and techniques. AK Peters,
Ltd. Natick, MA, USA, Out of print and available at http://www-personal.umich.edu/~johannb/
Papers/pos96rep.pdf
Borgefors G (1986) Distance transformations in digital images. Comput Vision Graph 34(3):344–371
Bostrom N (2016) Superintelligence: Paths, dangers, strategies. Oxford University Press, Oxford, 432 p
Bouguet J-Y (2010) Camera calibration toolbox for MATLAB® . http://www.vision.caltech.edu/
bouguetj/calib_doc
Brady M, Hollerbach JM, Johnson TL, Lozano-Pérez T, Mason MT (eds) (1982) Robot motion: Plan-
ning and control. MIT Press, Cambridge, Massachusetts
Braitenberg V (1986) Vehicles: Experiments in synthetic psychology. MIT Press, Cambridge, Mas-
sachusetts
Bray H (2014) You are here: From the compass to GPS, the history and future of how we find ourselves.
Basic Books, New York
Brockett RW (1983) Asymptotic stability and feedback stabilization. In: Brockett RW, Millmann RS,
Sussmann HJ (eds) Progress in mathematics. Differential geometric control theory, vol 27. pp 181–
191
Broida TJ, Chandrashekhar S, Chellappa R (1990) Recursive 3-D motion estimation from a monocular
image sequence. IEEE T Aero Elec Sys 26(4):639–656
Brooks RA (1986) A robust layered control system for a mobile robot. IEEE T Robotic Autom 2(1):14–
23
Brooks RA (1989) A robot that walks: Emergent behaviors from a carefully evolved network. MIT AI
Lab, Memo 1091
Brown MZ, Burschka D, Hager GD (2003) Advances in computational stereo. IEEE T Pattern Anal
25(8):993–1008
Brynjolfsson E, McAfee A (2014) The second machine age: Work, progress, and prosperity in a time
of brilliant technologies. W.W. Norton & Co., New York
Buehler M, Iagnemma K, Singh S (eds) (2007) The 2005 DARPA grand challenge: The great robot
race. Springer Tracts in Advanced Robotics, vol 36. Springer-Verlag, Berlin Heidelberg
Buehler M, Iagnemma K, Singh S (eds) (2010) The DARPA urban challenge. Tracts in Advanced
Robotics, vol 56. Springer-Verlag, Berlin Heidelberg
776 References
Bukowski R, Haynes LS, Geng Z, Coleman N, Santucci A, Lam K, Paz A, May R, DeVito M (1991)
Robot hand-eye coordination rapid prototyping environment. In: Proc ISIR, pp 16.15–16.28
Buttazzo GC, Allotta B, Fanizza FP (1993) Mousebuster: A robot system for catching fast moving ob-
jects by vision. In: Proceedings of the IEEE International Conference on Robotics and Automation
(ICRA). Atlanta, pp 932–937
Calonder M, Lepetit V, Strecha C, Fua P (2010) BRIEF: Binary robust independent elementary features.
In: Daniilidis K, Maragos P, Paragios N (eds) Lecture notes in computer science. Computer Vision
– ECCV 2010, vol 6311. Springer-Verlag, Berlin Heidelberg, pp 778–792
Campos C, Elvira R, Rodríguez JJG, Montiel JMM, Tardós JD (2021) ORB-SLAM3: An Accurate
Open-Source Library for Visual, Visual–Inertial, and Multimap SLAM. IEEE Trans on Robotics,
37(6), pp 1874–1890
Canny JF (1983) Finding edges and lines in images. MIT, Artificial Intelligence Laboratory, AI-TR-720.
Cambridge, MA
Canny J (1987) A computational approach to edge detection. In: Fischler MA, Firschein O (eds) Read-
ings in computer vision: Issues, problems, principles, and paradigms. Morgan Kaufmann, San
Francisco, pp 184–203
Censi A (2008) An ICP variant using a point-to-line metric. In: Proceedings of the IEEE International
Conference on Robotics and Automation (ICRA). pp 19–25
Chahl JS, Srinivasan MV (1997) Reflective surfaces for panoramic imaging. Appl Optics 31(36):8275–
8285
Chaumette F (1990) La relation vision-commande: Théorie et application et des tâches robotiques.
Ph.D. thesis, Université de Rennes 1
Chaumette F (1998) Potential problems of stability and convergence in image-based and position-based
visual servoing. In: Kriegman DJ, Hager GD, Morse AS (eds) Lecture notes in control and informa-
tion sciences. The confluence of vision and control, vol 237. Springer-Verlag, Berlin Heidelberg,
pp 66–78
Chaumette F (2004) Image moments: A general and useful set of features for visual servoing. IEEE T
Robotic Autom 20(4):713–723
Chaumette F, Hutchinson S (2006) Visual servo control 1: Basic approaches. IEEE Robot Autom Mag
13(4):82–90
Chaumette F, Hutchinson S (2007) Visual servo control 2: Advanced approaches. IEEE Robot Autom
Mag 14(1):109–118
Chaumette F, Rives P, Espiau B (1991) Positioning of a robot with respect to an object, tracking it and
estimating its velocity by visual servoing. In: Proceedings of the IEEE International Conference on
Robotics and Automation (ICRA). Seoul, pp 2248–2253
Chesi G, Hashimoto K (eds) (2010) Visual servoing via advanced numerical methods. Lecture notes in
computer science, vol 401. Springer-Verlag, Berlin Heidelberg
Chiuso A, Favaro P, Jin H, Soatto S (2002) Structure from motion causally integrated over time. IEEE
T Pattern Anal 24(4):523–535
Choset HM, Lynch KM, Hutchinson S, Kantor G, Burgard W, Kavraki LE, Thrun S (2005) Principles
of robot motion. MIT Press, Cambridge, Massachusetts
Chum O, Matas J (2005) Matching with PROSAC - progressive sample consensus. IEEE Computer
Society Conference On Computer Vision And Pattern Recognition (CVPR), pp 220–226
Colicchia G, Waltner C, Hopf M, Wiesner H (2009) The scallop’s eye – A concave mirror in the context
of biology. Physics Education 44(2):175–179
Collewet C, Marchand E, Chaumette F (2008) Visual servoing set free from image processing. In:
Proceedings of IEEE International Conference on Robotics and Automation (ICRA). pp 81–86
Commission Internationale de L’Éclairage (1987) Colorimetry, 2nd ed. Commission Internationale de
L’Eclairage, CIE No 15.2
Corke PI (1994) High-performance visual closed-loop robot control. University of Melbourne, Dept.
Mechanical and Manufacturing Engineering. https://hdl.handle.net/11343/38847
Corke PI (1996a) In situ measurement of robot motor electrical constants. Robotica 14(4):433–436
Corke PI (1996b) Visual control of robots: High-performance visual servoing. Mechatronics, vol 2.
Research Studies Press (John Wiley). Out of print and available at http://www.petercorke.com/
bluebook
Corke PI (2001) Mobile robot navigation as a planar visual servoing problem. In: Jarvis RA, Zelinsky A
(eds) Springer tracts in advanced robotics. Robotics Research: The 10th International Symposium,
vol 6. IFRR, Lorne, pp 361–372
Corke PI (2007) A simple and systematic approach to assigning Denavit-Hartenberg parameters. IEEE
T Robotic Autom 23(3):590–594
Corke PI (2010) Spherical image-based visual servo and structure estimation. In: Proceedings of the
IEEE International Conference on Robotics and Automation (ICRA). Anchorage, pp 5550–5555
Corke PI, Armstrong-Hélouvry BS (1994) A search for consensus among model parameters reported
for the PUMA 560 robot. In: Proceedings of the IEEE International Conference on Robotics and
Automation (ICRA). San Diego, pp 1608–1613
777
References
Corke PI, Armstrong-Hélouvry BS (1995) A meta-study of PUMA 560 dynamics: A critical appraisal
of literature data. Robotica 13(3):253–258
Corke PI, Good MC (1992) Dynamic effects in high-performance visual servoing. In: Proceedings of
the IEEE International Conference on Robotics and Automation (ICRA). Nice, pp 1838–1843
Corke PI, Good MC (1996) Dynamic effects in visual closed-loop systems. IEEE T Robotic Autom
12(5):671–683
Corke PI, Haviland J (2021) Not your grandmother’s toolbox – the Robotics Toolbox reinvented for
Python. IEEE International Conference on Robotics and Automation (ICRA). pp 11357–11363
Corke PI, Hutchinson SA (2001) A new partitioned approach to image-based visual servo control. IEEE
T Robotic Autom 17(4):507–515
Corke PI, Dunn PA, Banks JE (1999) Frame-rate stereopsis using non-parametric transforms and pro-
grammable logic. In: Proceedings of the IEEE International Conference on Robotics and Automa-
tion (ICRA). Detroit, pp 1928–1933
Corke PI, Lobo J, Dias J (2007) An introduction to inertial and visual sensing. The International Journal
of Robotics Research, 26(6). pp 519–536
Corke PI, Strelow D, Singh S (2004) Omnidirectional visual odometry for a planetary rover. In: Proceed-
ings of the International Conference on Intelligent Robots and Systems (IROS). Sendai, pp 4007–
4012
Corke PI, Spindler F, Chaumette F (2009) Combining Cartesian and polar coordinates in IBVS. In:
Proceedings of the International Conference on Intelligent Robots and Systems (IROS). St. Louis,
pp 5962–5967
Corke PI, Paul R, Churchill W, Newman P (2013) Dealing with shadows: Capturing intrinsic scene
appearance for image-based outdoor localisation. In: Proceedings of the IEEE/RSJ International
Conference on Intelligent Robots and Systems (IROS). pp 2085–2092
Craig JJ (1986) Introduction to robotics: Mechanics and control, 1st ed. Addison-Wesley
Craig JJ (1987) Adaptive control of mechanical manipulators. Addison-Wesley Longman Publishing
Co., Inc. Boston
Craig JJ (2005) Introduction to robotics: Mechanics and control, 3rd ed. Pearson/Prentice Hall
Craig JJ, Hsu P, Sastry SS (1987) Adaptive control of mechanical manipulators. Int J Robot Res 6(2):16–
28
Crombez N, Caron G, Mouaddib EM (2015) Photometric Gaussian mixtures based visual servoing. In:
Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).
pp 5486–5491
Crone RA (1999) A history of color: The evolution of theories of light and color. Kluwer Academic,
Dordrecht
Cummins M, Newman P (2008) FAB-MAP: Probabilistic localization and mapping in the space of
appearance. Int J Robot Res 27(6):647
Cutting JE (1997) How the eye measures reality and virtual reality. Behav Res Meth Ins C 29(1):27–36
Daniilidis K, Klette R (eds) (2006) Imaging beyond the pinhole camera. Computational Imaging, vol 33.
Springer-Verlag, Berlin Heidelberg
Dansereau DG (2014) Plenoptic signal processing for robust vision in field robotics. Ph.D. thesis, The
University of Sydney
Davies ER (2017) Computer Vision: Principles, Algorithms, Applications, Learning 5th ed. Academic
Press
Davison AJ, Reid ID, Molton ND, Stasse O (2007) MonoSLAM: Real-time single camera SLAM. IEEE
T Pattern Anal 29(6):1052–1067
Deguchi K (1998) Optimal motion control for image-based visual servoing by decoupling translation
and rotation. In: Proceedings of the International Conference on Intelligent Robots and Systems
(IROS). Victoria, Canada, pp 705–711
Dellaert F, Kaess M (2006) Square root SAM: Simultaneous localization and mapping via square root
information smoothing. Int J Robot Res 25(12):1181–1203
DeMenthon D, Davis LS (1992) Exact and approximate solutions of the perspective-three-point prob-
lem. IEEE T Pattern Anal 14(11):1100–1105
Denavit J, Hartenberg RS (1955) A kinematic notation for lower-pair mechanisms based on matrices. J
Appl Mech-T ASME 22(1):215–221
Deo AS, Walker ID (1995) Overview of damped least-squares methods for inverse kinematics of robot
manipulators. J Intell Robot Syst 14(1):43–68
Deriche R, Giraudon G (1993) A computational approach for corner and vertex detection. Int J Comput
Vision 10(2):101–124
Diankov R (2010) Automated Construction of Robotic Manipulation Programs. PhD thesis, Carnegie
Mellon University, Robotics Institute, CMU-RI-TR-10-29
Dickmanns ED (2007) Dynamic vision for perception and control of motion. Springer-Verlag, London
Dickmanns ED, Graefe V (1988a) Applications of dynamic monocular machine vision. Mach Vision
Appl 1:241–261
Dickmanns ED, Graefe V (1988b) Dynamic monocular machine vision. Mach Vision Appl 1(4):223–
240
778 References
Dickmanns ED, Zapp A (1987) Autonomous high speed road vehicle guidance by computer vision.
In: Tenth Triennial World Congress of the International Federation of Automatic Control, vol 4.
Munich, pp 221–226
Dijkstra EW (1959) A note on two problems in connexion with graphs. Numer Math 1(1):269–271
Dougherty ER, Lotufo RA (2003) Hands-on morphological image processing. Society of Photo-Optical
Instrumentation Engineers (SPIE)
Dubins LE (1957). On Curves of Minimal Length with a Constraint on Average Curvature, and with
Prescribed Initial and Terminal Positions and Tangents. American Journal of Mathematics, 79(3),
497–516
Duda RO, Hart PE (1972) Use of the Hough transformation to detect lines and curves in pictures.
Commun ACM 15(1):11–15
Durrant-Whyte H, Bailey T (2006) Simultaneous localization and mapping: Part I. IEEE Robot Autom
Mag 13(2):99–110
Espiau B, Chaumette F, Rives P (1992) A new approach to visual servoing in robotics. IEEE T Robotic
Autom 8(3):313–326
Everett HR (1995) Sensors for mobile robots: Theory and application. AK Peters Ltd., Wellesley
Faugeras OD (1993) Three-dimensional computer vision: A geometric viewpoint. MIT Press, Cam-
bridge, Massachusetts
Faugeras OD, Lustman F (1988) Motion and structure from motion in a piecewise planar environment.
Int J Pattern Recogn 2(3):485–508
Faugeras O, Luong QT, Papadopoulou T (2001) The geometry of multiple images: The laws that gov-
ern the formation of images of a scene and some of their applications. MIT Press, Cambridge,
Massachusetts
Featherstone R (1987) Robot dynamics algorithms. Springer
Featherstone R (2010a) A Beginner’s Guide to 6-D Vectors (Part 1). IEEE Robotics Automation Mag-
azine, vol. 17, 83–94
Featherstone R (2010b) A Beginner’s Guide to 6-D Vectors (Part 2). IEEE Robotics Automation Mag-
azine, vol. 17, 88–99
Feddema JT (1989) Real time visual feedback control for hand-eye coordinated robotic systems. Purdue
University
Feddema JT, Mitchell OR (1989) Vision-guided servoing with feature-based trajectory generation. IEEE
T Robotic Autom 5(5):691–700
Feddema JT, Lee CSG, Mitchell OR (1991) Weighted selection of image features for resolved rate
visual feedback control. IEEE T Robotic Autom 7(1):31–47
Felzenszwalb PF, Huttenlocher DP (2004) Efficient graph-based image segmentation. Int J Comput
Vision 59(2):167–181
Ferguson D, Stentz A (2006) Using interpolation to improve path planning: The Field D algorithm. J
Field Robotics 23(2):79–101
Fischler MA, Bolles RC (1981) Random sample consensus: A paradigm for model fitting with applica-
tions to image analysis and automated cartography. Commun ACM 24(6):381–395
Flusser J (2000) On the independence of rotation moment invariants. Pattern Recogn 33(9):1405–1410
Fomena R, Chaumette F (2007) Visual servoing from spheres using a spherical projection model. In:
Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). Rome,
pp 2080–2085
Ford M (2015) Rise of the robots: Technology and the threat of a jobless future. Basic Books, New York
Förstner W (1994) A framework for low level feature extraction. In: Ecklundh J-O (ed) Lecture notes
in computer science. Computer Vision – ECCV 1994, vol 800. Springer-Verlag, Berlin Heidelberg,
pp 383–394
Förstner W, Gülch E (1987) A fast operator for detection and precise location of distinct points, corners
and centres of circular features. In: ISPRS Intercommission Workshop. Interlaken, pp 149–155
Forsyth DA, Ponce J (2012) Computer vision: A modern approach, 2nd ed. Pearson, London
Fraundorfer F, Scaramuzza D (2012) Visual odometry: Part II – Matching, robustness, optimization,
and applications. IEEE Robot Autom Mag 19(2):78–90
Freeman H (1974) Computer processing of line-drawing images. ACM Comput Surv 6(1):57–97
Friedman DP, Felleisen M, Bibby D (1987) The little LISPer. MIT Press, Cambridge, Massachusetts
Frisby JP, Stone JV (2010) Seeing: The Computational Approach to Biological Vision. MIT Press
Fu KS, Gonzalez RC, Lee CSG (1987) Robotics: Control, Sensing, Vision, and Intelligence. McGraw-
Hill
Funda J, Taylor RH, Paul RP (1990) On homogeneous transforms, quaternions, and computational
efficiency. IEEE T Robotic Autom 6(3):382–388
Gans NR, Hutchinson SA, Corke PI (2003) Performance tests for visual servo control systems, with
application to partitioned approaches to visual servo control. Int J Robot Res 22(10–11):955
Garg R, Kumar B, Carneiro G, Reid I (2016) Unsupervised CNN for Single View Depth Estimation:
Geometry to the Rescue. ECCV
Gautier M, Khalil W (1992) Exciting trajectories for the identification of base inertial parameters of
robots. Int J Robot Res 11(4):362
779
References
Geiger A, Roser M, Urtasun R (2010) Efficient large-scale stereo matching. In: Kimmel R, Klette R,
Sugimoto A (eds) Computer vision – ACCV 2010: 10th Asian Conference on Computer Vision,
Queenstown, New Zealand, November 8–12, 2010, revised selected papers, part I. Springer-Verlag,
Berlin Heidelberg, pp 25–38
Geraerts R, Overmars MH (2004) A comparative study of probabilistic roadmap planners. In: Bois-
sonnat J-D, Burdick J, Goldberg K, Hutchinson S (eds) Springer tracts in advanced robotics.
Algorithmic Foundations of Robotics V, vol 7. Springer-Verlag, Berlin Heidelberg, pp 43–58
Gevers T, Gijsenij A, van de Weijer J, Geusebroek J-M (2012) Color in computer vision: Fundamentals
and applications. John Wiley & Sons, Inc., Chichester
Geyer C, Daniilidis K (2000) A unifying theory for central panoramic systems and practical impli-
cations. In: Vernon D (ed) Lecture notes in computer science. Computer vision – ECCV 2000,
vol 1843. Springer-Verlag, Berlin Heidelberg, pp 445–461
Glover A, Maddern W, Warren M, Reid S, Milford M, Wyeth G (2012) OpenFABMAP: An open source
toolbox for appearance-based loop closure detection. In: Proceedings of the IEEE International
Conference on Robotics and Automation (ICRA). pp 4730–4735
Gonzalez RC, Woods RE (2018) Digital image processing, 4th ed. Pearson
Grassia FS (1998) Practical parameterization of rotations using the exponential map. Journal of Graph-
ics Tools 3(3):29–48
Gregory RL (1997) Eye and brain: The psychology of seeing. Princeton University Press, Princeton,
New Jersey
Grey CGP (2014) Humans need not apply. YouTube video, www.youtube.com/watch?v=7Pq-S557XQU
Grisetti G, Kümmerle R, Stachniss C, Burgard W (2010) A Tutorial on Graph-Based SLAM. IEEE
Intelligent Transportation Systems Magazine 2(4). pp 31–43
Groves PD (2013) Principles of GNSS, inertial, and multisensor integrated navigation systems, 2nd ed.
Artech House, Norwood, USA
Hager GD, Toyama K (1998) X Vision: A portable substrate for real-time vision applications. Comput
Vis Image Und 69(1):23–37
Hamel T, Mahony R (2002) Visual servoing of an under-actuated dynamic rigid-body system: An image
based approach. IEEE T Robotic Autom 18(2):187–198
Hamel T, Mahony R, Lozano R, Ostrowski J (2002) Dynamic modelling and configuration stabilization
for an X4-flyer. IFAC World Congress 1(2), p 3
Hansen P, Corke PI, Boles W (2010) Wide-angle visual feature matching for outdoor localization. Int J
Robot Res 29(1–2):267–297
Harris CG, Stephens MJ (1988) A combined corner and edge detector. In: Proceedings of the Fourth
Alvey Vision Conference. Manchester, pp 147–151
Hart PE (2009) How the Hough transform was invented [DSP history]. IEEE Signal Proc Mag 26(6):18–
22
Hart PE, Nilsson NJ, Raphael B (1968) A Formal Basis for the Heuristic Determination of Minimum
Cost Paths. IEEE Trans Systems Science and Cybernetics, 4(2):100–107
Hartenberg RS, Denavit J (1964) Kinematic synthesis of linkages. McGraw-Hill, New York
Hartley R, Zisserman A (2003) Multiple view geometry in computer vision. Cambridge University
Press, New York
Hashimoto K (ed) (1993) Visual servoing. In: Robotics and automated systems, vol 7. World Scientific,
Singapore
Hashimoto K, Kimoto T, Ebine T, Kimura H (1991) Manipulator control with image-based visual servo.
In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). Seoul,
pp 2267–2272
Heikkila J, and Silven O (1997) A four-step camera calibration procedure with implicit image cor-
rection, Proc IEEE Computer Society Conference on Computer Vision and Pattern Recognition
(CVPR), pp 1106–1112
Herschel W (1800) Experiments on the refrangibility of the invisible rays of the sun. Phil Trans R Soc
Lond 90:284–292
Hill J, Park WT (1979) Real time control of a robot with a mobile camera. In: Proceedings of the
9th ISIR, SME. Washington, DC. Mar, pp 233–246
Hirata T (1996) A unified linear-time algorithm for computing distance maps. Inform Process Lett
58(3):129–133
Hirschmüller H (2008) Stereo processing by semiglobal matching and mutual information. IEEE Trans-
actions on Pattern Analysis and Machine Intelligence 30(2):328–341
Hirt C, Claessens S, Fecher T, Kuhn M, Pail R, Rexer M (2013) New ultrahigh-resolution picture of
Earth’s gravity field. Geophys Res Lett 40:4279–4283
Hoag D (1963) Consideration of Apollo IMU gimbal lock. MIT Instrumentation Laboratory, E–1344,
https://www.hq.nasa.gov/alsj/e-1344.htm
Holland O (2003) Exploration and high adventure: the legacy of Grey Walter. Philosophical Trans of the
Royal Society of London. Series A: Mathematical, Physical and Engineering Sciences, 361(1811)
Hollerbach JM (1980) A recursive Lagrangian formulation of manipulator dynamics and a comparative
study of dynamics formulation complexity. IEEE T Syst Man Cyb 10(11):730–736, Nov
780 References
Hollerbach JM (1982) Dynamics. In: Brady M, Hollerbach JM, Johnson TL, Lozano-Pérez T, Mason
MT (eds) Robot motion – Planning and control. MIT Press, Cambridge, Massachusetts, pp 51–71
Horaud R, Canio B, Leboullenx O (1989) An analytic solution for the perspective 4-point problem.
Comput Vision Graph 47(1):33–44
Horn BKP (1987) Closed-form solution of absolute orientation using unit quaternions. J Opt Soc Am
A 4(4):629–642
Horn BKP, Hilden HM, Negahdaripour S (1988) Closed-form solution of absolute orientation using
orthonormal matrices. J Opt Soc Am A 5(7):1127–1135
Hosoda K, Asada M (1994) Versatile visual servoing without knowledge of true Jacobian. In: Pro-
ceedings of the International Conference on Intelligent Robots and Systems (IROS). Munich,
pp 186–193
Howard TM, Green CJ, Kelly A, Ferguson D (2008) State space sampling of feasible motions for high-
performance mobile robot navigation in complex environments. J Field Robotics 25(6–7):325–345
Hu MK (1962) Visual pattern recognition by moment invariants. IRE T Inform Theor 8:179–187
Hua M-D, Ducard G, Hamel T, Mahony R, Rudin K (2014) Implementation of a nonlinear attitude
estimator for aerial robotic vehicles. IEEE T Contr Syst T 22(1):201–213
Huang TS, Netravali AN (1994) Motion and structure from feature correspondences: A review. P IEEE
82(2):252–268
Humenberger M, Zinner C, Kubinger W (2009) Performance evaluation of a census-based stereo match-
ing algorithm on embedded and multi-core hardware. In: Proceedings of the 19th International
Symposium on Image and Signal Processing and Analysis (ISPA). pp 388–393
Hunt RWG (1987) The reproduction of colour, 4th ed. Fountain Press, Tolworth
Hunter RS, Harold RW (1987) The measurement of appearance. John Wiley & Sons, Inc., Chichester
Hutchinson S, Hager G, Corke PI (1996) A tutorial on visual servo control. IEEE T Robotic Autom
12(5):651–670
Huynh DQ (2009) Metrics for 3D Rotations: Comparison and Analysis. J Math Imaging Vis 35, pp
155–164
Ings S (2008) The Eye: A Natural History. Bloomsbury Publishing
Iwatsuki M, Okiyama N (2002a) A new formulation of visual servoing based on cylindrical coordinate
system with shiftable origin. In: Proceedings of the International Conference on Intelligent Robots
and Systems (IROS). Lausanne, pp 354–359
Iwatsuki M, Okiyama N (2002b) Rotation-oriented visual servoing based on cylindrical coordinates. In:
Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). Washing-
ton, DC, May, pp 4198–4203
Izaguirre A, Paul RP (1985) Computation of the inertial and gravitational coefficients of the dynamics
equations for a robot manipulator with a load. In: Proceedings of the IEEE International Conference
on Robotics and Automation (ICRA). Mar, pp 1024–1032
Jägersand M, Fuentes O, Nelson R (1996) Experimental evaluation of uncalibrated visual servoing for
precision manipulation. In: Proceedings of the IEEE International Conference on Robotics and
Automation (ICRA). Albuquerque, NM, pp 2874–2880
Jarvis RA, Byrne JC (1988) An automated guided vehicle with map building and path finding ca-
pabilities. In: Robotics Research: The Fourth international symposium. MIT Press, Cambridge,
Massachusetts, pp 497–504
Jazwinski AH (2007) Stochastic processes and filtering theory. Dover Publications, Mineola
Jebara T, Azarbayejani A, Pentland A (1999) 3D structure from 2D motion. IEEE Signal Proc Mag
16(3):66–84
Julier SJ, Uhlmann JK (2004) Unscented filtering and nonlinear estimation. P IEEE 92(3):401–422
Kaehler A, Bradski G (2017) Learning OpenCV 3: Computer vision in C++ with the OpenCV library.
O’Reilly & Associates, Köln
Kaess M, Ranganathan A, Dellaert F (2007) iSAM: Fast incremental smoothing and mapping with
efficient data association. In: Proceedings of the IEEE International Conference on Robotics and
Automation (ICRA). pp 1670–1677
Kahn ME (1969) The near-minimum time control of open-loop articulated kinematic linkages. Stanford
University, AIM-106
Kálmán RE (1960) A new approach to linear filtering and prediction problems. J Basic Eng-T Asme
82(1):35–45
Kane TR, Levinson DA (1983) The use of Kane’s dynamical equations in robotics. Int J Robot Res
2(3):3–21
Karaman S, Walter MR, Perez A, Frazzoli E, Teller S (2011) Anytime motion planning using the RRT*.
In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). pp
1478–1483
Kavraki LE, Svestka P, Latombe JC, Overmars MH (1996) Probabilistic roadmaps for path planning in
high-dimensional configuration spaces. IEEE T Robotic Autom 12(4):566–580
Kelly R (1996) Robust asymptotically stable visual servoing of planar robots. IEEE T Robotic Autom
12(5):759–766
781
References
Kelly A (2013) Mobile robotics: Mathematics, models, and methods. Cambridge University Press, New
York
Kelly R, Carelli R, Nasisi O, Kuchen B, Reyes F (2002a) Stable visual servoing of camera-in-hand
robotic systems. IEEE-ASME T Mech 5(1):39–48
Kelly R, Shirkey P, Spong MW (2002b) Fixed-camera visual servo control for planar robots. In: Pro-
ceedings of the IEEE International Conference on Robotics and Automation (ICRA). Washington,
DC, pp 2643–2649
Kenwright K (2012) Dual-Quaternions: From Classical Mechanics to Computer Graphics and Beyond.
https://xbdev.net/misc_demos/demos/dual_quaternions_beyond/paper.pdf
Khalil W, Creusot D (1997) SYMORO+: A system for the symbolic modelling of robots. Robotica
15(2):153–161
Khalil W, Dombre E (2002) Modeling, identification and control of robots. Kogan Page Science, Lon-
don
Khatib O (1987) A unified approach for motion and force control of robot manipulators: The operational
space formulation. IEEE T Robotic Autom 3(1):43–53
King-Hele D (2002) Erasmus Darwin’s improved design for steering carriages and cars. Notes and
Records of the Royal Society of London 56(1):41–62
Klafter RD, Chmielewski TA, Negin M (1989) Robotic engineering – An integrated approach. Prentice
Hall, Upper Saddle River, New Jersey
Klein CA, Huang CH (1983) Review of pseudoinverse control for use with kinematically redundant
manipulators. IEEE T Syst Man Cyb 13:245–250
Klein G, Murray D (2007) Parallel tracking and mapping for small AR workspaces. In: Sixth IEEE and
ACM International Symposium on Mixed and Augmented Reality (ISMAR 2007). pp 225–234
Klette R, Kruger N, Vaudrey T, Pauwels K, van Hulle M, Morales S, Kandil F, Haeusler R, Pugeault N,
Rabe C (2011) Performance of correspondence algorithms in vision-based driver assistance using
an online image sequence database. IEEE T Veh Technol 60(5):2012–2026
Klette R (2014) Concise Computer Vision: An Introduction into Theory and Algorithms. Springer
Koenderink JJ (1984) The structure of images. Biol Cybern 50(5):363–370
Koenderink JJ (2010) Color for the sciences. MIT Press, Cambridge, Massachusetts
Koenig S, Likhachev M (2005) Fast replanning for navigation in unknown terrain. IEEE T Robotic
Autom 21(3):354–363
Krajník T, Cristóforis P, Kusumam K, Neubert P, Duckett T (2017) Image features for visual teach-and-
repeat navigation in changing environments. Robotics And Autonomous Systems. 88 pp 127–141
Kriegman DJ, Hager GD, Morse AS (eds) (1998) The confluence of vision and control. Lecture notes
in control and information sciences, vol 237. Springer-Verlag, Berlin Heidelberg
Kuipers JB (1999) Quaternions and rotation sequences: A primer with applications to orbits, aerospace
and virtual reality. Princeton University Press, Princeton, New Jersey
Kümmerle R, Grisetti G, Strasdat H, Konolige K, Burgard W (2011) g2 o: A general framework for graph
optimization. In: Proceedings of the IEEE International Conference on Robotics and Automation
(ICRA). pp 3607–3613
Lam O, Dayoub F, Schulz R, Corke P (2015) Automated topometric graph generation from floor plan
analysis. In: Proceedings of the Australasian Conference on Robotics and Automation. Australasian
Robotics and Automation Association (ARAA)
Lamport L (1994) LATEX: A document preparation system. User’s guide and reference manual.
Addison-Wesley Publishing Company, Reading
Land EH, McCann J (1971) Lightness and retinex theory. J Opt Soc Am A 61(1):1–11
Land MF, Nilsson D-E (2002) Animal eyes. Oxford University Press, Oxford
LaValle SM (1998) Rapidly-exploring random trees: A new tool for path planning. Computer Science
Dept., Iowa State University, TR 98–11
LaValle SM (2006) Planning algorithms. Cambridge University Press, New York
LaValle SM (2011a) Motion planning: The essentials. IEEE Robot Autom Mag 18(1):79–89
LaValle SM (2011b) Motion planning: Wild frontiers. IEEE Robot Autom Mag 18(2):108–118
LaValle SM, Kuffner JJ (2001) Randomized kinodynamic planning. Int J Robot Res 20(5):378–400
Laussedat A (1899) La métrophotographie. Enseignement supérieur de la photographie. Gauthier-
Villars, 52 p
Leavers VF (1993) Which Hough transform? Comput Vis Image Und 58(2):250–264
Lee CSG, Lee BH, Nigham R (1983) Development of the generalized D’Alembert equations of motion
for mechanical manipulators. In: Proceedings of the 22nd CDC, San Antonio, Texas. pp 1205–1210
Lepetit V, Moreno-Noguer F, Fua P (2009) EPnP: An accurate O(n) solution to the PnP problem. Int J
Comput Vision 81(2):155–166
Li H, Hartley R (2006) Five-point motion estimation made easy. In: 18th International Conference on
Pattern Recognition ICPR 2006. Hong Kong, pp 630–633
Li Y, Jia W, Shen C, van den Hengel A (2014) Characterness: An indicator of text in the wild. IEEE T
Image Process 23(4):1666–1677
Li T, Bolic M, Djuric P (2015) Resampling methods for particle filtering: Classification, implementa-
tion, and strategies. IEEE Signal Proc Mag 32(3):70–86
782 References
Lin Z, Zeman V, Patel RV (1989) On-line robot trajectory planning for catching a moving object. In:
Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). pp 1726–
1731
Lindeberg T (1993) Scale-space theory in computer vision. Springer-Verlag, Berlin Heidelberg
Lipkin H (2005) A Note on Denavit-Hartenberg Notation in Robotics. Proceedings of the 29th ASME
Mechanisms and Robotics Conference, pp 921–926
Lloyd J, Hayward V (1991) Real-time trajectory generation using blend functions. In: Proceedings of
the IEEE International Conference on Robotics and Automation (ICRA). Seoul, pp 784–789
Longuet-Higgins H (1981) A computer algorithm for reconstruction of a scene from two projections.
Nature 293:133–135
Lovell J, Kluger J (1994) Apollo 13. Coronet Books
Lowe DG (1991) Fitting parametrized three-dimensional models to images. IEEE T Pattern Anal 13(5):
441–450
Lowe DG (2004) Distinctive image features from scale-invariant keypoints. Int J Comput Vision
60(2):91–110
Lowry S, Sunderhauf N, Newman P, Leonard J, Cox D, Corke P, Milford M (2015) Visual place recog-
nition: A survey. Robotics, IEEE Transactions on (99):1–19
Lu F, Milios E (1997) Globally consistent range scan alignment for environment mapping. Auton Robot
4:333–349
Lucas SM (2005) ICDAR 2005 text locating competition results. In: Proceedings of the Eighth Interna-
tional Conference on Document Analysis and Recognition, ICDAR05. pp 80–84
Lucas BD, Kanade T (1981) An iterative image registration technique with an application to stereo
vision. In: International joint conference on artificial intelligence (IJCAI), Vancouver, vol 2. https://
www.ijcai.org/Past/%20Proceedings/IJCAI-81-VOL-2/PDF/017.pdf, pp 674–679
Luh JYS, Walker MW, Paul RPC (1980) On-line computational scheme for mechanical manipulators.
J Dyn Syst-T ASME 102(2):69–76
Lumelsky V, Stepanov A (1986) Dynamic path planning for a mobile automaton with limited informa-
tion on the environment. IEEE T Automat Contr 31(11):1058–1063
Luo W, Schwing A, Urtasun R (2016) Efficient Deep Learning for Stereo Matching. IEEE Conference
On Computer Vision And Pattern Recognition (CVPR).
Luong QT (1992) Matrice fondamentale et autocalibration en vision par ordinateur. Ph.D. thesis, Uni-
versité de Paris-Sud, Orsay, France
Lynch KM, Park FC (2017) Modern robotics: Mechanics, planning, and control. Cambridge University
Press, New York
Ma Y, Kosecka J, Soatto S, Sastry S (2003) An invitation to 3D. Springer-Verlag, Berlin Heidelberg
Ma J, Zhao J, Tian J, Yuille A, Tu Z (2014) Robust Point Matching via Vector Field Consensus, IEEE
Trans on Image Processing, 23(4), pp 1706–1721
Maddern W, Pascoe G, Linegar C, Newman P (2016) 1 Year, 1000km: The Oxford RobotCar Dataset.
The International Journal of Robotics Research 36(1). pp 3–15
Magnusson M, Lilienthal A, Duckett T (2007) Scan registration for autonomous mining vehicles using
3D-NDT. J Field Robotics 24(10):803–827
Magnusson M, Nuchter A, Lorken C, Lilienthal AJ, Hertzberg J (2009) Evaluation of 3D registration
reliability and speed – A comparison of ICP and NDT. In: Proceedings of the IEEE International
Conference on Robotics and Automation (ICRA). pp 3907–3912
Mahony R, Corke P, Chaumette F (2002) Choice of image features for depth-axis control in image based
visual servo control. IEEE/RSJ International Conference On Intelligent Robots And Systems, pp
390–395 vol.1
Mahony R, Kumar V, Corke P (2012) Multirotor aerial vehicles: Modeling, estimation, and control of
quadrotor. IEEE Robot Autom Mag (19):20–32
Maimone M, Cheng Y, Matthies L (2007) Two years of visual odometry on the Mars exploration rovers.
J Field Robotics 24(3):169–186
Makhlin AG (1985) Stability and sensitivity of servo vision systems. In: Proc 5th International Con-
ference on Robot Vision and Sensory Controls – RoViSeC 5. IFS (Publications), Amsterdam,
pp 79–89
Malis E (2004) Improving vision-based control using efficient second-order minimization techniques.
In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA).
pp 1843–1848
Malis E, Vargas M (2007) Deeper understanding of the homography decomposition for vision-based
control. Research Report, RR-6303, Institut National de Recherche en Informatique et en Automa-
tique (INRIA), 90 p, https://hal.inria.fr/inria-00174036v3/document
Malis E, Chaumette F, Boudet S (1999) 2-1/2D visual servoing. IEEE T Robotic Autom 15(2):238–250
Marey M, Chaumette F (2008) Analysis of classical and new visual servoing control laws. In: Pro-
ceedings of the IEEE International Conference on Robotics and Automation (ICRA). Pasadena,
pp 3244–3249
Mariottini GL, Prattichizzo D (2005) EGT for multiple view geometry and visual servoing: Robotics
vision with pinhole and panoramic cameras. IEEE T Robotic Autom 12(4):26–39
783
References
Mariottini GL, Oriolo G, Prattichizzo D (2007) Image-based visual servoing for nonholonomic mobile
robots using epipolar geometry. IEEE T Robotic Autom 23(1):87–100
Marr D (2010) Vision: A computational investigation into the human representation and processing of
visual information. MIT Press, Cambridge, Massachusetts
Martin D, Fowlkes C, Tal D, Malik J (2001) A database of human segmented natural images and its
application to evaluating segmentation algorithms and measuring ecological statistics. Proceedings
of the 8th International Conference on Computer Vision, vol 2. pp 416–423
Martins FN, Celeste WC, Carelli R, Sarcinelli-Filho M, Bastos-Filho TF (2008) An adaptive dynamic
controller for autonomous mobile robot trajectory tracking. Control Eng Pract 16(11):1354–1363
Masutani Y, Mikawa M, Maru N, Miyazaki F (1994) Visual servoing for non-holonomic mobile robots.
In: Proceedings of the International Conference on Intelligent Robots and Systems (IROS). Munich,
pp 1133–1140
Matarić MJ (2007) The robotics primer. MIT Press, Cambridge, Massachusetts
Matas J, Chum O, Urban M, Pajdla T (2004) Robust wide-baseline stereo from maximally stable ex-
tremal regions. Image Vision Comput 22(10):761–767
Matthews ND, An PE, Harris CJ (1995) Vehicle detection and recognition for autonomous intelligent
cruise control. Technical Report, University of Southampton
Matthies L (1992) Stereo vision for planetary rovers: Stochastic modeling to near real-time implemen-
tation. Int J Comput Vision 8(1):71–91
Mayeda H, Yoshida K, Osuka K (1990) Base parameters of manipulator dynamic models. IEEE T
Robotic Autom 6(3):312–321
McGee LA, Schmidt SF (1985) Discovery of the Kalman filter as a Practical Tool for Aerospace and
Industry. NASA-TM-86847
McGlone C (ed) (2013) Manual of photogrammetry, 6th ed. American Society of Photogrammetry
McLauchlan PF (1999) The variable state dimension filter applied to surface-based structure from mo-
tion. University of Surrey, VSSP-TR-4/99
Merlet JP (2006) Parallel robots. Kluwer Academic, Dordrecht
Mettler B (2003) Identification modeling and characteristics of miniature rotorcraft. Kluwer Academic,
Dordrecht
Mičušík B, Pajdla T (2003) Estimation of omnidirectional camera model from epipolar geometry. In:
IEEE Conference on Computer Vision and Pattern Recognition, vol 1. Madison, pp 485–490
Middleton RH, Goodwin GC (1988) Adaptive computed torque control for rigid link manipulations.
Syst Control Lett 10(1):9–16
Mikolajczyk K, Schmid C (2004) Scale and affine invariant interest point detectors. Int J Comput Vision
60(1):63–86
Mikolajczyk K, Schmid C (2005) A performance evaluation of local descriptors. IEEE T Pattern Anal
27(10):1615–1630
Mindell DA (2008) Digital Apollo. MIT Press, Cambridge, Massachusetts
Molton N, Brady M (2000) Practical structure and motion from stereo when motion is unconstrained.
Int J Comput Vision 39(1):5–23
Montemerlo M, Thrun S (2007) FastSLAM: A scalable method for the simultaneous localization and
mapping problem in robotics, vol 27. Springer-Verlag, Berlin Heidelberg
Montemerlo M, Thrun S, Koller D, Wegbreit B (2003) FastSLAM 2.0: An improved particle filtering al-
gorithm for simultaneous localization and mapping that provably converges. In: Proceedings of the
18th International Joint Conference on Artificial Intelligence. Morgan Kaufmann, San Francisco,
pp 1151–1156
Moravec H (1980) Obstacle avoidance and navigation in the real world by a seeing robot rover. Ph.D.
thesis, Stanford University
Morel G, Liebezeit T, Szewczyk J, Boudet S, Pot J (2000) Explicit incorporation of 2D constraints in
vision based control of robot manipulators. In: Corke PI, Trevelyan J (eds) Lecture notes in control
and information sciences. Experimental robotics VI, vol 250. Springer-Verlag, Berlin Heidelberg,
pp 99–108
Muja M, Lowe DG (2009) Fast approximate nearest neighbors with automatic algorithm configura-
tion. International Conference on Computer Vision Theory and Applications (VISAPP), Lisbon,
Portugal (Feb 2009), pp 331–340
Murray RM, Sastry SS, Zexiang L (1994) A mathematical introduction to robotic manipulation. CRC
Press, Inc., Boca Raton
NASA (1970) Apollo 13: Technical air-to-ground voice transcription. Test Division, Apollo Spacecraft
Program Office, https://www.hq.nasa.gov/alsj/a13/AS13_TEC.PDF
Nayar SK (1997) Catadioptric omnidirectional camera. In: Proceedings of the IEEE Conference on
Computer Vision and Pattern Recognition. Los Alamitos, CA, pp 482–488
Neira J, Tardós JD (2001) Data association in stochastic mapping using the joint compatibility test.
IEEE T Robotic Autom 17(6):890–897
Neira J, Davison A, Leonard J (2008) Guest editorial special issue on Visual SLAM. IEEE T Robotic
Autom 24(5):929–931
784 References
Newcombe RA, Lovegrove SJ, Davison AJ (2011) DTAM: Dense tracking and mapping in real-time.
In: Proceedings of the International Conference on Computer Vision, pp 2320–2327
Ng J, Bräunl T (2007) Performance comparison of bug navigation algorithms. J Intell Robot Syst
50(1):73–84
Niblack W (1985) An introduction to digital image processing. Strandberg Publishing Company
Birkeroed, Denmark
Nistér D (2003) An efficient solution to the five-point relative pose problem. In: IEEE Conference on
Computer Vision and Pattern Recognition, vol 2. Madison, pp 195–202
Nistér D, Naroditsky O, Bergen J (2006) Visual odometry for ground vehicle applications. J Field
Robotics 23(1):3–20
Nixon MS, Aguado AS (2019) Feature extraction and image processing for Computer Vision, 4th ed.
Academic Press, London Oxford
Noble JA (1988) Finding corners. Image Vision Comput 6(2):121–128
Okutomi M, Kanade T (1993) A multiple-baseline stereo. IEEE T Pattern Anal 15(4):353–363
Ollis M, Herman H, Singh S (1999) Analysis and design of panoramic stereo vision using equi-angular
pixel cameras. Robotics Institute, Carnegie Mellon University, CMU-RI-TR-99-04, Pittsburgh, PA
Olson E (2011) AprilTag: A robust and flexible visual fiducial system. In: Proceedings of the IEEE
International Conference on Robotics and Automation (ICRA). pp 3400–3407
Orin DE, McGhee RB, Vukobratovic M, Hartoch G (1979) Kinematics and kinetic analysis of open-
chain linkages utilizing Newton-Euler methods. Math Biosci 43(1/2):107–130
Ortega R, Spong MW (1989) Adaptive motion control of rigid robots: A tutorial. Automatica 25(6):877–
888
Otsu N (1975) A threshold selection method from gray-level histograms. Automatica 11:285–296
Owen M, Beard RW, McLain TW (2015) Implementing Dubins Airplane Paths on Fixed-Wing UAVs.
Handbook of Uncrewed Aerial Vehicles, pp 1677–1701.
Papanikolopoulos NP, Khosla PK (1993) Adaptive robot visual tracking: Theory and experiments. IEEE
T Automat Contr 38(3):429–445
Papanikolopoulos NP, Khosla PK, Kanade T (1993) Visual tracking of a moving target by a camera
mounted on a robot: A combination of vision and control. IEEE T Robotic Autom 9(1):14–35
Patel S, Sobh T (2015) Manipulator performance measures-a comprehensive literature survey. Journal
Of Intelligent and Robotic Systems, vol. 77, pp 547–570
Paul R (1972) Modelling, trajectory calculation and servoing of a computer controlled arm. Ph.D. thesis,
technical report AIM-177, Stanford University
Paul R (1979) Manipulator Cartesian path control. IEEE T Syst Man Cyb 9:702–711
Paul RP (1981) Robot manipulators: Mathematics, programming, and control. MIT Press, Cambridge,
Massachusetts
Paul RP, Shimano B (1978) Kinematic control equations for simple manipulators. In: IEEE Conference
on Decision and Control, vol 17. pp 1398–1406
Paul RP, Zhang H (1986) Computationally efficient kinematics for manipulators with spherical wrists
based on the homogeneous transformation representation. Int J Robot Res 5(2):32–44
Piepmeier JA, McMurray G, Lipkin H (1999) A dynamic quasi-Newton method for uncalibrated vi-
sual servoing. In: Proceedings of the IEEE International Conference on Robotics and Automation
(ICRA). Detroit, pp 1595–1600
Pivtoraiko M, Knepper RA, Kelly A (2009) Differentially constrained mobile robot motion planning in
state lattices. J Field Robotics 26(3):308–333
Pock T (2008) Fast total variation for computer vision. Ph.D. thesis, Graz University of Technology
Pollefeys M, Nistér D, Frahm JM, Akbarzadeh A, Mordohai P, Clipp B, Engels C, Gallup D, Kim SJ,
Merrell P, et al. (2008) Detailed real-time urban 3D reconstruction from video. Int J Comput Vision
78(2):143–167, Jul
Pomerleau D, Jochem T (1995) No hands across America Journal. https://www.cs.cmu.edu/~tjochem/
nhaa/Journal.html
Pomerleau D, Jochem T (1996) Rapidly adapting machine vision for automated vehicle steering. IEEE
Expert 11(1):19–27
Posner I, Corke P, Newman P (2010) Using text-spotting to query the world. In: IEEE/RSJ International
Conference on Intelligent Robots and Systems (IROS). IEEE, pp 3181–3186
Pounds P (2007) Design, construction and control of a large quadrotor micro air vehicle. Ph.D. thesis,
Australian National University
Pounds P, Mahony R, Gresham J, Corke PI, Roberts J (2004) Towards dynamically-favourable quad-
rotor aerial robots. In: Proceedings of the Australasian Conference on Robotics and Automation.
Canberra
Pounds P, Mahony R, Corke PI (2006) A practical quad-rotor robot. In: Proceedings of the Australasian
Conference on Robotics and Automation. Auckland
Poynton CA (2012) Digital video and HD algorithms and interfaces. Morgan Kaufmann, Burlington
Press WH, Teukolsky SA, Vetterling WT, Flannery BP (2007) Numerical recipes, 3rd ed. Cambridge
University Press, New York
785
References
Prince SJ (2012) Computer vision: Models, learning, and inference. Cambridge University Press, New
York
Prouty RW (2002) Helicopter performance, stability, and control. Krieger, Malabar FL
Pujol J (2012) Hamilton, Rodrigues, Gauss, Quaternions, and Rotations: A Historical Reassessment.
Communications In Mathematical Analysis, vol. 13
Pynchon T (2006) Against the day. Jonathan Cape, London
Reeds J, Shepp L (1990) Optimal paths for a car that goes both forwards and backwards. Pacific Journal
Of Mathematics, vol. 145, pp 367–393
Rekleitis IM (2004) A particle filter tutorial for mobile robot localization. Technical report (TR-CIM-
04-02), Centre for Intelligent Machines, McGill University
Rives P, Chaumette F, Espiau B (1989) Positioning of a robot with respect to an object, tracking it and
estimating its velocity by visual servoing. In: Hayward V, Khatib O (eds) Lecture notes in control
and information sciences. Experimental robotics I, vol 139. Springer-Verlag, Berlin Heidelberg,
pp 412–428
Rizzi AA, Koditschek DE (1991) Preliminary experiments in spatial robot juggling. In: Chatila R,
Hirzinger G (eds) Lecture notes in control and information sciences. Experimental robotics II,
vol 190. Springer-Verlag, Berlin Heidelberg, pp 282–298
Roberts LG (1963) Machine perception of three-dimensional solids. MIT Lincoln Laboratory, TR 315,
https://dspace.mit.edu/handle/1721.1/11589
Romero-Ramirez FJ, Muñoz-Salinas R, Medina-Carnicer R (2018) Speeded up detection of squared
fiducial markers. Image and Vision Computing, vol 76, pp 38–47
Rosenfeld GH (1959) The problem of exterior orientation in photogrammetry. Photogramm Eng
25(4):536–553
Rosten E, Porter R, Drummond T (2010) FASTER and better: A machine learning approach to corner
detection. IEEE T Pattern Anal 32:105–119
Russell S, Norvig P (2020) Artificial intelligence: A modern approach, 4th ed. Pearson
Sakaguchi T, Fujita M, Watanabe H, Miyazaki F (1993) Motion planning and control for a robot per-
former. In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA).
Atlanta, May, pp 925–931
Salvi J, Matabosch C, Fofi D, Forest J (2007) A review of recent range image registration methods with
accuracy evaluation. Image Vision Comput 25(5):578–596
Samson C, Espiau B, Le Borgne M (1990) Robot control: The task function approach. Oxford Univer-
sity Press, Oxford
Scaramuzza D, Martinelli A, Siegwart R (2006) A Toolbox for Easy Calibrating Omnidirectional Cam-
eras. Proc IEEE/RSJ Int Conf on Intelligent Robots and Systems, pp 5695–5701
Scaramuzza D, Fraundorfer F (2011) Visual odometry [tutorial]. IEEE Robot Autom Mag 18(4):80–92
Scharstein D, Pal C (2007) Learning conditional random fields for stereo. In: IEEE Computer Society
Conference on Computer Vision and Pattern Recognition (CVPR). Minneapolis, MN
Scharstein D, Szeliski R (2002) A taxonomy and evaluation of dense two-frame stereo correspondence
algorithms. Int J Comput Vision 47(1):7–42
Selig JM (2005) Geometric fundamentals of robotics. Springer-Verlag, Berlin Heidelberg
Sharf I, Nahon M, Harmat A, Khan W, Michini M, Speal N, Trentini M, Tsadok T, Wang T (2014)
Ground effect experiments and model validation with Draganflyer X8 rotorcraft. Int Conf Un-
crewed Aircraft Systems (ICUAS). pp 1158–1166
Sharp A (1896) Bicycles & tricycles: An elementary treatise on their design an construction; With
examples and tables. Longmans, Green and Co., London New York Bombay
Sheridan TB (2003) Telerobotics, automation, and human supervisory control. MIT Press, Cambridge,
Massachusetts, 415 p
Shi J, Tomasi C (1994) Good features to track. In: Proceedings of the Computer Vision and Pattern
Recognition. IEEE Computer Society, Seattle, pp 593–593
Shih FY (2009) Image processing and mathematical morphology: Fundamentals and applications, CRC
Press, Boca Raton
Shirai Y (1987) Three-dimensional computer vision. Springer-Verlag, New York
Shirai Y, Inoue H (1973) Guiding a robot by visual feedback in assembling tasks. Pattern Recogn
5(2):99–106
Shoemake K (1985) Animating rotation with quaternion curves. In: Proceedings of ACM SIGGRAPH,
San Francisco, pp 245–254
Siciliano B, Khatib O (eds) (2016) Springer handbook of robotics, 2nd ed. Springer-Verlag, New York
Siciliano B, Sciavicco L, Villani L, Oriolo G (2009) Robotics: Modelling, planning and control.
Springer-Verlag, Berlin Heidelberg
Siegwart R, Nourbakhsh IR, Scaramuzza D (2011) Introduction to autonomous mobile robots, 2nd ed.
MIT Press, Cambridge, Massachusetts
Silver WM (1982) On the equivalence of Lagrangian and Newton-Euler dynamics for manipulators. Int
J Robot Res 1(2):60–70
Sivic J, Zisserman A (2003) Video Google: A text retrieval approach to object matching in videos. In:
Proceedings of the Ninth IEEE International Conference on Computer Vision. pp 1470–1477
786 References
Skaar SB, Brockman WH, Hanson R (1987) Camera-space manipulation. Int J Robot Res 6(4):20–32
Skofteland G, Hirzinger G (1991) Computing position and orientation of a freeflying polyhedron
from 3D data. In: Proceedings of the IEEE International Conference on Robotics and Automation
(ICRA). Seoul, pp 150–155
Smith R (2007) An overview of the Tesseract OCR engine. In: 9th International Conference on Docu-
ment Analysis and Recognition (ICDAR). pp 629–633
Sobel D (1996) Longitude: The true story of a lone genius who solved the greatest scientific problem
of his time. Fourth Estate, London
Soille P (2003) Morphological image analysis: Principles and applications. Springer-Verlag, Berlin Hei-
delberg
Solà J (2017) Quaternion kinematics for the error-state Kalman filter. arXiv 1711.02508
Solà J, Deray J, Atchuthan D (2018) A micro Lie theory for state estimation in robotics. arXiv
1812.01537
Spong MW (1989) Adaptive control of flexible joint manipulators. Syst Control Lett 13(1):15–21
Spong MW, Hutchinson S, Vidyasagar M (2006) Robot modeling and control, 2nd ed. John Wiley &
Sons, Inc., Chichester
Srinivasan VV, Venkatesh S (1997) From living eyes to seeing machines. Oxford University Press,
Oxford
Stachniss C, Burgard W (2014) Particle filters for robot navigation. Foundations and Trends in Robotics
3(4):211–282
Steinvall A (2002) English colour terms in context. Ph.D. thesis, Umeå Universitet
Stentz A (1994) The D algorithm for real-time planning of optimal traverses. The Robotics Institute,
Carnegie-Mellon University, CMU-RI-TR-94-37
Stewart A (2014) Localisation using the appearance of prior structure. Ph.D. thesis, University of Ox-
ford
Stone JV (2012) Vision and brain: How we perceive the world. MIT Press, Cambridge, Massachusetts
Strasdat H (2012) Local accuracy and global consistency for efficient visual SLAM. Ph.D. thesis, Im-
perial College London
Strelow D, Singh S (2004) Motion estimation from image and inertial measurements. Int J Robot Res
23(12):1157–1195
Sünderhauf N (2012) Robust optimization for simultaneous localization and mapping. Ph.D. thesis,
Technische Universität Chemnitz
Sussman GJ, Wisdom J, Mayer ME (2001) Structure and interpretation of classical mechanics. MIT
Press, Cambridge, Massachusetts
Sutherland IE (1974) Three-dimensional data input by tablet. P IEEE 62(4):453–461
Svoboda T, Pajdla T (2002) Epipolar geometry for central catadioptric cameras. Int J Comput Vision
49(1):23–37
Szeliski R (2022) Computer vision: Algorithms and applications. Springer-Verlag, Berlin Heidelberg
Tahri O, Chaumette F (2005) Point-based and region-based image moments for visual servoing of planar
objects. IEEE T Robotic Autom 21(6):1116–1127
Tahri O, Mezouar Y, Chaumette F, Corke PI (2009) Generic decoupled image-based visual servoing for
cameras obeying the unified projection model. In: Proceedings of the IEEE International Confer-
ence on Robotics and Automation (ICRA). Kobe, pp 1116–1121
Taylor RA (1979) Planning and execution of straight line manipulator trajectories. IBM J Res Dev
23(4):424–436
ter Haar Romeny BM (1996) Introduction to scale-space theory: Multiscale geometric image analysis.
Utrecht University
Thrun S, Burgard W, Fox D (2005) Probabilistic robotics. MIT Press, Cambridge, Massachusetts
Tissainayagam P, Suter D (2004) Assessing the performance of corner detectors for point feature track-
ing applications. Image Vision Comput 22(8):663–679
Titterton DH, Weston JL (2005) Strapdown inertial navigation technology. IEE Radar, Sonar, Naviga-
tion and Avionics Series, vol 17, The Institution of Engineering and Technology (IET), 576 p
Tomasi C, Kanade T (1991) Detection and tracking of point features. Carnegie Mellon University,
CMU-CS-91-132
Triggs B, McLauchlan P, Hartley R, Fitzgibbon A (2000) Bundle adjustment – A modern synthesis.
Lecture notes in computer science. Vision algorithms: theory and practice, vol 1883. Springer-
Verlag, Berlin Heidelberg, pp 153–177
Tsai RY (1986) An Efficient and Accurate Camera Calibration Technique for 3D Machine Vision. Proc
IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pp 364–374
Tsakiris D, Rives P, Samson C (1998) Extending visual servoing techniques to nonholonomic mobile
robots. In: Kriegman DJ, Hager GD, Morse AS (eds) Lecture notes in control and information sci-
ences. The confluence of vision and control, vol 237. Springer-Verlag, Berlin Heidelberg, pp 106–
117
Terzakis G, Lourakis MIA, Ait-Boudaoud D (2018) Modified Rodrigues Parameters: An Efficient Rep-
resentation of Orientation in 3D Vision and Graphics. J Math Imaging Vis. 60:422–442
787
References
Uicker JJ (1965) On the dynamic analysis of spatial linkages using 4 by 4 matrices. Dept. Mechanical
Engineering and Astronautical Sciences, NorthWestern University
Umeyama, S (1991) Least-Squares Estimation of Transformation Parameters Between Two Point Pat-
terns. IEEE Trans Pattern Analysis and Machine Intellence 13(4). pp 376–380
Usher K (2005) Visual homing for a car-like vehicle. Ph.D. thesis, Queensland University of Technology
Usher K, Ridley P, Corke PI (2003) Visual servoing of a car-like vehicle – An application of omnidirec-
tional vision. In: Proceedings of the IEEE International Conference on Robotics and Automation
(ICRA). Taipei, Sep, pp 4288–4293
Valgren C, Lilienthal AJ (2010) SIFT, SURF & seasons: Appearance-based long-term localization in
outdoor environments. Robot Auton Syst 58(2):149–156
Vanderborght B, Sugar T, Lefeber D (2008) Adaptable compliance or variable stiffness for robotic
applications. IEEE Robot Autom Mag 15(3):8–9
Vince J (2011) Quaternions for Computer Graphics. Springer
Wade NJ (2007) Image, eye, and retina. J Opt Soc Am A 24(5):1229–1249
Walker MW, Orin DE (1982) Efficient dynamic computer simulation of robotic mechanisms. J Dyn
Syst-T ASME 104(3):205–211
Walter WG (1950) An imitation of life. Sci Am 182(5):42–45
Walter WG (1951) A machine that learns. Sci Am 185(2):60–63
Walter WG (1953) The living brain. Duckworth, London
Warren M (2015) Long-range stereo visual odometry for unmanned aerial vehicles. Ph.D. thesis,
Queensland University of Technology
Weiss LE (1984) Dynamic visual servo control of robots: An adaptive image-based approach. Ph.D.
thesis, technical report CMU-RI-TR-84-16, Carnegie-Mellon University
Weiss L, Sanderson AC, Neuman CP (1987) Dynamic sensor-based control of robots with visual feed-
back. IEEE T Robotic Autom 3(1):404–417
Westmore DB, Wilson WJ (1991) Direct dynamic control of a robot using an end-point mounted camera
and Kalman filter position estimation. In: Proceedings of the IEEE International Conference on
Robotics and Automation (ICRA). Seoul, Apr, pp 2376–2384
Whitney DE (1969) Resolved motion rate control of manipulators and human prostheses. IEEE T Man
Machine 10(2):47–53
Wiener N (1965) Cybernetics or control and communication in the animal and the machine. MIT Press,
Cambridge, Massachusetts
Wilburn B, Joshi N, Vaish V, Talvala E-V, Antunez E, Barth A, Adams A, Horowitz M, Levoy M (2005)
High performance imaging using large camera arrays. ACM Transactions on Graphics (TOG) –
Proceedings of ACM SIGGRAPH 2005 24(3):765–776
Wolf PR, DeWitt BA (2014) Elements of photogrammetry, 4th ed. McGraw-Hill, New York
Woodfill J, Von Herzen B (1997) Real-time stereo vision on the PARTS reconfigurable computer. In:
Proceedings of the IEEE Symposium on FPGAs for Custom Computing Machines, Grenoble.
pp 201–210
Xu G, Zhang Z (1996) Epipolar geometry in stereo, motion, and object recognition: A unified approach.
Springer-Verlag, Berlin Heidelberg
Yi K, Trulls E, Lepetit V, Fua P (2016) LIFT: Learned Invariant Feature Transform. ECCV 2016. pp
467–483
Ying X, Hu Z (2004) Can we consider central catiodioptric cameras and fisheye cameras within a unified
imaging model. In: Pajdla T, Matas J (eds) Lecture notes in computer science. Computer vision –
ECCV 2004, vol 3021. Springer-Verlag, Berlin Heidelberg, pp 442–455
Yoshikawa T (1984) Analysis and control of robot manipulators with redundancy. In: Brady M, Paul R
(eds) Robotics research: The first international symposium. MIT Press, Cambridge, Massachusetts,
pp 735–747
Zabih R, Woodfill J (1994) Non-parametric local transforms for computing visual correspondence. In:
Ecklundh J-O (ed) Lecture notes in computer science. Computer Vision – ECCV 1994, vol 800.
Springer-Verlag, Berlin Heidelberg, pp 151–158
Zarchan P, Musoff H (2005) Fundamentals of Kalman filtering: A practical approach. Progress in As-
tronautics and Aeronautics, vol 208. American Institute of Aeronautics and Astronautics
Zhan H, Garg R, Weerasekera C, Li K, Agarwal H, Reid I (2018) Unsupervised Learning of Monocular
Depth Estimation and Visual Odometry With Deep Feature Reconstruction. IEEE Conference On
Computer Vision And Pattern Recognition (CVPR).
Zhang Z, Faugeras O, Kohonen T, Hunag TS, Schroeder MR (1992) Three D-dynamic scene analysis:
A stereo based approach. Springer-Verlag, New York
Zhou Q, Park J, Koltun V (2018) Open3D: A Modern Library for 3D Data Processing. ArXiv:1801.09847
Ziegler J, Bender P, Schreiber M, Lategahn H, Strauss T, Stiller C, Thao Dang, Franke U, Appenrodt
N, Keller CG, Kaus E, Herrtwich RG, Rabe C, Pfeiffer D, Lindner F, Stein F, Erbs F, Enzweiler M,
Knöppel C, Hipp J, Haueis M, Trepte M, Brenk C, Tamke A, Ghanaat M, Braun M, Joos A, Fritz
H, Mock H, Hein M, Zeeb E (2014) Making Bertha drive – An autonomous journey on a historic
route. IEEE Intelligent Transportation Systems Magazine 6(2):8–20
789 A–S
Index of People
B I
Babbage, Sir Charles 2 Ibn al-Haytham, Hasan 553
Ball, Sir Robert 73, 78 Ilon, Bengt 143
Bayer, Bryce E. 387
Bayes, Reverend Thomas 214 J
Beer, August 381
Black, Harold 8 Jacobi, Carl Gustav 311
Bode, Henrik 8
Boltzman, Ludwig 379 K
Braitenberg, Valentino 163
Brunel, Isambard Kingdom 335 Kálmán, Rudolf 212, 214
Bryan, George 50 Kepler, Johannes 553
C L
Čapek, Karel 2, 6 Lagrange, Joseph-Louis 350
Cardano, Gerolamo 51 Lambert, Johann Heinrich 405
Chasles, Michel 75 Land, Edwin 402
Chrétien, Henri 427 Laplace, Pierre-Simon 450, 451
Clifford, William 67 Laussedat, Aimé 584
Cook, Captain James 208, 227 Lazzarini, Mario 236
Coriolis, Gaspard-Gustave de 98 Leclerc, Georges-Louis 236
Coulomb, Charles-Augustin de 337 Lie, Sophus 740
Longuet-Higgins, Christopher 654
Lovelace, Countess Ada 2
D
Dalton, John 389 M
Davy, Sir Humphry 380
Delaunay, Boris 186 Markov, Andrey 186
Denavit, Jacques 276 Marr, David 456
Descartes, René 32 Maxwell, James Clerk 385
Devol, George C. Jr. 3, 4 McCarthy, John 8
Dijkstra, Edsger 200 McCulloch, Warren 8
Draper, Charles Stark (Doc) 109, 111, 214 Metropolis, Nicholas 236
Minsky, Marvin 8
E
Edison, Thomas Alva 380
N
Einstein, Albert 97 Newell, Allen 8
Engelberger, Joseph 4, 8 Newton, Sir Isaac 94, 95, 371, 378, 566
Euclid of Alexandria 31, 553 Nyquist, Harold 8, 471
Euler, Leonhard 49, 95, 168, 350
P
G Pitts, Walter 8
Gauss, Carl Friedrich 84, 450 Planck, Max 379
Gibbs, Josiah 84 Plücker, Julius 727
Goetz, Raymond 7 Price, Richard 214
Gray, John McFarlane 335 Ptolemy, Claudius 553
H R
Hall, Edwin 116 Rodrigues, Olinde 56, 84
Hamilton, Sir William Rowan 60, 84
Harrison, John 208
Hartenberg, Richard 276
S
Hering, Karl Ewald 386 Scheinman, Victor 260
790 Index of People
A – .landmarks 619
– .optimize 618
angdiff 134, 699
– .plot 616
angvec2r 57
– .setstate 619
– .views 619
B
BagOfWords 529, 530 C
– .contains 529
Camera
– .exemplars 529
– .reset 671
– .occurrence 529
CameraBase 544, 564, 567, 568
– .retrieve 533
CatadioptricCamera 566
– .similarity 531
– .plot_wireframe 567
– .word 529
CentralCamera 544, 547, 552, 555, 564, 567, 568, 577, 594, 604,
– .wordfreq 529
610, 612, 633, 645, 676, 682, 707
– .wwvf 530
– .C 548, 581
BaseFeature2D 517, 524
– .clf 550, 551
Bicycle 140, 156, 198, 212, 216, 221, 225, 228, 238
– .decomposeC 559
– .control 212, 221, 225, 228, 238
– .decomposeE 599, 612
– .curvature_max 198
– .decomposeH 608, 646
– .deriv 156 – .Default 561, 580, 581, 670, 673, 681, 702, 707
– .f 212 – .derivs 618
– .Fv 215 – .disp 604, 610
– .Fx 215 – .E 598, 612
– .plot_xy 215, 221, 226, 228, 239 – .epidist 601
– .q 212 – .estpose 561, 670
– .run 212, 215 – .F 597
– .step 156, 212 – .f 559, 560, 678
BinaryOccupancyGrid 193 – .flowfield 676, 678
– .set 193 – .fov 548
blackbody 379, 381, 395, 401, 403 – .images2C 556
Blobs 499, 500 – .invH 646
– .area 500 – .K 548, 577
– .aspect 500 – .move 612, 613
– .centroid 500 – .plot 556, 560, 579, 606
– .children 502 – .plot_epiline 598, 600, 604, 610
– .circularity 506 – .plot_line2 580
– .filter 501 – .plot_line3 580
– .label_image 502 – .plot_point 549–551, 595, 600, 605–607, 681
– .len 499 – .plot_wireframe 551
– .moments 500 – .points2F 600–603, 610, 634
– .orientation 500 – .points2H 605, 607, 609, 644, 647
– .parent 502 – .pp 681
– .perimeter 505, 506 – .project_line 580, 737
– .perimeter_length 506 – .project_point 544, 545, 547, 549, 550, 555, 561, 578, 599,
– .plot_box 500 600, 614, 670, 673, 674, 690
– .plot_centroid 500, 505 – .ray 612, 613, 616
– .plot_perimeter 505 – .rho 559, 560
– .polar 507 – .visjac_e 690, 691
– .roi 500 – .visjac_l 689
– .umin 500 – .visjac_p 676, 678, 681
Bug2 165 – .visjac_p_polar 701
– .plot 165 cie_primaries 393
– .run 165 circle 689, 690
BundleAdjust 615, 616 cmfrgb 391, 392, 408
– .add_landmark 616 cmfxyz 395
– .add_projection 616 Cobra600 283
– .add_view 616 color2name 396, 401, 488
– .errors 618 colorspace 399
– .getresidual 619 colorspace_convert 397, 398, 408
– .getstate 617 ctraj 107, 287, 289
1 Classes are shown in bold, methods are prefixed by a dot. Other entries are functions.
792 Index of Functions, Classes and Methods
G – .Circles 429
– .clip 440
gauss1d 759
– .close 465, 489
gauss2d 760
– .colorize 433
– .colorspace 398, 399, 486, 488
H – .Constant 442
h2e 40, 559, 597–599, 604 – .convolve 441, 442, 448, 449, 452
HarrisFeature 517, 589 – .copy 459
– .descriptor 590 – .dilate 463
– .distance 590 – .disp 184, 398, 399, 407, 411, 422–424, 426, 428–430, 433–437,
– .Harris_corner_strength 519 440, 442, 443, 448, 449, 456, 457, 459–461, 465, 469–471, 473, 474,
– .p 517 483, 484, 486, 488, 491–495, 500, 502, 505, 508, 513, 517–519,
– .plot 518, 519 521–524, 527–529, 532, 571, 573, 577, 589, 609, 622, 624, 627,
– .strength 517 629–631, 635, 636, 643, 649
– .subset 519 – .distance_transform 185, 467
Histogram 430, 437 – .draw_box 430
– .peaks 431 – .draw_circle 430
– .plot 431, 437 – .draw_line 430
homtrans 579, 605–607 – .DSI_refine 625
Hough 513 – .endpoint 466
– .lines 513 – .erode 463, 465
– .lines_p 513 – .fiducial 577
– .plot_accumulator 513 – .gamma_decode 433, 434, 437
– .plot_lines 513 – .gradients 450
– .plot_lines_p 513 – .Harris 517, 519, 589
– .votes 513 – .hist 430, 484
– .hitormiss 466
– .Hough 513
I – .Hstack 523
IBVS 681, 684, 685 – .humoments 504
– .plot_jcond 682 – .image 422, 423, 446, 452, 633
– .plot_p 682, 686 – .kmeans_color 486, 488
– .plot_pose 682 – .labels_binary 493, 502
– .plot_vel 682 – .labels_graphseg 495
– .run 682, 684, 686, 688 – .labels_MSER 494
– .step 682 – .LUT 435
IBVS_e 692 – .max 422, 430
– .Example 692 – .mean 430
– .run 692 – .median 430
IBVS_l 690 – .meshgrid 472, 558, 573, 628, 633
– .Example 690 – .metadata 611, 645
– .run 690 – .min 422, 430
IBVS_polar 702 – .mono 432
– .plot_p 702 – .morph 461–463
– .plot_pose 702 – .mpq 497
– .run 702 – .ncc 455
IBVS_sph 704 – .nonzero 496
– .run 704 – .normhist 433
idisp 419, 421, 443 – .npixels 435, 459
Image 184, 422, 491 – .open 465
– ~ 437 – .ORB 649
– * 437, 455, 456 – .otsu 484
– ** 450 – .paste 647, 648
– + 436, 437, 440, 450, 455, 456 – .peak2d 457
– - 436, 440, 465 – .plane 398, 399, 423, 437
– / 436 – .polarmatch 507
– .abs 435 – .pyramid 471
– .adaptive_threshold 484 – .Ramp 429
– .affine_warp 474 – .rank 459, 460
– .anaglyph 636 – .Read 398, 411, 422, 423, 430, 432, 437, 442, 446, 455, 456, 461,
– .apply 435 464, 470, 483, 484, 486, 491, 493, 495, 502, 508, 510, 513, 517, 519,
– .apply2 436, 450 520, 523, 525, 527, 571, 577, 589, 609, 620, 634, 643
– .blobs 499, 501–503 – .rectify_homographies 634
– .canny 451, 513 – .red 423
– .centre 474, 556 – .replicate 471
– .choose 437, 492, 627, 629 – .roi 469, 470
794 Index of Functions, Classes and Methods
U
W
UGraph 168, 200, 768
– .add_edge 168, 175, 768 WebCam 427
– .add_vertex 168, 175, 200, 768 – .grab 428
– .average_degree 170 wrap_0_2pi 699
– .closest 769 wrap_mpi_pi 134, 699
– .degree 169
– .distance 200
– .highlight_path 170
X
– .highlight_vertex 174 xplot 103, 106, 110, 118, 120, 286, 287, 289, 314, 357
– .n 169
– .nc 170
– .ne 169
Y
– .neighbors 169 YuMi 273
– .path_Astar 174–176, 769
– .path_BFS 170
– .path_UCS 172
Z
– .plot 169, 170, 174, 769 ZipArchive 424, 649
799 B–Z
Index of Models
Index of Models2
B L
braitenberg 162, 163 lanechange 132, 133
C O
computed-torque 360 opspace 366
D P
driveconfig 140 ploop 346, 347
driveline 136 ploop-test 346, 347
drivepoint 134, 135
drivepursuit 137 Q
quadrotor 150, 151
F
feedforward 359 R
RRMC 313, 314
I RRMC2 315
IBVS 683
IBVS-arm 705, 706 S
IBVS-driveconfig 709 SEA 368, 369
IBVS-drivepoint 707
IBVS-holonomic 708
IBVS-nonholonomic 709 V
IBVS-partitioned 699, 700 vloop 342, 371, 372
IBVS-quadrotor 710, 711 vloop-test 342, 343
J Z
jointspace 288 zerotorque 357
2 These block diagram models are included in the rvc3python package in the folder models. To run them requires the bdsim package.
801 A
General Index
coordinates – QR 722
– Cartesian 31, 32, 44 – RQ 559
– Euclidean 734 – singular value 445, 642, 724, 750
– exponential 57, 69, 101, 311, 742 – spectral 723
– generalized 78, 259, 275 deep learning 491
– homogeneous 38, 734 – COCO dataset 508
– image-plane 675 – Faster R-CNN 508
– joint 308 – object detection 508
– nonhomogeneous 38 – PASCAL VOC dataset 491
– normalized 675 – PyTorch 491
– normalized, image 542 – ResNet-50 491
– Plücker 726 degrees of freedom 52, 78, 101, 146, 152, 154, 259, 282, 289, 310, 316,
– retinal, image 542 318, 674, 695, 698, 711
Coriolis Denavit-Hartenberg
– acceleration 97, 98, 122 – constraints 274, 296
– coupling 348, 353 – modified notation 298
– matrix 353 – notation 274, 299
corner point (see point feature) 514 – parameters 267, 275, 296
Cornu spiral 195 – standard vs modified 299
correlation 441 dense stereo, see stereo 620
correspondence 637, 643, 650 depth of field 543
– inliers 601, 602, 610, 651 derivative
– outliers 601, 602, 609 – SO.3/ 88, 89
– point 600, 651 – Euler angles 312
– point feature 589, 590, 622, 680, 690 – exponential coordinates 312
– problem 588, 690 – of Gaussian 449, 451, 516
– putative 592, 602 – orientation 88
cost map 182 – pose 89
Coulomb friction 336, 340 – quaternion 89
covariance matrix 210, 211, 216, 217, 219, 224, 226, 240, 760 – roll-pitch-yaw angles 151
– correlation 210, 760, 765 derotation, optical flow 685
– ellipse 217 detector
– extending 225 – Harris 517, 589
– transformation 764, 766 – SIFT 589
crack code 505 – zero crossing 452
crawl gait 293 determinant 518, 723
cropping 469 – of Hessian 518
cross product 58, 71, 718 dichromat 384
C-space (see configuration space) 78 dichromatic reflection 406
curvature 194, 520 difference of Gaussian (DoG) 453
– image 516 differential
– maximum 189 – kinematics 308
– path 189, 195 – steering 140
– perimeter 507 diopter (see also focal length) 541
– polynomial 195 dip angle 114
– principal 516 Dirac function 378, 410
cybernetics 4, 8, 161, 162, 202 direct linear transform 554, 583
cylinder 737 direction cosine matrix (DCM) 69
disparity 621, 627
– image 622
D – space image (DSI) 623
D* planning 182 displacement, spatial 94
D65 white 400, 401, 408 distance
d’Alembert, force 97 – angular 704
Daltonism 389 – city-block 177
damped inverse 320, 753 – Euclidean 177, 178
data association 207, 208, 223, 589, 600, 602 – Hamming 458
DCM (Direction Cosine Matrix) 69 – L1 177, 717
dead reckoning 206, 210 – L2 177, 717, 718
declination – Mahalanobis 223, 722, 760
– angle 114, 115 – Manhattan 177, 178, 718
– magnetic 114 – orientation 69
decomposition – p-norm 717
– camera matrix 559 – transform 177, 185, 467, 468
– essential matrix 599 – triangle inequality 70
– homography matrix 608 distortion
806 General Index
equivalent F
– ellipse 498, 729
FAST detector 591
– ellipsoid 641
Faster R-CNN network 508
error FastSLAM 240
– cumulative 230 feature 480
– ellipse 217 – depth 684
– landmark 240 – descriptor 524, 590
– reprojection 619 – detector (see point feature detector) 523
essential matrix 598, 599, 610, 612 – ellipse 676, 690
estimation – extraction 13
– camera matrix 554 – Harris corner 517
– camera pose 560, 670, 709 – line 510, 688
– fundamental matrix 600 – map 221, 228
– homography 605 – point 514
– Monte-Carlo 214, 236, 246 – point (see point feature) 514
– Structure and Motion (SaM) 615, 712 – region 482
– vehicle pose 209 – region (see region feature) 482
estimator – scale 523
– maximum likelihood 754 – scale space 522, 523
– robust 754 – sensitivity matrix, see Jacobian, image 674
Euclidean – SIFT 523
– coordinates 734 – vector 482, 590
– distance 31, 178, 769 feedforward control 151, 345, 346, 358
– geometry 31, 725 fibre-optic gyroscope (FOG) 108
– homography 608, 646 fictitious force 97, 112
– length 718 fiducial marker 126, 223, 576
– plane 31, 735 field
– point 735 – geomagnetic 114
– space 78, 738 – magnetic, flux density 117
– transformation 738 – of view 548, 549, 561
Euler – robot 4, 128
– acceleration 97 – vector 747
– angles 48, 49, 311 file type
– rate of change 312 – COLLADA 271
– singularity 50 – image 420, 421
– parameters 57, 59 – JFIF 407
– -Rodrigues formula 57 – LAGO 233
– rotation theorem 48 – PCD 658
– rotational motion equation 95, 148, 348 – PLY 640
– spiral 195 – STL 271
– vector 57, 95, 742 – TORO 233
EV (exposure value) 425 – URDF 270
EXIF – video 427
– file format 421 fill factor 425, 550
– metadata 407 filter
explicit complementary filter 119 – anti-aliasing 471, 474
exponential – bandpass 449
– coordinates 59, 69, 311, 312 – Bayer 387
– rate of change 312 – box 442
– mapping 71, 73 – coefficients 441
– matrix 35, 57, 58, 63, 71, 74 – color 387
– product of (PoE) 299 – complementary 119
exposure – edge preserving 460
– time 425 – extended Kalman (EKF) 119, 765
– value 455 – high-pass 449
– value (EV) 425, 426 – Kalman 121, 212, 220, 223, 229, 235, 240, 245, 247, 763
extended Kalman filter (EKF), see Kalman filter 212 – low-pass 449, 471
exteroception 8 – median 460
extromission theory 378 – particle 236, 237, 238, 240, 241
eye – rank 459
– evolution of 11 – separable 445
– see also human eye 383 – spatial 441
– spots 11 fisheye lens 562
eye-in-hand visual servo, see visual servo 668 flux
– density, magnetic 114
– luminous 386, 388
808 General Index
– rotational 72, 95 nonlocal-maxima suppression 450, 451, 457, 460, 513, 517, 519, 772
– screw 65 nonparametric transform 458, 630
– segment 102 normal matrix 721
– sickness 112 normalization
– straight-line 287 – SE.3/ matrix 71
– task-space 314 – histogram 433, 475
– translational 43, 65, 72, 95 – homogeneous transformation 670, 681
motor 340 – rotation matrix 70
– limit 344 – unit dual quaternion 67
– power 344 – unit quaternion 71
– speed 100, 344 normalized
– torque 344 – cross correlation (see NCC) 455
– servo 334 – image coordinates 542, 598, 607, 675
– stepper 334 – moment 504
– torque 335, 339 north
– torque constant 335, 344, 346 – magnetic 114
MSER (maximally stable extremal regions) 494 – true 114
– descriptor 591 north-east-down (NED) 107
multi-pathing 209 notation 14, xxi
multirotor, see quadrotor 146 null space 724, 750
nullity 724
number
N – dual 67
nautical – hypercomplex 59
– angles 50 numerical optimization 280
– chronometer 208
– mile 206
navigation 155, 160
O
– chart 207 object detection
– dead reckoning 206 – deep learning 508
– inertial 88, 93, 107, 117, 150 – segmentation 492
– landmark 207 objective lens 540
– landmark-based 206, 218 obstacle inflation 181
– map-based 161, 166 occlusion 490
– marine 226 occupancy grid 164, 167, 177, 178, 244, 245, 429
– principles 206 OCR (see optical character recognition) 525
– radio 107, 209 octree 640
– reactive 160, 161 odometer 210
– spacecraft 52, 108 odometry
NCC 455 – lidar 242
near infrared (NIR) 412 – visual 210, 649
NED (north-east-down) 107 – visual (VO) 649
nested control loop 334 – wheel 210, 211, 230
Newton omnidirectional
– -Euler method 348, 370 – camera 549, 574
– first law 97 – motion 130, 143, 165, 177, 189
– method 752 – wheel 144
– -Raphson method 752 OmniSTAR 209
– second law 95, 97, 111, 147, 348, 371 Open3D 633
Newtonian telescope 561 OpenCV 13, 477
NIR 412 operational space 78
noise – control 366, 367
– Gaussian 212, 216, 223, 555, 561 – dynamics 360, 361
– image 425 operator
– impulse 459 – ı 59
– odometry 211, 213 – 134
– pixel 449, 465 – 25, 27
– process 762 – ˚ 24, 27
– sensor 220, 235, 762 – 27, 59
– thermal 425 – Canny edge 452
nomenclature xxi – closing 463
noncentral imaging 566 – convolution 441
nonholonomic 129 – correlation 441
– constraint 132, 143, 154, 652 – derivative of Gaussian 451
– system 154 – difference of Gaussian 523
nonintegrable constraint 154 – dilation 462
816 General Index