throbber

`
`Extending the RCCL Programming Environment to Multiple
`Robots and Processors
`
`John Lloyd. Mike Parkerl and Rick McClaini
`
`l McGili University. Research Center for Intelligent Machines. 3480 University Street, Montreal.
`Quebec. Canada
`H3A 2A7
`
`1 RCA Advanced Technology Laboratories. Route 33. Moorestown. New Jersey
`
`0805?
`
`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 UlliVersily in expanding RCCL to handle mul-
`tiple robots. and upgrading its implementation to a niultipldproces‘sor
`microVAX/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 interlaced to UNIX.
`
`1.
`
`Introduction
`
`This paper presents the system work currently being done at the RCA
`Advanced Technology Laboratories (ATL). Moorestown, New Jersey.
`in
`cooperation with the McGill University Research Center for Intelligent Ma-
`chines chRClM) Montreal. Canada. in exploring cooperative multi-robot
`control and programming environments. The work utilizes a microVAX
`ll/system running the Robot Control C Library {RCCLHGL which is im—
`plemented under UNlX using a set of system primitives called the Robot
`Controi Interface (RCI). which make it possible to create a real-time robot
`control task and connect it to a UNlX program.
`The mulli-robot control work at ATL is motivated by its potential ad-
`vantages in manipulating large objects, or performing complex tasks that
`require more than one hand [4). 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 [7).
`The ATL/McGili 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-robol RCCL by extending RCl to support multiple
`control tasks in a multi-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 19)).
`
`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 Paul's 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
`
`CH2555-1/88/UOUD/0465501.00 (C) 1988 IEEE
`
`465
`
`outputs a set of joint setpoinls at a ltypicai) rate around 50 Hz. Usually.
`these setpoinls are fed to the maunlactnrer-snpplied joint
`level control
`modules of a particular robot (which execute PlD control at typical rates
`of 1 KHz). The task structure is hence a 3—level affair. consisting of an
`asynchronous planning task (the main RCCL program). a synchronous
`trajectorI-controltasit (provided by RCCL). and foinr-rontroltasks.
`(Fig-
`ure 1).
`The main program starts up RCCL with a call to rchopen 0. Two
`types of routines are then available:
`
`0 Primitives used in manipulating coordinate frame relationships.
`{5 Primitives which invoke and control robot motions.
`
`The first maintain coordinate frame transformations {represented in
`RCCL by the data structure type TRSF). 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
`link i). a position F vv.r.t. WORLD. and a robot TOOL. transform.
`then
`locating the tool
`tip at the part involves satisfying the equation
`T6 TOOL
`WORLD P
`The RCCL primitive for creating positions is maltePositiofl 0. whose
`argument list is a set of transforms describing a lranslorm equation. The
`position equation above would be created with a piece of code that looks
`like:
`
`1125‘!" Icoarci,
`transform pointers
`.'
`PBS *pos;
`l position pointer
`.
`. .ini tialize transforms. .
`.
`
`‘tool,
`
`*P
`
`pos = maltePositiortf (: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 rohnt motion is novef). which takes a
`position data structure as an argument and queues a request for the trajec‘
`tory generator to move the robot so thal the position equation is satisfied.
`Successive move (J requests will
`travel
`through the target point; to stop
`them. the command stapfl is used. These commands do not wait until
`the motion has finished;
`that must he done using various li‘ait‘forf)
`primitives. The motion can be controlled by setting various parameters
`such as the path generation mode [joint or Cartesian), speed.
`forces to
`eitert. 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 rea|»time 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.
`
`Page 1 of 5
`
`EXHIBIT 1037
`
`RGBOOl58516
`
`Page 1 of 5
`
`

`

`new features or even replace the trajectory generator completely. Workers
`experimenting with new joint-level control laws often find it convenient to
`prototype them directly inside the trajectory module and bypass level 3
`[2. 1]. At this point.
`the programmer is no longer working with RCCL.
`but with RC1. Expanding the original capabilities of RC! represents a sig-
`nificant part of the McGill/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-33.
`It was trans-
`ported to McGlll University during 1934-35 [10[, and later retargeted to
`microVAX ils at RCA.
`the Jet Propulsion Laboratory (Califomial. and
`McGill
`[B] A microVAX lIIVMS implementation was achieved at
`the
`NASA Robotics Laboratory. Goddard Space Flight Center. Maryland. dur-
`ing the spring of 193?. All of these sites primarily use PUMA robots.
`
`3. Enhancing RCCL for Multiple Robots
`
`3.1 Muitiple Robot Control ISsues
`
`_ 1.
`
`Mrrlti-robot control can be considered in three ways:
`independent Operation. Several robots doing independent tasks at
`the same time. accomplished by running several single—robot RCCL
`programs concurrently.
`2. Synchronized Operation. Twu or more arms are required to execute
`a single task. such as in assembly operations. A system supporting
`this must have the abiiity to synchronize individual arm motions, as
`in specifying that arm A must wait for arm B to move into position
`before continuing with its tasir.
`3. Coordinated Operation. Several arms are interacting with a con1~
`mon object. A system supporting this must provide 1) a convenient
`method of specifying relative positions arrrongst 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 maintains
`the relative positions while moving the object along a desired path.
`The new HCCL primitives deseribed below are largely directed at this
`lESUC.
`
`For coordinated nrotiorr. 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-
`duced lrsing a method such as described in [El] We ensure that the kine—
`matic constraints are satisfied by computing-a single path of motion 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. Generaliy. the object frame is
`rigidly attached to some physical object which is to be manipulated. An
`object frame can be “moved" , in 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 functionaliy defined
`transforms in the object frame equation. we can incorporate sensor-based
`tracking into its motion.
`3.2 Multi—robot Function Primitives
`
`The original RCCL primitives for controlling a single arm generalize
`to multiple arms quite naturally.
`A multi-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 i-MHIP} which denotes a particular robot and
`collects together in one place all the data associated with that robot. Tire
`IrAr‘JIPstructure for a robot is returned by rchupenO. which now takes
`the name of the robot and sets up a trajectory generator it:
`
`HANIF "rob o t ;
`
`robot = rccl_open( "PHIJAESO" J:
`
`These simple additions, plus the recently added routines for motion
`synchronization (the event fiag mechanism described in Chapter 5 of [10!)
`give us everything we need to do synchronized motions of multiple robots.
`Coordinated robot motion and object frames require a bit more en«
`hancement. First. we generalize maitePositjon 0 [section 2] slightly. so
`that the transform "to be solved for" no longer has to be the t5 ofa robot.
`but is arbitrary and is denoted by the keyword TRANS. This permits the
`example in section 2 to be rewritten as
`
`p0 = maltoPositianf TRANS,
`
`tool. El}. coord, p. TL, tool);
`
`We aiso need to be able to create object frames. This is done using
`a special instance of the MINI? data structure:
`
`name we; .-
`
`obj = rccl_open ("UBJECLFRAHE");
`
`The object frame 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 physical manipulator:
`it does not make any sense to
`move a generic object in "joint" nrode. nor does it make any sense to look
`at its joint angles.
`The field obj-Dtrans in the object's MANIP 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—>transr 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—Duran: 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 "moving" it there. For this. we define a primitive maintain O. which
`is a little bit like nave-f). except that 1] it immediately puts the object at
`the goal position. and 2) heaps 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 .aovef)
`to the position that we plan to maintain”. Usage 0f maintainO i5
`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 (implemented 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. The 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 defined transforms. Synchronization 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 implementation uses the extended RCI primitives described in
`section 4.
`
`3.4 Dual Arm Example
`
`A brief example that arises in the context of satellite servicing will
`illustrate the features described. We wish to grasp a movlng 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 with a camera sensor. The sensor data drives the
`position of an object frame using a functionally defined transform. Loc.
`
`466
`
`Page 2 0f5
`
`RGBOOi 58517
`
`Page 2 of 5
`
`

`

`which is constantly updated with new locations of the object relative to
`the camera coordinate frame. A frame Lo: is set up describing this object.
`TRSF *L‘am. *Loc;
`P05 *Ubjj’os:
`J‘MNIP *Dbj;
`
`transforms related to object
`I
`I position equation for object
`.' object: frame data structure
`
`. allocate and initialize transforms and position
`
`.I Set up obj frame, and turn on its trajectory generator
`
`Dbj = rcc1_open ("DBJECT_FRAr‘-!E");
`rccl_cantrol
`(Ubj);
`
`.’ build the equation for the object frame
`
`Elbj_Pos = make-Position (Cam, TRANS, so, Loc, TL, TIMI-'5):
`
`maintain (libj. Ubj_pos);
`
`.1 have obj frame tract:
`
`'Loc'
`
`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 flbjc>transz
`
`." position equation for obj
`P03 *Ubjj’os;
`TRSF *Tooll, *Coordl. *‘Diapl.
`i*‘lfr'omplyl:
`! Xforms for
`TRSF *ToolZ.
`‘Goord2, *Dispz.
`‘ComplyQ;
`! robots I a 2
`P03 #121, *p2,’
`!position eqns.
`MANIP *robotl. *rabotB:
`! data structs for robots
`exhorn int comply,on:
`‘
`.' flag to turn on compliance
`
`. allocate and initialize transforms and positions
`
`.‘ Setup robot: trajectory tasks and burn them on
`
`robot! = rccl_open ("Furor");
`.rchcontrol
`(robotl);
`
`robot2 = rchopeo ("PUfiLdQ");
`rccl,control
`frobotZ);
`
`I Now build the robot position equations
`
`rttibj-I'trans.
`p1 = makoPosition (TRANS. T0011. Eli. Coardl.
`Dispi, Complyi, TL. Tool”;
`p2 = makePosition (TRANS. ToolB. Ell. L'oord2,
`fizflbj-J'trans,
`DispZ. ComplyE. TL, ToolZ}:
`
`trackingl-lode (robotl);
`move (robotl, pi);
`
`trackingl-lod'e (subsoil):
`move (robot2, p2);
`
`to follow
`.1 cause robot
`i Move to grasp point.
`
`v'ait-for {robotl-Dconpleted):
`h'ait_for (robotZ-Dcompletod);
`
`‘fait for motions to stop
`! at grasp position
`
`comply_on = 1:
`GRASP (robotl);
`GRASP (robotiz);
`
`.‘ start: comply functions,
`.'
`than grasp object at the
`.' some time.
`
`The primitive trackingf-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 flag 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 some time is OK
`since the each arm will continue to track the grasp point. When the grip—
`pers are closed. a compliance algorithm is started. using a compliance
`function bound to the transforms Comply! and GomplyZ. which ensures
`the arms continue to follow the object while exerting Zorn 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 servoing the comply
`transforms is an issue dealt with in a separate paper (see [9]].
`
`4. RCl: Primitives for Creating and Handling
`Real-Time Control Tasks
`
`The capability of the original RCCLI‘UNIX 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.
`
`4.1 Design Concept
`
`RC! (Robot Controllnterfacel permits a programmer to create real
`time control
`tasks and attach them to a UNIXprogrem. Each “task"
`comprises a function [or set of functions). which are a loaded part of
`the main program. but execute asynchronously in real—time. Control of
`the tasks [i.e.. starting. stopping. scttlng up scheduling characteristics) 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. RCl provides support for robot control by providing [for certain
`types ol robots) in set of robot interface functions that read slate and
`feedback information back from the robot and post it in a "blackboard"
`called the Hoh'structure, and Lake commands which have been issued by
`the control or planning tasks and send them off to the robot.
`The design oi the RCI primitives was motivated by the following
`goals:
`
`to serve as a development and
`
`tasks olten need to run at
`
`0 Ease of use— the system is meant
`prototyping environment.
`«1" Extremely fast operation ~ robot control
`rates of 100 Hz or higher.
`0 Synchronizedscheduling— control tasks may need to run in sync with
`each other. so a common clock is required.
`‘5‘ Shared memory between tasks. - required to ensure the fastest pos-
`sible inter-task communication.
`4) Message passing between tasks. — for instances where data isolation
`is important and communication speed is not.
`RC! Primitives
`
`4.2
`
`Contra! tasks are created and controlled by primitives called from the
`planning task,
`
`to = IciGreate (name.
`
`cpur-laslr)
`
`task with the given name on one of the CPUs specified
`creates a control
`by cpol-Iaslr. A pointer to a task descriptor is returned to he used in
`subsequent references to the task. The task is associated with a robot it”
`it is given the same name as one of the robots supported by the system
`(section 4.3).
`All
`tasks and memory areas are deleted together using the call
`:ciGlose () (deletion of individual control
`tasks is not currently imple-
`mooted).
`The control functions that comprise a task are specified with
`rciGontrolFms (to‘, startup. rm. fxn2. release)
`
`where the arguments are pointers to functions; any of these can be de-
`clared HULL. startup and release are called once when the task is ac—
`tivated and deactivated, respectively. Two control functions [fxnI and
`:fm2) are are allowed so that
`they can be interleaved with robot
`IfO
`{Figure 4].
`Creating a task does not actually turn it on (activate it): that is done
`using rcifi'tartfhitmaslr) 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 rcifleleaset'bitmasir).
`
`Various planning level primitives determine how an RCI control
`is scheduled.
`
`task
`
`467
`
`Page 3 of 5
`
`RGBOO158518
`
`Page 3 of 5
`
`

`

`tasks], while the auxiliary CPUs are used exclusively for running control
`tasks.
`
`RCl tasks can be run on the arbiterCPU in the same way that the
`original RCCL/UNIX interface worked:
`a special device driver is used
`to execute the control
`task functions at high priority when they become
`runnahle.
`‘
`
`RCl 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 difierent RCI programs] and are booted and loaded with
`a specialized nrfnikernef. This mlnflremeflwritten at McGill University by
`Mike Parker] provides the services necessary to load and run RCl control
`tasks,
`It communicates 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 polled for readiness and eXecuted round robin
`style. Each task runs until its function(s} 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 scheduler task which is responsi-
`ble for waking up those tasks which have been set for scheduled wakeup
`with the rciflnCIockf) 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. Tire 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 RCl tasks.
`The RCI clock can be implemented using either the 100 Hz VAX hardware
`clock. or a clock device attached to the Q-bus.
`if a clock device is used,
`and the scheduler CPU is an auxiliary. then special arrangements must be
`made for the clock device to interrupt the CPU through its communion
`[ion 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/UNlX 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 runlti~arm work should be availabie by the time of this conference.
`References
`
`ll]
`
`Patrick Aboussouan. "Frequency ResponSe Estimation of Manipu-
`lator Dynamic Parameters" (M. Eng. Thesis). Dept. of Electrical
`Engineering. McGill University, Montreal. Canada. December 1935.
`(2] Moshe Cohen and Laeeque K. Daneshmend. "Evaluation of an Ac-
`celeration Feedback Position Control Algorithm on a Commercial Ma—
`nipulator". Submitted to the 1988 IEEE Conference on Robotics and
`Automation.
`
`l3]
`
`Digital Equipment Corporation. KAGBD—AA CPU Module User's
`Guide. DEC Educational Services Development and Publishing. Marl-
`boro. Mass. DEC Order Number EK-KAG3D—UG-UDI.
`
`Vincent Hayward and Samad Hayati. "Design Principles of a Coop-
`erative Robot Controller", Space Station Automation lil. Proceedings
`of SPl'E. November 1987. Cambridge. Mass.
`Vincent Hayward and John Lloyd, “RCCL User's Guide". Technical
`Report, Dept. of Electrical Engineering. McGill University. Montreal.
`Canada. December 1955.
`
`[5]
`
`Page 4 0f5
`
`RGBOO158519
`
`To run a task off the common clock.
`
`rcianClock (tel, interval. offset)
`
`notifies the RC] scheduler to wakeup the task referenced by to once every
`interval railiisecouds. offset by a certain amount. To run a task off some
`arbitrary event. instead of the clock. a wakeup function can be specified:
`rciflnFmrction ('td, rralreup_:functi on)
`
`The task will be woken up when the iraifeupFunccion 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 mechanism detects rogue
`tasks which exceed their allocated time.
`
`Shared memory between tasks is setup by planning lewd primitives
`before the tasks are activated:
`at]
`:32
`
`rciSharedZ-fenrory (labell. sizel.
`rciGlobalMemory (labelQ. size2.
`
`td);
`td. bitmaslr)
`
`raiSharedi-lemoryO creates a shared memory area. identified by 1e-
`bel. between the planning lash and the control task td. rciGloballliem-
`oryf) is similar. except
`that all
`the tasks indicated by hi cmasir have
`access to the memory. Control
`tasks can get pointers to the memory
`with the calls getfi‘haredr-remory(label) or getGlobalhlenroryflabel).
`Tlle message passing primitives are quite simple and are callable from
`all tasks. They do not block.
`rchend (sendcode. buffer. size)
`rcifleceive fgetcode. buffer. size, sender)
`
`nI
`
`!
`
`rcifi'endf) takes a message of size bytes contained in buffer and
`queues it for delivery to the task indicated by the bit mask sendcode.
`rcifleceivef} checks for messages and gets the first from any of the
`senders specified by the bit mask getcode. 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 (rcjttallocfi and rchreefJ]. signaling
`the planning task (rcisignal U], and a function which prints diagnostic
`messages to the task processor console (rciPz-intffjj.
`
`4.3 Robot interfacing Aspects
`
`RCI maintains 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 ievol data for that robot and 2] automatically
`perform [/0 with the robot. maintain the flflli‘structure, and service corri—
`mands for the (two) control functions that execute each control cycle
`(Figure 4], The fields in the robot parameter and new structures are de-
`fined to represent a general robot at the joint level. This includes features
`such as joint angles, velocities, torques. limits on these values, lower levei
`representations such as joint encoder carrots 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 lnformation
`tends to depend on the RCl application.
`
`4.4
`
`implementation Using a Set of lVlicrOVAX If CPUs
`
`it is possible to create a multinprocessor system consisting of (up to
`4) microVAX 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 l 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 [3].
`This hardware capability was used to build a mold—processor RCI
`system, where the arbiter CPU runs UNlX (and possibly some control
`
`468
`
`Page 4 of 5
`
`

`

`Planning Lent is all
`
`
`
`
`fluted mm,
`
`PUP-Ml Cunlrul task I Object Control Tull I PUMA? Cnnlrnl Task
` - Invent hmzmAI-u
`
`o Std-z lo- I‘UMAI Ht
`
`T" PUMA] cmwu"
`T" PUMA? c"'"'"""
`
`“1:39am
`l'uMM mm nun-r
`mm mm! amp.
`but“: mu“ guy“
`
`. tun: thmpullhans
`. Sat" |_ [quflrl IT;
`
`. Par :nmpunuml
`. 5d" 1m DMKI Tumlprm
`
`. rum (mputatwm
`- III-cur Immllll
`
`Figure 2
`
`Task diagram of a rnulti-robot RCCL system.
`
`Q
`
`orsr COMPLY 2
`i
`
`‘
`
`eoMPLv 1 DISH
`4+
`TOOLI
`
`
`
`PUMA 1
`
`HOBOYI
`
`PUMA 2
`
`coonoz
`
`noaorz
`
`Figure 3 Translorm diagram for a multivrobot object
`manipulation task.
`
`. Inverse kinematics
`
`[7]
`
`[B]
`
`[9]
`
`I6] Vincent Hayward and Richard Paul, "Robot Manipulator Control Un~
`tier UNEX: RCCL. a Robot Control C Library~
`International Journal
`offi’obotics Research, Winter. pp. Del — 111
`(Vol. 5. No.
`ll]
`L. B. Holcomb and M. D. Montemerlo, “NASA Automation and
`Robotics Technology Program".
`IEEE AES Magazine. April. 1937.
`pg. 19 - 26.
`Jin S. Lee. Samad Hayati. Vincent Hayward. and John Lloyd. "lm-
`plementation of RCCL, a robot control C library on a microVAX ll".
`Advances in Intelligent Robotics Systems. SPlE’s Cambridge Sym-
`posium on Optical and Optoelectronic Engineering. Cambridge. Mas-
`sachusetts. October 26-31. 1936 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. Implementation of a Robot Control Derrefopment En-
`vironment (M. Eng. Thesis]. Dept. of Electrical Engineering. McGill
`University. Montreal. Canada. December 1985.
`J, A. Maples and J. J. Becker. "Experiments in Force Control of
`Robotic Manipulators". Proceedings OHEEE Conference on Robotics
`and Automation. San Francisco. CA.. April 1-10. 1985. pp. 695 - 702.
`(Vol. 2}
`[12] anglccllgr"; Pl P'Gfl; 3:302? Egjtffilfii‘éatarflfl:[hfégitici Programrm'ng.
`r ro.
`.
`ge.
`..
`
`[16;
`
`[11!
`.
`
`Planning Level Task
`(C User Program)
`- Define transforms and positions
`0 Generate move commands
`
`shared mflmflf)‘
`
`Trajectory Control T35“ {SD “1-)
`. Path computations and smoothing
`- Solve [or T5
`
`VAX computer
`
`
`high Speed link
`
`RobotJointControlTasks(1Kile] I.
`
`robot controller
`
`
`
`wait for start
`
`react data from total
`into hour variable
`
`call first user
`control function
`
`calt second user
`control function
`
`
`
`of control cycle
`
`
`
`
`
`
`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 0f5
`
`RGBOO158520
`
`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