CADMatch¶
This tutorial shows how to use the CADMatch module with Roboception’s URCap.
Before we start¶
This tutorial assumes that you are familiar with the Generic rc_visard node and that a valid hand-eye calibration has been stored on the rc_visard as described in Hand-Eye Calibration.
Overview¶
The CADMatch functionality is available in the generic rc_visard node. Please see Generic rc_visard node in order to learn how to work with generic rc_visard nodes.
The following functions are available for CADMatch:
- Detect: Triggers detection
- GetObjectPose: Gets the next object pose after detection has been triggered
- GetNextGrasp: Gets the next grasp after detection has been triggered
- GetLCPose: Gets the pose of the detected load carrier
- SetPreferredOrientation: Sets the Preferred Orientation based on the stored robot pose
Detect¶
It is mandatory to choose the object that has to be detected. If necessary, enter a region of interest, gripper and load carrier.
GetObjectPose¶
This function requires that the Detect function has been triggered before. It returns the pose of the next available object that was detected and stores the pose in PolyScope’s variable format.
If no reachable object is detected and the Stop program when pose is not available checkbox is checked, a popup will appear and the program will be terminated. If the checkbox is not checked, a zero pose (p[0,0,0,0,0,0]) will be returned.
Note
When the Stop program when pose is not available checkbox is unchecked, the user has to catch the case when nothing is detected (the zero pose (p[0,0,0,0,0,0]) is returned). If this situation is not handled, it might lead to collision or undefined robot behavior.
With the ‘Pick approach angle’ drop-down menu it is possible to change the strategy of calculating the angle of the returned pose. There are four different options to choose from:
- Last waypoint orientation The detected orientation is ignored, instead the orientation of the last waypoint is used.
- Only RZ from detected pose For RZ the detected orientation is used, RX and RY are based on the last waypoint orientation.
- Only RX, RY from detected pose For RX and RY the detected orientation is used, RZ is based on the last waypoint orientation.
- Detected pose orientation The complete detected orientation is used.
GetNextGrasp¶
This functions requires that Detect has been triggered before. It assigns the next available grasp pose and stores the pose in PolyScope’s variable format (p[x, y, z, rx, ry, rz]). It is also possible to store the grasp ID associated with this grasp.
If no reachable grasp is detected and the Stop program when pose is not available checkbox is checked, a popup will appear and the program will be terminated. If the checkbox is not checked, a zero pose (p[0,0,0,0,0,0]) will be returned.
Note
When the Stop program when pose is not available checkbox is unchecked, the user has to catch the case when nothing is detected (the zero pose (p[0,0,0,0,0,0]) is returned). If this situation is not handled, it might lead to collision or undefined robot behavior.
With the ‘Pose orientation’ drop-down menu it is possible to change the strategy of calculating the angle of the returned pose. There are four different options to choose from:
- Last waypoint orientation The detected orientation is ignored, instead the orientation of the last waypoint is used.
- Only RZ from detected pose For RZ the detected orientation is used, RX and RY are based on the last waypoint orientation.
- Only RX, RY from detected pose For RX and RY the detected orientation is used, RZ is based on the last waypoint orientation.
- Detected pose orientation The complete detected orientation is used.
GetLcPose¶
This function requires that Detect has been triggered with a load carrier ID. It returns the pose of the detected load carrier. If no load carrier is detected, a zero pose (p[0,0,0,0,0,0]) will be returned.
Note
When the Stop program when pose is not available checkbox is unchecked, the user has to catch the case when nothing is detected (the zero pose (p[0,0,0,0,0,0]) is returned). If this situation is not handled, it might lead to collision or undefined robot behavior.
SetPreferredOrientation¶
This function sets the Preferred Orientation based on the stored robot pose. If it is not required to change this value during program execution, this node should be put in the Before Start section.