info on "VISION_FRAME"

AIM discussions, tips and tricks, plug-ins, Q & A

Moderator: mnoschang

info on "VISION_FRAME"

Postby glenna@prodigymeter » Thu Jun 21, 2012 6:17 am

The existing system I have come into has the command: "SET_FRAME pick.frame EQUAL_TO VISION_FRAME compute.frame OK_SIGNAL ok_vision".
I am trying (unsuccessfully) to find useful information about what this command actually does, and I cannot find VISION_FRAME in any user guides. I have worked with surface mount PCB machines and I am trying to compare this to CAD fiducial positions and vision correction for placement.
glenna@prodigymeter
 
Posts: 2
Joined: Tue Jul 26, 2011 1:42 pm

Re: info on "VISION_FRAME"

Postby TravisA » Thu Jun 21, 2012 9:01 am

your software is Adept AIM, specifically the MotionWare and VisionWare software. The manuals that will assist you are:

MotionWare User'sGuide
http://www1.adept.com/main/KE/DATA/AIM/ ... okTOC.html

VisionWare User's Guide
http://www1.adept.com/main/KE/DATA/AIM/VisionWare%20User/vwbookTOC.html
VisionWare Reference Guide
http://www1.adept.com/main/KE/DATA/AIM/VisionWare%20Reference/vwrg.bkTOC.html

Part 2 of the MotionWare User's Guide is all about using MotionWare with Vision.

The SET_FRAME statement is detailed in "Part 1: Basic MotionWare" "MotionWare Statements", "General MotionWare Statements"

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.


The statement is causing the vision tool named "compute.frame" to be executed. This vision tool could cause multiple vision operations to run, it could even cause the robot to move to a picture-taking location. Once that vision operation is executed, it takes the resulting frame and assigns that value to a Frame DB record called "pick.frame". The output signal "ok_vision" will be True if there was a valid result and False if not.
Usually this is done right before trying to move to a location that is Relative to the frame "compute.frame".

I will move this topic to the AIM forum.
TravisA
 

Re: info on "VISION_FRAME"

Postby glenna@prodigymeter » Fri Jun 22, 2012 6:24 am

I am looking for a more complete description than "Depending on the vision picture specification, this vision operation may cause the robot to move in order to take a picture."
compute.frame is set to origin, point on X-axis, pt in +Y dir.
I have one position in each .path record.
The .pic file includes "Motion = Use it" selected.
The camera is arm-mounted to link 2.
I cannot find in the manuals a description of what VISION_FRAME actually does as far as reading fiducials from the current robot position and camera offset and making a comparison to the previously taught fiducal location.
SET_FRAME also does not clearly specify if the computed information of "pick.frame" is applied only to the immediately following pick command or if the robot world frame is modified for all robot positions until a reset to base frame is commanded.
glenna@prodigymeter
 
Posts: 2
Joined: Tue Jul 26, 2011 1:42 pm

Re: info on "VISION_FRAME"

Postby TravisA » Fri Jun 22, 2012 8:27 am

glenna@prodigymeter wrote:I am looking for a more complete description than "Depending on the vision picture specification, this vision operation may cause the robot to move in order to take a picture."
compute.frame is set to origin, point on X-axis, pt in +Y dir.
I have one position in each .path record.
The .pic file includes "Motion = Use it" selected.
The camera is arm-mounted to link 2.
I cannot find in the manuals a description of what VISION_FRAME actually does as far as reading fiducials from the current robot position and camera offset and making a comparison to the previously taught fiducal location.
SET_FRAME also does not clearly specify if the computed information of "pick.frame" is applied only to the immediately following pick command or if the robot world frame is modified for all robot positions until a reset to base frame is commanded.


There are a multitude of ways that this system can be configured, so it's hard to know precisely what your system was programmed to do. It sounds like it is indeed set up to go to a picture-taking location. This is done with a Path record (with only one location, marked as both an "Entry" and "Exit" point). The system is probably calibrated so that the vision system finds the vision result in the robot's world coordinates, and puts that value into pick.frame. It doesn't change the robot's base coordinate system, only that frame record, which would adjust the final location of all Location records that are relative to that Frame. That frame record would store the value until it is changed with another SET_FRAME command.
VISION_FRAME isn't specifically a statement, it's an argument. The AIM program statements are very type-specific, so when setting the value of a frame (pick.frame) equal to something else, you have to tell it what kind of frame you're setting it to, such as another FRAME, or the INVERSE of a frame, or a VISION_FRAME - indicating the result from a vision operation.
This page, walking through the setup of an arm-mounted system, might be of help: http://www1.adept.com/main/KE/DATA/AIM/MotionWare%20User/mvision11.html
TravisA
 


Return to AIM

Who is online

Users browsing this forum: No registered users and 1 guest