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
Create a TOOL record that selects the joint configuration for the motion before using AMOVE.
The AMOVE statement does not attempt to change the current robot TOOL unless the CONFIG --tool-- parameter is specified.
If a MOVE statement is not called immediately after AMOVE, the AMOVE statement has no effect.
If the joint setting of the MOVE statement is different from that defined in the AMOVE statement, the simultaneous motion will not be completed.
The AMOVE statement only affects the location portion of the MOVE statement. The approach and depart segments are not affected.
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).
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.
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.
The complete wait location is determined as follows:
- If there are no "new" objects in the queue, use the path specified in the conveyor record.
- If the object is upstream of the belt window, get the location Z, APPRO, ACCEL, configuration options, speed, and motion parameter values from the WAIT_AT argument. Use the Dynamic wait line from the conveyor record for the position in the belt direction of travel. Use the location of the object in the queue to determine the robot position lateral to belt (perpendicular to direction of belt travel) and the object rotation for the robot orientation.
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.
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).
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.
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.
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.
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
- The required --frame-- argument should reference records in which Fixed is selected.
- The optional --frame-- arguments may reference records in which Object Definition is selected.
- The vision operation should return a vision frame result, which will be converted to robot coordinates.
- To use the SET_FRAME statement with any arm-mounted camera, you must select the Use it check box in the Motion group on the Picture record. Note that it is not necessary to set up a path point; you need only select the check box. You can then move the robot using a MOVE statement followed by the SET_FRAME statement.
- The optional path record specified in the picture record contains the parameters for moving to the picture-taking location. Parameters include speed, motion type, and similar attributes.
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.
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
- The required --frame-- argument should reference records in which Fixed is selected.
- The required vision operation should return a vision frame result, which will be converted to robot coordinates.
- To use the SET_VIS_FRAME statement with any arm-mounted camera, you must select the Use it check box in the Motion group on the Picture record. Note that it is not necessary to set up a path point; you only need to select the check box. You can then move the robot using a MOVE statement followed by the SET_VIS_FRAME statement. See the sample sequence below for details.
- The optional path record specified in the picture record contains the parameters for moving to the picture-taking location. Parameters include speed, motion type, and similar attributes.
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. ENDSTOP_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.)
- The robot stops and settles
- The robot moves within a specified distance of a location
- The robot moves outside a specified distance from a location
- The robot completes a percent of its current move
- The robot has less than a specified amount of time left to complete a move
This statement is intended primarily for strategy routines or the IO_Control task.
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.
SET_RESPONSE --variable--