ADEPT
ROBOT REFERENCE GUIDE
www.engr.colostate.edu/~dga/adept.html
David G. Alciatore,
Jeff Sorrentino, John Wood
Department of Mechanical
Engineering
Colorado State University
See
robot video demonstrations
online,
including a demonstration
of how to use the Adept robot and
a look at the internal
design and construction
GENERAL
ROBOT INFORMATION
- Robot: ADEPTOne-MV.
-
joints (RRPR) - j1 (shoulder): +/-150°, j2 (elbow): 294°, j3 (quill) - 196
mm (7.7"); j4 (wrist) - 554°
SCARA (Selective Compliance Assembly Robot
Arm), 4-axis, dual elbow configuration (LEFTY, RIGHTY). - direct drive electric
actuators (high speed and precision, no gearing effects).
- manual control
pendant (MCP)
- workspace area: 1.84 m2 (20 ft2),
maximum reach: 800 mm (31.5"), minimum reach: 231 mm (9.1").
- maximum
slew speed: 9.15 m/sec (30 ft/sec)
- maximum speeds: j1: 540°/sec,
j2: 540°/sec, j3: 500 mm/sec, j4: 3600°/sec
- maximum payload: 9
kg (20#), maximum push force: 178 N (40#)
- repeatability: 0.025 mm (0.001")
xy-plane; 0.05 mm (0.002") z-axis and wrist rotation
- Vision
System: ADEPT XGS (gray scale or binary area vision - CCD array). See the
Vision section for more details.
-
End-effectors: vacuum suction, jaw gripper, and automatic screw driver,
all compatible with an Applied Robotics auto-change system
-
Operating System, Programming Language: ADEPT V+ 12.2
-
Mass Storage: hard disk (C:), one 3.5" floppy drive (A:) See the
Disk I/O section for more details.
-
Units of Measurement: angles are specified in degrees, distances are specified
in millimeters (mm).
- Documentation: all manuals from
Adept are available as PDF files
SYSTEM STARTUP
- Make sure the main power breaker (labeled adept1 208 Volts) on the east wall
of the Lab is in the ON position. It should be ON already.
- Make sure both
power switches on the adept1 controller (on the west side of the robot base frame)
are in the ON positions. They should be ON already.
- The robot brakes and
gripper operate on pneumatic power. Make sure the robot's black air hose
is connected to the building air-supply line on the column next to the south-east
corner of the robot base frame. It should be connected already.
- Turn on
the surge protector power strip (with the small black toggle switch) on the west
side of the robot base frame (to the left of the adept1 controller). You should
hear the power supply fans start up.
- On the system control panel (on
the south side of the robot base frame, labeled "adept1") turn on the SYSTEM POWER
switch; the green light should illuminate (if not, push the Lamp Test button to
see if the indicator light is burned out).
- Make sure the key switch is
set to AUTO. Never move this switch.
- Make sure the red E-stop plungers
are pulled out on the control panel and the MCP (Manual Control Pendant.)
Rotate clockwise to pull out.
- Turn on the computer monitor.
-
Wait for the start-up message and the monitor prompt (a period) to appear.
-
Make sure the workspace is clear of people and objects.
- Type ENABLE
POWER ("EN PO" for short) to activate arm power. The amber HIGH
POWER ON/OFF light should turn on. If this step fails, it is probably because
the controller amplifier power switch is in the OFF position. If so, turn it on
and try again.
- Type CALIBRATE ("CA" for short), respond with
Y to have the robot calibrate itself. This takes 1-2 minutes. If calibration
fails (because of *lost encoder sync*), manually move the suspect joints and try
again. The resulting calibration holds for as long as the controller remains powered
up, even if the arm power is turned off and enabled again.
- You can now
operate the robot through the Terminal or the
Manual Control Pendant. See
these sections for further details.
- If using the vision system, complete
the vision calibration procedure in the Vision System
Section of this reference.
Notes: - If the robot trips
off during operation with a "loss of air pressure" message repeat Step 1 and re-enable
power.
- The robot arm is capable of actually extending below the wooden
table surface. Don't do this, for obvious reasons (it can result in damage to
the robot or its gripper).
SYSTEM
SHUTDOWN
| **** IMPORTANT: EMERGENCY SHUTDOWN **** TO ABORT
A ROBOT MOTION (IN CASE OF UNEXPECTED MOTION OR EMERGENCY), Push the
E-STOP plunger on the system control panel -or- Push the E-STOP
plunger on the MCP |
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:
- Type DISABLE POWER ("DIS PO" for short) on the terminal
to deactivate arm power.
- Make sure you save to disk anything in memory
you wish to keep (programs, locations, vision prototypes, variables, vision
calibration data). See disk I/O section for instructions.
Memory is lost when system power is turned off.
- Turn off the computer
monitor.
- Turn the green power switch to "OFF" on the system control panel.
- Turn
off the small black toggle switch on the surge protector power strip. The robot
should become quiet at this point.
OPERATION
WITH THE MANUAL CONTROL PENDANT (MCP)
- After the System
Startup procedure is complete, enable the MCP with the MAN/HALT button (right
side).
- Select the motion mode by repeatedly pressing the MAN/HALT button
(an LED will indicate the current mode):
- WORLD (default): produces
end-effector motion along the fixed world x (straight out from base), y (to left
from base), and z (straight up) axes.
- TOOL: produces end-effector motion
along the tool x, y, and z-axes. The tool x- and y-axis orientations are aligned
with the end-effector. The tool z-axis is in the opposite direction of the world
z-axis.
- JOINT: produces independent motion of each of the four joints
(j1 - shoulder, j2 - elbow, j3 - quill extension, j4 - tool roll).
- FREE:
relaxes the designated joints (making them limp) for manual positioning.
-
Select the degree of freedom to operate (j1/x, j2/y, j3/z, j4/roll).
-
Operate the selected degree of freedom with the speed pot (-.........+) on the
left side of the MCP, or in the case of FREE physically move the freed joint.
-
To return to terminal control, press the COMP/PWR button. This allows you
to execute commands and programs from the terminal.
Notes:
- If you take the MCP out of its rack, you must continuously hold down the
"deadman switch" (large button inside the hand grip, lower left side.) Whenever
you release the deadman switch, the system cuts off power to the arm. Restore
power by holding in the switch and pressing the COMP/PWR button or typing ENABLE
POWER on the terminal.
- You can use FREE motion to teach the
robot positions in space. To do this, put the MCP in FREE mode (Step 2)
then select the x, y, and z axes in Step 3. Physically move the end effector
to the exact position you want. Type "here A" on the terminal, where
A is the variable name for the position. The system will recognize
A as the position you set.
- If you extend a joint to a
limit during MCP FREE operation, the robot will lock and you will need to use
a different mode (MAN or COMP) to move the robot away from the limit.
- T1 (in JOINT mode): used to open (+) and close (-) the jaw gripper. This
function should not be used when the vacuum suction tool is attached. Pneumatic
pressure will be vented to the room (resulting in a loud constant noise) if this
occurs. If this happens, press the COMP/PWR mode on the MCP and enter DO RELAXI
on the terminal.
- CLR/ERR: used to clear any error message appearing
on the MCP display, allowing further operations (the MCP is inactive until the
error is cleared).
- COMP/PWR: in addition to returning control
to the terminal (step 5 above), this button
can be used to turn on the arm power (same function as ENABLE POWER).
- REC/DONE: used to continue a program after an MCP prompt; or, in the case
of a menu-driven operation, to back up one step in the MCP's menu hierarchy.
OPERATION
FROM THE COMPUTER TERMINAL
Useful terminal functions (^ = CTRL key):
^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.
COMMAND/INSTRUCTION/FUNCTION
TERMINOLOGY
Monitor Command (MC): command typed in at the monitor
prompt (.) or executed from a program with an MC statement. 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.
COMMAND
EXECUTION
There are two types of commands: program instructions (lines
in a program file) and monitor commands (typed at the "." prompt.) Their
use can be switched using the following commands: 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.
Use "MC DO program instruction" to execute
program instructions in a COMMANDS file.
Note:
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.
USING THE PROGRAM
(TEXT) EDITOR
type "SEE prog_name" to invoke the "SEE" editor.
If prog_name exists in memory it is loaded for editing, otherwise it is created.
Three
Modes of Operation: - COMMAND [ESC key]- for issuing line-editor type
commands (SEE starts in this mode. You must change to INSERT or REPLACE
mode to enter text.)
- INSERT [INSERT key]- for inserting
text at the cursor
- REPLACE [F12] - for writing over text
at the cursor
Some Useful Functions (common functions are labeled
on the keyboard template; the SHIFT key accesses the yellow commands): [DELETE
key] - deletes character at the cursor.
CTRL-[DELETE key] - deletes the current
line.
EXIT [F4] - saves the program (to memory only, not disk) and
exits SEE.
COPY - add a copy of the current line to the attach buffer. The
size of the buffer is highlighted in black in the lower right (i.e., "1a")
CUT - cuts current line and adds to the attach buffer.
PASTE - pastes
the contents of the attach buffer at the current cursor position. This
operation may be required before exiting SEE. If you cut or copy something,
you must paste it somewhere else (and delete it if necessary) before you can exit.
PAGE UP - go to top of program
PAGE DOWN - go to bottom of program
Some
Useful Commands (in COMMAND mode): F - finds a string in the program
I
- enter insert mode
CTRL-T - goto top of program
CTRL-B - goto bottom
of program Notes:
- SEE performs syntax checking interactively
as the program is edited.
- Save your file to disk between edits (or make
a copy in memory) since you can't exit SEE without saving changes (for
the case of undesirable edits).
- If you get the error message "Can't
exit while lines are attached" while trying to exit, enter Insert mode and
Paste (and delete the pasted text if necessary).
DISK I/O (MC)
Notes:
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)
FORMAT
A: [/Q /H] formats (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. Formatting is required to prepare
a disk for use with the floppy drive (MC). NOTE: Be very careful to make
sure you never format the hard disk (C:) - everything, including the operating
system, would be be lost!!!
DEFAULT DISK = path defines
a default (current) drive and/or subdirectory (MC).
Ex: DEFAULT DISK = C:TOOL\
STORE[x]
file_spec = prog_name[s] stores a program, its subprograms, and/or
its variables in a disk file (MC).
[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: programs and 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)
LOAD file_spec 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).
Note: the file extension is required.
FRENAME
new_spec = old_spec 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
You can transfer files to and from the ADEPT
computer from a remote system (but only if the ADEPT is turned on.)
- Open the FTP client program on your remote computer.
- The server
name is "adept1.engr.colostate.edu"
- If your FTP client has an option
for host type, use "chameleon"
- User ID/name is "guest" (no password required)
-
You should see the files on the ADEPT hard drive. Download and upload files
with your FTP client.
Note: Program files are ASCII text
files, so use ASCII versus binary transfer. You can edit program files in
any ASCII text editor (such as Notepad.)
MEMORY MANAGEMENT
Note:
to 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.
DIRECTORY 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).
[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[x] object list delete
object from memory. The object type must agree with [x] (MC).
[x] can be:
P: program, referenced subprograms, and variables.
L: location.
R:
real variable.
S: string variable.
Missing: programs and data.
ZERO
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).
SETTING
SYSTEM PARAMETERS AND SWITCHES
PARAMETER [param_name [= value]] 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).
MOTION INSTRUCTIONS
Types
of Motion: 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.
Note:
Angles 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.
MOVE[S] loc 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 value set 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.
DELAY
time 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).
LOCATION/TRANSFORMATION
DEFINITION
Types of Location Variables: precision
point - location defined by its joint values (q1, q2, d3, q4). 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))
WHERE
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.
PROGRAM EXECUTION
EXECUTE
prog_name [, cycles, step] runs a program [a given number of cycles starting
at a given step] (MC).
ENABLE TRACE causes each program step to be displayed
as it is executed (MC).
(DISABLE TRACE to deactivate).
XSTEP prog_name
[,cycles, step] steps through a program one step at a time (MC).
X executes
displayed step from XSTEP (MC).
STATUS displays the programs running (with
task #'s) and system status (MC).
KILL task_num kills the specified task
(task numbers displayed with STATUS)
To Terminate Program Execution:
From terminal:
type ABORT (robot will stop after current move, use PROCEED
to continue).
Use STATUS and KILL to hault a program that has been interrupted
(e.g., due to bug-related crash).
- From MCP:
hit RUN/HOLD
button (stops program immediately)
or
hit PANIC button (cuts off robot
power, hit COMP/PWR to reactivate power)
- From controller:
hit
E-STOP plunger (cuts off robot power).
PROGRAMMING FEATURES
Variables:
- Data Types:
name: transformation or real/integer value
(i.e., x_loc)
#name: precision_point (i.e., #prec_loc1)
$name: string (i.e., $s1) - Constants are valid for real
numbers (e.g., 2, -5.2) and string (e.g., "hello") only.
- Arrays are indexed
from 0 and elements are accessed with array[index]. Multiple subscript arrays
are supported (array[index1, index2, ....]). Memory is automatically allocated
as elements are referenced (no need to declare and dimension).
- Variable
names can be up to 15 characters long.
- Variables do not have to be declared.
Variables are automatically declared at assignment time and the type is determined
by name and context. (e.g., X = 5.25 creates real variable X; SET X = RZ(45)
creates transformation variable X).
- Variables are assumed global unless
explicitly declared LOCAL at the first executable line of the program.
-
LOCAL program variables retain their values between CALLs
General:
- Program comments are indicated with a preceding semicolon (;).
-
arithmetic operators: +, -, *, /, MOD, =.
- relational operators: <,
>, <=, =<, ==, >=, =>, <>.
- logical operators: AND, NOT, OR,
XOR.
- intrinsic functions: ABS, ATAN2, COS, INT, MAX, MIN, RANDOM, SIN,
SQRT
- system constants: OFF, ON, PI, TRUE, FALSE
I/O and MCP
Control: TYPE output_spec
displays output specification (strings, expressions,
variables, format) on the terminal screen (PI).
PROMPT output_string, variable_list
displays a prompt string on the screen and waits for variable input (PI).
(e.g., PROMPT "Hit return to continue", $cr).
DETACH() temporarily
release program control to the MCP (so MAN mode can be used) (PI).
ATTACH()
resume program control from MCP (COMP/PWR must be activated) (PI).
Timing,
Execution Control: TIMER i = 0 or TIMER(i) = 0
reset timer i (1 to
15) to 0 seconds (PI).
TIMER(i) returns the current time from timer i
(F).
DELAY time suspend program execution for a given number of seconds
(PI).
PAUSE suspends execution until PROCEED is entered (PI).
STOP
terminates program execution (PI).
Control Structures: -
unconditional branch to a program step identified by a numeric label:
GOTO
label
.....
.....
label .....
- external subprogram
invocation:
CALL prog_name(arg_list) - variables are
passed by reference.
- Arrays are passed and received as array[] (single
dimensional), array[,] (two dimensional), etc.
- subprogram formal parameters
are automatic (exist only during subprogram execution) and local.
- global
variables can be referenced in the subprogram.
- local subprogram variables
are assumed global unless explicitly declared with LOCAL.
- control is
returned to the calling program with RETURN.
IF logical_exp GOTO label
- conditional
execution:
IF logical_exp THEN
.....
[ELSE]
.....
END CASE expression OF
VALUE value1[, .....]
.....
VALUE value2[,
.....]
.....
.....
[ANY]
.....
END
- iteration:
FOR
var = start TO final [STEP inc]
.....
END WHILE logical_exp DO
.....
END
DO
.....
UNTIL logical_exp
USING THE VISION SYSTEM
See
also: Studen-created vision
system guide and programming
example
Notes:
- Camera/monitor
resolution: 509x481.
- Field of view (FOV)
frame has origin at bottom left with a horizontal x-y coordinate system (size:
181 mm x 133 mm).
- Two modes of vision processing:
- BINARY - each pixel is given an ON or OFF value depending
upon V.THRESHOLD. This mode is the fastest for processing but is sensitive to
ambient light.
- GRAYSCALE - each pixel is
assigned a value (0 to 127 using 7 bits) based on a range of intensities. More
detail can be seen in this mode.
Calibrating
the Vision System: 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.
- Verify that the vision system is functioning properly
by executing the following commands:
ENABLE VISION
VDISPLAY -1
- Left mouse click on the "adept" logo in the top left
corner of the screen and select "Vision".
- Place
an object in the FOV of the camera, A grayscale image should appear on the monitor.
-
Type LOAD C:\UTIL\ADV_CAL to load the calibration routines.
-
Type EXECUTE A.ADV_CAL to run the menu-driven calibration
program.
- Select virtual camera 1, physical
camera 1.
- Adjusting the camera threshold
(main menu option 2 - ADJUST, then option 3 - ADJUST BINARY THRESHOLD) is highly
recommended to ensure accurate results from the image processing software.
Make sure that edges are well defined and steady when viewing the object.
- To load a previously defined calibration from disk,
select main menu option 1 - LOAD/STORE calibration. Enter the disk drive,
subdirectory, and calibration file number for the calibration data (e.g. disk
drive: C; Subdirectory: MECH564; calibration file number: 564).
--
OR -- - To define a new calibration,
select main menu option 3 - CALIBRATE:
- Select
calibration option 9 (link 2-mounted camera, robot can touch calibration object).
-
At the first prompt, enter YES for "OK TO PROCEED."
-
Respond NO to HPS (High-Accuracy Positioning System) (our
system does not have this feature).
- Use
the default approach/depart distance of 50 mm
- Respond
to the questions as follows: Vacuum gripper - NO; Check Image Parameters
- YES; Camera Model # Change - NO; Shutter/Acquire Change - NO.
-
The calibration disk should be a circular object (a quarter
works great).
- Follow the instructions on
the monitor and on the MCP when instructed (recommend using the MAN-FREE feature
of the MCP for positioning). The "pointer" can be either a point on the
gripper jaws or the vacuum suction attachment.
- Instructions
on the MCP may seem repetitive; however, the camera needs this information to
determine the height of the camera above the object.
- "Perspective
Calibration" can be used to improve results, however, may slow down vision processing.
-
The calibration should be tested to ensure accuracy.
-
Follow the instructions for saving the calibration to a
disk.
- Exit the calibration program
and say "YES" to restoring vision system switches and parameters to their previous
settings.
Notes: -
Do not adjust the aperture and focus unless they have obviously
been tampered with.
- V.THRESHOLD (the binary
vision threshold parameter) may have to be changed periodically to compensate
for slight changes in background lighting.
Either
use A.ADV_CAL (main menu option 2 - ADJUST) or use:
VDISPLAY
0
PARAMETER V.THRESHOLD = new_value
(try
different new_value's until the monitor's threshold seems appropriate).
-
To obtain a live image on the vision screen, select display,
then Live grayscale or Live binary.
- If no
image appears where one is expected during A.ADV_CAL (e.g., during focus/aperture
check), make sure the lens cap is off and check the cable connection at the camera.
If there is still no picture, shutdown the system and try again.
Important
Vision System Switches (set ON or OFF with ENABLE and DISABLE):
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 vision 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).
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.
VLOCATE
(, 2) $name, loc 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).
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).
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
BINARY
I/O AND INTERRUPTS
External Hardware Signals for auxiliary devices
(available at DIO ports on the back of the controller. See Chapter 13 of
the ADEPT MV Controller User's Guide for details. See also: Adept
Binary I/O student report): Input Signal Numbers: 1001 - 1064 (for application
sensors).
Output Signal Numbers: 0001 - 0064 (for application auxiliary device
control).
Active Software Signals: 3001 - close the jaw gripper.
3002 - open the jaw gripper.
SIGNAL [-]sig_num turns on a signal;
if negative, turns off the signal (MC, PI).
IO [i] displays the status
of I/O signals on the screen (terminate display with ^C).
i determines which
signals are displayed (0: external outputs, 1: external inputs, 2: software) (MC).
SIG
(sig1, sig2, ......, sign) returns (sig1 AND sig2 AND ............ sign) (F).
RESET
turns off all external hardware outputs (MC, PI).
REACT[I] sig_num, prog_name
monitors a signal during program execution and calls a subprogram when the
signal transitions; if "I", react immediately, else react after current motion.
After RETURN from the subprogram, execution resumes at the statement following
the point of reaction (PI).
IGNORE sig_num cancel a previous REACT (PI).
CONTACTS
/ SYSTEM INFORMATION
Lab Phone:
System S/N:
Versions: AdeptOne-MV,
V+ 12.2 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
MANUALS FROM ADEPT