**Int. J. Robotics Research, vol. 16, no. 2, pp. 168-170, 1997**

© 1997 Massachusetts Institute of Technology

In an earlier paper on inertial properties in robotic manipulation, Khatib introduced the dynamically-consistent generalized inverse. This inverse, which is identical to the inertia-weighted generalized inverse of the Jacobian of a redundant manipulator, is shown here to be independent of load and end-effector inertias. The consequences of this property are: simplified calculation of the generalized inverse, load-independent behavior of control systems and redundancy-resolution schemes using this matrix, and simplification of the equations of motion of multi-arm systems handling a common load.

**Int. J. Robotics Research, vol. 18, no. 9, pp. 867-875, 1999**

© 1999 Sage Publications, Inc.

This paper presents a recursive, divide-and-conquer algorithm for
calculating the forward dynamics of a robot mechanism, or general rigid-body
system, on a parallel computer. It features *O*(log(*n*)) time
complexity on *O*(*n*) processors, and is the fastest available
algorithm for a computer with a large number of processors and low
communications costs. It is an exact, non-iterative algorithm, and is
applicable to mechanisms with any joint type and any topology, including
branches and kinematic loops.

The algorithm works by recursive application of a formula that constructs the articulated-body equations of motion of an assembly from those of its constituent parts. The inputs to this formula are the equations of motion of two independent sub-assemblies, plus a description of how they are to be connected; and the output is the equation of motion of the assembly. Starting with a collection of unconnected rigid bodies, the equations of motion of any rigid-body system can be constructed by repeated application of this formula.

This paper, being the first in a two-part series, presents an overview of the new algorithm and a detailed description of the simplest case: unbranched kinematic chains. Details of the general case are presented in Part 2.

**Int. J. Robotics Research, vol. 18, no. 9, pp. 876-892, 1999**

© 1999 Sage Publications, Inc.

This paper is the second in a two-part series describing a recursive,
divide-and-conquer algorithm for calculating the forward dynamics of a
robot mechanism, or a general rigid-body system, on a parallel computer.
This paper presents the general version of the algorithm. The derivation
begins with an algorithm for kinematic trees, which is then extended to
closed-loop systems. The general algorithm achieves
*O*(log(*n*))
time complexity on *O*(*n*) processors for all kinematic trees
and a large subset of closed-loop systems.

This paper also presents a more accurate version of the algorithm, and the results of some numerical accuracy tests that compare both versions with the standard articulated-body algorithm. The tests use rigid-body systems containing up to 1024 bodies; and they show that the divide-and-conquer algorithm is substantially less accurate than the best serial algorithm, but still accurate enough to be useful.

**IEEE Trans. Robotics & Automation, vol. 15, no. 6, pp. 1140-1144,
1999**

© 1999 IEEE

The Constraint Force Algorithm, as originally described by Fijany et
al., calculates the forward dynamics of a system comprising *N* rigid
bodies connected together in an unbranched chain with joints from a restricted
class of joint types. It was designed for parallel calculation of
the dynamics, and achieves *O*(log *N*) time complexity on
*O*(*N*)
processors. This paper presents a new formulation of the Constraint
Force Algorithm that corrects a major limitation in the original, and sheds
new light on the relationship between it and other dynamics algorithms.
The new version is applicable to systems with any type of joint, floating
bases, and short branches off the main chain. It is obtained using
a new technique for analysing constrained rigid-body systems by means of
a change of basis in a dual system of vector spaces. This new technique
is also described.

**IEEE Int. Conf. Robotics & Automation, San Francisco, April 24-28,
pp. 826-834, 2000**

© 2000 IEEE

This paper reviews some of the accomplishments in the field of robot dynamics research, from the development of the recursive Newton-Euler algorithm to the present day. Equations and algorithms are given for the most important dynamics computations, expressed in a common notation to facilitate their presentation and comparison.

**Ball 2000, Cambridge, UK, July 9-12, 2000**

This paper examines a property of twists and wrenches that leads to
a restriction in the choice of basis vectors in a twist/wrench representation
of motion and force vectors. Given any non-zero twist **t** (or
wrench **w**), it is possible to identify wrenches **w** (or twists
**t**)
having the same screw axis as **t** (or **w**). This kind of
relationship is inherent in the definition of twists and wrenches, and
should therefore be regarded as an invariant property; but it is not invariant
with respect to a general change of basis, so it becomes necessary to restrict
the choice of bases to a set that does preserve the invariance of this
property. A similar problem arises with motors.

This paper goes on to argue that the restricted choice of bases is a practical disadvantage on the grounds that it hinders the analysis of freedoms and constraints, and reduces the number of analytical techniques that can be used.

(The ** Full Text** is available via the
Online Conference Proceedings.)

**Int. J. Robotics Research, vol. 20, no. 11, pp. 841-846, 2001**

© 2001 Sage Publications, Inc.

This paper explains the relationship between two existing representations of rigid-body acceleration in a 6-D vector: conventional acceleration, which is the concatenation of two 3-D acceleration vectors, and spatial acceleration, which is the time derivative of a 6-D velocity vector. The two are materially different and obey different composition rules. In particular, spatial accelerations behave like true vectors, and conventional accelerations do not. This paper shows that the conventional acceleration of a rigid body is its apparent spatial acceleration in a moving coordinate system. This implies that both vectors describe the same physical phenomenon, but in different coordinate systems. It also implies that rigid-body acceleration really is a vector. The paper concludes with some examples showing how 6-D accelerations are used.

**Robotics Research: The Tenth International Symposium, R. A. Jarvis &
A. Zelinsky (Eds.), pp. 433-446, Springer, Berlin, 2003**

© 2003 Springer-Verlag

This paper presents an analysis of frictionless contact between a rigid body belonging to a robot mechanism and one belonging to its environment. According to this analysis, it is possible to design a hybrid motion/force controller such that the motion and force subsystems are instantaneously independent of each other, and both are instantaneously independent of the environmental dynamics. Such a control system should be able to operate in an environment with unknown dynamics.

Full Text (PDF) of preprint version, originally published in: ISRR 2001: 10th Int. Symp. Robotics Research, Lorne, Victoria, Australia, Nov. 9-12, pp. 341-348, 2001.

**IEEE Trans. Robotics & Automation, vol. 20, no. 1, pp. 82-92,
2004**

© 2004 IEEE

This paper examines the phenomenon of frictionless contact between rigid bodies that are already subject to kinematic constraints from some other source. Such contacts occur frequently when robots interact with their environments, in which case, the additional constraints come from the robot mechanisms. A proper analysis of these contacts must consider both sets of constraints. This paper presents a general model of constrained-body contact, expressed in invariant terms; a method of resolving equations of motion into decoupled subsystems with respect to the contact's motion and force freedoms; an equation of motion for possibly redundant robots experiencing constrained-body contact, which employs a novel decomposition of the robot's joint space into dynamically-decoupled subspaces; and a dynamically-decoupled hybrid motion/force control system based on the same decomposition. It is shown that disturbances from an unknown dynamic environment are automatically confined to the force-control subsystem, and that a modification to the control law can factor these disturbances out of the controlled response.

**Int. J. Robotics Research, vol. 23, no. 9, pp. 859-871, 2004**

© 2004 Sage Publications, Ltd.

The joint-space inertia matrix of a robot mechanism can be highly
ill-conditioned. This phenomenon is not merely a numerical artifact: it
is symptomatic of an underlying property of the mechanism itself that can make
it more difficult to simulate or control. This paper investigates the
problem by means of an empirical study of the eigenvalues, eigenvectors and
condition number of the joint-space inertia matrix. It is shown that the
condition number is typically large, and that it grows anywhere from
*O*(*N*) to *O*(*N*^{4}) with the number of bodies
in the system. Several graphs are presented showing how the condition
number varies with configuration, the number of links, variations in link
sizes, variations in connectivity, and fixed or floating bases.
Explanations are offered for some of the observed effects.

**Int. J. Robotics Research, vol. 24, no. 6, pp. 487-500, 2005**

© 2005 Sage Publications, Ltd.

This paper describes new factorization algorithms that exploit
branch-induced sparsity in the joint-space inertia matrix (JSIM) of a
kinematic tree. It also presents new formulae that show how the cost of
calculating and factorizing the JSIM vary with the topology of the tree.
These formulae show that the cost of calculating forward dynamics for a
branched tree can be considerably less than the cost for an unbranched tree of
the same size. Branches can also reduce complexity; and some examples
are presented of kinematic trees for which the complexity of calculating and
factorizing the JSIM are less than *O*(*n*^{2}) and
*O*(*n*^{3}), respectively. Finally, a cost comparison
is made between an *O*(*n*) algorithm and an
*O*(*n*^{3}) algorithm, the latter incorporating one of the
new factorization algorithms. It is shown that the
*O*(*n*^{3}) algorithm is only 15% slower than the
*O*(*n*) algorithm when applied to a 30-DoF humanoid, but is 2.6
times slower when applied to an equivalent unbranched chain. This is due
mainly to the *O*(*n*^{3}) algorithm running about 2.2 times
faster on the humanoid than on the chain.

**IEEE Int. Conf. Robotics & Automation, Orlando, Florida, May 15-19,
pp. 1892-1897, 2006**

© 2006 IEEE

6-D vectors are routinely expressed in Plücker coordinates; yet there is almost no mention in the literature of the basis vectors that give rise to these coordinates. This paper identifies the Plücker basis vectors, and uses them to explain the following: the relationship between a 6-D vector and its Plücker coordinates, the relationship between a 6-D vector and the pair of 3-D vectors used to define it, and the correct way to differentiate a 6-D vector in a moving coordinate system.

Full Text (PDF). Conference Slides (PDF).

**Int. J. Robotics Research, vol. 27, no. 5, pp. 595-611, 2008**

© 2008 Sage Publications, Ltd.

This paper presents a new control architecture for fast, accurate force
control of antagonistic pairs of shape memory alloy wires. The main
components are: a differential-mode controller, which controls the output
force, an anti-slack mechanism, a rapid-heating mechanism and an anti-overload
mechanism. The closed-loop response is fast and accurate, even in the
presence of large external motion disturbances. There is no sign of
limit cycles; and the performance is unaffected by large load inertias.
This paper also presents an architecture for position control, in which a
position feedback loop is added to the force control architecture.
Experimental results show force control accuracies as high as 1mN in a
+/−3N range, force output rates as high as 50Ns^{−1}, and
highly accurate position control with steady-state errors below the resolution
of the position encoder.

Full Text (PDF) of final manuscript.

**Int. J. Robotics Research, vol. 29, no. 10, pp. 1353-1368, Sept. 2010**

This paper presents a new method for calculating operational-space inertia matrices, and other related quantities, for branched kinematic trees. It is based on the exploitation of branch-induced sparsity in the joint-space inertia matrix and the task Jacobian. Detailed cost figures are given for the new method, and its efficacy is demonstrated by means of a realistic example based on the ASIMO Next-Generation humanoid robot. In this example, the new method is shown to be 6.7 times faster than the basic matrix method, and 1.6 times faster than the efficient low-order algorithm of Rodriguez et al. Furthermore, cost savings of more than 50,000 arithmetic operations are obtained in the calculation of the inertia-weighted pseudoinverse of the task Jacobian and its null-space projection matrix. Additional examples are considered briefly, in order to further compare the new method with the algorithm of Rodriguez et al.

DOI link to full text (for those who have access). Copies available from me by request. The full text of the final manuscript will be made available here one year after it appears in IJRR.

**IEEE Robotics & Automation Magazine,
vol. 17, no. 3, pp. 83-94, 2010**

© 2010 IEEE

The purpose of this tutorial is to present a beginner's guide to 6-D vectors in sufficient detail that a reader can begin to use them as a practical problem-solving tool right away. This tutorial covers the basics, and Part 2 will cover the application of 6-D vectors to a variety of robot kinematics and dynamics calculations. The rest of the tutorial is chiefly concerned with explaining what spatial vectors are and how to use them. It highlights the differences between solving a rigid-body problem using 3-D vectors and solving the same problem using spatial vectors, so that the reader can get an idea of what it means to think in 6-D.

DOI link to full text (for those who have access).

**IEEE Robotics & Automation Magazine,
vol. 17, no. 4, pp. 88-99, 2010**

© 2010 IEEE

In this tutorial, we shall examine the application of spatial vectors to various problems in robot kinematics and dynamics. To demonstrate that spatial vectors are both a tool for analysis and a tool for computation, we shall consider both the mathematical solution of a problem and the computer code to calculate the answer.

DOI link to full text (for those who have access).