Tải bản đầy đủ (.pdf) (81 trang)

Tài liệu Robotics TOOLBOX pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (444.77 KB, 81 trang )

Robotics
TOOLBOX
for MATLAB
(Release 6)
−1
−0.5
0
0.5
1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1


Puma 560
x
y
z
−4
−2
0
2
4
−4
−2
0
2
4
2
2.5
3
3.5
4
4.5
5
5.5
q2
q3
I11
Peter I. Corke

April 2001
/>Peter I. Corke
CSIRO

Manufacturing Science and Technology
Pinjarra Hills, AUSTRALIA.
2001
/>c
CSIRO Manufacturing Science and Technology 2001. Please note that whilst CSIRO
has taken care to ensure that all data included in this material is accurate, no warranties
or assurances can be given about the accuracy of the contents of this publication. CSIRO
Manufacturing Science and Technolgy makes no warranties, other than those required by
law, and excludes all liability
(including liability for negligence) in relation to the opinions,
advice or information contained in this publication or for any consequences arising from
the use of such opinion, advice or information. You should rely on your own independent
professional advice before acting upon any opinion, advice or information contained in this
publication.
3
1
Preface
1 Introduction
This Toolbox provides many functions that are useful in robotics including such things as
kinematics, dynamics, and trajectory generation. The Toolbox is useful for simulation as
well as analyzing results from experiments with real robots. The Toolbox has been devel-
oped and used over the last few years to the point where I now rarely write ‘C’ code for
these kinds of tasks.
The
Toolbox is based on a very general method of representing the kinematics and dynam-
ics of serial-link manipulators. These parameters are encapsulated in Matlab objects. Robot
objects can be created by the user for any serial-link manipulator and a number of examples
are provided for well know robots such as the Puma 560 and the Stanford arm. The toolbox
also provides functions for manipulating datatypes such as vectors, homogeneous transfor-
mations and unit-quaternions which are necessary to represent 3-dimensional

position and
orientation.
The routines are generally written in a straightforward manner which allows for easy un-
derstanding, perhaps at the expense of computational efficiency. If you feel strongly about
computational efficiency then you can
rewrite the function to be more efficient
compile the M-file using the Matlab compiler, or
create a MEX version.
1.1 What’s new
This release is more bug fixes and slight enhancements, fixing some of the problems intro-
duced in release 5 which was the first one to use Matlab objects.
1. Added a tool transform to a robot object.
2. Added a joint coordinate offset feature, which means that the zero angle configuration
of the robot can now be arbitrarily set. This
offset is added to the user provided
joint coordinates prior to any kinematic or dynamic operation, subtracted after inverse
kinematics.
3. Greatly improved the
plot
function, adding 3D cylinders and markers to indicate
joints, a shadow, ability to handle multiple views and multiple robots per figure.
Graphical display options are now stored in the robot object.
4. Fixed many bugs in the quaternion functions.
1 INTRODUCTION
4
5. The
ctraj()
is nowbased on quaternion interpolation (implemented in
trinterp()
).

6. The manual is now available in PDF form instead of PostScript.
1.2 Contact
The Toolbox home page is at
/>This page will always list the current released version number as well as bug fixes and new
code in between major releases.
A Mailing List is also available, subscriptions details are available off that web page.
1.3 How to obtain the toolbox
The Robotics Toolbox is freely available from the MathWorks FTP server
ftp.mathworks.com
in the directory
pub/contrib/misc/robot
. It is best to download
all files in that directory since the Toolbox functions are quite interdependent. The file
robot.pdf
is a comprehensive manual with a tutorial introduction and details of each Tool-
box function. A menu-driven demonstration can be invoked by the function
rtdemo
.
1.4 MATLAB version issues
The Toolbox works with M
ATLAB
version 6 and greater and has been tested on a Sun with
version 6. The function
fdyn()
makes use of the new ‘@’ operator to access the integrand
function, and will fail for older
M
ATLAB
versions.
The Toolbox does not function under M

ATLAB
v3.x or v4.x since those versions do not
support objects. An older version of the toolbox, available from the Matlab4 ftp site is
workable but lacks some features of this current toolbox release.
1.5 Acknowledgements
I havecorresponded with a great manypeople via email since the first release of this toolbox.
Some
have identified bugs and shortcomings in the documentation, and even better, some
have provided bug fixes and even new modules. I would particularly like to thank Chris
Clover of Iowa State University, Anders Robertsson and Jonas Sonnerfeldt of Lund Institute
of Technology, Robert Biro and Gary McMurray of Georgia Institute of Technlogy, Jean-
Luc Nougaret of IRISA, Leon Zlajpah of Jozef Stefan Institute, University of Ljubljana, for
their
help.
1.6 Support, use in teaching, bug fixes, etc.
I’m always happy to correspond with people who have found genuine bugs or deficiencies
in the Toolbox, or who have suggestions about ways to improve its functionality. However
I do draw the line at providing help for people with their assignments and homework!
1 INTRODUCTION
5
Many people are using the Toolbox for teaching and this is something that I would encour-
age. If you plan to duplicate the documentation for class use then every copy must include
the front page.
If you want to cite the Toolbox please use
@ARTICLE{Corke96b,
AUTHOR = {P.I. Corke},
JOURNAL = {IEEE Robotics and Automation Magazine},
MONTH = mar,
NUMBER = {1},
PAGES = {24-32},

TITLE = {A Robotics Toolbox for {MATLAB}},
VOLUME = {3},
YEAR
= {1996}
}
which is also given in electronic form in the README file.
1.7 A note on kinematic conventions
Many people are not aware that there are two quite different forms of Denavit-Hartenberg
representation for serial-link manipulator kinematics:
1. Classical as per the original
1955 paper of Denavit and Hartenberg, and used in text-
books such as by Paul, Fu etal, or
Spong and Vidyasagar.
2. Modified form as introduced by Craig in his text book.
Both notations represent a joint as 2 translations (A and D) and 2 angles (α and θ). How-
ever the expressions for the link transform matrices are quite different. In short, you must
know which kinematic convention your Denavit-Hartenberg parameters conform to. Un-
fortunately many
sources in the literature do not specify this crucial piece of information,
perhaps because the authors do not know different conventions exist, or they assume ev-
erybody uses the particular convention that they do. These issues are discussed further in
Section 2.
The toolbox has full support for the classical convention, and limited support for the mod-
ified convention (forward and inverse kinematics only). More complete support for the
modified con
vention is on the TODO list for the toolbox.
1.8 Creating a new robot definition
Let’s take a simple example like the two-link planar manipulator from Spong & Vidyasagar
(Figure 3-6, p73) which has the following Denavit-Hartenberg link parameters
Link a

i
α
i
d
i
θ
i
1 1 0 0 θ
1
2 1 0 0 θ
2
where we have set the link lengths to 1. Now we can create a pair of link objects:
1 INTRODUCTION
6
>> L1=link([0 1 0 0 0])
L1 =
0.000000 1.000000
0.000000 0.000000 R
>> L2=link([0 1 0 0 0])
L2 =
0.000000 1.000000 0.000000 0.000000 R
>> r=robot({L1 L2})
r =
noname
(2 axis, RR)
grav = [0.00 0.00 9.81] standard D&H parameters
alpha A theta D R/P
0.000000 1.000000 0.000000 0.000000 R
0.000000
1.000000 0.000000 0.000000 R

>>
The first few lines create link objects, one per robot link. The arguments to the link object
can be found from
>> help link
.
.
LINK([alpha A theta D sigma])
.
.
which shows the order in which the link parameters must be passed (which is different to
the column order of the table above). The fifth argument,
sigma
, is a flag that indicates
whether the joint is revolute (
sigma
is zero) or primsmatic (
sigma
is non zero).
The link objects are passed as a cell array to the
robot()
function which creates a robot
object which is in turn passed to many of the other Toolbox functions. Note that the text
that results from displaying a robot object’s value is garbled with M
ATLAB
6.
7
2
Tutorial
2 Manipulator kinematics
Kinematics is the study of motion without regard to the forces which cause it. Within kine-

matics one studies the position, velocity and acceleration, and all higher order derivatives of
the position variables. The kinematics of manipulators involves the study of the geometric
and time based properties of the motion, and in particular how the various links move with
respect to
one another and with time.
Typical robots are serial-link manipulators comprising a set of bodies, called links, in a
chain, connected by joints
1
. Each joint has one degree of freedom, either translational or
rotational. For a manipulator with n joints numbered from 1 to n, there are n 1 links,
numbered from 0 to n. Link 0 is the base of the manipulator, generally fixed, and link n
carries the end-effector. Joint i connects links i and i 1.
A link may be considered as a rigid body defining the relationship between two neighbour-
ing joint axes. A link can be specified by two numbers, the link length and link twist, which
define the relativ
e location of the two axes in space. The link parameters for the first and
last links are meaningless, but are arbitrarily chosen to be 0. Joints may be described by
two parameters. The link offset is the distance from one link to the next along the axis of the
joint. The joint angle is the rotation of one link with respect to the next about the joint axis.
To facilitate describing the location of each link we affix a coordinate frame to it — frame i
is attached to link i. Denavit and Hartenberg[1] proposed a matrix method of systematically
assigning coordinate systems to each link
of an articulated chain. The axis of revolute joint
i is aligned with z
i 1
. The x
i 1
axis is directed along the normal from z
i 1
to z

i
and for
intersecting axes is parallel to z
i 1
z
i
. The link and joint parameters may be summarized
as:
link length a
i
the offset distance between the z
i 1
and z
i
axes along the
x
i
axis;
link twist α
i
the angle from the z
i 1
axis to the z
i
axis about the x
i
axis;
link offset d
i
the distance from the origin of frame i 1 to the x

i
axis
along the z
i 1
axis;
joint angle θ
i
the angle between the x
i 1
and x
i
axes about the z
i 1
axis.
For a revolute axis θ
i
is the joint variable and d
i
is constant, while for a prismatic joint d
i
is variable, and θ
i
is constant. In many of the formulations that follow we use generalized
coordinates, q
i
, where
q
i
θ
i

for a revolute joint
d
i
for a prismatic joint
1
Parallel link and serial/parallel hybrid structures are possible, though much less common in industrial manip-
ulators.
2 MANIPULATOR KINEMATICS
8
joint i−1
joint i
joint i+1
link i−1
link i
T
i−1
T
i
a
i
X
i
Y
i
Z
i
a
i−1
Z
i−1

X
i−1
Y
i−1
(a) Standard form
joint i−1
joint i
joint i+1
link i−1
link i
T
i−1
T
i
X
i−1
Y
i−1
Z
i−1
Y
i
X
i
Z
i
a
i−1
a
i

(b) Modified form
Figure 1: Different forms of Denavit-Hartenberg notation.
and generalized forces
Q
i
τ
i
for a revolute joint
f
i
for a prismatic joint
The Denavit-Hartenberg (DH) representation results in a 4x4 homogeneous transformation
matrix
i 1
A
i
cosθ
i
sinθ
i
cosα
i
sinθ
i
sinα
i
a
i
cosθ
i

sinθ
i
cosθ
i
cosα
i
cosθ
i
sinα
i
a
i
sinθ
i
0 sinα
i
cosα
i
d
i
0 0 0 1
(1)
representing each link’s coordinate frame with respect to the previous link’s coordinate
system; that is
0
T
i
0
T
i 1

i 1
A
i
(2)
where
0
T
i
is the homogeneous transformation describing the pose of coordinate frame i with
respect to the world coordinate system 0.
Two differing methodologies have been established for assigning coordinate frames, each
of which allows some freedom in the actual coordinate frame attachment:
1. Frame i has its origin along the axis of joint i 1, as described by Paul[2] and Lee[3,
4].
2 MANIPULATOR KINEMATICS
9
2. Frame i has its origin along the axis of joint i, and is frequently referred to as ‘modi-
fied Denavit-Hartenberg’ (MDH) form[5]. This form is commonly used in literature
dealing with manipulator dynamics. The link transform matrix for this form differs
from (1).
Figure 1 shows the notational differences between the two forms. Note that a
i
is always the
length of link i, but is the displacement between the origins of frame i and frame i 1 in
one convention, and frame i
1 and frame i in the other
2
. The Toolbox provides kinematic
functions for both of these conventions — those for modified DH parameters are prefixed
by ‘m’.

2.1 Forward and inverse kinematics
For an n-axis rigid-link manipulator, the forward kinematic solution gives the coordinate
frame, or pose, of
the last link. It is obtained by repeated application of (2)
0
T
n
0
A
1
1
A
2
n 1
A
n
(3)
K
q (4)
which is the product of the coordinate frame transform matrices for each link. The pose
of the end-effector has 6 degrees of freedom in Cartesian space, 3 in translation and 3 in
rotation, so robot manipulators commonly have 6 joints or degrees of freedom to allow
arbitrary
end-effector pose. The overall manipulator transform
0
T
n
is frequently written as
T
n

, or T
6
for a 6-axis robot. The forward kinematic solution may be computed for any
manipulator, irrespective of the number of joints or kinematic structure.
Of more use in manipulator path planning is the inverse kinematic solution
q
K
1
T (5)
which gives the joint angles required to reach the specified end-effector position. In general
this solution is non-unique, and for some classes of manipulator no closed-form solution
e
xists. If the manipulator has more than 6 joints it is said to be redundant and the solution
for joint angles is under-determined. If no solution can be determined for a particular ma-
nipulator pose that configuration is said to be singular. The singularity may be due to an
alignment of axes reducing the effective degrees of freedom, or the point T being out of
reach.
The manipulator Jacobian matrix, J
θ
, transforms velocities in joint space to velocities of
the end-effector in Cartesian space. For an n
-axis manipulator the end-effector Cartesian
velocity is
0
˙x
n
0
J
θ
˙q (6)

t
n
˙x
n
t
n
J
θ
˙q (7)
in base or end-effector coordinates respectively
and where x is the Cartesian velocity rep-
resented by a 6-vector. For a 6-axis manipulator the Jacobian is square and provided it is
not singular can be inverted to solve for joint rates in terms of end-effector Cartesian rates.
The Jacobian will not be invertible at a kinematic singularity, and in practice will be poorly
2
Many papers when tabulating the ‘modified’ kinematic parameters of manipulators list a
i 1
and α
i 1
not a
i
and α
i
.
3 MANIPULATOR RIGID-BODY DYNAMICS
10
conditioned in the vicinity of the singularity, resulting in high joint rates. A control scheme
based on Cartesian rate control
˙q
0

J
1
θ
0
˙x
n
(8)
was proposed by Whitney[6] and is known as resolved rate motion control. For two frames
A and B related by
A
T
B
n o a p the Cartesian velocity in frame A may be transformed to
frame B by
B
˙x
B
J
A
A
˙x (9)
where the Jacobian is given by Paul[7] as
B
J
A
f
A
T
B
n o a

T
p n p o p a
T
0 n o a
T
(10)
3 Manipulator rigid-body dynamics
Manipulator dynamics is concerned with the equations of motion, the way in which the
manipulator moves in response to torques applied by the actuators, or external forces. The
history and mathematics of the dynamics of serial-link manipulators is well covered by
Paul[2] and Hollerbach[8]. There are two problems related to manipulator dynamics that
are important to solve:
inverse dynamics in which the manipulator’s equations of motion are solved for given
motion to
determine the generalized forces, discussed further in Section ??, and
direct dynamics in which the equations of motion are integrated to determine the
generalized coordinate response to applied generalized forces discussed further in
Section 3.2.
The equations of motion for an n-axis manipulator are given by
Q M q ¨q C q ˙q ˙q F ˙q G q (11)
where
q
is the vector of generalized joint coordinates describing the pose of the manipulator
˙q is the vector of joint velocities;
¨q is the vector of joint accelerations
M is the symmetric joint-space inertia matrix, or manipulator inertia tensor
C describes Coriolis and centripetal effects — Centripetal torques are proportional to ˙q
2
i
,

while the Coriolis torques are proportional to ˙q
i
˙q
j
F describes viscous and Coulomb friction and is not generally considered part of the rigid-
body dynamics
G is the gravity loading
Q is the vector of generalized forces associated with the generalized coordinates q.
The equations may be derived via a number of techniques, including Lagrangian (energy
based), Newton-Euler, d’Alembert[3, 9] or Kane’s[10] method. The earliest reported work
was by Uicker[11] and Kahn[12] using the Lagrangian approach. Due to the enormous com-
putational cost,
O n
4
, of this approach it was not possible to compute manipulator torque
for real-time control. To achieve real-time performance many approaches were suggested,
including table lookup[13] and approximation[14, 15]. The most common approximation
was to ignore the velocity-dependent term C, since accurate positioning and high speed
motion are exclusive in typical robot applications.
3 MANIPULATOR RIGID-BODY DYNAMICS
11
Method Multiplications Additions For N=6
Multiply Add
Lagrangian[19] 32
1
2
n
4
86
5

12
n
3
25n
4
66
1
3
n
3
66,271 51,548
171
1
4
n
2
53
1
3
n 129
1
2
n
2
42
1
3
n
128 96
Recursive NE[19] 150n 48 131n 48 852 738

Kane[10] 646 394
Simplified RNE[22] 224 174
Table 1: Comparison of computational costs for inverse dynamics from various sources.
The last entry is achieved by symbolic simplification using the software package ARM.
Orin et al.[16] proposed an alternative approach based on the Newton-Euler (NE) equations
of rigid-body motion applied to each link. Armstrong[17] then showed how recursion might
be applied resulting in O n complexity. Luh et al.[18] provided a recursive formulation of
the Newton-Euler equations with linear and angular velocities referred to link coordinate
frames. They suggested a time improvement from 7 9s for the Lagrangian formulation
to 4
5ms, and thus it became practical to implement ‘on-line’. Hollerbach[19] showed
how recursion could be applied to the Lagrangian form, and reduced the computation to
within a factor of 3 of the recursive NE. Silver[20] showed the equivalence of the recursive
Lagrangian and Newton-Euler forms, and that the difference in efficiency is due to the
representation of angular velocity.
“Kane’s equations” [10] provide another methodology for deriving the equations of motion
for a specific manipulator. A number of ‘Z’ variables are introduced, which while not
necessarily of physical significance, lead to a dynamics
formulation with low computational
burden. Wampler[21] discusses the computational costs of Kane’s method in some detail.
The NE and Lagrange forms can be written generally in terms of the Denavit-Hartenberg
parameters — however the specific formulations, such as Kane’s, can have lower compu-
tational cost for the specific manipulator. Whilst the recursive forms are computationally
more efficient, the non-recursive forms compute the individual dynamic terms (M, C and
G) directly. A comparison of computation
costs is given in Table 1.
3.1 Recursive Newton-Euler formulation
The recursive Newton-Euler (RNE) formulation[18] computes the inverse manipulator dy-
namics, that is, the joint torques required for a given set of joint angles, velocities and
accelerations. The forward recursion propagates kinematic information — such as angu-

lar velocities, angular accelerations, linear accelerations
— from the base reference frame
(inertial frame) to the end-effector. The backward recursion propagates the forces and mo-
ments exerted on each link from the end-effector of the manipulator to the base reference
frame
3
. Figure 2 shows the variables involved in the computation for one link.
The notation of Hollerbach[19] and Walker and Orin [23] will be used in which the left
superscript indicates the reference coordinate frame for the variable. The notation of Luh et
al.[18
] and later Lee[4, 3] is considerably less clear.
3
It should be noted that using MDH notation with its different axis assignment conventions the Newton Euler
formulation is expressed differently[5].
3 MANIPULATOR RIGID-BODY DYNAMICS
12
joint i−1
joint i
joint i+1
link i−1
link i
T
i−1
T
i
a
i
X
i
Y

i
Z
i
a
i−1
Z
i−1
X
i−1
Y
i−1
p*
v
i
.
v
i
.
ω
i
ω
i
n f
i
i
N F
i i
v
i
.

v
i
_
_
i+1 i+1
n f
s
i
Figure 2: Notation used for inverse dynamics, based on standard Denavit-Hartenberg nota-
tion.
Outward recursion, 1 i n.
If axis i 1 is rotational
i 1
ω
i 1
i 1
R
i
i
ω
i
z
0
˙q
i 1
(12)
i 1
˙
ω
i 1

i 1
R
i
i
˙
ω
i
z
0
¨q
i 1
i
ω
i
z
0
˙q
i 1
(13)
i 1
v
i 1
i 1
ω
i 1
i 1
p
i 1
i 1
R

i
i
v
i
(14)
i 1
˙v
i 1
i 1
˙
ω
i 1
i 1
p
i 1
i 1
ω
i 1
i 1
ω
i 1
i 1
p
i 1
i 1
R
i
i
˙v
i

(15)
If axis i 1 is translational
i 1
ω
i 1
i 1
R
i
i
ω
i
(16)
i 1
˙
ω
i 1
i 1
R
i
i
˙
ω
i
(17)
i 1
v
i 1
i 1
R
i

z
0
˙q
i 1
i
v
i
i 1
ω
i 1
i 1
p
i 1
(18)
i 1
˙v
i 1
i 1
R
i
z
0
¨q
i 1
i
˙v
i
i 1
˙
ω

i 1
i 1
p
i 1
2
i 1
ω
i 1
i 1
R
i
z
0
˙q
i 1
i 1
ω
i 1
i 1
ω
i 1
i 1
p
i 1
(19)
i
˙
v
i
i

˙
ω
i
s
i
i
ω
i
i
ω
i
s
i
i
˙v
i
(20)
i
F
i
m
i
i
˙
v
i
(21)
i
N
i

J
i
i
˙
ω
i
i
ω
i
J
i
i
ω
i
(22)
Inward recursion, n i 1.
i
f
i
i
R
i 1
i 1
f
i 1
i
F
i
(23)
i

n
i
i
R
i 1
i 1
n
i 1
i 1
R
i
i
p
i
ii 1
f
i 1
i
p
i
s
i
i
F
i
i
N
i
(24)
Q

i
i
n
i
T
i
R
i 1
z
0
if link i 1 is rotational
i
f
i
T
i
R
i 1
z
0
if link i 1 is translational
(25)
where
3 MANIPULATOR RIGID-BODY DYNAMICS
13
i is the link index, in the range 1 to n
J
i
is the moment of inertia of link i about its COM
s

i
is the position vector of the COM of link i with respect to frame i
ω
i
is the angular velocity of link i
˙
ω
i
is the angular acceleration of link i
v
i
is the linear velocity of frame i
˙v
i
is the linear acceleration of frame i
v
i
is the linear velocity of the COM of link i
˙
v
i
is the linear acceleration of the COM of link i
n
i
is the moment exerted on link i by link i 1
f
i
is the force exerted on link i by link i 1
N
i

is the total moment at the COM of link i
F
i
is the total force at the COM of link i
Q
i
is the force or torque exerted by the actuator at joint i
i 1
R
i
is the orthonormal rotation matrix defining frame i orientation with respect to frame
i 1. It is the upper 3 3 portion of the link transform matrix given in (1).
i 1
R
i
cosθ
i
cosα
i
sinθ
i
sinα
i
sinθ
i
sinθ
i
cosα
i
cosθ

i
sinα
i
cosθ
i
0 sinα
i
cosα
i
(26)
i
R
i 1
i 1
R
i
1 i 1
R
i
T
(27)
i
p
i
is the displacement from the origin of frame i 1 to frame i with respect to frame i.
i
p
i
a
i

d
i
sinα
i
d
i
cosα
i
(28)
It is the negative translational part of
i 1
A
i
1
.
z
0
is a unit vector in Z direction, z
0
0 0 1
Note that the COM linear velocity given by equation (14) or (18) does not need to be com-
puted since no other expression depends upon it. Boundary conditions are used to introduce
the effect of gravity by setting the acceleration of the base link
˙v
0
g (29)
where g is the gravity vector in the reference coordinate frame, generally acting in the
negative Z direction, downward. Base velocity is generally zero
v
0

0 (30)
ω
0
0 (31)
˙
ω
0
0 (32)
At this stage the Toolbox only pro
vides an implementation of this algorithm using the stan-
dard Dena
vit-Hartenberg conventions.
3.2 Direct dynamics
Equation (11) may be used to compute the so-called inverse dynamics, that is, actuator
torque as a function of manipulator state and is useful for on-line control. For simulation
REFERENCES
14
the direct, integral or forward dynamic formulation is required giving joint motion in terms
of input torques.
Walker and Orin[23] describe several methods for computing the forward dynamics, and
all make use of an existing inverse dynamics solution. Using the RNE algorithm for in-
verse dynamics, the computational complexity of the forward dynamics using ‘Method 1’
is O
n
3
for an n-axis manipulator. Their other methods are increasingly more sophisticated
but reduce the computational cost, though still O n
3
. Featherstone[24] has described the
“articulated-body method” for O n computation of forward dynamics, however for n 9

it is more expensive than the approach of Walker and Orin. Another O n approach for
forward dynamics has been described by Lathrop[25].
3.3 Rigid-body inertial parameters
Accurate model-based dynamic control of a manipulator requires knowledge of the rigid-
body inertial parameters. Each link has ten independent inertial parameters:
link mass, m
i
;
three first moments, which may be expressed as the COM location, s
i
, with respect to
some datum on the link or as a moment S
i
m
i
s
i
;
six second moments, which represent the inertia of the link about a given axis, typi-
cally through the COM. The second moments may be expressed in matrix or tensor
form as
J
J
xx
J
xy
J
xz
J
xy

J
yy
J
yz
J
xz
J
yz
J
zz
(33)
where the diagonal elements are the moments of inertia, and the off-diagonals are
products of inertia. Only six of these nine elements are unique: three moments and
three products of inertia.
For any point in a rigid-body there is one set of axes known as the principal axes of
inertia for which the off-diagonal terms, or products, are zero. These axes are given
by the eigenvectors of the inertia matrix (33) and the eigenvalues are the principal
moments of inertia. Frequently the products of inertia of the robot links are zero due
to symmetry.
A 6-axis manipulator rigid-body dynamic model thus entails
60 inertial parameters. There
may be additional parameters per joint due
to friction and motor armature inertia. Clearly,
establishing numeric values for this number of parameters is a difficult task. Many parame-
ters cannot be measured without dismantling the robot and performing careful experiments,
though this approach was used by Armstrong et al.[26]. Most parameters could be derived
from CAD models of the robots, but this information is often considered proprietary and
not made available to
researchers.
References

[1] R. S. Hartenberg and J. Denavit, “A kinematic notation for lower pair mechanisms
based on matrices,” Journal of Applied Mechanics, vol. 77, pp. 215–221, June 1955.
REFERENCES
15
[2] R. P. Paul, Robot Manipulators: Mathematics, Programming, and Control. Cam-
bridge, Massachusetts: MIT Press, 1981.
[3] K. S. Fu, R. C. Gonzalez, and C. S. G. Lee, Robotics. Control, Sensing, Vision and
Intelligence. McGraw-Hill, 1987.
[4] C. S. G. Lee, “Robot arm kinematics, dynamics and control,” IEEE Computer, vol. 15,
pp. 62–80, Dec. 1982.
[5] J. J. Craig, Introduction to Robotics. Addison Wesley, second ed., 1989.
[6] D. Whitney and D. M. Gorinevskii, “The mathematics of coordinated control of pros-
thetic arms
and manipulators,” ASME Journal of Dynamic Systems, Measurement and
Control, vol. 20, no. 4, pp. 303–309, 1972.
[7] R. P. Paul, B. Shimano, and G. E. Mayer, “Kinematic control equations for simple
manipulators,” IEEE Trans. Syst. Man Cybern., vol. 11, pp. 449–455, June 1981.
[8] J. M. Hollerbach, “Dynamics,” in Robot Motion - Planning and Control (M. Brady,
J. M. Hollerbach, T. L. Johnson, T. Lozano-Perez, and M. T. Mason, eds.), pp. 51–71,
MIT, 1982.
[9] C. S. G. Lee, B. Lee, and R. Nigham, “Development of the generalized D’Alembert
equations of motion for mechanical manipulators,” in
Proc. 22nd CDC, (San Antonio,
Texas), pp. 1205–1210, 1983.
[10] T. Kane and D. Levinson, “The use of Kane’s dynamical equations in robotics,” Int. J.
Robot. Res., vol. 2, pp. 3–21, Fall 1983.
[11] J. Uicker, On the Dynamic Analysis of Spatial Linkages Using 4 by 4 Matrices. PhD
thesis, Dept. Mechanical Engineering and Astronautical Sciences, NorthWestern Uni-
versity, 1965.
[12] M. Kahn, “The near-minimum time control of open-loop articulated kinematic link-

ages,” Tech. Rep. AIM-106,
Stanford University, 1969.
[13] M. H. Raibert and B. K. P. Horn, “Manipulator control using the configuration space
method,” The Industrial Robot, pp. 69–73, June 1978.
[14] A. Bejczy, “Robot arm dynamics and control,” Tech. Rep. NASA-CR-136935, NASA
JPL, Feb. 1974.
[15] R. Paul, “Modelling, trajectory calculation and servoing of a computer controlled
arm,” Tech. Rep. AIM-177, Stanford University, Artificial Intelligence Laboratory,
1972.
[16] D. Orin, R. McGhee, M. Vukobratovic, and G. Hartoch, “Kinematics and kinetic
analysis of open-chain linkages utilizing Newton-Euler methods,” Mathematical Bio-
sciences. An International Journal, vol. 43, pp. 107–130, Feb. 1979.
[17] W. Armstrong, “Recursive solution to the equations of motion of an n-link manipula-
tor,” in Proc. 5th World Congress on Theory of Machines and Mechanisms, (Montreal),
pp. 1343–1346, July 1979.
[18] J. Y. S. Luh, M. W. Walker, and R. P. C. Paul, “On-line computational scheme for me-
chanical manipulators,” ASME Journal of Dynamic Systems, Measurement and Con-
trol, vol.
102, pp. 69–76, 1980.
REFERENCES
16
[19] J. Hollerbach, “A recursive Lagrangian formulation of manipulator dynamics and a
comparative study of dynamics formulation complexity,” IEEE Trans. Syst. Man Cy-
bern., vol. SMC-10, pp. 730–736, Nov. 1980.
[20] W. M. Silver, “On the equivalance of Lagrangian and Newton-Euler dynamics for
manipulators,” Int. J. Robot. Res., vol. 1, pp. 60–70, Summer 1982.
[21] C. Wampler, Computer Methods in Manipulator Kinematics, Dynamics, and Control:
a Comparative Study.
PhD thesis, Stanford University, 1985.
[22] J. J. Murray, Computational Robot Dynamics. PhD thesis, Carnegie-Mellon Univer-

sity, 1984.
[23] M. W. Walker and D. E. Orin, “Efficient dynamic computer simulation of robotic
mechanisms,” ASME Journal of Dynamic Systems, Measurement and Control,
vol. 104, pp. 205–211, 1982.
[24] R. Featherstone, Robot Dynamics Algorithms. Kluwer Academic Publishers, 1987.
[25] R. Lathrop, “Constrained (closed-loop) robot simulation by local constraint propoga-
tion.,” in Proc. IEEE Int. Conf. Robotics and Automation, pp. 689–694, 1986.
[26] B. Armstrong, O. Khatib, and J. Burdick, “The explicit dynamic model and inertial
parameters
of the Puma 560 arm,” in Proc. IEEE Int. Conf. Robotics and Automation,
vol. 1, (Washington, USA), pp. 510–18, 1986.
1
2
Reference
For an n-axis manipulator the following matrix naming and dimensional conventions apply.
Symbol Dimensions Description
l
link manipulator link object
q
1 n joint coordinate vector
q
m n m-point joint coordinate trajectory
qd
1 n joint velocity vector
qd
m n m-point joint velocity trajectory
qdd
1 n joint acceleration vector
qdd
m n m-point joint acceleration trajectory

robot
robot robot object
T
4 4 homogeneous transform
T
4 4 m m-point homogeneous transform trajectory
Q
quaternion unit-quaternion object
M
1 6 vector with elements of 0 or 1 corresponding to
Cartesian DOF along X, Y, Z and around X, Y, Z.
1 if that Cartesian DOF belongs to the task space,
else 0.
v
3 1 Cartesian vector
t
m 1 time vector
d
6 1 differential motion vector
Object names are shown in bold typeface.
A trajectory is represented by a matrix in which each row corresponds to one of m time
steps. For a joint coordinate, velocity or acceleration trajectory the columns correspond
to the robot axes. For homogeneous transform trajectories we use 3-dimensional matrices
where the last index corresponds to the time step.
Units
All angles are in radians. The choice of all other units is up to the user, and this choice will
flow on to the units in which homogeneous transforms, Jacobians, inertias and torques are
represented.
Robotics Toolbox Release 6 Peter
Corke, April 2001

Introduction
2
Homogeneous Transforms
eul2tr Euler angle to homogeneous transform
oa2tr orientation and approach vector to homogeneous transform
rot2tr extract the 3 3 rotational submatrix from a homogeneous
transform
rotx homogeneous transform for rotation about X-axis
roty homogeneous transform for rotation about Y-axis
rotz homogeneous transform for rotation about Z-axis
rpy2tr Roll/pitch/yaw angles to homogeneous transform
tr2eul homogeneous transform to Euler angles
tr2rot homogeneous transform to rotation submatrix
tr2rpy homogeneous transform to roll/pitch/yaw angles
transl set or extract the translational component of a homoge-
neous transform
trnorm normalize a homogeneous transform
Quaternions
/ divide quaternion by quaternion or scalar
* multiply quaternion by a quaternion or vector
inv invert a quaternion
norm norm of a quaternion
plot display a quaternion as a 3D rotation
q2tr quaternion to homogeneous transform
qinterp interpolate quaternions
unit unitize a quaternion
Kinematics
diff2tr differential motion vector to transform
fkine compute forward kinematics
ikine compute inverse kinematics

ikine560 compute inverse kinematics for Puma 560 like arm
jacob0 compute Jacobian in base coordinate frame
jacobn compute Jacobian in end-effector coordinate frame
tr2diff homogeneous transform to differential motion vector
tr2jac homogeneous transform to Jacobian
Dynamics
accel compute forward dynamics
cinertia compute Cartesian manipulator inertia matrix
coriolis compute centripetal/coriolis torque
friction joint friction
ftrans transform force/moment
gravload compute gravity loading
inertia compute manipulator inertia matrix
itorque compute inertia torque
nofriction remove friction from a robot object
rne inverse dynamics
Robotics Toolbox Release 6 Peter Corke, April 2001
Introduction
3
Manipulator Models
link construct a robot link object
puma560 Puma 560 data
puma560akb Puma 560 data (modified Denavit-Hartenberg)
robot construct a robot object
stanford Stanford arm data
twolink simple 2-link example
Trajectory Generation
ctraj Cartesian trajectory
jtraj joint space trajectory
trinterp interpolate homogeneous transforms

Graphics
drivebot drive a graphical robot
plot plot/animate robot
Other
manipblty compute manipulability
rtdemo toolbox demonstration
unit unitize a vector
Robotics Toolbox Release 6 Peter Corke, April 2001
accel
4
accel
Purpose
Compute manipulator forward dynamics
Synopsis
qdd = accel(robot, q, qd, torque)
Description
Returns a vector of joint accelerations that result from applying the actuator
torque
to the
manipulator
robot
with joint coordinates
q
and velocities
qd
.
Algorithm
Uses the method 1 of Walker and Orin to compute the forward dynamics. This form is
useful for simulation of manipulator dynamics, in conjunction with a numerical integration
function.

See Also
rne, robot, fdyn, ode45
References
M. W. Walker and D. E. Orin. Efficient dynamic computer simulation of robotic mecha-
nisms. ASME J
ournal of Dynamic Systems, Measurement and Control, 104:205–211, 1982.
Robotics Toolbox Release 6 Peter Corke, April 2001
cinertia
5
cinertia
Purpose
Compute the Cartesian (operational space) manipulator inertia matrix
Synopsis
M = cinertia(robot, q)
Description
cinertia
computes the Cartesian, or operational space, inertia matrix.
robot
is a robot
object that describes the manipulator dynamics and kinematics, and
q
is an n-element vector
of joint coordinates.
Algorithm
The Cartesian inertia matrix is calculated from the joint-space inertia matrix by
M x J q
T
M q J q
1
and relates Cartesian force/torque to Cartesian acceleration

F M x ¨x
See Also
inertia, robot, rne
References
O. Khatib, “A unified approach for motion and force control of robot manipulators: the
operational space formulation,” IEEE Trans. Robot. Autom., vol. 3, pp. 43–53, Feb. 1987.
Robotics Toolbox Release 6 Peter Corke,
April 2001
coriolis
6
coriolis
Purpose
Compute the manipulator Coriolis/centripetal torque components
Synopsis
tau c = coriolis(robot, q, qd)
Description
coriolis
returns the joint torques due to rigid-body Coriolis and centripetal effects for the
specified joint state
q
and velocity
qd
.
robot
is a robot object that describes the manipulator
dynamics and kinematics.
If
q
and
qd

are row vectors,
tau c
is a row vector of joint torques. If
q
and
qd
are matrices,
each row is interpreted as a joint state vector, and
tau c
is a matrix each row being the
corresponding joint torques.
Algorithm
Evaluated from the equations of motion, using
rne
, with joint acceleration and gravitational
acceleration set to zero,
τ
C q ˙q ˙q
Joint friction is ignored in this calculation.
See Also
link, rne, itorque, gravload
References
M. W. Walker and D. E. Orin. Efficient dynamic computer simulation of robotic mecha-
nisms. ASME J
ournal of Dynamic Systems, Measurement and Control, 104:205–211, 1982.
Robotics Toolbox Release 6 Peter Corke, April 2001
ctraj
7
ctraj
Purpose

Compute a Cartesian trajectory between two points
Synopsis
TC = ctraj(T0, T1, m)
TC = ctraj(T0, T1, r)
Description
ctraj
returns a Cartesian trajectory (straight line motion)
TC
from the point represented by
homogeneous transform
T0
to
T1
. The number of points along the path is
m
or the length of
the given vector
r
. For the second case
r
is a vector of distances along the path (in the range
0 to 1) for each point. The first case has the points equally spaced, but different spacing may
be specified to achieve acceptable acceleration profile.
TC
is a 4 4 m matrix.
Examples
To create a Cartesian path with smooth acceleration we can use the
jtraj
function to create
the path vector

r
with continuous derivitives.
>> T0 = transl([0 0 0]); T1 = transl([-1 2 1]);
>> t= [0:0.056:10];
>> r = jtraj(0, 1, t);
>>
TC = ctraj(T0, T1, r);
>> plot(t, transl(TC));
0 1 2 3 4 5 6 7 8 9 10
−1
−0.5
0
0.5
1
1.5
2
Time (s)
See Also
trinterp, qinterp, transl
References
R. P. Paul, Robot Manipulators: Mathematics, Programming, and Control. Cambridge,
Massachusetts: MIT Press, 1981.
Robotics Toolbox Release 6 Peter Corke, April 2001
diff2tr
8
diff2tr
Purpose
Convert a differential motion vector to a homogeneous transform
Synopsis
delta = diff2tr(x)

Description
Returns a homogeneous transform representing differential translation and rotation corre-
sponding to Cartesian velocity x v
x
v
y
v
z
ω
x
ω
y
ω
z
.
Algorithm
From mechanics we know that
˙
R Sk Ω R
where R is an orthonormal rotation matrix and
Sk Ω
0 ω
z
ω
y
ω
z
0 ω
x
ω

y
ω
x
0
This can be generalized to
˙
T
Sk Ω
˙
P
000 1
T
for the rotational and translational case.
See Also
tr2diff
References
R. P. Paul. Robot Manipulators: Mathematics, Programming, and Control. MIT Press,
Cambridge, Massachusetts, 1981.
Robotics Toolbox Release 6 Peter Corke, April 2001
drivebot
9
drivebot
Purpose
Drive a graphical robot
Synopsis
drivebot(robot)
Description
Pops up a window with one slider for each joint. Operation of the sliders will drive the
graphical robot on the screen. Very useful for gaining an understanding of joint limits and
robot workspace.

The joint coordinate state is kept with the graphical robot and can be obtained using the
plot
function. The initial value of joint coordinates is taken from the graphical robot.
Examples
To drive a graphical Puma 560 robot
>> puma560 % define the robot
>> plot(p560,qz) % draw it
>> drivebot(p560) % now drive it
See Also
plot
Robotics Toolbox Release 6 Peter Corke, April 2001

×