This directory contains the files which constitute the RCCL robot
control package. 

A rough description of the files in this directory follows:

allocTransXyz.c
	Routines to allocate transforms and initialize them with particular
	values.

cartBlend.c
	Routines which blend between adjacent Cartesian trajectory 
	path segments.

cartBlend.h
	Data structure used to store information for cartBlend.c

computeAccel.c
	Routines to compute the acceleration time needed to transition
	to the next motion.

constants.c
	Defines a few fixed ``read-only'' data structures. Right now, 
	contains only the predefined vectors xunit, yunit, and zunit.

controlFxns.c
	The control functions associated with the RCI task the executes
	the RCCL trajectory generator. There is one such RCI task per
	CPU, and all the tasks run at the same rate (they rendezvous
	twice per cycle to ensure phase lock). These tasks read data
	in from the robots they are controlling, write command data back
	out, and call the ``setpoint'' functions to compute the commands
	to be sent out during the next cycle.

copyPosition.c
	Functions to copy position data structures, including doing copies
	from the planning level to the control level, with the required
	remapping of pointer references.

defaultValues.c
	Compute the default accelerations and velocities for a manipulator.

getAccel.c
	Get the specified acceleration settings for a manipulator.

getComply.c
	Get the compliance specification for a manipulator.

getLimit.c
	Get the limit specifications for a manipulator motion.

getManip.c
	Get pointers to a manipulator structure.

getMisc.c
	Get various quantities, like the motion count, interpolation mode,
	robot configuration, etc.

getQueue.c
	Routines to remove motion request packets from an RCCL motion
	queue.

getSpeed.c
	Routines to get the speed specifications for a manipulator.

jnts.c
	Routines for doing addition, subtraction, etc., on the JNTS data type.

jointBlend.c
	Routines which blend between adjacent joint level trajectory 
	path segments.

jointBlend.h
	Data structure used to store information for jointBlend.c

kynMacros.h
	Various kinematic routines wrapped in macros to hide some the
	use of the robot parameter structures and make the usage of the
	routines more clear.

makePosition.c
	The routine makeposition(), which defines an RCCL position equation,
	and freeposition(), which deallocates it.

motionInit.c
	Routines called by the trajectory generator that set up the
	motion control parameters at the beginning of each new path segment.

motionQueue.h
	Definition of the motion queue data structure.

motionRequest.h
motionRequest.c
	The basic routine for sending a motion request from the planning level
	to the trajectiry generator.

moves.c
	The RCCL motion primitives, implemented as wrappers around the
	main routine defined in motionRequest.c

pendingMotion.c
	Routines which pull a motion request off of the queue and watch it
	before it is actually serviced by the trajectory generator. The
	target position of a pending motion is tracked so that the
	acceleration that will be required to transtion to it can computed
	on the fly.

putQueue.c
	Routines to insert items into the motion queue for an RCCL
	manipulator.

rcclActive.c
	Routine to tell if the RCCL control level is active or not.

rcclAutoAbort.h
	Macros to implement the "RCCL_ERROR_EXIT" option.

rcclCreate.c
	The main RCCL system control primtives rcclCreate(), rcclDelete(),
	rcclStart(), rcclRelease(), and rcclBlock().

rcclErrorMsgs.c
rcclErrorMsgs.h
	Definition of diagnostic error messages used by RCCL.

rcclOptions.c
	Routines to set and clear global options which control an RCI
	program.

rcclPause.c
	Code to implement the rcclPause() routine.

rcclSysTime.c
	Routines to implement the routine rcclSysTime()

rccltest
rccltest.c
rccltestCtrl.c
	Main interactive test program for RCCL.

robotIO.c
	Routines which take the setpoints computed by the trajectory generator
	and send them to the robot using the appropriate RCI ``CHG'' routines.

setAccel.c
 	Set the desired acceleration for a manipulator.

setComply.c
	Set the compliance characteristics for a manipulator.

setDistance.c
	Set a bias displacement for the target of the next motion.

setJbias.c
	Set the joint bias specifications for the manipulator.

setLimit.c
	Set motion limit specifications for the manipulator.

setMisc.c
	Set various things like the motion time, the manipulator
	configuration, etc.

setModes.c
	Set operating modes for the manipulator.

setMonitors.c
	Routines to control the trajectory generator monitor functions.

setSig.c
	Routines to control the "signal on completion" facilities, which allow
	a signal to be delivered to the planning task when a motion finishes
	or when all the motions finish.

setSpeed.c 
	Routines to specify various speed characteristics for the manipulator.

setpoint.h
	Definitions of the motion request packet, the motion control
	block (used internally by the trajectory generator), and
	the shared memory data structures between the 

setpointCtrl.c
	The main trajectory generator routines, called by the task routines in
	controlFxns.c. These routines instantiate and terminate motion
	segments, and compute the trajectories for each segment using
	support routines in compute.c and traject.c.

solveEqn.c
	Routines to solve an equation, or to obtain the TOOL
	or COORD parts of a particular position equation.

solveEqn.h
	Data structures used by the solve.c

solveTrans.c
	Routines that solve for a particular transform or sub-chain
	in a position equation.

syncMotions.c
	Planning level primitives concerned with motion syncronization.

teach.c
	Planning level interface to the trajectory generators ``teach''
	routine, which allows the robot to be moved around by keyboard
	commands.

teach.h
	Definitions pertaining to the trajectory generator's teach mode.

teachCtrl.c
	Control level trajectory generator for the teach routine.

testCtrl.c 
	General control level routine for any test program called 'test'.
	We leave this module around so that 'make test' will always work.

testJb.c
testJbCtrl.c
	Progarm to test the joint biasing code.

testMisc.c
testMisc.h
testMiscCtrl.c
	Program to test miscellaneous RCCL primitives.

testPos.c
	Program to test makePositon() and the position equation code.

testSet.c
testSet.h
testSetCtrl.c
	Program to test the various "set" and "get" primitives.

testSync.c
testSync.h
testSyncCtrl.c
	Program to test the synchronization primitives.

testTgen.c
testTgenCtrl.c
	Program to test the trajectory generatory, with an emphasis on trying
	to get it to do as many different types of path segment transitions 
	as possible.

testTrans.c
testTransCtrl.c
	Program to test the transform primitives.

testUt.c
	Program to test the updateTrans() primitive.

testVm.c
testVmCtrl.c
	Interactive test program intended for testing the maintain()
	primitive and tracking mode.

traject.c
	Routines used by ``setpoint'' to compute the actual target
	positions of the manipulator each control cycle. There are
	three main routines:

		compute_initial_setpoints(), which compute the setpoints
		for the 1st point of a motion segment;

		compute_secondary_setpoints(), which computes the 
		setpoints for the 2nd point of a motion segment;

		compute_nominal_setpoints(), which computes the
		setpoints for all other points of a motion segment.

	The first two routines, in addition to doing motion computation,
	also determine parameters to be used for the second (and succeeding)
	motion points by the blending functions. That is why the computation
	has been split up in such a way.

transControl.c
	Control level code used by the transform package.

transSetup.c
	Planning level primitives used by the transform package.

transform.h
	Internal data structures used by the transform package.

updateTrans.c
	Routines which cause a transform to be evaulated within the
	context of a position equation at the end of a given motion.

utility.c
	A few miscellaneous functions.

