0% found this document useful (0 votes)
4 views

A_Multibody_Dynamics_Notation_Revision_2_

The document presents a revised notation for multibody dynamics, enhancing the original framework for describing kinematics and dynamics of mechanical systems with rigid bodies. Key improvements include an expanded section on frame acceleration and a shift to boldface fonts for notation clarity, while maintaining a compact and precise approach aligned with Lie group formalism. The report serves as a comprehensive guide for researchers in robotics and geometric mechanics, detailing the mathematical foundations and applications of the notation.

Uploaded by

chris7462
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

A_Multibody_Dynamics_Notation_Revision_2_

The document presents a revised notation for multibody dynamics, enhancing the original framework for describing kinematics and dynamics of mechanical systems with rigid bodies. Key improvements include an expanded section on frame acceleration and a shift to boldface fonts for notation clarity, while maintaining a compact and precise approach aligned with Lie group formalism. The report serves as a comprehensive guide for researchers in robotics and geometric mechanics, detailing the mathematical foundations and applications of the notation.

Uploaded by

chris7462
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Multibody dynamics notation (version 2)

Citation for published version (APA):


Traversaro, S., & Saccon, A. (2019). Multibody dynamics notation (version 2). Technische Universiteit
Eindhoven.

Document status and date:


Published: 04/11/2019

Document Version:
Publisher’s PDF, also known as Version of Record (includes final page, issue and volume numbers)

Please check the document version of this publication:


• A submitted manuscript is the version of the article upon submission and before peer-review. There can be
important differences between the submitted version and the official published version of record. People
interested in the research are advised to contact the author for the final version of the publication, or visit the
DOI to the publisher's website.
• The final author version and the galley proof are versions of the publication after peer review.
• The final published version features the final layout of the paper including the volume, issue and page
numbers.
Link to publication

General rights
Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners
and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights.

• Users may download and print one copy of any publication from the public portal for the purpose of private study or research.
• You may not further distribute the material or use it for any profit-making activity or commercial gain
• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please
follow below link for the End User Agreement:
www.tue.nl/taverne

Take down policy


If you believe that this document breaches copyright please contact us at:
[email protected]
providing details and we will investigate your claim.

Download date: 27. Aug. 2024


Multibody Dynamics Notation (Version 2)
by Silvio Traversaro, Alessandro Saccon

Report Title Multibody Dynamics Notation (Version 2)


Authors Silvio Traversaro and Alessandro Saccon
Date November 4, 2019
Department Department of Mechanical Engineering
Chair Dynamics and Control Section
Report locator DC2019.100

1
1 Introduction
This document provides a revision of the notation originally introduced in [20]
for describing kinematics and dynamics quantities of mechanical systems com-
posed by several rigid bodies. Relative to the first edition, this new version
includes an expanded section on frame acceleration (Section 5.4), the correction
of a few typos, and the change of the fonts used in the notation from single face
to bold face.
The notation detailed in this document is inspired by the well-known Feath-
erstone notation introduced in [7], also used, with small adaptations, in the
Handbook of Robotics [16]. Featherstone’s notation, while being extremely
compact and pleasant for the eye, is not fully in accordance with Lie group for-
malism, with the potential of creating a misunderstanding between the robotics
and geometric mechanics communities.
The Lie group formalism is well established in the robotics literature [13, 14,
10]. However, it is less compact than Featherstone’s notation [7], leading to long
expressions when several rigid bodies are present as in the case of a complete
dynamic model of humanoid or quadruped robots.
This report aims, therefore, at getting the best from these two worlds. The
notation strives to be compact, precise, and in harmony with Lie Group formal-
ism. The document furthermore introduces a flexible and unambiguous notation
to describe the Jacobians mapping generalized velocities of an arbitrary frame
to Cartesian linear and angular velocities, expressed with respect to a reference
frame of choice.

2 A quick overview on the developed notation


Quick reference list for the symbols used in this document. Precise definition is
given in the text below.
A,B,C, . . . coordinate frames
p an arbitrary point
oB origin of B
[A] orientation frame associated to A
B[A] frame with origin oB and orientation [A]
A
p coordinates of point p w.r.t. to A
A
oB coordinates of the origin oB w.r.t. to A
A
HB homogeneous transformation from B to A
A
XB velocity transformation from B to A

2
C
vA,B twist expressing the velocity of B w.r.t. to A written in C
C ∧
vA,B 4 × 4 matrix representation of C vA,B
C
vA,B × 6 × 6 matrix representation of the twist cross product
C
vA,B ׯ∗ 6 × 6 matrix representation of the dual cross product
C
aA,B acceleration of a frame B w.r.t. frame A, written in C
Bf coordinates of the wrench f w.r.t. B
B
AX wrench transformation from B to A
B
B f , vA,B duality pairing between a wrench and a twist
C
JA,B Jacobian relating the velocity of B w.r.t. A expressed in C
C
JA,B/F Jacobian relating the velocity of B w.r.t. A expressed in C,
where the moving-base velocity is expressed in F
L
B MB 6 × 6 inertia tensor of link L expressed w.r.t. frame B
L
B IB 3 × 3 inertia tensor of link L expressed w.r.t. frame B

3 Math preliminaries
3.1 Notation
The following notation is used throughout the document.
• The set of real numbers is denoted by R. Let u and v be two n-dimensional
column vectors of real numbers, i.e. u, v ∈ Rn , then their inner product
is denoted as uT v, with “T ” the transpose operator.
• The identity matrix of dimension n is denoted In ∈ Rn×n ; the zero column
vector of dimension n is denoted 0n ∈ Rn ; the zero matrix of dimension n×
m is denoted 0n×m ∈ Rn×m .

• The set SO(3) is the set of R3×3 orthogonal matrices with determinant
equal to one, namely

SO(3) := { R ∈ R3×3 | RT R = I3 , det(R) = 1 }. (1)

When endowed with matrix multiplication, SO(3) becomes a Lie group,


the Special Orthogonal group of dimension three.
• The set so(3), read little so(3), is the set of 3×3 skew-symmetric matrices,

so(3) := { S ∈ R3×3 | ST = −S }. (2)

When endowed with the matrix commutator as operation, the set becomes
a Lie algebra.
• The set SE(3) is defined as
  
R p 4×4 3
SE(3) := ∈R | R ∈ SO(3), p ∈ R . (3)
01×3 1

When endowed with matrix multiplication, it becames the Special Eu-


clidean group of dimension three, a Lie group that can be used to represent
rigid transformations and their composition in the 3D space.

3
• The set se(3) is defined as
  
Ω v 4×4 3
se(3) := ∈R | Ω ∈ so(3), v ∈ R . (4)
01×3 0
When endowed with the matrix commutator as operation, se(3) becomes
the Lie algebra of the Lie group SE(3).
• Given the vector w = (x; y; z) ∈ R3 , we define w∧ (read w hat) as the 3 × 3
skew-symmetric matrix
 ∧  
x 0 −z y
w∧ = y  :=  z 0 −x ∈ so(3). (5)
z −y x 0

Given the skew-symmetric matrix W = w∧ , we define W ∨ ∈ R3 (read W


vee) as
 ∨  
0 −z y x
W∨ =  z 0 −x := y  ∈ R3 . (6)
−y x 0 z
Clearly, the vee operator is the inverse of the hat operator.
• Given a vector v = (v; ω) ∈ R6 , v and ω ∈ R3 , we define
 ∧  ∧ 
v ω v
v∧ = := ∈ se(3). (7)
ω 01×3 0

• Similarly to what done for vectors in R3 few lines above, we define the vee
operator as the inverse of the hat operator such that
 ∧ ∨  
ω v v
:= = v ∈ R6 . (8)
01×3 0 ω

• Given two normed vector spaces, E and F , and a function f : E 7→ F , we


define (where it exists) the differential of f at x̄ ∈ E as the linear function
Df (x̄) : E 7→ F such that
||f (x) − f (x̄) − Df (x̄) · (x − x̄)||
lim = 0. (9)
x→x̄ ||x − x̄||
When E = F = R, the differential Df evaluated at x = x̄ in the direc-
tion z is simply the classical derivative of a function multiplied by the
perturbation z ∈ R, i.e.,
df
Df (x̄) · z = z.
dx x=x̄

When E = Rn and F = Rm , then Df (x̄) has the following matrix repre-


sentation  ∂f 
1 ∂f1 ∂f1
∂x1 ∂x2 . . . ∂x n
 ∂f2 ∂f2 ∂f2 
 ∂x1 ∂x 2
. . . ∂x n

[[Df (x̄)]] = 
 .. .. .. .. 
.

 . . . 
∂fm ∂fm
∂x1 ∂x2 . . . ∂f m
∂xn x=x̄

4
and Df (x̄) · z should be interpreted as the vector [[Df (x̄)]][[z]] obtained by
multiplying the matrix [[Df (x̄)]] with the vector [[z]].
The power of the notation Df (x) · z lies on the fact that it can deal
with even more general maps such as those where the input and output
spaces are (normed) matrix vector spaces, such as E = Rn×m and F =
Rl×p equipped with the Frobenius norm. This is particularly useful when
dealing with maps such as a robot’s forward kinematics, where one deals
with maps of the form f : Rn → R4×4 representing the pose (position and
orientation) of each rigid link.
When E = E1 × E2 × · · · × Ep and consequently having f as a map
E 3 (x1 , x2 , . . . , xp ) 7→ f (x1 , . . . , xp ) ∈ F , we will use D1 f , D2 f , . . . , Dp f
to refer to the differential of f with respect to its first, second, . . . , p-th
argument. For further details on this derivative notation, we refer the
reader to [1, Section 2.3] and [18, Chapter 2].

4 Points and coordinate frames


A frame is defined as the combination of a point (called origin) and an orien-
tation frame in the 3D space [4, 19]. We typically employ a capital letter to
indicate a frame. Given a frame A, we will indicate with oA its origin and with
[A] its orientation frame. Formally, we write A = (oA , [A]).
Frames can be time moving with respect to a given reference frame and can
be used, e.g., to describe the position and orientation in space of a rigid body
as time evolves. They are also used to express a coordinate system for a wrench
exchanged by two bodies or used to define a coordinate system to describe a
robot task, such as a frame attached to the center of mass and oriented as the
inertial frame.
Newton’s mechanics requires the existence of an inertial frame. In this doc-
ument, we usually indicate this inertial frame with the letter A (where A stands
for Absolute). As common practice, for robots operating near the Earth sur-
face, we will assume the frame A to be fixed to the world’s surface, disregarding
non-inertial effects due to the Earth’s motion.

4.1 Coordinate vector of a point


Given a point p, its coordinates with respect to a frame A = (oA , [A]) are
collected in the coordinate vector A p. The coordinate vector A p represents the

coordinates of the 3D geometric vector r oA ,p connecting the origin of frame A
with the point p, pointing towards p, expressed in the orientation frame [A].
Mathematically, we write this as that is
→ →

r oA ,p · x A
A → → 
p :=  r oA ,p · y A  ∈ R3 , (10)
→ →
r oA ,p · z A
→ → →
where · denotes the scalar product between two vectors and x A , y A , z A , are
the unit vectors defining the orientation frame [A].

5
4.2 Change of orientation frame
Given two frames A and B, we will employ the notation
A
RB ∈ SO(3) (11)

to denote the coordinate transformation from frame B to frame A. The coordi-


nate transformation A RB only depends on the relative orientation between the
orientation frames [A] and [B], irrespectively of the position of the origins oA
and oB .

4.3 Homogeneous transformation


To describe the position and orientation of a frame B with respect to another
frame A, we employ the 4 × 4 homogeneous matrix
A
RB A oB

A
HB := . (12)
01×3 1

Given a point p, the homogeneous transformation matrix A HB can be also


used to map the coordinate vector A p to B p as follows. Let A p̄ and B p̄ denote
the homogenous representation of A p and B p, respectively. That is, let A p̄ :=
(A p; 1) ∈ R4 and likewise for B p̄ (the symbol ; indicates row concatenation).
Then
A
p̄ = A HB B p̄, (13)

which is the matrix form of A p = A RB B p + A oB . We refer to [13, Chapter 2]


for further details on homogeneous representation of rigid transformations.

5 Velocity vectors (twists)


In the following, given a point p and a frame A, we define

A d A

ṗ := p . (14)
dt
In particular, when p is the origin of a frame, e.g., p = oB , we have

A d A

ȯB = oB .
dt
It is important to note that, by itself, expressions like ȯB or ṗ have no meaning.
Similarly to (14), we also define

A d A

ṘB := RB (15)
dt

and
A A

A d A
 ṘB ȯB
ḢB := HB = . (16)
dt 01×3 0

6
The relative velocity between a frame B with respect to a frame A can be
represented by the time derivative of the homogenous transformation matrix
A
HB ∈ SE(3). A more compact representation of A ḢB can be obtained by
multiplying it by the inverse of A HB on the left or on the right. In both cases,
the result is an element of se(3) that will be called a twist. Multiplying on the
left, one obtains
A T
RB −A RTB A oB A ṘB A ȯB
 
A −1 A
HB ḢB =
01×3 1 01×3 0
A T A A TA

RB ṘB RB ȯB
= . (17)
01×3 0

Note that A RTB A ṘB appearing on the right hand side of (17) is skew symmetric.
Define B vA,B and B ωA,B ∈ R3 so that
B
vA,B := A RTB A ȯB , (18)
B ∧
ωA,B := A RTB A ṘB . (19)

The left trivialized velocity of frame B with respect to frame A is


B 
B vA,B
vA,B := B ∈ R6 . (20)
ωA,B

By construction,
B ∧
vA,B = A H−1
B
A
ḢB . (21)

Note the slight abuse of notation in using the hat operator ∧ in (19) and (21)
that maps a vector into its corresponding matrix representation (respectively,
from R3 to R3×3 using (5) in (19) and from R6 to R4×4 using (7) in (21)).
Similarly to what is done in (17), right multiplying A ḢB by the inverse of A HB
leads to

ṘB A ȯB A RTB −A RTB A oB


A  
A A −1
ḢB HB =
01×3 0 01×3 1
A 
ṘB A RTB A ȯB − A ṘB A RTB A oB
= . (22)
01×3 0

Define A vA,B and A ωA,B ∈ R3 as


A
vA,B := A ȯB − A ṘB A RTB A oB (23)
A ∧ A A
ωA,B := ṘB RTB . (24)

The right trivialized velocity of B with respect to A is then defined as


A 
A vA,B
vA,B := A ∈ R6 . (25)
ωA,B

By construction,
A ∧
vA,B = A ḢB A H−1
B . (26)

7
5.1 Expressing a twist with respect to an arbitrary frame
Straightforward algebraic calculations allow to show that the right and left
trivialized velocities A vA,B and B vA,B are related via a linear transformation.
Inspired by the notation introduced in [7], we denote this linear transformation
with A XB and define it as

RB A o ∧
A A

A RB
XB := B
A ∈ R6×6 . (27)
03×3 RB

As mentioned, the right and left velocities then satisfy


A
vA,B = A XB B vA,B . (28)

The inverse transformation of A XB is given by B XA and it is straightforward


to show that B XA = A X−1 A A B
B (recall that oB = − RB oA ).

Lie group theory related notes. To draw a connection with Lie group
theory, indicating with g = gA,B := A HB ∈ SE(3) an arbitrary element of the
Special Euclidean group (i.e., a rigid transformation), A XB is nothing else than
Adg . Given g ∈ SE(3) and ξ ∈ se(3), then

Adg ξ := g ξ g −1 ∈ se(3). (29)

The operator Ad : SE(3)×se(3) → se(3) is the adjoint action of the group SE(3)

to its algebra se(3). Taking g = A HB and ξ = B vA,B , one sees immediately
that g ξ g −1 appearing in the right hand side of (29) equals
A ∧ A −1
HB B vA,B HB , (30)
B
which, recalling the definition of vA,B given in (21), is equivalent to
A
ḢB A H−1 A ∧
B = vA,B , (31)

by definition of A vA,B given in (26). The adjoint action of the group SE(3) to
its algebra se(3), given by (29), is linear with respect to its second argument.
It is therefore possible, when representing se(3) as a vector in R6 (as done in
(7)) to define the adjoint action (with a slight abuse of notation) as a map
Ad : SE(3) × R6 → R6 . In this way, for g = A HB , one gets with straightforward
computations that A vA,B = Adg B vA,B , with Adg = A XB given in (27).
Given the ubiquity of the velocity transformation AdgA,B (and its associate
wrench transformation Ad∗gA,B that we will introduce in Section 6) in multibody
dynamics computations, it is convenient to indicate it simply with the compact
notation A XB (respectively, B XA ). We stress here, however, the importance
to not forget its connection with Lie group theory: this can help, in particular,
to be able to understand the body of literature on geometric mechanics written
with the standard Ad notation. 

We conclude this section by introducing the notation C vA,B , indicating the


velocity of frame B with respect to frame A expressed in frame C. The left

8
and right trivialized velocities B vA,B and A vA,B , respectively given by (21) and
(26), are special cases of this concept. Formally, we define
C 
v
C
vA,B = C A,B ∈ R6 (32)
ωA,B
as
C
vA,B := C XA A vA,B = C XB B vA,B . (33)
C
The latter equality follows from (28) and the identity XA A XB = C XB .

5.2 On the linear and angular components of a twist


As evident from (19) and (24), the angular component of the twists B vA,B
and A vA,B depends only on the relative orientation between the frames A and
B (given by the rotation matrix A RB ) and its time evolution. This angular
component corresponds to the classic concept of angular velocity found in un-
dergraduate physics textbooks and it can be expressed with respect to a different
orientation frame simply by multiplying its coordinates by a suitable rotation
matrix. One gets, in this way, that
C
ωA,B = C RB B ωA,B = C RA A ωA,B . (34)

The linear component of the twists B vA,B and A vA,B requires, instead, a bit
more of attention. While B vA,B in (18) is the time derivative of A oB (the
coordinate vector of the origin of B with respect to the frame A) expressed in
the frame B, A vA,B is not the time derivative of A oB , but instead the (initially)
somehow counterintuitive expression given in (23). At each instant of time, the
linear velocity A vA,B is the linear velocity of the point, thought as fixed with
respect to frame B, that finds itself at the origin of frame A at the given instant
of time. The right trivialized velocity A vA,B is a key ingredient in understanding
the efficient numerical algorithms for multibody dynamics described, e.g., in
[7, 9, 14]. It also finds application in geometric mechanics when defining concepts
such as a mechanical symmetry or a momentum map [11, 2, 12].
There are situations in which, however, one would like to describe the linear
and angular velocity of a frame with the somehow natural velocities A ȯB and
A
ωA,B , respectively. With the notation introduced in this documents, this is
possible by introducing a special frame obtained combining the frames A and
B. Namely, one needs to express the velocity of frame B with respect frame A
in the new frame B[A] := (oB , [A]), that is, in the frame whose origin coincides
with the origin of B and whose orientation coincides with the orientation of A.
In this way, one gets
A  B
RA A ȯB
  A 
B[A] RB 0 ȯB
vA,B = B[A] XB B vA,B = A B = A . (35)
0 RB ωA,B ωA,B

In [3], the velocity (35) is referred to as the hybrid velocity of frame B with
respect to frame A. To avoid confusion with hybrid systems theory, however,
in this document we will call (35) the mixed velocity of frame B with respect to
frame A (we call it mixed as it has both the flavor of a left trivialized velocity due
to the linear velocity part and of a right trivialized velocity due to the angular
velocity part).

9
5.3 The cross product on R6 (×)
B
The defining equation for the velocity vA,B given by (21) can be rewritten as
A ∧
ḢB = A HB B vA,B . (36)

By differentiating with respect to time the velocity transformation A XB given


in (27), a formula similar in structure to (36) can be obtained that prescribes
the time evolution of A XB as a function of B vA,B . Namely, one gets
A
ẊB = A XB B vA,B × (37)
B
where the term vA,B × is defined as
B ∧ B ∧

B ωA,B vA,B
vA,B × := B ∧ . (38)
03×3 ωA,B

We will refer to (38) as the matrix representation of the cross product on R6 .

Basic properties of the cross product. The cross product between vectors
of R6 that derives from (38) satisfies the classical anticommutative property
C
vA,B × C vD,E = − C vD,E × C vA,B . (39)
C
A direct consequence of the anticommutativity is that, for any vA,B ,
C C
vA,B × vA,B = 06×1 . (40)

Velocity transformation and the cross product. The cross product of


velocity vectors defined via (38) satisfies the distributive property
A
XB B vA,B × = (A XB B vA,B ) × A XB = A vA,B × A XB . (41)

Lie group theory related notes. For someone knowledgeable with the the-
ory of Lie groups, a deeper look at the cross product defined via (38) reveals
that this operation turns R6 into a Lie algebra (a vector space with a anticom-
mutative bilinear operation satisfying the Jacobi identity [11, Chapter 9]).
Indeed, (38) is nothing else then the matrix representation of the adjoint
action of R6 on itself, indicated with ad, once we interpret R6 as the Lie algebra
induced by the Lie algebra homeomorphism between R6 and se(3) provided by
the hat (∧ ) operator defined in (7). Defining g = A HB ∈ SE(3), then (37) can
be rewritten in the usual form (cf. [11, Chapter 9, equation (9.3.4)]) as
d
Adg = Adg adg−1 ġ , (42)
dt
where Adg = A XB , adg−1 ġ = A vA,B ×, and g −1 ġ = B vA,B

. This standard Lie
group notation, employing Ad and ad is found in well-known robotic literature
such as, e.g., [8] and [14].
Finally, the distributive property (41) is equivalent to the identity (cf., e.g.,
[11, Chapter 9])
Adg adg−1 ġ = adAdg g−1 ġ Adg = adġg−1 Adg , (43)

once we pose, as in (42), g = A HB ∈ SE(3) and ġg −1 = A vA,B



. 

10
5.4 Frame acceleration and acceleration vectors
Several definitions of frame accelerations are present in the robotic literature,
such conventional and spatial accelerations [6]. In [7], “coordinate free” (or
“absolute”) frame accelerations are introduced by only considering twists with
respect to an (implicitly defined) inertial frame. In our experience, this partic-
ular definition of acceleration is convenient in obtaining computational efficient
algorithms for multibody dynamics, but it is not natural for robot task specifi-
cation and closed-loop control, where it is common to use the classical concept
of linear acceleration as the derivative of the (inertial) coordinates of a point in
space.
In this section, we start defining the apparent acceleration of a frame B
with respect to a frame A seen and expressed in a frame C simply as the time-
derivative of the corresponding velocity C vA,B , that is

C d C

v̇A,B := vA,B . (44)
dt
Writing C vA,B as the product C XB B vA,B and using the time derivative
formula for a change of coordinates given by (37), one gets
C
v̇A,B = C XB B vC,B × B vA,B + B v̇A,B .

(45)

The equation above shows that, in general, C v̇A,B 6= C XB B v̇A,B . However, for
the special case C = A, one obtains the fundamental and at first-sight surprising
relationship between left and right trivialized accelerations given by
A
v̇A,B = A XB B v̇A,B . (46)

Due to this last equality, that does not involve any cross product, it is possible
to define the (intrinsic) acceleration of a frame B with respect to a frame A
expressed in a frame C as
C
aA,B := C XA A v̇A,B = C XB B v̇A,B . (47)

Component-wise, the intrinsic and apparent accelerations (47) and (44) are
written as
C  C 
C aA,B 6 C v̇A,B
aA,B = C ∈ R and v̇A,B = C ∈ R6 . (48)
αA,B ω̇A,B

Combining the above definitions and equalities and using the equality C vC,B ×
C
vA,B = (C vC,B + C vB,A ) × C vA,B = C vC,A × C vA,B , leads to the following
relationship between the intrinsic and apparent accelerations
C
aA,B = C v̇A,B + C vA,C × C vA,B , (49)

which coincides with [6, equation(4)]. Component-wise, (49) equals


C
aA,B = C v̇A,B + C ωA,C × C vA,B + C vA,C × C ωA,B , (50)
C C C C
αA,B = ω̇A,B + ωA,C × ωA,B . (51)

11
Note. For task specification, the following (mixed) apparent acceleration
 B[A]   A 
B[A] v̇A,B öB
v̇A,B = B[A] = A . (52)
ω̇A,B ω̇A,B
is of common use in robotics, because the linear acceleration corresponds to the
Cartesian acceleration of the origin of B with respect to frame A. From (49),
this apparent acceleration can be expressed in terms of the intrinsic acceleration
as
B[A]
v̇A,B = B[A] aA,B − B[A] vA,B[A] × B[A] vA,B . (53)
Component-wise, (53) reads
B[A]
v̇A,B = B[A] aA,B − B[A] vA,B × B[A] ωA,B , (54)
B[A] B[A]
ω̇A,B = αA,B , (55)
B[A] B[A]
where we used ωA,B[A] = 0 and vA,B[A] = B[A] vA,B .

Lie group theory related note. The formula (45), relating the acceleration
with the apparent acceleration, is written in the standard notations of Lie groups
as
d ˙
(Adg ξ) = Adg (adg− 1ġ ξ + ξ), (56)
dt
and it is a well-known result (cf. [11, Proposition 9.3.8]).

6 Force covectors (wrenches)


The coordinates of a wrench f with respect to a given frame B are indicated as
 
Bf
B f := ∈ R6 . (57)

Note how, in contrast to twists, just the coordinate frame with respect to which
the wrench f is expressed is indicated explicitly.
As for a twist, we can define a linear map to change the coordinates of a
wrench from a frame B to another frame A. This coordinate transformation is
denoted A XB , so that we have
Af = A XB B f . (58)
The mapping A XB is actually strictly connected to the transformation B XA
given in (27), and can be defined as
 A   A

B B T RB 03×3 RB 03×3
A X := XA = = A ∧A (59)
−A RB B o∧A
A
RB oB RB A RB
where, for the last equality, we made use of the identity A oB = −A RB B oA . The
definition (59) leads, in particular, to the expected coordinate independency of
power
B A
Bf, vA,B = Af , vA,B . (60)
In the above expression, f can be interpreted as a wrench applied to a rigid
body and expressed with respect to a frame B which is fixed with respect to
the body and A as the inertial frame.

12
6.1 The dual cross-product between a twist and a wrench
The time derivative of the wrench coordinate transformation A XB has a struc-
ture that resembles the velocity coordinate transformation A XB , given in (37).
Straightforward computations lead to the expression

A Ẋ
B ¯∗
= A XB B vA,B × (61)
¯∗
where × represents an operation between a twist and a wrench, that we call
¯ ∗ , whose matrix representation is
the dual cross-product and indicate with ×
B ∧ 
B ∗ ωA,B 03×3
¯
vA,B × := B ∧ ∧ . (62)
vA,B B ωA,B
Note how (62) can be obtained from (38) by simply transposing it and changing
its sign. This fact is actually encoded in the symbol × ¯ ∗ itself, in the sense
that the overline and the the star represent, respectively, the sign change and
transposition (more formally, its adjoint linear map, that is typically indicated
with a star).
The dual cross product (62) takes one twist and one wrench and returns
one wrench (as opposed to one twist from two twists as in the case of the cross
product (38)): this is also the reason why the sub- and superscripts in (61)
are also correct: when A ẊB is applied to a wrench B f expressed in B, the
dual cross product between B vA,B and B f will return a wrench expressed in B
that can then be converted into a wrench expressed in A via A XB . The dual
cross-product also satisfies the geometrically intuitive equality

AX
BB ¯ ∗ = A vA,B ×
vA,B × ¯ ∗ A XB . (63)
The result is straightforward to prove.

Lie group theory related note. In the language of differential geometry,


the dual space of se(3) (namely, the space of linear applications from se(3) to
R) is indicated with se(3)∗ . Wrenches belong to this space as opposed to twists
that live instead in se(3). In terms of standard Lie group notation, the wrench
coordinate transformation A XB is written

AX
B
= Ad∗g−1 (64)

where g := A HB ∈ SE(3). Recall that Adg = A


XB and Adg−1 = B
XA . Let
ξ ∧ := B vA,B

∈ se(3), then one gets
B ¯ ∗ = − ad∗ξ .
vA,B × (65)
The formula above makes it clear, once again, that the notation × ¯ ∗ has been
explicitly chosen to remind the fact that (62) is obtained from the cross prod-
uct × given in (38) and indicated with ad in standard Lie group notation, by
computing its adjoint (∗) and changing its sign (−). Finally, the time derivate
of (64) is simply
d
Ad∗g−1 = − Ad∗g−1 ad∗ξ (66)
dt

for ġ = gξ, with g = A HB and ξ = B vA,B , which is equivalent to (61). 

13
7 Generalized inertia tensor
The 6 × 6 generalized inertia of a rigid body L (where L stands for link), when
expressed with respect to a frame C whose origin coincides with the body center
of mass is denoted C MLC and explicitly given by
 
L mL I3 03×3
C MC = 0 L , (67)
3×3 C IC

with mL body mass and C IL C the 3 × 3 inertia tensor of L expressed in C.


The generalized inertia expressed with a generic frame B, whose origin is
not necessarily coinciding with the center of mass, is denoted and computed as
L
B MB = B XC C ML C
C XB
−mL B o∧
 
mL I3 C ,
= (68)
mL B o∧
C B IB
L

where
L B ∧B ∧
B IB = C RTB C IL C
C RB − mL oC oC . (69)

We recall that B oC = −B RC C oB . The term −mL B o∧ B ∧ L


C oC appearing in B IB is
the classic correction term of the Huygens-Steiner (also known as parallel axis)
theorem. The matrix product o∧ o∧ is sometimes written as o · o I3 + o ⊗ o,
with · and ⊗ denoting the scalar and outer products, respectively.

8 The geometric Jacobians


The goal of this section is to define a precise and unambiguous notation for the
geometric Jacobians for fixed-base and, in particular, for moving-base multibody
systems (also known as free-floating multibody systems). Geometric Jacobians
are essential tools in defining contact and constraint forces in multibody dy-
namics as well as express position and force tasks in robot control.
In this section, A will denote an inertial frame and B the moving-base frame,
i.e., a frame rigidly attached to one of the bodies composing the multibody
system, selected to represent the relative pose of the system with respect to
the world frame A. The configuration of a moving-base multibody system is
parametrized as q = (H, s) ∈ SE(3)×RnJ , with H = A HB ∈ SE(3) representing
the pose (position and orientation) of the moving-base frame B and s ∈ RnJ the
internal joint displacements (s stands for shape). The configuration space (more
correctly, the configuration manifold) has correspondingly dimension n = 6+nJ .
Let E denote a frame (rigidly) attached to an arbitrary body to be used, e.g.,
for the specification of a task to be executed by the robot or a possible point of
contact with the environment. The frame E could represent, e.g., the pose of
a specific frame rigidly attached to an end effector of a robot manipulator or a
hand or foot on a humanoid robot. Let
A
HE = A HE (q) = A HE (H, s) (70)

denote the homogeneous transformation expressing E with respect to A as a


function of the configuration q = (H, s).

14
Let δH denote an infinitesimal perturbation of the pose of the moving base
(δH ∈ TH SE(3), in the language of differential geometry) and δs an infinitesimal
perturbation of the joint displacements. Then, the corresponding infinitesimal
perturbation of frame E can be computed as
A
δHE = A D1 HE (H, s) · δH + A D2 HE (H, s) · δs, (71)

where H is short for A HB and δH is short for A δHB . Let E ∆A,E and B ∆A,B ∈
R6 denote the trivialized infinitesimal perturbations
A −1 A
E
∆∧
A,E := HE δHE , (72)

∆ = B
∆∧
A,B := A
H−1
B
A
δHB −1
=H δH. (73)

Combining (72) and (73) together with (71), note how E ∆A,E depends lin-
early on B ∆A,B and δs. Such a linear map defines the geometric Jacobian
for the (moving-base) multibody system and will be indicated with the symbol
E
JA,E/B ∈ R6×(6+nJ ) .
The subscript A, E/B appearing in E JA,E/B indicate that the Jacobian al-
lows to compute the infinitesimal perturbation of frame E relative to frame
A, based on the infinitesimal perturbation of the internal joint configuration
and that of the moving base, this latest perturbation being expressed with re-
spect to frame B. The superscript E appearing in E JA,E/B specifies that the
infinitesimal perturbation is expressed with respect to frame E.
The Jacobian is therefore obtained by means of two left-trivializations (one
in the output E ∆A,E and one in the input B ∆A,B ) and for this reason, we will
sometimes refer to E JA,E/B as the doubly left-trivialized geometric Jacobian
associated to the rigid transformation A HE = A HE (A HB , s). In formulas,
 
E E ∆
∆A,E = JA,E/B (H, s) , (74)
δs

where we recall H = A HB and ∆ = B ∆A,B .


The infinitesimal perturbation of frames E and B can be expressed with
respect to other arbitrary frames, let us say C and D. In this case, we defined
the geometric Jacobian D JA,E/C via two changes of coordinates from the doubly
left-trivialized Jacobian E JA,E/B as
D
JA,E/C = D XE E JA,E/B B YC , (75)

where the combined twist-joint velocity transformation


B 
B XC 06×nJ
YC := , (76)
0nJ ×6 I nJ

with I and 0 denoting identity and zero matrix of indicated dimensions. For
the control of humanoid robots, it is common to express the moving-base and
end-effector frame twists in the mixed frames B[A] and E[A], respectively. The
associated geometric Jacobian E[A] JA,E/B[A] obtained from (75) when D = E[A]
and C = B[A] will be called the doubly mixed geometric Jacobian associated to
the rigid transformation A HE = A HE (A HB , s).

15
Geometric Jacobians for fixed-based systems. For fixed-base systems
such as robot manipulators, the configuration variable is simply q = s. In this
context, as there is no moving base, the geometric Jacobians is simply written
C
JA,B . One speaks then of a mixed Jacobian for B[A] JA,B and left-trivialized
Jacobian for B JA,B .

9 Moving-base multibody dynamics


In this section, we write the equations of motion of a moving-base multibody
system in a compact form. As introduced in Section 8, the configuration of
such a system will be denoted q = (H, s) := (A HB , s), with A being the inertial
frame, B the (selected) moving-base frame, and s ∈ RnJ the joint displacements.
It is common to employ the mixed velocity B[A] vA,B to express the motion
of the moving base and therefore we here employ the mixed generalized velocity
ν := B[A] ν = (B[A] vA,B , ṡ) =: (v, r) to parameterize the velocity of the entire
system. The kinematics of the moving-base system is therefore written as

Ḣ = H(Xv)∧ (77)
ṡ = r (78)

with X = B XB[A] . More compactly, we will write both equations above with
a single equation1 as as q̇ = q(Yν)∧ where Y := B YB[A] = diag(B XB[A] , InJ )
is the combined twist-joint velocity transformation from mixed to body-fixed
velocity. For more details, cf. (76) in Section 8. The total equations of motion
for the moving-base multibody system are written as

q̇ = q(Yν)∧ , (79)
X
M(q)ν̇ + C(q, ν)ν + G(q) = S τ + JTk (q) fk (80)
k∈IC

where M the mass matrix, C the Coriolis matrix, G the potential force vector,
S := [06×nJ ; InJ ] the joint selection matrix 2 , τ the joint torques, IC the set of
closed contacts, fk := Ck [A] fk the k − th contact wrench, and

Jk (q) := Ck [A] JA,Li /B[A] (q) (81)

the geometric Jacobian (see Section 8 for details on the notation) associated to
the frame Li rigidly attached to the link i that is experiencing the k-th contact
and Ck denotes the contact frame3 where the contact interaction forces and
torques are expressed.
1 This notation is derived from Lie group theory, when considering the configuration mani-

fold Q = SE(3) × RnJ as the Lie group defined by the direct product of the groups SE(3) and
(RnJ , +).
2 The joint selection matrix (see, e.g., [5]) simply emphasizes the fact that moving-based

systems are typically underactuated, requiring establishing physical contact with the environ-
ment in order to fully control their posture.
3 Note that C is allowed to move with respect to the link frame L , at it happens, e.g., for
k i
a rolling contact. This is exactly the reason why one needs to use Ck [A] JA,Li /B[A] and not
Ck [A] J
A,Ck /B[A] as contact Jacobian.

16
On velocity parametrization. Note that M, C, G, J appearing in (80)
depend on the choice of the moving-base velocity: if we would have chosen,
e.g., B vA,B instead of B[A] vA,B as done above, this would have led to matri-
ces/vectors with different entries. It is possible to pass from one representation
to another by suitable left- and right-multiplication by means of a suitable gen-
eralized velocity transformation Y.

On contact Jacobians. To better understand (81), recall that the infinites-


imal power injected into the multibody system by a contact wrench C f is given
by
C L
L X C f , JA,L/B[A] (q) ν =
C L C
Cf, XL JA,L/B[A] (q) ν = Cf, JA,L/B[A] (q) ν . (82)

It is essential to note that, in general, C JA,L/B[A] 6= C JA,C/B[A] because C XL


can be time varying because the contact frame C might move with respect
to the link (and consequently with respect to L) which is experiencing the
contact wrench. At each instant of time, the twist C JA,L/B[A] (q) ν represents
the (combined linear and angular) velocity of a frame rigidly attached to the
link that, at that moment, has the same position and orientation of frame C.

Lie group theory related note. In the robotics literature, the equations of
motions (80) are often referred to, with abuse of terminology, as forced Euler-
Lagrange equations. While, indeed, the variational principle and the Lagrangian
play a central role in obtaining the unforced equations

M(q)ν̇ + C(q, ν)ν + G(q) = 0, (83)

it is important to realize that the Lagrangian is a mapping defined on the


tangent bundle of Q = SE(3) × RnJ , that is L : T Q → R, (q, q̇) 7→ L(q, q̇).
The classical Euler-Lagrange equations, typically written in coordinates as
d ∂L ∂L
− = 0, i = {1, 2, . . . , n}, (84)
dt ∂ q̇i ∂qi
with n the configuration space dimension, do not apply in our context because
Q is not Rn . Indeed, to obtain (83), one needs to resolve to geometric mechanics
[11]. In this context, one first defines a trivialized Lagrangian as the difference
between kinetic and potential energy, where the velocity is parameterized via
the trivialized velocity. Typically, one defines the trivialized Lagrangian as
l(q, ξ) := L(q, qξ) = 1/2 hI(q)ξ, ξi − V(q), where ξ = B ν is the left-trivialized
generalized velocity, V denotes the potential energy, and I(q) the inertia matrix
satisfying M(q) = YT I(q)Y, if we employ the mixed mass matrix M(q) and
combined twist-joint velocity transformation Y as in (79) and (80), respectively.
One then applies a modified version of the Euler-Lagrange equations (typically
referred to as the Hamel equations, cf., e.g., [11, Section 13.6]) to the trivialized
Lagrangian l, obtaining a differential equation in (q, ξ). The interested reader
is referred to [15, Section II] and references therein for further reading.

17
10 Acknowledgements
The authors would like to thank Martijn Bos and Marco Frigerio for valuable
feedback on this new version of the notation document.

A Comparison with other existing notations


In this section, our notation is compared with equivalent notations commonly
appearing in the literature. Namely, Featherstone’s notation appearing in [7,
16],[16], Siciliano’s notation appearing in [17], Spong’s notation appearing in
[19], and the Lie group notation appearing in [13, 14, 10]

A.1 Featherstone’s notation


In [7] and in the second chapter of [16], based on it, the concept of spatial
velocity and acceleration is used to explain rigid body algorithms. It is worth
noting that in [7] the term spatial has a totally different meaning with respect
to how it is used in [13]. In particular, in [7], spatial is used to indicate a 6D
vector, being it a twist, a link acceleration, a wrench, or momentum, while in
[13], the term spatial is used to indicate a 6D vector expressed with respect to
an inertial reference frame.
In [7], 6D vectors are composed using the angular-linear serialization. In
this report, we use instead the linear-angular serialization. In the remining of
this section, we explicitly show the difference between this report’s and Feath-
erstone’s notation (disregarding the difference in angular-linear serialization).

Homogeneous transformations. In Featherstone’s notation, the homoge-


neous transformation is seldom used, as most of the theory is introduced using
directly 6D vectors. For this reason there is not direct equivalent of the notation.

Velocities. In Featherstone’s notation, the 6D rigid body velocity of a body-


frame B expressed in a frame C is indicated as
C
vB .

All velocities in Featherstone’s are always relative to an implicitly defined in-


ertial frame A. In this report’s notation, we prefer to explictly indicate this
dependency, and therefore the equivalent expression for this velocity is
C
vA,B .

Accelerations. Featherstone [7, 16] uses the dot notation (·) ˙ to indicate the
differentiation with respect to an implicitly defined inertial frame, and the ring
˚ to indicate the differentiation with respect to the frame in which
notation (·)
the quantity is expressed. As we do not implicitly assume the existence of
an absolute inertial frame, we just use the (·) ˙ to indicate the differentiation
in coordinates. Using this definition, it is easy to see that the body (spatial )
acceleration defined in Featherstone as
C
v̇B = C aB

18
is equivalent, in this report’s notation, to
C
aA,B = C XA A v̇A,B , (85)
where A is the inertial frame implicitly used in Featherstone’s, and C aA,B is the
(intrinsic) acceleration defined in (47). Note that from (46), using this report’s
notation, we get
B
v̇A,B = B XA A v̇A,B , (86)
that in Featherstone’s notation is written
B
v̊ B = B v̇B . (87)
Adjoint transformations. The adjoint transform that maps a motion vector
expressed in a frame B in one expressed in a frame C is indicated in this report
as C XB . This notation is directly take from Featherstone’s, where it is indi-
cated with C XB . However, the transformation matrix for a 6D force vector is

indicated with C XB in Featherstone’s, while in this report’s we use C XB . The
main reasons behind this choice are: a) the star is typically used to indicate
the adjoint (in the sense of adjoint linear transformation in linear algebra) and
indeed, in this report’s notation we get C XB = B X∗C , which is not the case in
Featherstone’s; b) C XB maps wrenches into wrenches while B XC maps twists
into twist and we use a right superscript to indicate a twist and a right subscript
to indicate a wrench.

6D Cross Product. In Featherstone’s, the 6D Cross product of a 6D mo-


tion vector v and a 6D motion vector u is indicated as
v × u.
A very similar notation is used in this report, namely
v × u.
The 6D cross product of a 6D motion vector v and a 6D motion vector f is
indicated in Featherstone’s as
v ×∗ f .
To indicate explicitly that ×∗ is nothing else that minus the adjoint represen-
tation of the Lie algebra of SE(3) to itself, we write the same operation as
¯ ∗f .

Further details are given in the explanation of (62).

Recap on this report’s and Featherstone’s notation comparison. Sum-


marizing, the main difference and similarities of the two notations are the fol-
lowing.
This report Featherstone [7]
C C
vA,B vB
C C
aA,B v̇B = C aB
C C
v̇A,B v̊B
C C
XB XB
B C ∗
CX XB
v× v×
v× ¯∗ v×∗

19
A.2 Siciliano’s notation
In this section, we compare this report’s notation the notation used in the
classical book of Siciliano et al. [17].
Homogenous transformation. In [17], the homogeneous transformation that
maps the coordinates of a point from a frame A to a frame B is indicated with
 A
oA

A RB B
TB = . (88)
03×1 1

Comparing it with (12), we obtain the following comparison table.

This report Siciliano et al. [17]


A
HB TAB
A
RB RAB
A
oB oA
B

Note that, in Siciliano et al.’s notation, oA


B is simply denoted pB whenever A is
an inertial frame.

Velocity of a frame. In [17], the velocity of a frame B is denoted


 

vB = B . (89)
ωB

Comparing it with (35), indicating with A the inertial frame implicitly assumed
by the Siciliano notation, we have
This report Siciliano et al. [17]
B[A]
vA,B vB
A
ȯB ṗB
A
ωA,B ωB

A.3 Spong’s notation


In this section, we compare this report’s notation the notation used in the
classical book of Spong et al. [19]. In [19] the base frame of the fixed robot
is indicated with 0, while the frame of the end-effector is indicated with n. To
simplify the comparison between the two notations, we will use A to indicate
the frame 0 and B to indicate the frame n.
Homogenous transformation. In [19, Section 2.6], the homogeneous trans-
formation that maps the coordinates of a point from a frame A to a frame B is
indicated with  A
dA

A RB B .
HB = (90)
03×1 1
Comparing it with (12), we obtain the following comparison table.

This report Spong et al. [19]


A A
HB HB
A A
RB RB
A
oB dA
B

20
Velocity of a frame. In [19, Section 4.6], the velocity of a frame B w.r.t. to
a inertial frame A is denoted
 A  A
A v ȯ
ξB = BA = BA . (91)
ωB ωB

Comparing it with (35), we have

This report Spong et al. [19]


B[A] A
vA,B ξB
A
ȯB vB = ȯA
A
B
A A
ωA,B ωB

A.4 Lie group theory notation


In this section, we compare this report’s notation the notation used in the
classical book of Murray et al. [13]. In [13] the inertial frame is indicated with
A, while the body frame is indicated with B. However, when used as suffix
these letters are used lower-case, so as a or b.
Homogenous transformation. In [13, Section 4.2], the homogeneous trans-
formation that maps the coordinates of a point from a frame A to a frame B is
indicated with  
Rab pab
gab = . (92)
03×1 1
Comparing it with (12), we obtain the following comparison table.

This report Murray et al. [13]


A
HB gab
A
RB Rab
A
oB pab

Velocity of a frame. In [13, Equation 2.53, Section 4.2], the so-called spatial
velocity of a frame B with respect to a frame A is defined as
 s   T

s vab −Ṙab Rab pab pab + ṗab
V̂ab = s = T ∨ . (93)
ωab (Ṙab Rab )

Comparing it with (23), it is clear that this is equivalent to what in this report
is referred as right trivialized velocity A vA,B .
Similarly, in [13, Equation 2.55, Section 4.2], the body velocity of a frame B
with respect to a frame A is defined as
T
 b   
b v Rab ṗab
V̂ab = ab = . (94)
b
ωab T
(Rab Ṙab )∨

Comparing it with (23), we see that this is equivalent to what in this report is
referred as the left trivialized velocity B vA,B .
The overall comparison of velocities between this report and [13] is given in
the following table:

21
This report Murray et al. [13]
A s
vA,B V̂ab
A s
vA,B vab
A a
ωA,B ωab
B b
vA,B V̂ab
B b
vA,B vab
B b
ωA,B ωab

References
[1] R. Abraham, J.E. Marsden, and T. Ratiu. Manifolds, tensor analysis, and
applications, volume 75. Springer Science & Business Media, 2012.
[2] A.M. Bloch. Nonholonomic mechanics and control, volume 24. Springer
Science & Business Media, 2003.
[3] H. Bruyninckx and J. De Schutter. Symbolic differentiation of the velocity
mapping for a serial kinematic chain. Mechanism and machine theory,
31(2):135–148, 1996.
[4] T. De Laet, S. Bellens, R. Smits, E. Aertbeliën, H. Bruyninckx, and
J. De Schutter. Geometric relations between rigid bodies (part 1): Se-
mantics for standardization. Robotics & Automation Magazine, IEEE,
20(1):84–93, 2013.
[5] A. Del Prete, N. Mansard, F. Nori, G. Metta, and L. Natale. Partial force
control of constrained floating-base robots. In IEEE/RSJ International
Conference on Intelligent Robots and Systems (IROS 2014), pages 3227–
3232. IEEE, 2014.

[6] R. Featherstone. The acceleration vector of a rigid body. The International


Journal of Robotics Research, 20(11):841–846, 2001.
[7] R. Featherstone. Rigid body dynamics algorithms. Springer, 2008.
[8] G. Garofalo, C. Ott, and A. Albu-Schäffer. On the closed form compu-
tation of the dynamic matrices and their differentiations. In IEEE/RSJ
International Conference on Intelligent Robots and Systems (IROS), pages
2364–2359. IEEE, 2013.
[9] A. Jain. Robot and multibody dynamics: analysis and algorithms. Springer,
2010.

[10] J. Kim. Lie group formulation of articulated rigid body dynamics. Technical
report, Carnagie Mellon University, School of Computer Science, 2012.
[11] J.E. Marsden and T. Ratiu. Introduction to mechanics and symmetry:
a basic exposition of classical mechanical systems. Springer, 2nd edition,
1999.

[12] J.E. Marsden and J. Scheurle. Lagrangian reduction and the double spher-
ical pendulum. Zeitschrift für angewandte Mathematik und Physik ZAMP,
44(1):17–43, 1993.

22
[13] R.M. Murray, Z. Li, and S.S. Sastry. A mathematical introduction to robotic
manipulation. CRC press, 1994.

[14] F.C. Park, J.E. Bobrow, and S.R. Ploen. A lie group formulation of robot
dynamics. The International Journal of Robotics Research, 14(6):609–618,
1995.
[15] A. Saccon, S. Traversaro, F. Nori, and H. Nijmeijer. On centroidal dy-
namics and integrability of average angular velocity. IEEE Robotics and
Automation Letters, 2(2):943–950, 2017.
[16] B. Siciliano and O. Khatib. Springer handbook of robotics. Springer, 2008.
[17] B. Siciliano, L. Sciavicco, L. Villani, and G. Oriolo. Robotics: modelling,
planning and control. Springer, 2009.

[18] M. Spivak. Calculus on manifolds, volume 1. WA Benjamin New York,


1965.
[19] M.W. Spong, S. Hutchinson, and M. Vidyasagar. Robot modeling and con-
trol, volume 3. Wiley New York, 2006.
[20] S Traversaro and A Saccon. Multibody dynamics notation. Technical re-
port, Eindhoven University of Technology, Dept. of Mechanical Engineering
(DC 2016.064), 2016.

23

You might also like