perm filename ARM.MEM[2,VDS] blob sn#252099 filedate 1976-12-01 generic text, type C, neo UTF8
C00001 00001
C00002 00002	\|\\M1BDR30\M2SIGN57\M3NGR25\M4NGR20\F2\CVICARM
C00026 ENDMK

\C	        Version for model Stanford Arm using PDP-11/45

\J The following commands are used for defining transforms and vectors.  
Vectors are always specified in cartesian coordinates and  transforms are
specified in cartesian coordinates and euler angles.\.
\L     Command     	  \R   		Operation                         
VECT <vect>	 	\j Used to define vector #vect.  Vectors 0,1,2,3 are
                        reserved and are predefined to be the null vector
                        and unit vectors in the x, y, and z directions
                        respectively.  Reserved vectors can be listed, but
                        cannot be modified.  Defining a vector to have all
                        zero elements releases it from use.\.

TRANS <trans>		\j Used to specify and modify the value of transform
                        #trans.  The current value of the transform is printed
                        and any of the transform elements (x,y,z,o,a,t)
                        can be modified by typing a new value after the
                        query CHANGES?.   Values that are not to be changed
                        can be omitted.   Changes are continuously asked for
                        until no change in the transform is made.
                        Transform 0 is 
                        reserved and is predefined to be the park position.
                        As with the command VECT, the reserved tranform can
                        be listed but not modified.
                        The X,Y,Z specify the position of a point centrally
                        located between the finger tips in table coordinates.  
                        O,A,T specify the orientation of the hand.  With all three
                        angles (in degrees) zero, the hand points in the negative Y
                        direction with the fingers in a horizontal plane.  The 
                        orientation vector which points from one finger tip to the
                        other  is aligned along the X axis.  O specifies a rotation
                        of the orientation vector about a vertical direction.  Thus
                        at O=90deg, the hand, still horizontal, would point along the
                        positive X direction.  A is a rotation about the orientation
                        vector.  With A=90deg. the hand always points straight down.
                        T is a final rotation about the axis of the wrist and
                        corresponds to a rotation of the final )#6) joint.\.

RELTRN <t1>,...,<tn>    \jReleases transform numbers t1 to tn for future use.
                        This command takes an arbitrary number of arguments.\.
HERE <trans>		\jDefines transform #trans to be current arm position.
                        As with TRANS, post modification of the euler angles
                        is permitted.\.

WHERE                        \jPrints out the current location of the arm in Euler
                        and joint angles.\.

\JIf <trans> or <vect> is omitted in the commands VECT, TRANS, or HERE,
the first available transform or vector is selected.\.

\L     Command     	  \R   		Operation                         
EXEC <sp1>,<sp2>,<nstp>	\jExecutes the section of stored motion instructions
                        from sp1 to sp2, nstp number of times.  If nstp is
                        omitted, one pass is assumed.  If both nstp and sp2
                        are omitted, execution of instructions starts at
                        step sp1 and continues until the first PAUSE or
                        STOP is encountered.\.

PROCEED	or P		\jContinues motion program at the step following the
                        step where execution was halted due to a PAUSE
                        instruction or runtime error.\.

\JThe following command is used for entering into motion instruction
program editing mode.  This editing mode is used for creating motion
specification programs and modifying existing programs.\.
\L     Command     	 \R    		Operation                         
EDIT <step>		\jPermits you to modify existing code starting at
                        instruction #step.  If no step number is specified
                        editing proceeds from the step were the last    
                        editing seqence was terminated.\.

\J Once having entered the edit program, the following edit functions may
be invoked. All these instructions may be shortened to a single (first) letter command.\.
\L     Command   \R	       		Operation                         
<any motion instruction> \j Replaces the motion instruction stored at the 
                        current step with the instruction typed in.  The 
                        next step is then displayed for editing.\.

<cr>                        \jTyping an empty line ( carriage return ) leaves the
                        current step unaltered and displays the next 
                        instruction for editing.\.

DELETE <nstep>         	\jDeletes an arbitrary number of instructions starting
                        with the current instruction step.  If nstep is not
                        specified, only the current step is deleted.  Else,
                        specifying a negative number of lines deletes the
                        current line and nstep-1 previous lines ( i.e. lines
                        with smaller step numbers ).  Specifying a positive
                        number of lines has the opposite affect.  In all
                        cases, the steps following the deleted instructions
                        are re-numbered.\.

FIND <motion instr name>  \jPerforms a linear search for the first occurance
                        of a motion instruction whose function name matches
                        the requested name.  If such a step if found, it is
                        displayed for editing, otherwise an error message is
                        typed.  If no motion instruction name is specified,
                        the function name requested in the last FIND command
                        is used.\.

INSERT          	\jMoves instructions starting at the current step
                        down one and inserts in its place any motion
                        instruction that is typed in.  The process is 
                        repeated until an empty line is typed.\.

LAST                        \jLeaves the current step unaltered and displays the
                        previous step for editing.\.

SKIP <nstep>		\jLeaves the current step unaltered and displays the
                        instruction which is nstep number of steps from the
                        current line for editing.\.

TERMINATE		\jReturns to monitor program.\.

\J The following commands are used to get hard copies of programs, vectors,
and transforms listed on the teletype.  When using any of the first three
commands listed below, if no arguments are typed in, all program instructions,
vector, or transforms will be typed out.  If only one item is to be typed,
the second argument of the command may be omitted.  In all four commands, any
requested vector, transform, or movement instruction step that is not 
initialized, will not be typed out.\.
\L     Command     	\R     		Operation                         
LISTV <vect1>,<vect2>	\jTypes out vectors vect1 to vect2.\.

LISTT <trans1>,<trans2>	\jTypes out transforms trans1 to trans2.\.

LISTS <step1>,<step2>	\jTypes out motions instruction from step1 to step2.\.

LISTA                        \jTypes out all instructions, vectors, and transforms
                        in existance.\.


\L     Command     	       \R	Operation                         
CLEAR                        \jRe-initializes all the vectors, transforms, and
                        instructions steps.  This is a totally destructive
                        operation.  This function first asks "Are you
                        sure (Y,N)?" to verify that the operation is to
                        be performed.\.

DONE                        \jMonitor program stops, computer left in a HALT 

\J In the following motion instructions all distances are in inches, time
is in seconds, and messages can be any strings containing 71 or fewer
\L     Command     	 \R    		Operation                         
DRAW <scale>,<vect>,<time>,<integration flag>    \RMoves the arm along a straight line in the direction
                        \jof vector vect for a distance 
                        scale*vect at an average velocity of scale*vect/time.
                        If the integration flag = 0, the hardware integration
                        is left on during the motion, otherwise it is turned

GO   <trans>		\jMoves the arm to the position specified by transform
                        trans.  If no transform is specified, a new
                        transform is defined and it is set equal to the
                        current arm position.\.

MOVE <trans>		\jThis operation is equivalent to three successive
                        GO instructions.  The first motion pulls the arm
                        back about two inches along the hands central axis.  The
                        second motion moves to the approach point of the
                        final position.  The approach point is a position
                        about two inches from the final position along the negative
                        of the final transform approach vector.  The last
                        stage of this motion is moving from the approach
                        point to the desired transform position.\.

OPEN <dist>		\jChanges the hand opening to dist inches.\.

GRASP <dist>		\jCloses the hand and generates an error message
                        if the final hand opening is less than dist.  The 
                        closing speed of the hand is set at approximately
                        1 inch per second.\.

DRIVE <jt>,<angle>,<time>  \jOperates the single joint specified by the 
                        parameter <jt> (1-7).  The current joint angle
                        is changed by an amount <angle>.  The change in
                        joint angle must be specified in degrees or inches
                        which ever applies.  The duration <time> must be
                        specified in seconds and fractions of seconds.\.

PAUSE <message>		\jTerminates execution of motion program and
                        outputs message.  Execution can be continued from
                        this point by typing PROCEED.\.

STOP <message>		\jSame as PAUSE except that motion cannot be continued.\.