Sunteți pe pagina 1din 10

The ARCL Robot Programming System

Peter Corke and Robin Kirkham


CSIRO Division of Manufacturing Technology
Locked Bag 9, Preston 3072 Australia
The wide variety of robot programming languages available and their limitations can reduce the
value of robots in establishing competitive industries. A solution is the use of a standard program-
ming language and a library of robot control functions. ARCL (for Advanced Robot Control Li-
brary) is a powerful, general, and portable software library which provides robot control capability
to C language application programmers. ARCL, developed by the CSIRO Division of Manufac-
turing Technology, supports sensor-based motion control, and has been used in projects related to
force-controlled deburring and high-performance visual servoing. Robot controllers using the ARCL
library have replaced the VAL-I controller on Unimate Puma 560 robots, and controlled a stepper
motor robot attached to a PC. As well as real-time systems, ARCL runs o -line on Unix worksta-
tions and PCs, and can produce graphical simulation of robot motion. This paper introduces the
software and its capabilities.

1 Introduction of the ARCL robot programming system. ARCL


(Advanced Robot Control Library) is a real-time soft-
A robot control language is a textual means of de n- ware library that provides robot control facilities for
ing the actions required of a robot manipulator in an existing computer programming language, C[7].
order to complete some task. Robot languages ap- ARCL provides robot-speci c data types and opera-
peared when the increasing complexity of tasks be- tions to the C programmer allowing robot programs
gan to require programmed decision-making ability to use C and other application libraries, rather than
and interaction with other manufacturing equipment. a limited and proprietary robot language.
The underlying robot system must interpret this pro- It provides a set of robotic data types and opera-
gram and generate the movement directives for the tors, including vectors, homogeneous transformations
axes of the manipulator. and quaternions. It provides a powerful application
Early languages, such as Unimation's VAL-I[13], program interface, the functions called by a program
were implemented as interpreters to facilitate on-line to make the robot move. Finally it provides the real-
program development and resembled BASIC in style. time part of the robot system|the trajectory gener-
Since that time, the languages have evolved and im- ator and kinematic solutions, and interfaces for deliv-
proved, and taken lessons from modern structured ering the computed position set-point stream to the
programming languages: KAREL, from GMF, and robot control hardware.
LM[8], very roughly resemble Pascal. Yet, the facili- The addition of robot functions to a standard lan-
ties considered standard in a modern computer pro- guage is not a new idea. RCCL, developed at Purdue
gramming language, such as Pascal or C, are rarely and later McGill University, uses C and runs on a
completely o ered in these robotic languages. Fre- Unix host[5, 9]. Others have described a similar ap-
quently, user-de nable types or common control struc- proach based on Pascal[11, 1]. We believe ARCL is
tures are not available, or there are restrictions on more modular and portable than these previous sys-
subroutine argument passing or recursion|and so on. tems.
This makes robot programming more dicult than it
need be. Portability across computer architectures, operat-
ing systems, manipulator kinematics and robot hard-
It would be possible to design a robot language ware is achieved through replaceable modules. One
with all the facilities of a `proper' language, but this provides kinematic functions and the other provides
would only create yet another robot language. It has real-time operating system services and low-level con-
been suggested that there are already too many such trol of the robot. ARCL controllers currently replace
languages (a 1986 report[6] identi ed around 95). VAL-I control on several Puma 560 robots, as well
A di erent approach was used in the development as controlling a Farley/MD gantry robot and a Mi-
crobot educational robot. ARCL programs can also
Type Meaning cated, and have a `constructor' function which allo-
ROBOT Structure representing a Robot cates and initialises the object from simpler objects
Vector 3D Cartesian coordinate passed as parameters, and return a pointer to the new
Trans Homogeneous Transformation object. The most commonly used object in ARCL
Pos Transformation Position Equation programs is the homogeneous transform, type Trans,
Diff Di erential Displacement Vector which represents a position plus rotation. Another
Force Force/torque Vector important object is the ROBOT type, which is a `han-
Jacob Jacobian Matrix dle' for a robot the programmer wishes to use.
Quat Unit Quaternion
QuatVect Unit Quaternion and Vector The following robot program fragment illustrates
IOD IO Channel Descriptor these types:
Table 1: Common ARCL data types #include <arcl.h>

main(int argc, char *arv[])


run o -line for program development. {
ARCL's robot motion speci cation model is based ROBOT *rp;
on Paul's general formulation of the robot control Trans *stand, *work, *base, *tool;
problem[11]. This provides standard manipulator tra- Pos *pos;
jectory types as well as permitting functionally de-
ned and real-time sensor-based trajectory modi ca- rp = arcl_open(
ARCL_ARGCV, argc, argv,
tion. 0);
ARCL has been in uenced by other robot pro- if (rp == NULL) {
gramming systems as well as some non-robot sys- fprintf(stderr,
tems. For instance, ARCL's frequent use of call- "Can't open manipulator"
back functions as an event passing mechanism is rem- );
iniscent of graphical user interface (GUI) program- exit(1);
ming. Homogeneous transforms are often found in }
computer graphics. ARCL's application program in-
terface (AAI) also makes use of attribute-oriented base = new_trans_tr(
argument lists to conveniently express modi ers to "base", 0.0, 0.0, 300.0
functions, a C idiom associated with object-oriented );
programming. tool = new_trans_tr(
ARCL's versatility and capacity for sensor-based "tool", 0.0, 0.0, 170.0
real-time trajectory modi cation has made it use- );
ful for exploratory work in high-bandwidth control. stand = new_trans_tr(
It has been a key component of research at DMT "stand", 600.0, 100.0, 500.0
projects into force controlled robotic grinding and de- );
burring 1985-7[2], and more recently high-performance work = new_trans_rotvec(
robotic visual servoing[4, 3]. "work", -100.0, 50.0, 345.0,
yunit, 30.0
In the following sections we will examine some of );
the key features of ARCL in more detail.
Here, main() declares some objects and proceeds to
construct them. Firstly, arcl open() initialises ARCL
2 ARCL Robot Programming itself and returns a pointer rp to a ROBOT object,
which will be used to identify that robot to sub-
This section illustrates some of the key concepts of sequent functions (somewhat like a C-library FILE
an ARCL application through a simple example pro- pointer). arcl open() accepts an attribute-oriented
gram. argument list terminated by a zero value. In this
example we pass in the Unix command line argu-
ments, so that ARCL can parse the command line
2.1 Robot Data Types switches. In a multi-robot program, several calls to
arcl open() are made, with an attribute indicating
Robot speci c data types, listed in Table 1, and ARCL which of the given set of robots to open.
functions are declared with a conventional C header Homogeneous transforms base, tool and stand
le arcl.h. Most data objects are dynamically allo- are purely displacement, and are constructed using
used to identify this position equation to subsequent
tool functions.
Using position equations seems a roundabout way
of to de ne robot targets. The power of this formula-
tion will become apparent when functionally-de ned
transforms are examined.
work
T6

2.3 Robot Motion


Robot motion is invoked using the move() function,
stand which accepts a ROBOT pointer, to identify which robot
to move, and a Pos pointer, identifying which posi-
tion equation to use. Our ARCL example might in
base
the simplest case use:
Origin move(rp, pos, 0);

move() is an attribute-oriented function that may


Figure 1: Robot Position Equation take additional arguments: a 0 marks the end of
the list. For instance, we might want a Cartesian-
new trans tr(), which takes the transform's transla-
interpolated move, so we would use:
tional components px , py and pz as parameters. work
has an rotation component of 30 about the y^ direc- move(rp, pos,
tion vector as well as displacement, constructed with MOV_TRAJ, TRAJ_CART,
new trans rotvec(). 0);

or we might want joint-interpolation, and the move


2.2 Position Equations to take 2 seconds:
However, ARCL does not use homogeneous trans- move(rp, pos,
forms directly as target points for the robot. Instead, MOV_TRAJ, TRAJ_JOINT,
destination conditions are de ned in terms of the so- MOV_TIME, 2000,
lution of a position equation[11]: 0);

base T6 tool = stand work We can specify the kinematic con guration to switch
to like this:
This establishes a relationship between transforms
in the manipulator's workspace (see Figure 1). The move(rp, pos,
transform T6 represents the pose of the manipulator. MOV_TRAJ, TRAJ_JOINT,
MOV_TIME, 2000,
In ARCL programs, position equations are de ned MOV_CONFIG, "lun",
using makeposition(). Our example program would 0);
de ne the above equation:
where "lun" means \left-hand elbow-up no-twist".
pos = makeposition( There are some 20 attributes to move(); where an
base, T6, tool, EQ, stand, work, attribute is not speci ed, it takes a default value, or
TL, tool the value it was last set to be.
);

As in the position equation, T6 is a pre-de ned trans- 2.4 Trajectory Generator and
form representing the robot manipulator, and the EQ Motion Queue
marker indicates the position of the = operator. The
TL marker indicates the frame in the equation which move() in fact queues a motion request to the trajec-
is the tool tip of the manipulator, required for tool tory generator, and returns immediately, not when
velocity speci cation. The returned Pos pointer is the motion is actually complete. Repeated calls to
move() will queue several motion requests.
User program task If the robot is approaching the end of a motion seg-
move() ment, the trajectory generator's segment path plan-
ner de-queues the next motion request from the mo-
tion queue, and sets up a zero-jerk transition (B1 to
B2) into the new segment (see Figure 3). This may
mean that the end-point of the original segment (B)
Target position is never reached. If the motion queue is empty, the
trajectory generator smoothly decelerates the robot
Trajectory
Generator to the target T6 .
Task
Motion request queue

2.5 Functionally De ned and


Sensor In uenced Motion
Trajectory
Generator Because the trajectory generator re-evaluates the ho-
mogeneous transform components of a position equa-
tion at each time step, the equation can in e ect rep-
resent a `moving target'. Because any of the trans-
joint
setpoint
stream
forms in the position equation chain can change, very
complicated motions can be generated as the `sum' of
Robot simpler ones. This is a big advantage of de ning mo-
tion using position equations.
Figure 2: ARCL task structure. Threads of execution In fact four types of transform are supported: con-
are shown by dashed lines stant which may be pre-multiplied, variable, whose
value may change, hold whose value is frozen at the
A instant the motion is requested, and functionally de-
ned whose value can be modi ed by a function bound
to the transform.
B1 In our example, all the Trans objects were con-
stants. To obtain functionally de ned motion, we
B
construct weave using new trans():
weave = new_trans(
B2 "WEAVE", FNDEF, weave_func
);
C
and elsewhere in the program,
Figure 3: Motion Segment Transitions
#define WEAVE_AMP 10.0 /* mm */
#define WEAVE_FREQ 2.0 /* Hz */
The trajectory generator is the heart of any robot
system. ARCL's trajectory generator is a separate, void weave_func(Trans *weave, Motion *m)
concurrent task to the user program task, and runs {
in real-time. Its link from the user program task is double theta;
the motion queue, illustrated in Figure 2.
Each cycle the trajectory generator solves the po- theta = TwoPI * (ami_treal() - m->t0)
sition equation for the target T6 , then interpolates * WEAVE_FREQ/1000.0;
the present value of T6 towards that solution. Ro- weave->t_p.x = WEAVE_AMP * sin(theta);
tational interpolation is performed using quaternion }
arithmetic. Then, the inverse kinematic function (see
Section 3.1) is applied to the interpolated T6 to give After move() is called with a position equation
the corresponding joint angle vector  . This set-point involving weave, the trajectory generator will call
vector is communicated to the robot servo system weave func() every cycle as it evaluates and solves
using the machine interface (Section 3.2) as the sub- the position equation. weave func() sets the px com-
target for the next trajectory generator period. ponent of the weave transform to a sinusoid of time.
The robot's motion thus has a low frequency weave
imposed on it, of the kind sometimes used in robotic 2.7 Synchronisation and
arc welding. Workspace Arbitration
Functionally de ned transforms need not be sim-
ply computed functions of time, but can depend on Both the event passing mechanism and the semaphore
sensory data read in real-time. This provides a pow- library are used in the following fragment, for man-
erful means of integrating external trajectory modi- aging two manipulators with a shared work area:
cation with planned robot motion.
ROBOT *rp1, *rp2;
An example of this kind of system is one where a .
robot manipulates objects on a moving conveyor belt. .
The transform function reads an encoder rotated by move(rp1, pWS,
the belt and connected to the robot controller, to MOV_NOTIFY, excl_proc,
compute a transform representing the conveyor posi- NULL);
tion. Provided this transform is included in all the
position equations, the manipulation task can be han- excl_proc(event, rp)
dled as if the belt was still. Event event;
The paper [4] analysed the closed loop response ROBOT *rp;
of a system incorporating ARCL functionally de ned {
transforms. Naturally the performance of these sys- static ROBOT *who_is_in;
tems is dependent on the power of the controller com-
puter and the servo hardware update rate. switch (event) {
case EVENT_DEQ:
if (sem_take(sem_excl) == OK) {
2.6 Synchronisation and who_is_in = rp;
Event Handling return OK;
} else
Since the robot program runs `ahead' of the real-time return MOVE_STOP;
trajectory generator task, there needs to be some way case EVENT_DONE:
of synchronising the two when required. ARCL pro- if (rp == who_is_in) {
vides several means of doing this. The simplest in- sem_give(sem_excl);
volves adding the MOV SYNC attribute to the move() who_is_in = NULL;
call, which makes move() not return until the move }
is nearly complete. return OK;
}
Alternatively, the trajectory generator can be made }
to call a user-supplied function when a move segment
is complete; the function pointer is passed with the To simplify the application logic the call-back func-
MOV DONEPROC attribute. The function might signal tion excl proc() is speci ed when either arm at-
completion through some other method, or maybe op- tempts to move into the shared area. Before the move
erate some ancillary equipment. Alternatively, is actually commenced the function is called with the
MOV NOTIFY can be used to have a user-supplied func- argument MOVE DEQ which will attempt to take the
tion called for a wider variety of events. semaphore protecting the work area resource. If suc-
To aid synchronisation, ARCL provides a binary cessful the identity of the semaphore holder is saved.
semaphore facility, usually based on the underlying If unsuccessful, the return value of MOVE STOP causes
real-time operating system's native synchronisation the trajectory generator to re-execute the last motion
primitives. The user program may construct, set, request and try again.
clear and pend on objects of Semaphore type.
Errors are a kind of event. ARCL has a central er- 2.8 Interaction with other Equipment
ror handler function called when exception conditions
are detected, including joint limits and kinematic sin- A robot is not useful in isolation, and must sense and
gularities. The error handler can call a user-supplied control ancillary equipment. The most common such
function, which may choose to continue operation, or device is a robot gripper, and ARCL provides the
have the system brought to an orderly halt. gripper() function to control it. gripper() accepts
a ROBOT pointer and at least a gripper command code:
This method of registering call-back `noti er' func-
tions and event-passing by function call is commonly gripper(rp, GRIP_OPEN);
used in graphical user interface programming. gripper(rp, GRIP_CLOSE);
Robot grippers vary widely, but all open and close.
More complicated grippers take additional arguments User Application Program
such as:

ARCL Kinematic
Interface Library
gripper(rp, GRIP_CLOSE_BY, 40.0); ARCL
Application Interface
Library
Robot controllers are often equipped with binary AAI
IO systems often operating at 24VDC. ARCL pro-

AKI
vides for this using IO descriptors, type IOD. IODs
represent one or more contiguous IO bits, either input
ARCL Machine Interface
Library
or output. A similar arrangement exist for analogue AMI
input and output.
Operating System

2.9 Interaction with the Operator


Robots also often have `teach pendants' that can be
used by the operator to manually move the robot
to some position. ARCL provides for teaching with
the teach() function. teach() is a special form of
move() which places the robot under the control of
its teach pendant. When the operator presses the
LEARN or ENTER button, a user-supplied call-back
function is called, with the current robot T6 transform Figure 4: Structure of the ARCL Library
as a parameter, which can be stored for later use.
As an adjunct to the teaching function and the ho- ARCL adopts a similar solution, by using a struc-
mogeneous transform library, ARCL provides a trans- ture consisting of a core module, the ARCL Appli-
form symbol table facility. This allows transforms to cation Interface Library (AAI) and two replaceable
be stored and retrieved by the name key. The sym- device-dependent libraries, the ARCL Kinematic In-
bol table can be dumped or loaded from a disk le. terface and the ARCL Machine Interface. See Fig-
This permits ARCL programs to emulate the teach- ure 4.
record-replay style of robot controller if desired. The core AAI library consists of the robot program
interface functions examined in the previous section,
2.10 Finishing Up and the trajectory generator and motion queue code.
The AKI library contains all functions speci c to the
That completes our examination of the ARCL pro- kinematics of the manipulator. The AMI library con-
gram interface. The last thing to be done in an ARCL tains all functions that involve the computer operat-
robot program is to close all the open manipulators: ing system and the interface to the robot's servos and
sensors. In principle, a robot program can by linked
arcl_close(rp); with a Unimation Puma version of the AKI and AMI
} libraries and run on a Puma, and then re-linked for
use on, say, an ASEA manipulator.
The next section will examine the internal structure
of ARCL. 3.1 The ARCL Kinematic Interface
Every kinematically distinct manipulator must have
3 The Structure of ARCL an AKI library to be used by ARCL. The AKI has
two major tasks:
A major bene t of using most graphics software li-
braries is that a device-independent interface is pre- The Forward Kinematic Solution For an n-link
sented to the applications programmer. Low level manipulator, given the joint angle vector  and
hardware speci c details are encoded in particular de- the geometric link parameters, compute the po-
vice `drivers'. There is also considerable bene t for a sition and orientation of the end-e ector with
robot programmer in being able to express an appli- respect to the reference coordinate frame as a
cation in a manner that is independent of the actual homogeneous transform (T6 ).
computing hardware and manipulator being used.
The Inverse Kinematic Solution Given the geo-  the manipulator teach server function
metric link parameters and the desired end-e ector  the real-time clock
position and orientation expressed as a homo-  the ARCL semaphore library
geneous transform (T6 ), compute the required  the ARCL event logging facility
joint angles  .  the ARCL diagnostic data stream
The most critical functions relate to operation of
Additionally the AKI may implement other kinematic the trajectory generator and transfer of position set-
functions required by ARCL for special purposes, such points to the servos. The AMI must create an inde-
as the manipulator Jacobian matrix and its inverse. pendent thread of execution (or an illusion of one) for
The AKI is used repeatedly by the trajectory gen- the trajectory generator, and arrange for it to be run
erator, to convert the T6 transform to the robot joint periodically. In a circular way, the trajectory gener-
angle vector. The inverse solution is therefore exer- ator will call AMI functions to deliver set-points to
cised heavily, and an ecient implementation is re- the servos.
quired; algebraic rather than iterative solutions are The AMI will most probably employ the services
preferred. The ability to store substantial kinematic of a real-time operating system to create the neces-
state assists the kinematic solutions for manipulators sary threads; shared-memory style systems are pre-
which are redundant or have no closed-form solu- ferred as there is data shared between the AAI, AKI
tion. Multiple solutions are handled by a con gu- and AMI. However, ARCL systems have run on `bare
ration word which uses bits or bit- elds to represent hardware' using timer interrupts to call the trajectory
the required solution, for example, the left hand/right generator.
hand con guration of a Puma 560.
This principal dependance of the AMI is gener-
The AKI works entirely with manipulator joint an- ally on the operating system and secondarily on the
gles or displacements in real-world units such as mil- manipulator type. The MS-DOS/CTask AMI (see
limetres or radians. It does not deal with the actuator below) was designed to support a number of di er-
positions or units, which is in the domain of the AMI. ent manipulator types simultaneously. AMI libraries
The AKI routines are provided to be called implic- may di er considerably internally, but all conform to
itly by the ARCL library, in particular the real-time a well de ned software interface speci cation.
trajectory generator function. However, the routines
are general purpose and make no assumption about
the rest of ARCL being present. 3.3 Portability
All ARCL code is in ANSI C and portable to any ar-
3.2 The ARCL Machine Interface chitecture providing an ANSI-compatible compiler.
ARCL has run on National 32016, DEC VAX, Mo-
The role of the AMI is to incorporate all code that torola 680x0, Intel 80x86 and Sun SPARC machines.
is operating system, computer architecture and robot AKI libraries have been written for the Unimation
interface speci c. In the same way as the AKI library, Puma 560, ASEA 3000, Machine Dynamics/Farley
a di erent AMI is required for each distinct operating Journeyman and Microbot MIM-5 manipulators.
system/robot controller combination.
AMI libraries exist for the following combinations:
All of ARCL's communicationwith the robot hard-
ware and operating system is routed through the AMI. vxWorks/Unimate Puma 560 This suits a 68030
In fact an AMI library may be used to operate a robot processor on a VME card, the real-time operat-
quite independently from ARCL, or may serve as a ing system vxWorks[15] and the Unimate Puma
low-level manipulator interface for some other high- 560 servos. The processor controls the servos
level robot programming system. using a custom interface.
The speci c responsibilities of the AMI include:
vxWorks/Journeyman This suits a 68030 proces-
sor on a VME card, the real-time operating sys-
 mapping manipulator joint angle vector tem vxWorks and Farley/MD axis controllers
to actual motor position on a Journeyman robot. This implementation
 delivering the mapped motor position com- uses software position control loops within the
mands to the robot servos AMI.
 controlling the gripper and ancillary IO
lines ARTS/Unimate Puma 560 The ARCL Real Time
 providing the periodic thread of execution System (ARTS) is a simple monitor that has
for the trajectory generator
control of the manipulator, which it temporar-
ily cedes to application programs upon request.
ARTS utilises vxWorks and provides an AMI
interface.
MS-DOS/CTask/MIM-5 This is designed for PC-
style machines and uses the CTask[14] library
to provide the real-time multi-tasking environ-
ment. This AMI generates stepper motor mo-
tion pulses in software for the MIM-5 educa-
tional robot.
O -Line While a Unix process and MS-DOS do not
o er multi-tasking, an illusion of it to allow
ARCL applications to be run o -line is provided
by this AMI. Motion information may only be
written to a le or piped to post processors for
analysis and display, described in the next sec-
tion.
Most combinations of AKI and AMI libraries are pos-
sible but many are not practical.
ARCL's very general approach to robot control
placed heavy demands on the computing system, and
in the early days of development (1984) the emerging
32-bit microprocessor technology was pressed to its
limit. More modern platforms have however vindi-
cated the approach and provide powerful and general
robot control systems.
Figure 6: X-windows robot animation
4 Running Programs O -Line the event. Binary format is used to reduce the vol-
By linking ARCL applications with the o -line ume of data. The stream consists of a sequence of
AMI library, programs can be developed without the doubly-linked headers each of which is followed by a
need for a robot. The o -line AMI generates a bi- variable-length data structure. The rst record con-
nary data stream containing all the trajectory, grip- tains a `magic number' to identify the le type, and
per, and IO requests that would normally have been contains the name of the manipulator, its kinematic
sent to the robot servo system, and directs it into a structure, and the name of the application program.
le. This AMI can run in a single-threaded environ- The utility unstream provides a human readable
ment, such as a single Unix process, or on MS-DOS. version of the stream data, with interpretation of the
Later, the program can be re-compiled or re-linked common record types. The utility jtraj extracts
with a real-time AMI to run on a real manipulator. joint angle records and displays this data in tabular
For debugging, command line switches (those for form, which is useful for plotting. ctraj performs a
ARCL are pre xed by +) can enable the printing of similar function for Cartesian set-point records, dis-
position equations and transforms as they are con- played in a variety of formats.
structed by the application program (see Figure 5). Trajectory data may be piped into a rigid-body
To examine the move requests as they are issued dynamic simulator to compute joint torques, or im-
and processed: User program motion requests from ported into CACSD software such as MATLAB[10]
move() or stop() functions are listed as request.
to exercise models of robot control algorithms.
The time given is the time at which the request was A graphical simulator, Figure 6, provides an X-
issued. windows wire-frame animation based on a graphical
The binary data stream can be examined by a model of the manipulator, selected on the basis of
range of tools. Axis set-points, ancillary IO requests, the robot type information in the rst record of the
and other data can be replayed and analyzed after ARCL data stream. Model les currently exist for
the Unimation Puma 560 and the Microbot MIM-5.
% prog
ami_offl: done at t=272.048

% prog +tr
base : x:0.000 y:0.000 z:862.000 RPY r:0.000 p:-0.000 y:0.000
tool : x:0.000 y:0.000 z:170.000 RPY r:0.000 p:-0.000 y:0.000
p : x:500.000 y:600.000 z:800.000 RPY r:0.000 p:30.000 y:0.000
ami_offl: done at t=272.048

% prog +m
request PARK: t=0, traj=1, Ta=100, Tseg=300, Vt=0, Vr=0
request pos: t=0, traj=1, Ta=100, Tseg=0, Vt=10, Vr=10
request PARK: t=0, traj=1, Ta=100, Tseg=0, Vt=10, Vr=10, conf=run
exec(stdtg) PARK: t=0.00, stat=0, j Ta1=112, Ta2=112, Tseg=280, dT=56
exec(stdtg) pos: t=0.34, stat=0, j Ta1=112, Ta2=112, Tseg=0, dT=56
exec(stdtg) PARK: t= 136.19, stat=0, j Ta1=112, Ta2=112, Tseg=0, dT=56
request STOP: t=272048, traj=1, Ta=100, Tseg=300, Vt=10, Vr=10
ami_offl: done at t=272.048

Figure 5: Examples of o -line diagnostic output

5 Other Languages package has been proven on a range of diverse ar-


chitectures and operating systems as well as di erent
For some applications, a robot programminglanguage manipulator types. Applications can be prototyped
may be preferred to the library approach. Such ap- and de-bugged using the o -line tools developed.
plications might include development and testing of a
large application, or teaching. The transition from li-
brary to language is relatively straightforward. Once References
the syntax and semantics of a robot programming
language are de ned, a compiler or interpreter can be [1] C. Blume and W. Jakob. Pasro: Pascal for
written. This task is considerably eased by the use Robots. Springer-Verlag, 1985.
of the Unix compiler generation tools lex and yacc. [2] P. I. Corke, M. V. Roberts, R. J. Kirkham, and
With the addition of symbol table routines to handle M. C. Good. Force controlled robotic debur-
variables, the rest of the functionality is handled by ring. In Proc. ISIR. Australian Robot Associ-
the ARCL libraries. ation, November 1988.
As an exercise, a version of VAL-II[12] was writ-
ten which provided most of the functionality of the [3] P.I. Corke and M.C. Good. Dynamic e ects in
monitor and interpreter. This required 230 lines of high-performance visual servoing. In Proc. IEEE
lex code for the lexical analyser, 360 lines of yacc Int.Conf. Robotics and Automation, pages 1838{
code for the syntax, and 2700 lines of C code for the 1843, Nice, 1992.
semantics. [4] P.I. Corke and R.P. Paul. Video-rate visual ser-
voing for robots. In V. Hayward and O. Khatib,
editors, Experimental Robotics 1, volume 139 of
6 Conclusion Lecture Notes in Control and Information Sci-
ences, pages 429{451. Springer-Verlag, 1989.
ARCL is a powerful library for controlling the mo- [5] V. Hayward and R. P. Paul. Robot manipulator
tion of robots, and permits the programmer to use C control under unix - RCCL: a Robot Control C
and other application libraries. It allows the user to Library. International Journal of Robotics Re-
represent the world and the manipulator in terms of search, 5 No.4:94{111, 1986.
homogeneous transforms, and to solve equations of
transforms at run-time. This general facility allows [6] R. Hocken and G. Morris. An overview of o -
sensor-based control and has been used in research line robot programminglanguages. Annals of the
projects into robotic deburring and visual servoing. CIRP, 135:495{503, February 1986.
A major design aim has been portability. The [7] B. W. Kernighan and D. M. Ritchie. The C
Programming Language. Prentice Hall, 1978.
[8] J.C. Latombe, C. Laugier, J.M. Lefebvre, and
E. Mazer. The LM robot programming sys-
tem. In International Symposium on Robotics
Research, pages 377{391, 1984.
[9] John Lloyd. Implementation of a robot control
development environment. Master's thesis, Mc
Gill University, December 1985.
[10] The MathWorks, Inc., 24 Prime Park Way, Nat-
ick, MA 01760. Matlab User's Guide, January
1990.
[11] R. P. Paul. Robot Manipulators: Mathematics,
Programming, and Control. MIT Press, Cam-
bridge, Massachusetts, 1981.
[12] B.E. Shimano, C.C. Geschke, and C.H. Spalding.
VAL-II: a new robobt control system for auto-
matic manufacturing. In Proc. IEEE Int.Conf.
Robotics and Automation, 1984.
[13] Unimation Inc. User's Guide to VAL, Version
11, 1979.
[14] T. Wagner. Ctask { a Multitasking Kernel for C,
volume 2.2. Ferrari Electronic GmbH, Beussel-
strasse 27, D-1000 Berlin 21, Germany, October
1990.
[15] Wind River Systems, Inc., 1351 Ocean Avenue,
Emeryville CA 94608. Vxworks 4.00 Volume 1:
User Manual, 1988.

S-ar putea să vă placă și