Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

mls94-complete[1]

.pdf
Скачиваний:
53
Добавлен:
10.06.2015
Размер:
2.8 Mб
Скачать

ξ1

 

ξ4

ξ2

ξ3

ξ5

l1

q2

l2

q1

ξ6

 

 

T

l0

S

Figure A.2: An elbow manipulator

A manipulator consisting of six revolute joints has maximal work volume if it achieves this bound. This bound is independent of choice of base and tool frames, but it does depend on the choice of length scale. However, as noted above, this choice of scale does not a ect comparisons between volumes, and hence we can use this choice of volume to define an optimal manipulator.

For the case of 6R manipulators, it is possible to completely describe the class of manipulators which achieve maximal work volume. Define an elbow manipulator to be one which consists of a shoulder, an elbow, and a wrist aligned as shown in Figure A.2. The wrist and shoulder joints of an elbow manipulator consist of mutually orthogonal axes intersecting at a point. The inverse to an elbow manipulator is one in which the wrist and the shoulder joints are switched (so that the “wrist” is located at the base of the manipulator).

Theorem A.9. Optimal manipulator design

A 6R manipulator with given length LM has maximal work volume if and only if it is an elbow manipulator or the inverse of an elbow manipulator, with the elbow midway between the shoulder and the wrist.

A detailed discussion and proof of this result is given by Paden and Sastry [85, 86]. The wrist at one end of the manipulator insures that all orientations can be reached at any configuration. The location of the elbow, at the midpoint between the shoulder and wrist, insures that there is not a hole in the center of the workspace.

433

434

Appendix B

A Mathematica Package for Screw Calculus

This appendix contains a brief description of a Mathematica package, Screws.m, which facilitates the use of screws, twists, and wrenches for analyzing robot kinematics. The Screws package implements all of the functions described in Chapter 2 and, when combined with the supplementary package RobotLinks.m, allows symbolic and numerical computation of the kinematics of open-chain robot manipulators as well as many other functions. The Mathematica program itself is described in [121].

The Screws package is available via anonymous ftp from the host avalon.caltech.edu and may be used free of charge. Documentation and installation instructions are included with the source code for the package. The Screws package was written by R. Murray and S. Sur at the California Institute of Technology. All correspondence concerning the software should be sent to via e-mail to murray@avalon.caltech.edu. The authors assume no responsibility for the correctness or maintenance of the Screws package. The source code is currently available only via anonymous ftp.

The remainder of this appendix contains a brief description of the Screws package, describing the functions which are available and their syntax. Although not strictly necessary, some familiarity with Mathematica is assumed. This appendix can also be used as a guide for implementing a screw calculus package in other symbolic and numerical programming languages.

Using the Screws package

The Screws package implements screw theory in 3-dimensional Euclidean space, R3. It uses homogeneous coordinates to represent points, vectors,

435

and rigid motions, making it easy to integrate into other Mathematica packages.

The Screws package consists of two groups of functions. The first group operates on rotation matrices and implements all of the mathematical operations described in Section 2 of Chapter 2. The following functions are defined for computing in SO(3):

AxisToSkew[w]

Generate a skew-symmetric matrix give a vector w R3.

RotationAxis[R]

Calculate the axis of rotation for a matrix R SO(3).

SkewExp[S, theta]

Calculate the exponential of a skew-symmetric matrix. If theta is not specified, it defaults to 1. If the first argument to SkewExp is a vector, SkewExp first converts it to a skew-symmetric matrix and then takes its exponential.

SkewToAxis[S]

Generates a vector given a skew-symmetric matrix.

Limited error checking is used to insure that the arguments to the functions are in the proper form.

The second group of functions implements calculations on SE(3). Rigid body transformations are represented using 4 × 4 matrices. Functions are provided for transforming points and vectors to and from homogeneous coordinates, as well as converting a translation and rotation pair into a 4 × 4 matrix. The following functions are defined for use in SE(3):

HomogeneousToTwist[xi]

Convert xi from a 4 × 4 matrix to a 6-vector.

PointToHomogeneous[q]

Generate the homogeneous representation of a point q R3.

RigidAdjoint[g]

Generate the adjoint matrix corresponding to g.

RigidOrientation[g]

Extract the rotation matrix R from a homogeneous matrix g.

RigidPosition[g]

Extract the position vector p from a homogeneous matrix g.

RigidTwist[g]

Compute the twist xi R6 which generates the homogeneous matrix g.

436

RPToHomogeneous[R,p]

Construct a 4 × 4 homogeneous matrix from a rotation matrix R and a translation p.

ScrewToTwist[h, q, w]

Return the twist coordinates of a screw with pitch h through the point q and in the direction w. If h == Infinity, then a pure translational twist is generated. In this case, q is ignored and w gives the direction of translation.

TwistAxis[xi]

Compute the axis of the screw corresponding to a twist. The axis is represented as a pair {q, w}, where q is a point on the axis and

w is a unit vector describing the direction of the axis. The twist xi can be specified either as a 6-vector or a 4 × 4 matrix.

TwistExp[xi, theta]

Compute the matrix exponential of a twist xi. The default value of theta is 1. If the first argument to TwistExp is a 6-vector, it is automatically converted to a 4 × 4 matrix.

TwistPitch[xi]

Compute the pitch of a twist.

TwistMagnitude[xi]

Compute the magnitude of a twist.

TwistToHomogeneous[xi]

Convert xi from a 6-vector to a 4 × 4 matrix.

VectorToHomogeneous[q]

Generate the homogeneous representation of a vector.

Limited error checking is used to insure that the arguments to the functions are in the proper form.

Manipulator kinematics

The functions defined in the Screws package can be used to analyze the kinematics of a robot manipulator. This section describes this process and defines some new functions which streamline the analysis of manipulator kinematics. These functions are contained in the package RobotLinks.m, which is included with in Screws package distribution.

The forward kinematics for a robot manipulator can be written as a product of exponentials (of twists). The following functions are defined for creating twists specifically for robot manipulators:

437

RevoluteTwist[q, w]

Construct the unit twist corresponding to a revolute joint in the direction w going through the point q.

PrismaticTwist[q, w]

Construct the unit twist corresponding to a prismatic joint in the direction w going through the point q.

These functions use the ScrewToTwist function defined in Screws.m. Once the twists are defined, the forward kinematic map and the ma-

nipulator Jacobian can be calculated using matrix multiplication combined with the TwistExp and RigidAdjoint functions. These computations are automated by the following functions:

ForwardKinematics[{xi1, th1}, {xi2, th2}, ..., gst0]

Compute the forward kinematics map using the product of exponentials formula. The pairs {xi, th} define the joint twist and joint angle (or displacement) for each joint of the manipulator.

SpatialJacobian[{xi1, th1}, {xi2, th2}, ..., gst0]

Compute the spatial manipulator Jacobian for the manipulator. The pairs {xi, th} are given as in the ForwardKinematics function.

An example of the usage of Screws and RobotLinks packages is shown below for computing the kinematics of a SCARA manipulator. The notation corresponds to the notation used to describe the SCARA manipulator in Chapter 2.

<<Screws.m

(* screws package

*)

<<RobotLinks.m

(* additional functions *)

(* Twist axes for SCARA robot, starting from the base *)

xi1 = RevoluteTwist[{0,0,0},

{0,0,1}];

(*

base *)

xi2 = RevoluteTwist[{0,l1,0},

{0,0,1}];

(*

elbow *)

xi3 = RevoluteTwist[{0,l1+l2,0},

{0,0,1}];

(*

wrist *)

xi4 = PrismaticTwist[{0,0,0},

{0,0,1}];

 

 

(* Location of the tool frame at reference configuration *) gst0 = RPToHomogeneous[IdentityMatrix[3], {0,l1+l2,0}];

(* Forward kinematics map *) gst = Simplify[

ForwardKinematics[

{xi1,th1}, {xi2,th2}, {xi3,th3}, {xi4,th4}, gst0

]

];

438

(* Spatial manipulator Jacobian *) Js = Simplify[

SpatialJacobian[{xi1,th1}, {xi2,th2}, {xi3,th3}, {xi4,th4}, gst0]

];

439

440

Bibliography

[1]J. Angeles. Rational Kinematics. Springer-Verlag, 1988.

[2]H. Asada and J. J. Slotine. Robot Analysis and Control. John Wiley, 1986.

[3]K. J. Astrom and B. Wittenmark. Computer Controlled Systems: Theory and Design. Prentice-Hall, 1984.

[4]J. Baillieul. Geometric methods for nonlinear optimal control problems.

Journal of Optimization Theory and Applications, 25(4):519–548, 1978.

[5]J. Baillieul and D. Martin. Resolution of redundancy. In R. W. Brockett, editor, Robotics: Proceedings of Symposia in Applied Mathematics, Volume 41, pages 49–90. American Mathematical Society, 1990.

[6]R. S. Ball. A Treatise on the Theory of Screws. Cambridge University Press, 1900.

[7]A. Bicchi, J. K. Salisbury, and D. L. Brock. Contact sensing from force measurements. International Journal of Robotics Research, 12(3):249– 262, 1993.

[8]A. M. Bloch, M. Reyhanoglu, and N. H. McClamroch. Control and stabilization of nonholonomic dynamic systems. IEEE Transactions on Automatic Control, 37(11):1746–1757, 1992.

[9]W. M. Boothby. An Introduction to Di erentiable Manifolds and Riemannian Geometry. Academic Press, second edition, 1986.

[10]O. Bottema and B. Roth. Theoretical Kinematics. North-Holland, 1979.

[11]R. W. Brockett. Control theory and singular Riemannian geometry. In P. Hinton and G. Young, editors, New Directions in Applied Mathematics, pages 11–27. Springer-Verlag, New York, 1981.

[12]R. W. Brockett. Robotic manipulators and the product of exponentials formula. In P. A. Fuhrman, editor, Mathematical Theory of Networks and Systems, pages 120–129. Springer-Verlag, 1984.

[13]R. W. Brockett, editor. Robotics: Proceedings of Symposia in Applied Mathematics, Volume 41. American Mathematical Society, 1990.

[14]R. W. Brockett and L. Dai. Non-holonomic kinematics and the role of elliptic functions in constructive controllability. In Z. Li and J. F. Canny, editors, Nonholonomic Motion Planning, pages 1–22. Kluwer, 1993.

441

[15]R. W. Brockett, A. Stokes, and F. Park. A geometrical formulation of the dynamical equations describing kinematic chains. In IEEE International Conference on Robotics and Automation, pages 637–642, 1993.

[16]R. A. Brooks and A. M. Flynn. Rover on a chip. Aerospace America, pages 22–26, October 1989.

[17]P. Chiacchio and B. Siciliano. A closed-loop Jacobian transpose scheme for solving the inverse kinematics of nonredundant and redundant wrists.

Journal of Robotics Systems, 6(5):601–630, 1989.

[18]D. S. Childress. Artificial hand mechanisms. In Mechanisms Conference and International Symposium on Gearing and Transmissions, San Francisco, CA, October 1972.

[19]M. Cohn, D. C. Deno, S. S. Sastry, and J. Wendlandt. Actuating and force-sensing for cable-driven, teleoperated manipulators. In Medicine Meets Virtual Reality, San Diego, 1992. Aligned Management Associates.

[20]P. Coi et et al. Robot Technology. McGraw-Hill, 1983. Translation from the French, Les Robots (8 volumes).

[21]J. J. Craig. Introduction to Robotics: Mechanics and Control. AddisonWesley, second edition, 1989.

[22]M. R. Cutkosky. Robotic Grasping and Fine Manipulation. Kluwer, 1985.

[23]A. De Luca and G. Oriolo. The reduced gradient method for solving redundancy in robot arms. Robotersysteme, 7(2):117–122, 1991.

[24]J. Demmel, G. La erriere, J. Schwartz, and M. Sharir. Theoretical and experimental studies using a multifinger planar manipulator. In IEEE International Conference on Robotics and Automation, pages 390–395, 1988.

[25]J. Denavit and R. S. Hartenberg. A kinematic notation for lower-pair mechanisms based on matrices. Journal of Applied Mechanics, pages 215–221, June 1955.

[26]D. C. Deno, R. M. Murray, K. S. J. Pister, and S. S. Sastry. Finger-like biomechanical robots. In IEEE International Conference on Robotics and Automation, 1992.

[27]M. P. do Carmo. Di erential Geometry of Curves and Surfaces. PrenticeHall, 1976.

[28]J. Du y. Analysis of Mechanisms and Robot Manipulators. Edward Arnold Ltd., London, 1980.

[29]J. Du y and C. Crane. A displacement analysis of the general spatial 7R mechanism. Mechanisms and Machine Theory, 15:153–169, 1980.

[30]A. G. Erdman and G. N. Sandor. Mechanism Design: Analysis and Synthesis. Prentice-Hall, 1984.

[31]R. S. Fearing. Micro structures and micro actuators for implementing sub-millimeter robots. In H. S. Tzou and T. Fukuda, editors, Precision Sensor, Actuators and Systems. Kluwer Academic Publishers, 1992.

442

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]