David G. Alciatore,
Jeff Sorrentino, John Wood
Department of Mechanical
Engineering
Colorado State University
originally posted: 1/10/96
last edited: 2/18/2012
See
robot video demonstrations
online,
including a demonstration
of how to use the Adept robot and
a look at the internal
design and construction
| TO ABORT A ROBOT MOTION (IN CASE OF UNEXPECTED MOTION OR EMERGENCY), Push the
E-STOP plunger on the system control panel |
To restore from
an E-STOP, pull out the red plunger (rotate clockwise), then type ENABLE
POWER on the terminal or press the COMP/PWR button on the MCP.
NORMAL SHUTDOWN:
^S / ^Q: scroll stop/continue.
^C: break / cancel.
^W: scroll slow/normal
toggle.
^U: cancel current input line.
Pressing the UP ARROW or DOWN ARROW cycles through the previous commands you entered on the command line. This can save a lot of re-typing.
After the System Startup procedure is complete, you can type commands to the robot from the command prompt (indicated by a period: .). See the Command Execution and Program Execution sections.
Program Instruction (PI): instruction executed from a program or at the monitor prompt with a DO statement.
Function (F): callable routine which returns a value.
A function call can only appear where a value is expected (e.g., an assignment
statement)
NOTE - anything shown in brackets [] in this reference guide is an optional parameter.
DO program instruction
allows program instructions to be executed at the "." prompt.MC monitor command
allows monitor commands to be executed from within a program file.COMMANDS program filename
executes a program file containing only MC instructions.Note:
Use "MC DO program instruction" to execute program instructions in a COMMANDS file.
Monitor Commands (MC) can be executed directly at the "." prompt. All commands and instructions can be abbreviated by enough leading characters to uniquely identify the command (e.g., EN PO for ENABLE POWER). MC instructions and normal program instructions cannot be mixed in the same program.
Notes:
FORMAT A: [/Q /H]hard disk: C: floppy drive: A: path specification: drive:[sub1\sub2]\ (be sure to include trailing \). file specification: drive:[sub1\sub2\]file[.ext] (Note: the extension is required for some commands; e.g., FDEL) file name extensions: V2 (programs and variables), PG (programs only), LC (locations only), RV (real variables only), ST (string variables only), VS (vision prototypes), DAT (data). maximum filename length: 8 characters (not counting the extension)
DEFAULT DISK = pathformats (and therefore erases) a double-density disk in the A: drive. Use the Q switch for ADEPT double-sided, the H switch for DOS compatible double-sided, no switch for ADEPT single-sided (also DOS compatible). Formatting is required to prepare a disk for use with the floppy drive (MC).
NOTE: This command is not required for pre-formatted DOS/Windows discs.
NOTE: Be very careful to make sure you never format the hard disk (C:) - everything, including the operating system, would be be lost!!!
STORE[x] file_spec = prog_name[s]defines a default (current) drive and/or subdirectory (MC).
Ex: DEFAULT DISK = C:MECH564\NOTE: The DOS/UNIX command CD can also be used to change to a subdirectory (CD subdir) and go up one directory (CD ..).
stores a program, its subprograms, and/or its variables (locations, numbers, strings) in a disk file (MC).LOAD file_spec
[x] can be:
P: for program and referenced subprograms only.
L: for locations only.
R: for real variables only.
S: for string variables only.
missing: program and all associated data.
Note: writing over an existing file is not allowed; the old file must be FDEL'd first (e.g., after first using FCOPY to make a backup)
loads a disk file into memory (default file extension: V2) (MC).FDIR [path]
lists the contents of a directory (MC).FDIR/C path
create a directory indicated by path (MC).FDIR/D path
delete a directory indicated by path (MC).FDEL file_spec
delete a file from a disk (MC).FRENAME new_spec = old_spec
Note: the file extension is required.
rename a disk file (MC).FCOPY new_spec = old_spec
copy a disk file (MC).FLIST file_spec
list the contents of a disk file (MC).
USING FTP TO STORE FILES ON ENGR
NOTE - This feature is currently unavailable.
You can transfer files to and from the ADEPT computer from a remote system (but only if the ADEPT is turned on.)
DIRECTORYto execute programs or access data, they must be first loaded into memory. See disk I/O section for loading data. the contents of memory are lost at power down, so anything you want to retain must be stored on a disk.
list the names of all programs in memory (MC).LIST[x] [object list]
list the contents of an object in memory. If object is not included, all objects of the specified type will be listed. The object type must agree with [x] (MC).DELETE[x] object list
[x] can be:
P: program.
L: location variable.
R: real variable.
S: string variable.
Examples:
LISTP STARTUP (displays the program STARTUP).
LISTL (lists all location variables and their values).
LISTR data[] (lists all values in array data[]).
delete object from memory. The object type must agree with [x] (MC).ZERO
[x] can be:
P: program, referenced subprograms, and variables.
L: location.
R: real variable.
S: string variable.
Missing: programs and data.
erases the total contents of memory. Make sure you save to disk anything you want to keep before executing this command (MC).COPY new_prog = old_prog
make a copy of a program in memory (MC).RENAME new_name = old_name
rename a program in memory (MC).
displays or sets a system parameter; a parameter is a quantity which can take on a range of values (e.g., PARAMETER V.THRESHOLD = 95 to set the binary vision threshold [range: 0 to 127] to 95) (MC).SWITCH [switch_name]
displays system switch settings. A switch can only take on one of two values: ON or OFF (MC).ENABLE switch_name
turns a system switch ON (MC/PI).DISABLE switch_name
turns a system switch OFF (MC/PI).SWITCH(switch_name)
returns the value of a specified switch (F).Useful Switches:
POWER robot arm power. CP continuous path trajectory control (on by default). VISION vision system. TRACE program step display before execution. DRY.RUN robot controller state (for testing programs w/o robot motion).
Note:joint interpolated: joint motions are linearly interpolated from one location to another. straight line: tool traverses a straight line path and orientation is maintained from one location to another.
MOVE[S] locAngles are measured in degrees, distances are measured in millimeters (mm). Continuous path (CP) motion causes smooth transitions between motion instructions. Motion is maintained through the task points rather than coming to a complete stop. Activate CP with ENABLE CP; deactivate with DISABLE CP. The "S" suffix for certain motion commands indicates straight line end-effector motion; otherwise, joint-interpolated motion is assumed. The"I" suffix for the gripper functions indicates immediate action; otherwise, the function is performed during the next motion instruction. Do not use the jaw gripper functions when the vacuum suction tool is attached. If you do this by mistake, execute RELAXI.
moves the robot to a location (PI).DRIVE joint, change, speed
moves a single joint (1, 2, 3, or 4) a given increment at a given speed (PI).APPRO[S] loc,dist
moves to a position a given distance above a location (PI).DEPART[S] dist
moves vertically away from the current location (PI).OPEN[I]
opens the jaw gripper (This function is equivalent to SIGNAL 3002, SIGNAL -3001) (PI).CLOSE[I]
closes the jaw gripper (This function is equivalent to SIGNAL 3001, SIGNAL -3002) (PI).RELAX[I]
relaxes (turn off air pressure to) the jaw gripper (This function is equivalent to SIGNAL -3001, -3002) (PI).SPEED
MC: SPEED valueDELAY timeset the monitor robot speed as a percent (0 to 100 - default: 50) of the maximum allowable.
PI: SPEED factor [ALWAYS]set the speed percentage factor (0 to 100 - default: 100) to be applied to the monitor speed for the next motion instruction. The ALWAYS switch causes the speed to apply to all subsequent motion instructions in the program (until another SPEED instruction).
F: SPEED(i)returns the current monitor (i=1) or program (i=2) speed.
stops robot motion for a given number of seconds (PI).BREAK
delays program execution until the current motion finishes. This causes a break in the continuous path if CP is enabled (PI).DURATION time
sets the time for the subsequent motion to take (PI).ACCEL acc, decc
sets the acceleration and deceleration percentage factors (1 to 100 percent of allowable maximums) for subsequent motion instructions (PI).
WHEREprecision point - location defined by its joint values (θ1, θ2, d3, θ4). Variable name must begin with a pound sign (e.g., HERE #start). Useful for a high precision fixed configuration location specification. transformation - location described by a cartesian end-effector specification (x, y, z, yaw, pitch, roll). Requires LEFTY/RIGHTY specification to determine configuration. relative transformation - defines a transformation relative to another (e.g., HERE pallet:post defines transformation post relative to pallet). Useful for defining locations relative to a mobile but fixed geometry pallet. location expression - various transformations concatenated (multiplied) with the ":" operator (e.g., A:RX(45):DX(10))
displays the current robot location (MC).HERE loc
assigns the current robot location to the location variable loc (MC, PI, F)RIGHTY
specifies a right-elbow configuration for the next motion (PI).LEFTY
specifies a left-elbow configuration for the next motion (PI).POINT loc_var [= loc_exp]
assigns a location expression to a location variable and allows keyboard editing of the values (MC).SET loc_var = loc_exp
assigns a location expression to a location variable (PI).TRANS(x, y, z, n, p, r)
returns a transformation defined by six cartesian components (F).RX(ang), RY(ang), RZ(ang)
returns single axis rotation transformations (F).SHIFT(trans BY x, y, z)
returns a translation-shifted transformation (F).DECOMPOSE array[index] = loc
stores the location components of a location variable (precision point or transformation) in an array starting at a given index (PI).DX(loc), DY(loc), DZ(loc)
returns the displacement components of a transformation (F).SOLVE.TRANS loc_var, ERROR=array[index]
calculates location transformation given an indexed array of joint values. ERROR = return status. (PI)SOLVE.ANGLES joints[index], joints_flag1, ERROR=trans, start[index], start_flag
computes joint positions from a location transformation. ERROR = return status, flag = 0:LEFTY, 1:RIGHTY. (PI)INRANGE(loc)
determines whether or not a location is reachable (i.e., is in the workspace) (F).FRAME(loc1, loc2, loc3, loc4)
returns transformation defining a frame with origin at loc4, x-axis from loc1 to loc2, and y-axis from x-axis to loc3.TOOL [trans]
defines tool transformation between the tool mounting flange to the tool tip (MC, PI, F).
Note:
for the jaw gripper, use TOOL = TRANS(0,0,0,0,0,30) to align the jaw axes with the tool coordinate system.
TYPE output_spec
TIMER i = 0 or TIMER(i) = 0
CASE expression OF
VALUE value1[, .....]
.....
VALUE value2[,
.....]
.....
.....
[ANY]
.....
END
WHILE logical_exp DO
.....
END
DO
.....
UNTIL logical_exp
See also: Student-created vision system guide
Notes:
Note: Calibration is required every time the system is powered up in order to use the vision system.
Output from the calibration: threshold settings, relationship between pixels and linear dimensions (scaling and aspect ratio relations), transformation to.cam[1] relating the end of link 2 to the field-of-view of the camera.
VISION enable the vision system
(ENABLED to use vision system).
V.BACKLIGHT establishes the background color (white/black)
(ENABLED for white background).
V.BINARY enable binary image processing (disable grayscale)
(ENABLED to use binary vision).
V.BOUNDARIES enables boundary analysis processing
(ENABLED to enable identification of object boundaries in a scene).
V.HOLES enable processing/accounting of interior holes in parts
(DISABLED to ignore interior holes in scene objects).
V.RECOGNITION enables prototype identification
(ENABLED to enable matching of object boundaries to prototypes).
VDISPLAY mode [, overlay]
determines what is displayed on the monitor. This has no effect on the results of the vision processing (MC, PI).mode:
-1 live grayscale image.
0 live binary image (useful for setting V.THRESHOLD).
1 grayscale image from last VPICTURE.
2 binary image from last VPICTURE.
3 special graphics (useful for showing (with V.SHOW switches) the results of the vision processing).overlay:
TRUE to overlay special graphics (useful for displaying user graphics (e.g., from RULERI) over the current picture).
VPICTURE
[mode, how_many]
grabs a camera image and optionally performs vision processing. Processed object data (if generated) is stored in a queue for retrieval with VLOCATE (MC, PI).mode:
-1 acquires and processes the image (this is the default).
0 initiate processing of previously acquired image.
1 acquire an image but don't process.
2 perform a quick frame grab.how_many:
specifies the maximum number of objects for the processing to try to recognize.
VTRAIN
proto_name
initiate training or continue training examples of a prototype object for later identification by image processing (MC, PI).VLOCATE (, 2) $name, loc
Note:
set camera 1 by pressing the Set/Clr button and then the Rec/Done button.
use +/- to step through entities.
Use Yes/No to respond to questions.
Use REC/DONE to accept or continue.
several (at least two) examples must be trained.
see pp. 79-91 in "AdeptVision AGS User's Guide" for more information.
returns the prototype name and location (relative to the camera FOV) of the next object in the VPICTURE processed data queue. Success of this function is indicated by VFEATURE(1) (FALSE implies end of list) (PI).
Note - VWINDOW can be used to limit the area searched and improve the success rate.
VLOCATE
(, 0) "proto_name", loc
returns the location (relative to the camera FOV) of a prototype object in the VPICTURE processed data queue. Success of this function is indicated by VFEATURE(1) (FALSE implies an object of the given prototype form was not in the FOV during VPICTURE) (PI).
Note - VWINDOW can be used to limit the area searched and improve the success rate.
VFEATURE
(index)
returns information about an object that was VLOCATE'd (F).index:
1: flag indicating if VLOCATE was successful or not (true (-1) or false (0)).
2: x-coordinate of object centroid (in FOV).
3: y-coordinate of object centroid (in FOV).
7: z-rotation of object (i.e., orientation in the horizontal plane).
17: whether a hole is present or not.
VRULERI (camera, type, dmode)
data[] = 1, xo, yo, L, ang
lays a straight line (ruler) across an image and records transitions in color along the line (ruler) (PI).Arguments:
camera=1, type=0 (standard binary ruler).
dmode (ruler draw mode) = -1 (no draw), 0 (erase), or 1 (draw).
xo, yo: starting point of ruler in FOV(mm).
L: length(mm) of ruler.
ang: angle of ruler from FOV x-axis (¡).
data[]: array containing data returned from the function:
0: # of transitions along ruler (n).
1: color of starting pixel.
2 to (n+1): distance(mm) of each transition point from the starting point.
VSTORE
file_spec = name1[, name2, .....]
stores vision prototype[s] in a disk file.
VLOAD
file_spec
loads vision prototype[s] from a disk file.
VDELETE proto_name
deletes a vision prototype from vision memory.
VRENAME
proto_new = proto_old
renames a prototype in vision memory.
Example program:
.PROGRAM vac_part()
; Program to locate the TARGET
in the field of view and pick it up
; with the vacuum suction tool. to.cam[1] must be previously defined
; by vision calibration. part.grip
must be previously defined by
; manual teaching. The TARGET prototype must be loaded.
;
SPEED 20 ALWAYS
VDISPLAY 0
100 VPICTURE
VLOCATE
(, 2) "TARGET", fov.loc
IF NOT (VFEATURE(1)) THEN
TYPE "TARGET is not in the FOV of the camera"
PROMPT "Move TARGET into the FOV and hit RETURN", $cr
GOTO 100
END
HERE pict.loc
HERE #pict.loc
DECOMPOSE jt[1] = #pict.loc
SET link2 = pict.loc:RZ(-jt[4]):TRANS(,,-jt[3])
SET obj.loc = link2:to.cam[1]:fov.loc
SET grasp.loc = obj.loc:part.grip
APPROS grasp.loc, 10
SPEED 5
MOVES grasp.loc
BREAK
SIGNAL 2025
DEPART
10
PROMPT "Hit RETURN
to return part", $cr
SPEED 5
MOVE grasp.loc
BREAK
SIGNAL -2025
DEPART
10
MOVE pict.loc
PROMPT "Move the TARGET and
Hit Return to continue", $cr
GOTO 100
.LOCATIONS
fov.loc 1
0 0 0 1 0
0 0 1 107.15625
85.668655 0
grasp.loc
0.94044149 -0.33995634 0 -0.33995634 -0.94044149 0
0 0 -1 659.19281 115.05168 783.65313
link2 0.88274276 -0.46985676 0 -0.46985676 -0.88274276 0
0 0 -1 527.03521 200.90631 879.29998
obj.loc -0.46829047 -0.88357466 0 0.88357466 -0.46829047 0
0 0 1 659.83923 111.9056 699.8034
part.grip -0.14002296 0.99014842 0 0.99014842 0.14002296 0
0 0 -1 -2.4770812 -2.0444335 83.849731
pict.loc 0.90227979 -0.431151 0 -0.431151 -0.90227979 0
0 0 -1 527.03521 200.90631 793.65106
#pict.loc 62.535938 -90.560935 85.648925 -2.4843747
to.cam[1] 1.7735231E-03 0.99999845 0 0.99999845 -1.7735231E-03 0
0 0 -1 73.190757 -90.838272 179.49658
Adept Technology
150 Rose Orchard Way
San Jose, CA 95134
(408)
432-0888
FAX: (408) 432-8707
Adept Customer Support Calls:
(800) 232-3378
Adept Sales (CO rep):
(816) 862-6811 (Roger Marble)
Applied Robotics
(end-effector change system):
(518) 384-1200