home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
500
/
470
/
rccl012
< prev
next >
Wrap
Text File
|
1987-03-02
|
28KB
|
764 lines
.ND
.FS
This work was partially supported by a Grant from the CNRS
project ARA (Automatique et Robotique Avanc\o"e\'"e), France, and
by the Ransburg Chair of Robotics.
This material is also based on work supported by the National
Science Foundation under the Grant No. MEA-8119884.
Any opinions, findings, conclusions, or recommendations
expressed in this publication are those of the authors
and do not necessarily reflect the views of the National
Science Foundation.
Facilities to perform this research are provided by the Purdue University
CIDMAC
project.
.FE
.ce 1
Introduction to RCCL : A Robot Control "C" Library
.sp 7
.ce 1
Vincent Hayward
.sp 5
.ce 3
School of Electrical Engineering
Purdue University
West Lafayette, Indiana, 47907
.sp 5
.ce 1
TR-EE 83-43
.sp 5
.ce 1
October 1983
.bp
.EQ
delim $$
.EN
.AB
RCCL is a robot programming system that enables a user to
specify robot manipulators tasks employing a set of primitive system calls
similar in spirit to those of the UNIX input-output system.
This document is not intended to be a manual, but tries to give
the flavor of the underlying ideas.
The goals addressed in the RCCL system are:
.IP
manipulator task description;
.IP
sensor integration;
.IP
updatable world representation;
.IP
flexibility;
wide range of applications;
.IP
medium level robot programming;
.IP
off-line programming;
.IP
efficiency;
.IP
manipulator independence;
.IP
portability;
.IP
foreground-background programming;
.IP
Cartesian path programming;
.IP
Arbitrary path specification;
.IP
Tracking;
.IP
Force control;
.AE
.bp
.NH 1
Introduction
.PP
Most of the current robot programming systems are based on a dedicated
programming language.
Quite a large number of them exit
(AL, AML, HELP, JARS, LM, MCL, RAIL, VAL).
They consist of a language interpreter running at low priority
specifying motion parameters to a trajectory generator.
The trajectory generator, running at high priority,
and usually interrupt driven,
computes the sequence of joint variables
so as to produce the desired motion.
The sequence of joint variables is in turn transmitted to
a servo process capable of actuating the robot's joints.
The execution flow of the robot program is synchronized with the
actual motion of the manipulator.
Most language based systems, if not all,
are strongly tied to the computer hardware they are running
on, as well as to the type of manipulator they control.
The more sophisticated robot programming languages become,
the more they resemble high level computer programming languages
(ALGOL, PASCAL, etc.)
augmented with the data structures and operators
necessary to control robots.
Some languages can handle concurrent
processing.
.PP
RCCL is not a language but a set of system calls suitable for the
control of robot manipulators.
Manipulator programs become ordinary computer programs, and the
manipulator is considered as a peripheral device.
Since manipulator control primitives are put at the system level,
a program written in any language able to provide the proper
list of arguments can use the manipulator primitives.
.PP
Instead of designing yet another robot programming language,
we use the C language to obtain manipulators programs.
The RCCL system is itself written the C language.
C is a high level structured language suitable for any project sizes,
but allows us to deal with low level implementation details.
Programs are easily portable, and yet can be efficiently implemented.
Two criticisms are often made of compiled languages based systems.
The compilation time increases the edit-test cycle time.
If a program fails either because it is wrong from the manipulation
point of view, or from the programming point of view, the whole
task has to be stopped.
Practice has shown that these limitations are largely offset
by the gain in flexibility and generality.
If for some applications, an interpreted language is needed,
the interpreter of a general purpose or a dedicated
language can also make use of RCCL system calls.
We would obtain, in that case, a large gain in modularity.
The RCCL design approach has advantages in modularity,
flexibility and hardware independence.
.FS
The first implementation runs on a VAX 11/780 computer under UNIX.
It has been used to control a PUMA manipulator and a Standord Arm.
.FE
.NH 1
Overview
.NH 2
Manipulator task description
.PP
The location of an object is described by its position and orientation
with respect to some reference coordinate frame.
In the remaining, the word 'position' will implicitly
stand to 'position and orientation'.
Tasks are described in terms of positions to be reached in space
to grasp, displace or exert forces on objects located in the robot
work space.
Tasks are also described by the sequence and the type of motions necessary
to carry out the work.
Position descriptions require special data structures and
sequential operations of a robot require special primitives.
Both can however be implemented with the tools provided by
high level languages, namely, data structures, functions ,and
structured flow of control.
(The C language does not know anything about a file, for example.
Users wishing to manipulate files in their programs have to include
a system file called "stdio.h".
This file contains a description
of the necessary data structures.
Files can be manipulated by system
primitive functions like
.I
read, write, filbuf, or, flsbuf
.R
[1]).
.NH 3
Structured position description
.PP
RCCL handles what is referred to as structured position description [2].
The basic construct is the homogeneous transformation
that is a mathematical construct
describing the position of coordinate frames.
A homogeneous transformation can either be interpreted
as the description of the position of a
coordinate frame with respect to another, or
as a transformation performed on the first coordinate frame.
Homogeneous transformations are a very general tool [3],
however in manipulation we will restrict them to
to the following :
.EQ
left [
matrix {
ccol { n sub x above n sub y above n sub z above 0 }
ccol { o sub x above o sub y above o sub z above 0 }
ccol { a sub x above a sub y above a sub z above 0 }
ccol { p sub x above p sub y above p sub z above 1 }
}
right ]
.EN
.PP
The left upper 3 by 3 matrix is a rotation matrix constructed with three
orthogonal vectors $n$, $o$, and $a$.
When the corresponding coordinate frame is attached to
the end-effector of a manipulator, the three vectors
$n$, $o$, and $a$ can be interpreted as the
.I normal
vector,
the
.I orientation
vector, and the
.I approach
vector.
The $p$ vector is a translation vector or
.I position
vector of the end of the manipulator.
.PP
Relative positions of objects can be described with
transformations products.
For example, let $OBJ$, a transformation, describe the position of
an object relative to a reference coordinate frame.
Let $HOLE$ represent the position of a hole with respect to
the frame $OBJ$.
The matrix product $OBJ~HOLE$
which is also a homogeneous transformation,
describes the position of the hole relative to the
reference coordinate frame.
One important property of orthogonal homogeneous transformation
is that the inverse transformation can be obtained
at reduced computational costs.
.PP
One dedicated transformation $T6$, represents the
position of the end-effector with respect to the reference
coordinate frame located at the base of the manipulator.
A given manipulator position can be specified in base
coordinates by writing:
.EQ
T6~=~POS
.EN
However, such a description is usually insufficient.
For instance, one might need to express that a tool
attached to the arm end-effector must reach the position $POS$.
This is achieved by writing:
.EQ
T6~TOOL~=~POS
.EN
A more complete description of a motion to a goal position is often
written as:
.EQ
REF~T6~TOOL~=~CONV~OBJ~PG
.EN
Where:
.IP $REF$ 8
is the position of the manipulator with respect to
the reference coordinate frame.
.IP $T6$ 8
describes the position of the manipulator end-effector with respect to
the reference coordinate frame attached to the shoulder or
to the base of the manipulator.
.IP $TOOL$ 8
expresses the position of a tool attached to the end-effector.
.IP $CONV$ 8
represents a conveyor belt, it can be a moving coordinate
frame with respect to the reference coordinate frame.
.IP $OBJ$ 8
is the position of the object to be grasped lying on the conveyor belt.
.IP $PG$ 8
is the position of the end-effector,
relative to $OBJ$, where the object is to be grasped.
.PP
Position equations are solved for $T6$ to obtain the desired
position of the manipulator with respect to the reference coordinate
frame:
.EQ
T6~=~REF sup -1~CONV~OBJ~PG~TOOL sup -1
.EN
One RCCL system call directly implements position equations in
terms of dynamic data structures.
The positions can be modified at the level of the move
statement in terms of small translations and rotations described
in the
.I tool
frame.
This provides a convenient short hand for specifying approach and deproach
positions, or for specifying purposely over shooting motions if the arm
is to perform a guarded motion [21].
.NH 3
Motion description
.PP
A task is made up of a number
.I
path segments
.R
between successive positions.
There are many ways for generating trajectories for a manipulator[4][5].
RCCL provides two types of motions.
The first one, called
.I
joint mode,
.R
consists of computing
the set of joint values for each end of path segment and generating
all intermediate values by linear interpolation.
The second type, that we will call
.I
Cartesian mode,
.R
requires the system to solve a modified position equation
each sample intervals
and to compute the corresponding joint coordinates.
The position equation is internally modified in such a way
that one frame, called
.I
tool frame,
.R
moves along straight lines and rotates around
fixed axis.
These motion types are discussed elsewhere [3][6].
Here, we will assume that we are dealing with a manipulator for which
exists an analytical solution relating a Cartesian position to
a set of joints coordinates [7][8][9][10].
In the current implementation, manipulator motions are obtained
by specifying a sequence of desired joint values to the servo processes
controlling the manipulator joints.
However, most of what follows does not assume a particular control
method.
.PP
Path segment transitions involve three positions.
The manipulator is on its way from position $P1$, is about to
perform a transition next to $P2$ in order to head toward $P3$.
Transition are rendered necessary to avoid velocity discontinuities, and
are computed using a quartic polynomial.
At the time of a transition, the subsequent
.I
path segment
.R
is fully described by the goal position $P3$, $P1$ and $P2$ being known
from the current motion, by the time of the transition,
and by the time of
the segment itself.
RCCL allows to specify velocities, as well as segment times.
If the velocity is specified, the Cartesian distance of each tool frame
is determined to
automatically compute the segment time.
.PP
When the manipulator is to move while exerting forces or torques
on objects, the manipulator must be controlled in a such a way that
forces and torques are controlled directly in place of positions.
The manipulator is then said to be controlled in a
.I comply
mode.
Several methods [11][12][13][14] are proposed for such a control.
RCCL provides for compliance specifications in the
.I tool
coordinate frame which is specified in the position equation.
Compliance is specified in terms of forces along, and torques
around the principal axes of the
.I tool
frame.
The manipulator looses one if the positional degree of freedom for
each direction along, or around which the manipulator is complying in force.
The trajectory is then constrained by the geometrical features of the
objects in contact.
A more complete discussion of this subject can be found in [15].
.NH 2
Sensor integration; Updatable world representation;
.PP
One of the main goals of RCCL is to facilitate the integration of sensors [16].
Sensors are used to influence the behavior of the manipulator according
to information acquired from itself or from its environment.
Sensor information can be classified in many different ways :
according to the data type necessary to
represent it, booleans, scalars, vectors, arrays, tensors, etc...;
by meanings, touch, limit, distance, position, temperature,
vibrations, forces, etc...;
by the order of magnitude of the acquisition time, minutes, seconds,
milliseconds, microseconds; by accuracy ;and so on.
Considering this variety, the RCCL approach
is to deliberately ignore, when possible,
the type of information we may have to deal with, but on the contrary,
to provides means for an efficient utilization of this information.
.NH 3
Foreground - background programming
.PP
As robot programs will have to interact with the environment
while the manipulator is moving, programs are not implicitly synchronized
with the robot motions.
Each time a motion is required, a
.I motion
.I request
is entered into a 'First-in first-out' queue.
The request consists of a record containing all the informations
necessary to perform the corresponding path segment.
This feature allows us to specify ahead at time a sequence of
motions and to perform input output operations and calculations
as the robot is executing the requests.
When the motion queue becomes empty, the manipulator is brought to
rest.
This is obtained by repeatedly evaluating the last position.
We will see that it does not necessarely mean that the manipulator
is brought to a stop in absolute coordinates.
Slow sensors as computer vision systems requiring lengthy computations
can then be efficiently used as there is no need to stop the manipulator
while the data is acquired and processed.
A 'wait' primitive is provided when it is necessary to synchronize
the execution of the program with the manipulator's motions.
A similar technique to allow for the simultaneous control of
several manipulators or positioning devices may be implemented in the future.
.NH 3
Influencing positions
.PP
End of segment positions can be modified according to information
acquired at run time.
This is achieved by changing the value of transformations within
position equations.
Transformations likely to be modified at run time must be declared as such
(
.I hold
transforms).
The system makes a copy the transformation at the time
the corresponding
.I move
.I request
is issued, and enters it in the motion queue.
It is therefore possible to use the same transformation to
describe a coordinate frame whose value is different from
one path segment to another.
Using a copy of the transformation, makes
possible to change its value at an arbitrary instant
even if the corresponding position equation is currently being evaluated.
For efficiency, this feature is used only when specified.
The use of
.I hold
transformations causes more processing to be performed at run
time because they prevent the optimization of transform equations by
pre-multiplication of constants transformations.
.PP
User interaction and slow sensors like computer vision
require the use of
.I hold
transformations.
Position data can be acquired ahead at time in a completely asynchronous
manner.
.NH 3
Influencing trajectories
.PP
Fast sensors can provide for direct synchronous sensory feedback.
This corresponds to the class of
.I functionally
defined transformations.
In this case, a transformation is attached to a function that
will be evaluated at sample time intervals.
The purpose of the function is to calculate the value of the transformation
as a function of sensor readings.
The position equation in section 2.1.1. makes use of such a functionally
defined transform to describe a position with respect to a conveyor belt.
If the motion is performed in
.I Cartesian
mode, the tracking is perfectly
accurate, since the position equation is evaluated at sample time intervals.
When the motion is performed in
.I joint
mode, the system estimates the expected position at the end of the
segment by linear extrapolation.
If the functionally defined transform is computed as a function of time,
we can obtain mathematically described motions (circles, ellipses etc...).
.PP
The transitions to, or from path segments involving moving coordinate frames
must deal with unpredictable velocity changes.
Smooth transitions are obtained by adding a third order polynomial trajectory
modification during the transition time.
We have seen that manipulator stops are obtain by repeating a move to
the same position.
When the position involves moving coordinate frames, the stop will be
relative to those moving coordinate frames.
If a stop in absolute coordinates is required, a move to a fixed position must
be performed before specifying the stop.
The system internally maintains a position equation which always reflects
the current position of the manipulator.
It is therefore possible to have the manipulator stop at an arbitrary instant
at the position it currently occupies.
Functionally described transformations can be used anywhere in a position
equation.
Trajectories can be affected with respect to any coordinate frame which
provides unlimited applications.
.NH 3
Influencing path segment times
.PP
The second way to influence the manipulator behavior is to modify
the length of the path segments, to start and to stop the manipulator
according to external events.
The RCCL system allows to interrupt the execution
and cause a transition to the next
path segment at any moment
by merely setting a global flag.
A motion termination code enables to determine the cause
of the path segment termination.
For example, the system internally checks for joint limits and
brings the manipulator to an absolute stop when one of them is reached.
The termination code allows us to check the proper termination
of the motions that may cause a joint limit and to take an appropriate
action.
For any motion terminated on condition, a meaningfull termination code is
returned.
An arbitrary monitoring function
can be specified as part of a motion
request, the termination code is then chosen by the user.
Start, stop, motion interruption and resumption are achieved using the
same mechanism.
.NH 3
Internal sensing
.PP
Internal information is acquired from the manipulator
itself.
Two particularly useful kinds of informations
are internally maintained in RCCL: position and force.
.NH 4
Position
.PP
For any motion terminated on a condition, the world model
may have to be updated to account for the actual position where
the manipulator stopped.
The system is then
asked to
.I update
a transformation in a position equation.
The equation is solved for requested transformation using the
actual value of $T6$ when the path segment ends.
This new position information might be very useful
in any subsequent motion related to this location.
For example, consider the case of
a manipulator picking up an object which it had previously
placed on a surface whose height is only approximatively known.
The manipulator
is able to retrieve the object immediately
if the final position of the object was updated.
.NH 4
Force
.PP
Joint torques are also obtained
from the manipulator state.
The complete determination of the forces and torques
exerted on an object based on the joint torques leads to lengthy
computations [17], RCCL, however provides a mechanism that
compares the actual forces and torques against expected values.
This information may be used to cause a path segment termination when
some specified limit is reached.
The subsequent path segment will usually contain compliance specifications.
.NH 1
The RCCL implementation
.PP
When a manipulator in under RCCL control, four processes
are concurrently running.
At the lower level a
.I
servo process
.R
controls the position or the torque
of each manipulator joint
as input parameters.
The
.I
setpoint process,
.R
running at interrupt level, computes the Cartesian
trajectories and determines the corresponding joint parameters.
A real time
communication channel swaps information between the
.I
servo process
.R
and the
.I
setpoint process.
The
.I
user process
.R
running under time sharing contains the RCCL system calls.
The
.I
setpoint process
.R
communicates with the
.I user
process via a motion request queue containing all the necessary information.
.NH 2
Servo process
.PP
The present implementation makes use of Unimation PUMA robot controllers.
These controllers include six micro processors, one per joint.
Each joint servo micro processor receives position commands specified
in incremental encoder values.
The joint processors can also read and transmit the joint position information.
The Stanford arm controller has been modified [18][19] so that
joint 1, 2, and 3 can be force servoed.
The Puma arm controller can drive the joints motors with current
specifications.
A method for relating joint torques to motor currents has been
developed and implemented by Zhang Hong [20].
The method take into account the friction effect of the joint drives.
.NH 2
Joint processor control and host machine interface
.PP
A LSI11 microprocessor supervises the joint processors and establishes
the communication with the host machine.
At each sample time interval, the microprocessor gather data from the
manipulator, transmits it to the host machine, accepts commands,
and sendss the corresponding values to the joint processors.
It also executes a calibration procedure at startup time.
.NH 2
Real time channel communication
.PP
The real channel, besides transmitting information between the
controllers and the host machine performs several functions such as
the conversions of encoder values to trigonometric angles,
the torque to current mapping,
joint limits ,maximum velocities
and maximum currents monitoring.
It also checks for data integrity.
A manual stepping mode and an automatic rest position return are built in.
.NH 2
Setpoint process
.PP
The
.I setpoint
process is interrupt driven.
Each time a path segment terminates, the process attempts to obtain
a new motion request from the queue.
If there is one, the transition parameters are computed according
to the type of path segment and the transition parameters are computed.
Many types of transitions occur : joint mode, Cartesian mode, moving coordinate
frames, constrained motions.
The final result is always a set of joint positions and torques.
.NH 2
User process
.PP
The
.I user
process consist of the user program calling the RCCL primitives.
Memory space is dynamically allocated for each new position
equation.
This space can be released when needed no longer needed.
Several functions are provided to handle transformations:
rotations, Euler angles, roll pitch and angles, transform multiply,
transform inversion, etc...
.NH
Tools
.NH 2
Trajectory planning
.PP
There exists a version of the RCCL library, which instead of computing
the trajectories in real time, computes them off-line.
This is simply achieved by calling the setpoint function in a loop instead
of activating it on interrupt.
The same manipulator programs, provided that they do not depend on
external events and information, can be run in this fashion.
Some debugging tools are then provided.
The system can be asked to keep a trace of the motion requests,
to store the sequence of setpoints on file in order to replay them afterwards,
or to plot them.
.NH 2
Teaching
.PP
A manual control program is included within RCCL.
It consists of a very simple command line language
enabling an operator to interactively move the manipulator in
Cartesian space.
Motions can be specified in world or tool coordinates.
Positions can be recorded via the
.I update
primitive.
The manual control program is entirely implemented in terms
of RCCL primitives.
.NH 2
Transformations data base
.PP
A simple data base system has also been developed.
Transformations values can be recorded and read on line
in manipulator programs.
The values can be displayed and modified off-line for maintenance.
.NH
Conclusion
.PP
The main goal of this project was to show that manipulator
control could be brought in a more general context than within
the framework of a stand alone controller bound to it's own language.
The current RCCL implementation does not yet offer the convenience
of dedicated robot controllers because it requires a large machine.
However,
as microprocessor based computers become more powerful and
can run operating systems like UNIX, the RCCL approach shows
many advantages over conventional robot controller design.
The conclusion is that robot control can be though as an addition
to an already existing, tested, and standardized system, rather
than the design from scratch of a system arround robot control.
.NH 1
References
.IP [1]
Kernighan ,B. K., "The C Programming Language",
Prentice-Hall, 1978.
.IP [2]
Paul ,R. P., "Manipulator Language", Workshop On The Research
Needed to Advance The State Of Knowledge In Robotics,
April 15-17, 1980, organized by J. Birk and R. Kelley, supported by N.S.F.
.IP [3]
Paul, R. P., "Robot Manipulators: Mathematics, Programming,
and Control", MIT Press 1981.
.IP [4]
Derby, S., "Simulating Motion Elements of General-Purpose Robot Arms",
International Journal of Robotic Research, Vol. 2, No. 1, Spring 1983.
.IP [5]
Castain, R. H., Paul, R. P.,
"Polynomial Robotic Trajectories: A New Approach",
TR-EE 82-37, Dec 1982.
.IP [6]
Hayward, V., Paul, R. P.,
"Robot Manipulator Control Using the C Language Under UNIX",
IEEE Workshop on Languages for Automation, Chicago, Nov. 1983.
.IP [7]
Shimano, B. E., "The Kinematic Design and Force Control of Computer
Controlled Manipulators",
Stanford Artificial Laboratory, Stanford University, AIM 313, 1978.
.IP [8]
Paul, R. P., Stevenson, C. N., "Kinematics of Robot Wrists",
International Journal of Robotic Research, Vol. 2, No. 1, Spring 1983.
.IP [9]
Paul, R. P., Shimano, B. E., Mayer , E. G.,
"Kinematic Control Equations for Simple Manipulator",
IEEE Transactions on Systems, Man, and Cybernetics,
Vol SMC-11, No 6, June 1981.
.IP [10]
Fisher, W. D., Private communication.
.IP [11]
Inoue, H., "Force Feedback In Precise Assembly Tasks",
MIT Artificial Intelligence Laboratory, Memo 308, Aug 1974.
.IP [12]
Raiberg, M. H., Craig J. J., "Hybrid Position/Force Control of Manipulators",
Journal of Energy Resources Technology, Vol. 103, June 1981.
.IP [13]
Salisbury, J. K., "Active Stiffness Control of a Manipulator In Cartesian
Coordinates", 19th IEEE Conference on Decision and Control, Dec. 1980,
Albuquerque, New Mexico.
.IP [14]
Geschke, C. C., "A System for Programming and Controlling Sensor-Based
Robot Manipulators", IEEE Transactions on Pattern Matching and Machine
Intelligence, Vol. PAM1-5, No. 1, Jan 1983.
.IP [15]
Mason M. T., "Compliance and Force Control for Computer Controlled
Manipulators", MIT TR-515, April 1979.
.IP [16]
Rosen, C. A., Nitzan, D., " Use of Sensors In Programmable Automation",
Computer Magazine, December 1977.
.IP [17]
Paul, R. P., "Computational Requirements of Third Generation Manipulators"
.IP [18]
Fisher, W. D., "The Modification of a Robotic Manipulator and Digital
Controller to Incorprate Both Force and Possition Control", MSEE Thesis,
Purdue University, May 1981.
.IP [19]
Luh, J. Y. S., Fisher W. G., Paul, R. P.,
"Joint Torque Control by Direct Feedback for Industrial Robots",
IEEE Transactions on Automatic Control, Vol. AC-28, No. 2, February 1983.
.IP [20]
Zhang, H., Paul, R. P.,
"Determination of Simplified Dynamics of Puma Manipulator", Purdue University.
.IP [21]
Will, P. M., Grossman D. D.,
"An Experimental System for Computer Controlled Mechanical Assembly",
IEEE Trans. Computers C-24 9, 1975, 879-888.