throbber
Extending the RCCL Programming Environment to Multiple
`Robots and Processors
`
`
`
`John Lloyd. Mike Parkerl and Rick nnccraini
`
`l MtGi|i University. Research Center for Intelligent Machines. 3480 University Street, Montreal.
`Quebec. Canada
`l-l3A EAT
`
`3 RCA Advanced Technology Laboratories. Route 33. Moorestown. New Jersey
`
`D3057
`
`Abstract
`
`The Robot Control C Library (RCCL) is a system for developing robot
`control programs in a UNlX environment. and has proven to be particu-
`larly useful in research applications. This paper contains a description of
`the work presently being undertaken by the RCA Advanced Technology
`Laboratories and McGill University in expanding RCCL to handle mul-
`tiple robots, and upgrading its implementation to a multiple-processor
`n1icroVA>(/UNIX system. This includes 1)
`reworking the primitive set
`to allow for the specification of multiple robot actions. 2] modifying the
`trajectory generation mechanism so that several robots may be controlled
`and coordinated at once. and 3) redesigning the system interface on top
`of which RCCL is built to allow the creation of multiple real-time robot
`control tasks interfaced to UNIX.
`
`1.
`
`Introduction
`
`This paper presents the system work currently being done at the RCA
`Advanced Technology Laboratories (ATL].
`lvloorestown, New Jersey.
`in
`cooperation with the McGil| University Research Center for Intelligent Ma-
`chines [McRC|M} Montreal. Canada. in exploring cooperative multi—robnt
`control and programming environments. The work utilizes a microVAX
`ll/system running the Robot Control C Library {RCCLHGL which is im-
`plemented under UNIX using a set of system primitives called the Robot
`Controi Interface lRC|). which make it possible to create a real-time robot
`control task and connect it to a UNIX program.
`The mulli-robot control work at ATL is motivated by its potentiai ad-
`vantages in manipulating large objects, or performing complex tasks that
`require more than one hand
`Many of the specific applications being
`studied are directed at NASA programs for space station construction and
`maintenance. which includes the development of a multi-armed service-r
`robot
`The ATL[McGill research effort on which this paper is based is aimed
`at:
`
`O Extending the RCCL "language" to create a programming environ-
`ment for coordinated control of multiple manipulators [section 3).
`0 Providing for multi-robot RCCL by extending RCl to support multiple
`control tasks in a nrnlti-processor environment [section 4),
`0 Developing algorithms for force control and cooperative manipulator
`action based on an outer force control loop wrapped around an inner
`position control loop [11] [this work is described in
`
`2. Background: The RCCL/RCI Environment
`
`The orginal RCCL is a library of routines for describing and control-
`ling robot positions and actions. combined with a trafectorygeneratorfor
`realizing these actions [5, 10].
`It is Eargelyvan implementation of the ideas
`presented in Richard Paulis book [12]. An RCCL application program is
`written in the ”C" language and uses special primitives to specify robot
`action requests and queue them for servicing by the trajectory generator.
`The trajectory generator is a real-time background task. which does path
`interpolation and smoothing. maps from Cartesian to joint space. and
`
`CH2535-1/88/U000/0465501.00 (C) 1988 IEEE
`
`465
`
`outputs a set of joint setpoints at a ltypicai] rate around 50 Hz. Usually.
`these setpoints are fed to the mannlacturer-supplied joint
`level control
`modules of a particular robot (which execute PID control at typical rates
`of 1 I-(Hz). The task structure is hence a 3-level affair. consisting of an
`asyrrcllrorlous pfanm'.vg task (the main RCCL program). a synchronous
`lrafectorl-controltasir (provided by RCCL}. and joint-controltasks.
`(Fig-
`ure 1).
`The main program starts up RCCL with a call to rcc.I_open (1. Two
`types of routines are then available:
`
`0 Primitives used in rrrarripulntirlg coordinate frame refationslifps.
`{'5 Prirrrititres which invoke and control robot moriorrs.
`
`The first maintain coordinate frame transformations {represented in
`RCCL by the data structure type Thar‘). and position equations [type
`PBS) defined rising these transformations. Position equations are used to
`relate the value of the manipulator T6 transform to the product of other
`transforms. For example. given a WORLD coordinate frame w.r.t. robot
`linlc D. a position P w.r.t. WORLD. and a robot TOOL. transfornr.
`then
`locating the tool
`tip at the part involves satisfying the equation
`T6 TOOL
`WORLD P
`The RCCL primitive for creating positions is rnalroPosit:1'or1(). whose
`argument list is a set of transforms describing a transform equation. Tire
`position equation above would be created with a piece of code that looks
`like:
`
`TRSF Icoorci,
`transform pointers
`.'
`PBS tpos;
`! position pointer
`.
`. .in.t‘ tialize transforms. .
`.
`
`‘tool,
`
`*’p
`
`pos = :nalrePos.it1‘ortt' 1:5,
`
`tool, E0. coord, p, TL.
`
`tool}:
`
`The keyword El] denotes the two halves of the equation. while the
`keyword TL and the transform following it provide additional information
`as to where the manipulator tool frame exists. Tire ability to create general
`coordinate transform relationships is a powerful
`tool. Within the same
`equation. one transform might represent the position of a sensor. another
`might represent path corrections for compliant motion. and another might
`generate a motion path. This can be exploited within RCCL by changing
`the actual values of the transforms prior to or during motions.
`The primitive that initiates robot motion is rnovef). which takes a
`position data structure as an argument and queues a request for the trajec-
`tory generator to move the robot so that the position equation is satisfied.
`Successive 1noVo(J requests will
`travel
`through the target point; to stop
`there. the command stop (J is used. These commands do not wait until
`the motion has finished:
`that must be done using various rra.it.for()
`primitives. The motion can be controlled by setting various parameters
`such as the path generation mode [joint or Cartesian), speed.
`forces to
`exert. force limit conditions. etc.
`in addition. individual transforms in the
`target position equation can be varied by binding them to programmer de-
`fined real-time functions. which are executed in reahtlme by the trajectory
`generator. Since the target will automatically track these transforms. we
`can use this feature to create very general. dynamically changing. paths.
`While an RCCL programmer typically does not work with the trajec-
`tory generation code.
`it may be desired to work at
`that
`level
`to install
`
`ABB Inc.
`
`EXHIBIT 1038
`
`Page 1 of 5
`
`
`
`RGBOO158516
`
`Page 1 of 5
`
`

`
`
`
`-1 ll" ,
`
`'u
`
`u'_
`
`-_
`
`.ni
`
`n
`
`I
`
`-
`
`
`
`nificant part of the Mcfiill/RCA effort. and is discussed in section 4 of
`this paper.
`RCCL was originally written at Purdue University by Vincent Hay-
`ward.
`in collaboration with Richard Paul. during 1982-83.
`It was trans-
`ported to McGill University during 1934-85 [1D[, and later retargeted to
`ntlcrow-\X lls at RCA.
`the Jet Propulsion Laboratory (California). and
`McGi||
`A nilcroVAX llfVMS implementation was achieved at
`the
`NASA Robotics Laboratory. Goddard Space Flight Center. Maryland, dur-
`ing the spring of l9Bi'. All of these sites primarily use PUMA robots.
`
`3. Enhancing RCCL for Multiple Robots
`
`3.1 Nluitiple Robot Control Issues
`
`_ 1.
`
`Miilti-robot control can be considered in three ways:
`fridependent Operation. Several robots doing independent tasks at
`the same time. accomplished by running several single-robot RCCL
`programs concurrently.
`2. Synchronized Operatiori. Two or more arms are required to execute
`a single task. such as in assembly operations. A system supporting
`this must have the ability to synchronize individual arm motions. as
`in specifying that arm A must wait for arm B to move into position
`before continuing with its trash.
`3. Coordfiioted Operatioii. Several arms are interacting with a com-
`mon object. A system supporting this must provide 1) a convenient
`method of specifying relative positions amongst the arms that cor-
`respond to grasping positions of each arm on the common object.
`and 2] a method of specifying a coordinated motion that niaintalns
`the relative positions while moving the object along a desired path.
`The new RCCL priinitives described below are largely directed at this
`issue.
`
`For coordinated motion. kinematic constraints exist between the dif-
`ferent arms which the trajectory computed for each arm must satisfy.
`Forces oi interaction caused by residual position errors can then be re-
`clilced lising a method such as described in
`We ensure that the kine-
`matic constraints are satisfied by computing-a single path of niotlon for
`the object being manipulated. which the trajectories for each robot simply
`follow at some constant offset. This need is met by introducing into RCCL
`the concept of an abstract object frame. Generally. the object frame is
`rigidly attached to some physical object which is to be manipulated. An
`object frame can be ‘‘moved'' , hi Cartesian space. using the RCCL motion
`primitives: a trajectory generator will then move the object frame through
`space. By creating robot positions which incorporate this object frame.
`and maintaining the robot at these positions. we can move a real object
`attached to the object frame. Moreover. by including functionally defined
`transforms in the object frame equation. we can incorporate sensor-based
`tracking into its motion.
`3.2 Nlulti-robot Function Primitives
`
`The original! RCEL primitives for controlling a single arm generalize
`to multiple arms quite naturally.
`A muiti-robot RCCL must allow us to be able to move different
`robots. We hence give move (J an additional argument:
`a pointer to a
`new data structure [type l-t!lllIP} which denotes a particular robot and
`collects together in one place all the data associated with that robot. The
`1-Uli‘i‘IPstructure for a robot is returned by rce1_open(). which now takes
`the name of the robot and sets up a trajectory generator it:
`
`.i-iAifIF'
`
`".1'Dl‘.'l o t ;
`
`robot = .rci:.I_open( "PH!JA5EO" J:
`
`
`
`RGBOO158517
`
`Page 2 of 5
`
`
`
`that the transform "tobe solved for" no longer has to be the t5 ofa robot.
`but is arbitrary and is denoted by the keyword l'it.slllS. This permits the
`example in section 2 to be rewritten as
`
`
`
`p0 = raalcePos:ii::ia:nf TiL*lffS,
`
`tool. El}. coord, p, TL, tool);
`
`We also need to be able to create object frames. This is done using
`a special instance of the I-IAIJIP data structure:
`
`i.nurIi= may ,-
`
`obj = rcc1_open ("£lB'JECI'_,Fi?.Ai‘~!E");
`
`The object from: is essentially a virtual robot. With its own trajectory
`generator. and we can use it with most of the canonical motion control
`primitives. The only differences are that the virtual manipulator has less
`capability than the piiysical manipulator:
`it does not make any sense to
`move a generic object in "joint" mode. nor does it make any sense to look
`at its joint angles.
`The field obj-Dtrans in the object's LIANIP structure contains the
`instantaneous value of the object transform. and varies as motions are
`executed on the object. Using functionally defined transforms. we can
`force the value of obj—>trans to be determined by sensor inputs or other
`means.
`
`An object frame does not have to be connected to a robot. but it can
`be. by incorporating its transform obj-btzrar-is into a position equation
`used for moving a robot [see the example below). Since an object frame
`is not always physically attached to anything. we may wish to sometimes
`simply "put" an object frame at a (possibly time varying) position. instead
`of "nii:ivi'ng" it there. For this. we define a primitive maintain C}. which
`is a little bit like ii-love-(). except that 1] it immediately puts the object at
`the goal position. and 2)
`lieeps following the goal position until another
`action is requested on that object. The primitive can be used with robots
`as well as object frames. as long as we are careful to previously aiotref)
`to the position that we plan to maintain U. Usage of ma.1'nha.in() is
`illustrated in the example below.
`
`3.3 Task Implementation
`
`Figure 2 gives a control task diagram of the new RCCL implemented
`for a system with two arms and one object frame. Each manipulator.
`and the object frame. has a trajectory generator (iniplemeiited using an
`RC! control task). As usual.
`the planning level task is a normal C pro-
`gram which generates and queues motion requests for the trajectory tasks.
`Communication among the tasks is through shared memory. Tile trajec-
`tory tasks remove motion requests from their respective motion queues
`and then generate the intermediate setpoints that constitute a path to the
`specified goal position. which is being continuously reevaluated to take ac-
`count of functionally delined transforms. Syiiclaronlzatlon is required to
`insure that the value of the object frame transform is evaluated first. as it
`~ may be used in the position equations of the physical manipulators. The
`robot
`trajectory tasks must also do inverse kinematics to generate the
`setpoint joint angles which are transmitted to the robot controller.
`This lmplernentation uses the extended RCI primitives described in
`section -1.
`
`3.4 Dual Arm Example
`
`A brief exampie that arises in the context of satellite servicing will
`illustrate the features described. We wish to grasp a moving object with
`two manipulators and then follow it without exerting a force on it. an
`action which would be the first step in a two arm catch of a rotating
`satellite. Refer to the transform diagram in Figure 3. The 3-D location
`of the object is tracked witli a camera sensor. The sensor data drives the
`position of an object frame using a functionally defined transform. Loc.
`
`466
`
`Page 2 of 5
`
`

`
`
`
`
` TRSF rcam, rlioc;
`
`P05 *Ul:j_Pos:
`i‘dAllIP *Dbj;
`
`transforms related to object
`I
`I position equation for object
`l object frame data structure
`
`. allocate and initialize transforms and position
`
`.| Set up obj frame, and turn on its trajectory generator
`
`
`The capability of the original RCCL[UNlX interface in allowing a
`programmer to attach a simple control task to programs executing in the
`rich environment of a large operating system (UNIX) has proven very
`usefui in research and development. Driven by this success. we proceeded
`to expand this interface into an independent realvtime system package.
`capable of creating multiple control tasks. and able to take advantage of
`multiple CPUs on a common backplane.
`
`-= rcc1_open ("UBJECT_FRAf-IE");
`Uhj
`rr:c.1_cont.ro.I
`flllaj);
`
`.’ build the equation for the object frame
`
`Elbj_Pos = malcePosition (Cam, TRMIS,
`
`1’-IQ‘, Loc, TL, Tl?.M.'S).'
`
`maintain (lilbj. Cl.l:j,pos,l,‘
`
`.1 have obj frame tract:
`
`‘Lac’
`
`Next. to move the physical manipulators to grasp points defined with
`respect to the object frame. we would issue move requests to positions
`defined with respect to flbj’>trans:
`
`P03 *flbj_Pos;
`TRSF *Tool1,
`TRSF *Tool2,
`P03 #121, *p2,'
`IMNIP -rrobotl, *robot2.'
`extort: int camp1y,on.'
`‘
`
`1' position equation for obj
`rllispl, wompljrl;
`! Xforms for
`tcoorcll.
`‘Goord2. *'Disp2.
`rCo:zrply2,'
`! robots I it 2
`!pos:it.iorI eqns.
`! data streets for robots
`.' flag to turn on compliance
`
`. allocate and initialize transforms and positions
`
`! Setup robot trajectory tasks and turn them on
`
`robot! = rccl_open ("PUfvfA1"),'
`.r::c.I,_control
`(rol:otJ);
`
`robot2 = rcc1_open ("Pl.lM.?l2").'
`rcc1,,contro.t
`frobotz’);
`
`.' Now build the robot position equations
`
`ilrtibj->t1-ans,
`pi = ma1<:ePos.it:ion (TRANS. Taall. Eli. Coordl.
`Dispi. Complyi, TL. 1"oo11);
`p2 = ma£«:ePosition (TRANS. Tool2, Eli.
`l.'oord2,
`itzflbj->l:rans,
`Di.sp2. Comply2. Ti... Tool2):
`cause robot
`to follow
`Move to grasp point,
`
`tracking}-lode frobotl);
`move
`(robol:1, pl);
`
`.1
`l
`
`tracicingilode frobot2}.'
`move (robot2, p2);
`
`:ra1't_:l"or frobotl-Dcompletetflr
`sra:it_for frobotz-Dcomploted);
`
`‘fait for motions to stop
`I at grasp position
`
`comply_on = 1:
`GRASP frobotl);
`GRASP frobotz);
`
`.'
`.'
`.'
`
`start: comply functions,
`than grasp object at the
`same time.
`
`The primitive trackingi-lodef) preceding the move requests is an-
`other new feature that tells the trajectory generator to continue to track
`a position, after a motion is completed. until another motion request ap—
`pears on the move queue [instead of stopping firmly at the goal position's
`last value]. The program uses the completed liag to determine when both
`robots reach their grasp positions (remember that the move requests do
`not block]. That this will probably not happen at the same time is OK
`since the each arm will continue to track the grasp point. When the grip-
`pors are closed. a compliance algorithm is started. using a compliance
`function bound to the transforms Comply! and Gom_o1y2. which ensures
`the arms continue to foliow the object while exerting zero force.
`This program is naturally oversimplified.
`ignoring things like via
`points to control approach. transform allocation and definition. and details
`of the grasp process. The force control method for sen-oing the comply
`transforms is an issue dealt with in a separate paper (see [9]].
`
`4.1 Design Concept
`
`RCI (Robot Controllnterfacel permits .1 pmgramnier to create real
`time control
`tasks and attach them to a Uhllxfprogram. Each "task"
`comprises a function for set of functions). which are a loaded part of
`the main program. but execute asynchronously in real—time. Control of
`the tasks [r'.c-.. starting. stopping. setting up scheduling cliaracteristicsl is
`_ achieved through primitives called by the main program [also known as the
`planning task). Tasks can communicate using either shared memory or
`message passing.
`if a task is being used for robot control. it will typically
`be attached to an interrupt from either the RCl system clock or a robot
`controller. RC1 provides support for robot control by proviriing [for certain
`types of robots) a set of robot interface functions that read slate and
`feedback information back from the robot and post it in a "blackboard"
`called the lllcllrstructure, and take commands which have been issued by
`the control or planning tasks and send them oil’ to the robot.
`The design oi’
`the RCI primitives was motivated by the following
`goals:
`
`to serve as a developnlent and
`
`tasks often need to run at
`
`0 Ease of use- the system is meant
`prototyping environment.
`«:5 Extreiriefy fast operation - robot control
`rates of IUD H2 or higher.
`0 Syirclrronizedsclieduling— control tasks may need to run in sync with
`each other. so a common clock is required.
`«Ci Shared memory between tasks. — required to ensure the fastest pos-
`sible inter—tasl: communication.
`0 Message passing between tasks. — for instances where data isolation
`is important and communication speed is not.
`RC! Primitives
`
`4.2
`
`Control tasks are created and controlled by primitives called from the
`planning task.
`
`tel = rciflreate (name,
`
`cpuf-laslr)
`
`task with the given name on one of the CPUs specified
`creates a control
`by cpol-laslr. A pointer to a task descriptor is returned to be used in
`subsequent references to the task. The task is associated with a robot if
`it is given the same name as one of the robots supported by the system
`(section 4.3).
`together using the call
`All
`tasks and memory areas are deietecl
`rciclose () (deletion of individual control
`tasks is not currently imple-
`mented).
`The control functions that comprise a task are specified with
`rciGontrolF:ms (to‘, startup. fxnl.
`fxn2. release)
`
`where the arguments are pointers to functions: any of these can be de-
`clared l.lUlI.l.'.. startup and release are called once when the task is ac-
`tivated and deactivated, respectively. Two control functions [f:cn1 and
`:f:co2) are are allowed so that
`they can be interleaved with robot
`|f0
`{Figure ti].
`Creating a task does not actually turn it on (activate it): that is done
`using rcistartfhitmaslrj which starts the tasks indicated by the bit
`mask (the bit code for a task can be obtained from the task descriptor).
`Tasks are deactivated using rciRe1ease(biI:mas}r).
`
`Various planning level primitives determine how an RCI control
`is scheduled.
`
`task
`
`467
`
`Page 3 of 5
`
`
`
`RGBOO158518
`
`Page 3 of 5
`
`

`
` to execute tie control
`
`runnable.
`
`task functions at high priority when they become
`‘
`
`
`
`arbitrary event. instead of the clock, a wakeup function can be specified:
`rc:il.'lr1.Ftmct:ion (sci, n'alreup_:Funcf;i on)
`
`
`
`The task will be woken up when the li‘a1t'eLrpFunctiOn returns true.
`Once a control task is invoked. it will not be interrupted by other con-
`trol tasks until it completes. This permits simple round-robin scheduling
`for tasks on the same processor: tasks which must run concurrently have
`to be assigned different processors. A timeout mechanisnl detects rogue
`tasks which exceed their allocated time.
`
`Shared memory between tasks is set up by planning level primitives
`before the tasks are activated:
`at]
`:32
`
`rcisharedi-femory (labs-.i.1. s:i2e1.
`rcifiloballdemory flabelz. s;ize2.
`
`to‘);
`td. bitzaraulc)
`
`rcisharecii-lemory() creates a shared memory area. identified by la-
`bel. between the planning lash and the control task td. rc1‘G1oba1l'-lem-
`oryf) is similar. except
`that all
`the tasks indicated by hi tmasir have
`access to the memory. Controt
`tasks can get pointers to the memory
`with the calls gEt5‘ha.recii-!e.'nor}'(label) or gem}obaltlemoryflabel).
`The message passing primitives are quite simple and are callable from
`all tasks. They do not block.
`II
`rcjsond (sendcode. buffer. size)
`Ii
`rcilteceive (getcode. buffer. size, sender)
`
`r'Ci5'Endf) takes a message of size bytes contained in buffer and
`queues it for delivery to the task indicated by the bit mask sendcode.
`rcifleceivc-(J checks for messages anrl gets the first from any of the
`senders specified by the bit mask getccide. returning the size. The task
`descriptor of the sending task is returned in sender.
`
`A few support functions are available for control tasks. which do not
`have access to the usual UNIX system calls. These include functions
`for local memory allocation {rcfl-iallocfi and n:.i.F‘reefJl. signaling
`the planning task lrcisignal (J), and a function which prints diagnostic
`messages to the task processor console lrc1‘Prinl;f(.l].
`
`4.3 Robot Interfacing Aspects
`
`RCI rriaintains a database of robots. When a task is created which
`has the name of one of these robots, that task is connected to the robot.
`This means that RCI will 1)
`instantiate parameter blocks in the task
`descriptor with the joint ievel data for that robot and 2) automatically
`perform l/O with the robot. maintain the HDl’.’structure. and service com-
`mands for the (two) control functions that execute each control cycle
`(Figure 4), The fields in the robot parameter and new structures are de-
`lined to represent a general robot at the joint level. This includes features
`such as joint angles, velocities, torques. limits on these values, lower level
`representations such as joint encoder counts and DAC values. conversion
`routines between such representations. and calibration information. Fields
`are also available for generic sensor l/O. RCI does not. at the moment.
`maintain kinematic or dynamic robot parameters since this information
`tends to depend on the RCI application.
`
`4.4
`
`implementation Using a Set of lVlicroVAX ll CPUs
`
`it is possible to create a mlIlti«proce.ssor system consisting of [up to
`4) micro\lAX CPU boards residing on the same Q-bus. One of these. the
`arbiter. contains the bus arbitration logic. while the others are configured
`as auxiliaries. Each CPU contains floating point support and 1 Mbyte of
`local memory (this can be expanded if necessary). Communication be-
`tween CPUS is achieved by mapping segments of processor local memory
`onto the Q-bus. where it can be accessed by all processors
`This hardware capability was used to build a muiti—processor RCI
`system. where the arbiter CPU runs UNlX [and possibly some control
`
`RC! tasks can also be executed on auxiliary CPUs. The required
`CPUs are allocated by the RC1 program (The same CPU cannot currently
`be shared between different RCI programs) and are booted and loaded with
`a specialized nrfnifrernenl. This nifnfkerneflwritten at McGill University by
`Mike Parker) provides the services necessary to load and run RCI control
`tasks,
`It connnunicates with UNIX using a special UNIX device driver
`and a set of defined inter-CPU messages implemented using shared 0-
`bus memory.
`Control tasks are set up and run on an auxiliary CPU in the following
`way. Those segments of program code which are required by the control
`functions are downloaded into the processor. along with monitor code
`that provides communication with the RC! primitives and calls the control
`tasks when they are activated and become runnable. Different control
`tasks on the same CPU are pulled for readiness and executed round robin
`style. Each task runs until its functionls} return: tasks cannot presently
`interrupt each other (this capability may be added in the future if it proves
`necessary: it would require assigning priorities to tasks}.
`RCI programs maintain a separate sclieduler task which is responsi-
`ble lor waking up those tasks whicli have been set for scheduled wakeup
`with the rciflncloclrf) function. A wakeup signal is sent to the monitor
`responsible for the task. which in turn executes the task at the first oppor-
`tunity. The scheduler is maintained as a single task so as to ensure that
`scheduling profiles of different tasks are kept in sync. The scheduler uses
`the RC] system clock. which is kept on the same CPU as the scheduler
`and is available for reading (through shared memory) by all RCI tasks.
`The RCI clock can be implemented using either the 100 Hz VAX hardware
`clock. or a clock device attached to the Q-bus.
`lf a clock device is used,
`and the scheduler CPU is an auxiliary. then special arraagenients must be
`made for the clock device to interrupt the CPU through its conrmunr'ca»
`lion register‘ ([3]). since auxiliary CPUs cannot receive D-bus interrupts
`directly.
`
`5. Conclusion
`
`We have described work which is being done to create a useful muiti-
`robot programming and development environment by extending the toolkit
`already provided by the RCCL/RCI system. Our principal motivation has
`been the proven usefulness of having a full C/Ulillx environment for cre-
`ating and testing robot control algorithms at many different levels. The
`present status of our work is as follows:
`the RCI extensions have been
`completed and are running on the microVAX system. Preliminary results
`on the multi~arm work shouhi be available by the time of this conference.
`References
`
`[1]
`
`iii
`
`l3]
`
`l5]
`
`Patrick Aboussouan. "Frequency Response Estimation of Manipu-
`lator Dynamic Parameters" llvl. Eng. Thesis). Dept. of Electrical
`Engineering. McGill University, Montreal. Canada. December 1935.
`Moshe Cohen and Laeeque K. Daneshmend, "Evaluation of an Ac-
`celeration Feedback Position Control Algorithm on it Commercial Ma—
`nipulator". Submitted to the 1988 IEEE Conference on Robotics and
`Automation.
`
`Digital Equipment Corporation. KAGBD-AA CPU Modrile User's
`Guide. DEC Educational Services Development and Publishing. Marl-
`boro. lvlass. DEC Order Number El(-KAfi3Cl-UG-U01.
`
`Vincent Hayward and Samad Hayati, "Design Principles of a Coop-
`erative Robot Controller", Space Station Automation lil. Proceedings
`of S.Pl'E_ November 1987. Cambridge.
`lvlass.
`Vincent Hayward and John Lloyd, "RCCL User's Guide". Technical
`Report, Dept. of Electrical Engineering. McGill University. Montreal.
`Canada. December 1955.
`
`468
`
`
`
`RGBOO158519
`
`Page 4 of 5
`
`Page 4 of 5
`
`

`
`
`
`
`
`
`
`
`
`CDDIID I
`
`“"30"
`
`cumin 2
`
`rroaora
`
`
`
`Trajectory Control Task {SD Hz.)
`. Palh computations and smoothing
`- Solve [or T5
`. Inverse kinematics
`
`Figure 3 Translorm diagram for a nmiti-robot object
`manipulation task.
`
`
`
`
`
`RobotJointControlTasks(1KHL] |
`
`robot controller
`
`
`high Wm! fink
`
`
`
`VAX computer
`
`
`
`
`
`wait for stall
`of control rzycie
`
`
`
`
`
`
`read daaa from Ioixol
`into her variable
`
`call first user
`control function
`
`
`cali second user
`control function
`
`
`
`DC
`
`sent! commands described
`in the chg variable
`
`.
`to the robot
`
`Figure 1
`
`A typical RCCL system.
`
`Figure 4 Execution cycle for an RCI robot control task.
`
`469
`
`Page 5 of5
`
`
`RGBOO15852O
`
`
`
`Planning Lurl LI 511
`
`$1;
`
`
`
`
`
`
`-l_—_Z:l-*—l:Ze—lil%
`i'LlMM more rzurur
`drivel rum! am»!
`i".JlrlJ\i‘ mun: quvw
`
`PUMA! Cunlrul lash ' Ulnecl Control T.ulr I PUMA? Cnnirnl Task
`
`
`. run: mmgguluxons
`- so"; puem re
`. mum s.....»or...
`
`
`. Pan :nm;mnu:uI
`. so" is. omen Turrslarm
`_
`
`. rum tmnpuldllllnl
`. sou 4.. vmna: l'h
`. rn.....L....:-urn
`
`
`
`T" WM“ c°"""ll"
`
`T" Pullm C'""'"""
`
`Figure 2
`
`Task diagmn, nf 3 ,m,|t;_,0;mt RCCL 5y5[E.,,.,_
`
`COMP” I
`4+
`TOOL1
`
`5'5?‘ W5? cgMp._y 3
`I
`
`
`
`
`
`
`
`
`
`
`[7]
`
`[B]
`
`[9]
`
`[lflf
`
`Elli
`-
`
`[12]
`
`
`
`
`
`
`
`
`L. B. Holcomb and M. D. Montemerlo. "NASA Automation and
`Robotics Technology Program".
`IEEE AES lulagazine. April. 1937.
`pg. 19 - 26.
`Jin S. Lee, Samad Hayati. Vincent Hayward, and John Lloyd. "im-
`plementation of RCCL, a robot control C library on a microVAX ll".
`Advances in Intelligent Robotics Systems. SF'lE's Cambridge Sym-
`posium on Optical and Optoelectronic Engineering. Cambridge. Mas-
`sachusetts. October 26-31. 19% pp. 472 —- 430.
`Jin Lee. "Multi-Arm Coordination and Force Control Using Position
`Accommodation". submitted to the 19th Annual Pittsburgh Confer-
`ence on Modeling and Simulation. May 1988.
`Join: Lloyd. lnlpienrentatiorr of a Robot Control Devefoprnerrt En-
`viromnerrt (M. Eng. Thesis]. Dept. of Electricat Engineering. McGi|l
`University. Montreal. Canada. December 1985.
`J, A. Maples and J. J. Becker. "Experirnents in Force Control of
`Robotic Manipulators". Proceedings oHEEE Conference on Robotics
`EMU Aufonration. San Francisco. CA., April 1-10. 1985. pp. 695 - 702.
`Vol. 2
`Richard F’. Paul. Robot ll4arn'puIators.' Mathematics. Progr.rnrrrrirrg.
`and Control. MIT Press. Cambridge. Mass. 1981
`
`Planning Level Task
`(C User Prugrfim)
`- Define transforms and positions
`o Generate move commands
`
`shared mfimflfi‘
`
`mow: queue
`
`Page 5 of 5

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket