General MotionWare Statements

See the AIM Baseline User's Guide for a description of how sequences are created and edited. Also, see the AIM Baseline User's Guide for details on the source of statement arguments.

AMOVE Statement

This statement, available with AIM 4.2 or later, is used to support simultaneous motion of two configurable joints for the Adept Vicron robot. Before using this statement, you must create a tool record that selects the joint configuration for the motion; the joint configuration will be either primary or secondary. When the AMOVE statement is executed, it creates the data structure for motion of the selected joint. The motion will not occur until the next MOVE statement executes. To execute the motion, the AMOVE statement must be called immediately before the MOVE instruction.

The syntax is:

AMOVE AXIS MODE --constant-- MODE --amove_mode-- {POSITION --variable-- RELATIVE --yes/no--} CONFIG --tool--

For detailed information on the syntax and parameters, see the AMOVE documentation in the MotionWare Reference Guide.

Things to Remember

DRIVE Statement

This statement allows you to move a single joint of the robot. You can specify a value for the joint, distance, and speed (with optional parameters for acceleration, deceleration, and nulling).

The syntax is:

DRIVE JOINT --variable-- DISTANCE --variable-- 
SPEED --variable-- {ACCEL --variable--} 
{DECEL --variable--} {NULLING --mode--} 

In JOINT, specify the robot joint to move. In the SPEED, ACCEL, and DECEL arguments, specify motion parameters for this move. The NULLING parameter can have the following values:

"coarse" Null using V+ COARSE tolerance

"fine" Null using V+ FINE tolerance

"none" Null using V+ NONULL mode

MESSAGE

This statement displays a message on the operator control panel.

MESSAGE --variable-- {TEXT --string--} {0: --constant--} 
{1: --constant--} {2: --constant--} {3: --constant--} 
{4: --constant--} {5: --constant--} {6: --constant--} 
{RESPONSE --o_variable--} 

The MESSAGE --variable-- is a standard AIM error number (or variable record that specifies an error number), which is in the error database. The text specified in TEXT --string-- will be appended to this message and displayed on the task control panel.

The --constant-- arguments correspond to the seven standard operator response buttons on the Task Control Panel. A value of 0 indicates that the corresponding button is not valid; a value of -1 indicates that the standard AIM labels should be applied to the button; and a value greater than 0 indicates the button label should be taken from the corresponding standard AIM message number in the error database. If any nonzero values are specified for these seven arguments, the sequence pauses until an operator response button is pressed and the number of the button pressed is returned in the RESPONSE variable.

If all arguments are blank or 0, AIM handles errors in the normal fashion and does not wait for an operator response.

MOVE Statement

The MOVE statement executes the basic robot tasks of MotionWare.

NOTE: If you are using Precision Points, use the PMOVE statement instead of MOVE. See the AIM MotionWare Reference Guide for details.

The syntax for MOVE is:

MOVE {{APPROACH path} FROM location} {ALONG path} 
TO location {DEPART path} {USING tool} 
{{ALONG path} REJECT location {RETURN path}} 
{WAIT_AT --location--} {OK_SIGNAL --o_variable--} 

The sequence of operations performed by this statement is:

1. If a tool transformation is specified (USING--tool--), apply that tool to describe the current robot gripper. Otherwise, leave the tool transformation unchanged.

2. If an approach path is specified (APPROACH--path--), move along that path to the FROM location.

3. If a FROM location is specified (FROM--location--), move to that location and execute the location strategy routine or sequence specified in the location record.

If specified in the location record, the approach and depart strategies will be executed at the beginning of the approach and beginning of the depart move for that location.

4. If the first along path is specified (ALONG--path--), move along that path to the TO location.

5. Move to the TO location (TO--location--) and execute the location strategy routine or sequence specified in the location record.

If specified in the location record, the approach and depart strategies will be executed at the beginning of the approach and beginning of the depart move for that location.

6. If a depart path is specified (DEPART--path--), then depart the TO location along that path.

The remaining steps are executed only if an error occurs and the operator chooses the Retry Statement, Skip Statement, or Skip Cycle button from the debug control panel or the strategy routine returns rn.opr.fail.

7. If a second along path (ALONG--path--) is specified, move along that path to the reject location.

8. Move to the reject location (REJECT--location--) and execute the strategy or sequence specified in the location record.

9. If the return path is specified (RETURN--path--), then depart from the reject location along that path.

If the TO or FROM location is relative to a moving conveyor, the WAIT_AT location specifies part of the location for the robot to wait until the part is within the belt window.

NOTE: Optimized locations are not supported in the WAIT_AT clause and cannot be used. If you attempt to use an optimized location, an error message will be displayed.

The complete wait location is determined as follows:

This strategy allows you to place the robot in the most advantageous position to access the next object.

The OK_SIGNAL is output signal set to TRUE if the statement completes all defined arguments through the DEPART argument. Otherwise, it is set to FALSE.

How MOVE Uses the Databases

The following table shows the statement clause, the databases accessed by that clause, and the information retrieved from each database.
MOVE Statement Databases
Statement
Database Accessed
Information Retrieved
APPROACH path
Path
Path to use moving from current robot location to the FROM location
Entry point nearest the current robot location
Exit point nearest the location being moved to
Transit locations between the entry and exit points
FROM location
Location
The robot location, including:
- Approach and depart heights
- Arm configuration
- Reference frame
- Motion parameters for all moves
- Gripper I/O
- Whether the location is a pallet location, and the parameters for the pallet
- The location/approach/depart strategies

Frame
If used, a named reference frame
ALONG path
Path
Path to use moving from the FROM location to the TO location including:
- Entry point nearest the current robot location
- Exit point nearest the location being moved to
- Transit points between the entry and exit points
TO location
Location
The robot location, including:
Approach and depart heights
Arm configuration
Reference frame
Motion parameters for all moves
Gripper I/O
Whether the location is a pallet location, and the parameters for the pallet
The location/approach/depart strategies

Frame
If used, a named reference frame (can be a conveyor based reference frame)
DEPART path
Path
Path to use when leaving the TO location including:
- Entry point nearest the current robot location
- Exit point nearest the location being moved to
- Transit points between the entry and exit points
USING tool
Tool
A tool transformation to use for all robot motions and to apply to locations taught during walk-thru training
ALONG path
Path
Path to use moving to the reject location (when the operator has indicated the statement should be reexecuted) including:
- Entry point nearest the current robot location
- Exit point nearest the location being moved to
- Transit points between the entry and exit points
REJECT location
Location
The part reject location, including:
- Approach and depart heights
- Arm configuration
- Reference frame
- Motion parameters for all moves
- Gripper I/O
- Whether the location is a pallet location, and the parameters for the pallet
- The location/approach/depart strategies

Frame
If used, a named reference frame
RETURN path
Path
Path to use when leaving the REJECT location including:
- Entry point nearest the current robot location
- First exit point after the entry point
- Transit locations between the entry and exit points

Frame
If used, a named reference frame
WAIT_AT location
Location
The robot location, including:
- Arm configuration
- Reference frame
- Motion parameters for all moves
- Location Z height

Frame
If used, a named reference frame
OK_SIGNAL variable
Variable
Digital signal to set when the statement completes successfully.

Things to Remember

All locations must be taught with the proper tool transformation in effect.

The robot gripper is not automatically closed at the FROM location and opened at the TO location. All robot gripper activity is controlled by the I/O signals specified in the location record (as long as rn.mw.standard is the acquire/release strategy).

A MOVE statement does not necessarily acquire a single object and then place that object. A single MOVE statement can acquire two parts, or multiple MOVE statements can be used to load end-effectors, which can acquire multiple parts. The digital I/O used by the multiple grippers must agree with I/O signals specified in each location record. Similarly, multiple MOVE statements can be used to unload the multiple grippers.

MOVE_REL Statement

This statement allows you to move a robot relative to a defined location. You can specify a value for the distance in the tool X, Y, or Z planes (DX, DY, or DZ) or a value for rotation (RX, RY, or RZ).

The syntax is:

MOVE_REL WRT --segment-- {DX --variable--} 
{DY --variable--} {DZ --variable--} {RX -- variable--} 
{RY --variable--} {RZ --variable--} {SPEED --variable--} 
{ACCEL --variable--} {DECEL --variable--} {NULLING --mode--} 

In --segment-- specify whether this move will be relative to the approach, depart, or final location. In DX, DY, DZ, RX, RY, and RZ, specify the magnitude of the relative move. In the SPEED, ACCEL, and DECEL arguments, specify motion parameters for this move. The move will be relative to the current or most recently completed move. The --segment-- determines whether the move is relative to the approach, location, or depart segment of a move.

The NULLING parameter can have the following values:

"coarse" Null using V+ COARSE tolerance

"fine" Null using V+ FINE tolerance

"none" Null using V+ NONULL mode

If NULLING is not used, the nulling mode set by the original motion segment remains in effect.

This statement is intended primarily for strategy routines.

PMOVE

This statement uses the primitive routine rn.mw.pmove() to move to each precision point and perform whatever actions are defined. This statement is available only when the MotionWare and Precision Point modules are loaded.

The syntax is:

PMOVE {FROM --ppoint--} TO --ppoint-- 

The robot moves to the point defined in FROM --ppoint-- to the destination specified in TO --ppoint--.

RESET_PALLET

This statement allows you to reset the pallet digital signals. The --location-- argument specifies which location record should have its pallet signals reset.

The syntax is:

RESET_PALLET --location-- {SET_SIGNALS --yes/no--}
{CLEAR_SIGNALS --yes/no--} 

If the SET_SIGNALS argument is "yes", all the associated pallet signals are set. If the CLEAR_SIGNALS clause is "yes", all the associated pallet signals are cleared. If both are specified, set overrides clear.

RETRACT_Z

This statement moves the Z-axis of the robot to a specified height. You have the option to specify the speed, acceleration, and deceleration for the move.

NOTE: Beginning with AIM version 4.2 edit C4, the RETRACT_Z statement departs in the world coordinate system Z-axis, rather than the tool Z-axis. For six-axis robot users, this could result in a different robot motion than that achieved in previous AIM versions.

The syntax is:

RETRACT_Z robot height --constant-- {speed --constant--}
{acceleration --constant--} {deceleration --constant--} 

SET_FRAME Statement

SET_FRAME --frame-- EQUAL_TO {FRAME --frame--} 
{INVERSE --frame--} {FRAME --frame--} {VISION_FRAME --vision-- {SAVE_PREVIOUS --yes/no--}} {OK_SIGNAL --o_variable--} 

The VISION_FRAME --vision-- argument can be used only if your AIM system includes the optional AIM Vision Module.

The operation performed by this statement is as follows:

1. The optional frame argument values are read from the Frame database. ({FRAME --frame--} {FRAME --frame--})

2. If specified, {INVERSE --frame--} is read and inverted.

3. If specified, the optional vision operation is evaluated. The resulting vision frame value is converted to robot coordinates. ({VISION_FRAME --vision--}) Depending on the vision picture specification, this vision operation may cause the robot to move in order to take a picture.

4. If yes is specified, the previous image data will be used to generate the vision portion of the frame. No new pictures will be taken. ({SAVE_PREVIOUS --yes/no--})

5. The specified frame values are combined and stored in the record specified by the required frame argument. If no values were specified, this record is set to NULL. If an error occurred in computing any of the argument values, this record is set to undefined. If two or more values were combined, the result is normalized before it is stored. (SET_FRAME --frame--)

6. If the output signal is specified and no errors occurred in computing the specified values, the status output signal is set to TRUE. Otherwise, it is set to FALSE. ({OK_SIGNAL --o_variable--})

Things to Remember

See This Topic for details on reference frames.

SET_NULLING_TOL Statement

SET_NULLING_TOL {FINE --variable--} {COARSE --variable--}

This statement was added in AIM version 4.2 edit C4.

The SET_NULLING_TOL statement allows you to adjust one or both of the FINE/COARSE nulling tolerances. After a new FINE and/or COARSE tolerance percentage is specified, this percentage remains in effect for all future FINE/COARSE motions. To return both tolerances to their respective default settings, use SET_NULLING_TOL FINE 100 COARSE 100.

NOTE: No modifications are made if you execute the SET_NULLING_TOL statement without specifying a value for either FINE or COARSE.

SET_TOOL Statement

SET_TOOL {--tool--} 

The SET_TOOL statement sets a new robot tool transformation. This tool will be in effect either until another SET_TOOL statement is executed or a MOVE statement with a USING clause is executed. There is one optional argument to the statement, a record from the tool database. A SET_TOOL statement without an argument sets the tool transformation to NULL.

If the current tool is different from that specified, continuous-path robot motion is temporarily disabled as the new tool value is set. That is, a break in continuous path occurs.

SET_VIS_FRAME

This statement allows picking multiple objects from the camera's field-of-view.

NOTE: The conveyor manager is not needed when this statement is used. Therefore, this statement provides a multiple-object pick solution for arm-mounted cameras.

SET_VIS_FRAME --frame-- EQUAL_TO VISION_FRAME --vision--
{SAVE_PREVIOUS --yes/no--} {OK_SIGNAL --o_variable--}
{REPEAT_STATUS --o_variable--} 

1. The required vision operation is evaluated and the top-level vision frame (for example, from the ObjectFinder) is returned. The resulting vision frame value is converted to robot coordinates. (VISION_FRAME --vision--) Depending on the vision picture specification, this vision operation may cause the robot to move in order to take a picture.

2. If yes is specified, the previous image data will be used to generate the vision portion of the frame. No new pictures will be taken. ({SAVE_PREVIOUS --yes/no--})

3. If the output signal is specified and no errors occurred in computing the specified values, the status output signal is set to TRUE. Otherwise, it is set to FALSE. ({OK_SIGNAL --o_variable--})

4. If the repeat status is specified, this indicates TRUE when the repeat is completed. Otherwise, it is set to FALSE. ({REPEAT_STATUS --o_variable--})

Things to Remember

See This Topic for details on reference frames.

Example Sequence Using SET_VIS_FRAME

.SEQUENCE run_main 
 
   1.; ABSTRACT - Example application using the 'SET_VIS_FRAME'  
   2.;  
   3.;   Pick all good parts from the camera FOV. Skip over the bad  
   4.;   parts. Only take one picture at the beginning of the sequence. 
   5.;  
   6.;   Note*: Use of 'SET_VIS_FRAME' assumes that a repeat source is 
   7.;          within the vision tree, otherwise an error will occur. 
   8.;  
   9.; Setup first picture and get the first part  
  10.;  
  11.    SET_VIS_FRAME pick_frame EQUAL_TO VISION_FRAME  
           p1_s1_cf_1 OK_SIGNAL frame_results REPEAT_DONE repeat_done  
  12.;  
  13.    WHILE not repeat_done  
  14.;  
  15.      IF frame_results  
  16.;  
  17.; point relative to fixed frame (update by 'SET_VIS_FRAME')  
  18.;  
  19.        MOVE TO p1_s1_pickup  
  20.;  
  21.; Static drop off  
  22.;  
  23.        MOVE TO p1_s1_place  
  24.;  
  25.      END  
  26.;  
  27.; Get next part out of repeat vision tree  
  28.;  
  29.      SET_VIS_FRAME pick_frame EQUAL_TO VISION_FRAME  
             p1_s1_cf_1 SAVE_PREVIOUS yes NEXT_VIS_FRAME yes  
             OK_SIGNAL frame_results REPEAT_DONE repeat_done  
  30.;  
  31.    END  

STOP_ROBOT Statement

STOP_ROBOT {AFTER_MOTION --yes/no--} 

If the --no-- is selected or the argument is omitted, then the robot is stopped immediately. If --yes-- is selected, then the robot stops after the current motion completes. This mode is useful only for canceling belt tracking.

WAIT_UNTL_ROBOT Statement

This statement allows you to pause a sequence until one of the following occurs. (These options can be limited by a time-out value.)

This statement is intended primarily for strategy routines or the IO_Control task.

The syntax is:

WAIT_UNTL_ROBOT {DEVICE --device--} {STOPPED --yes/no--
{SETTLE --constant--}} {< --constant-- {FROM --location--}
{ALONG --component--}} {> --constant-- FROM --location--
{ALONG --component--}} {%_COMPLETE --constant--}
{TIME_LEFT --constant--} {TIMEOUT --constant--
{TIMEOUT_STATUS --o_variable--}
{MOTION_STATUS --o_variable--}} 

MOTION_STATUS variable is set to indicate the final motion status as follows:

0 If the current motion is running or completed normally.
1 If the current or previous motion completed abnormally.
2 If the robot has transitioned to another segment.
The settling time may have been skipped.
The TIMEOUT or %_COMPLETE condition may have terminated early.

For example, if E_STOP occurs during a motion while WAIT_UNTL_ROBOT is executing, the MOTION_STATUS will be:

1 If the operator chooses to skip the current motion and leaves the robot
stopped.
2 If the operator retries the current motion.

The operations performed by this statement are:

1. If a --device-- is specified, select that robot for use by this routine. If no device is specified, use the current robot. (Note that a different robot cannot be selected if this task is controlling a robot.)

2. If yes is selected for the STOPPED clause, wait until the robot is stopped. After the robot stops, wait the optional settling time (specified in SETTLE --constant--). The time is in 1/100th of a second. Ignore all remaining clauses except "TIMEOUT --constant--".

3. If the < --constant-- clause is specified, and the FROM --location-- clause is specified, wait until the robot is less than ("<") the specified distance, in millimeters, from that location. If the FROM --location-- clause is not specified, use the distance to the end of the current motion segment. If a Cartesian axis is specified in the optional ALONG --component--, the difference of the X, Y, or Z components of the location is used for comparisons. Otherwise, the shortest straight-line distance is used. Shortest distance is always a positive value, but the distance along a Cartesian axis may be positive or negative. HPS locations may not be used for the FROM --location--.

4. If the > --constant-- clause is specified, wait until the distance from the specified location is greater than (">") the specified value, in millimeters. If a Cartesian axis is specified in the optional ALONG --component--, the difference of the X, Y, or Z components of the location is used for comparisons. Otherwise, the shortest straight-line distance is used. Shortest distance is always a positive value, but the distance along a Cartesian axis may be positive or negative. HPS locations may not be used for the FROM --location--.

5. If the %_COMPLETE --constant-- clause is specified, wait until the current robot motion is complete by at least the specified value (from 1 to 100).

6. If the TIME_LEFT --constant-- clause is specified, wait until the time left in the current robot motion is less than the specified value, in hundredths of a second.

7. If the optional TIMEOUT --constant-- clause is specified, check for a time-out condition when waiting for any of the above. The time-out value is specified in hundredths of a second.

8. If a time-out occurs, set the optional TIMEOUT_STATUS --o_variable-- variable to TRUE and exit without error.

SET_RESPONSE

This statement allows an executing sequence to behave as if one of the operator response buttons had been pressed. The --variable-- should have a value of 0 to 6, corresponding to the 7 standard operator response buttons. If an invalid response code is received, an error is issued.

The syntax is:

SET_RESPONSE --variable--