Roboception rc_visard Cameras¶
drag&bot supports some of the features, which the Roboception rc_visard cameras provide. Once the camera has been configured in the robot system, these features can be accessed with function blocks.
Provided Features¶
drag&bot currently supports the following features for the rc_visard camera:
- Static and dynamic hand-eye calibration
- Item Pick for static setups
- Box Pick for static setups
Important
For all aspects of the Roboception rc_visard camera please also read the Roboception manual. The drag&bot driver and function blocks only wrap around the functionalities described there.
Setup¶
Connect the rc_visard camera as described in the Roboception manual. Ensure it can be reached from the computer, where drag&bot is running. If DHCP is used the camera can be connected to the "Internet" connection. Otherwise a static IP address in the IP range of the "Robot and More" ethernet connection has to be configured in the rc_visard camera.
Add the Roboception component in the drag&bot Component Manager. Configure the Serial Number as Device ID.
Hand-Eye Calibration¶
The hand-eye calibration process for the rc_visard camera in drag&bot is based on three function blocks. They are supposed to be used in a program, which performs the complete calibration. Note that the calibration is always done based on the currently configured placement of the robot in the world and the currently selected tool. Changing the robots pose in the Scenario Designer or using later a different tool as in the calibration might result in wrong poses for detected objects (especially for robot mounted camera setups).
Important
For the calibration process itself please refer to the chapter Hand-eye calibration in the Roboception manual as the function blocks just wrap around the REST-API interface described there.
Start Calibration¶
The function block clears the current calibration and starts a new calibration process.
Name | Data type | Description | |
---|---|---|---|
Inputs | Grid Width | Float | The grid width of the calibration sheet in meters. |
Grid Height | Float | The grid height of the calibration sheet in meters. | |
Robot Mounted | Boolean | Describes, whether the camera is mounted at the robot flange (true) or is mounted static in the cell (false). | |
Outputs | - |
Set Calibration Pose¶
Records a given pose and the pose of the currently visible calibration sheet to be used as calibration pose.
Name | Data type | Description | |
---|---|---|---|
Inputs | Calibration Pose | Pose | The pose to set as calibration pose. |
Calibration Step | Integer | The calibration pose number for this pose. Using the same step more than one time within the calibration process will overwrite the old pose. | |
Outputs | Success | Boolean | Indicates, whether the given pose was accepted by the calibration process or not, e.g. because the calibration plate was not clearly visible. |
Calibration Ready | Boolean | Indicates, whether enough poses have been collected to calculate the calibration or more need to be recorded. |
Finish Calibration¶
The function block finishes the calibration process, calculates the camera pose and saves the calibration in the camera if the residual error is small enough. The calibration is automatically applied to all poses, which are returned as result of following operations from the camera.
Name | Data type | Description | |
---|---|---|---|
Inputs | - | ||
Outputs | Success | Boolean | Indicates, whether the calibration process was successful or not. |
Camera Pose | Pose | Relative pose of the grid with respect to the frame for which the pose was given in the Set Calibration Pose function blocks. | |
Residual Error | Float | The remaining residual error for detections in the range from 0.0 to 1.0. |
Calibration Program Template¶
To simplify the calibration process its possible to use a template program. Here you just have to parametrize the calibration plate measurements and teach the calibration poses in the respective subprogram input parameters. The poses have to correspond to the positionings of the calibration sheet relative to the camera as shown in the Roboception manual. The best process is to move the robot manually to the respective camera pose and then take the current pose of the robot as input parameter pose of the respective subprogram. The poses are saved as robot joints to be save regarding different arm configurations for the same cartesian pose. Its important to use the same tool as later in the actual application. At least four poses are required, but eight are recommended. Delete the respective subprograms for the poses you don't want to use.
Item Pick - Static¶
The function block triggers the Roboception Item Pick Module to get the grasp pose for an unknown surface. The function block supports just static calibrated setups.
Name | Data type | Description | |
---|---|---|---|
Inputs | Region of Interest ID | String | ID string of the region of interest to be used. The region of interest has to be configured in the Roboception Web Interface. If the field is left empty, no region of intetrest is used. |
Load Carrier ID | String | ID string of the load carrier to be used. The load carrier has to be configured in the Roboception Web Interface. If the field is left empty, no load carrier is used. | |
Length of Suction Surface | Float | Length of the suction surface in meters. | |
Width of Suction Surface | Float | Width of the suction surface in meters. | |
Outputs | Success | Boolean | Indicates, whether the Roboception has found an object with sufficient grasp pose. |
Calculated Suction Pose | Pose | Pose of the found grasp respecting the hand eye calibration. | |
Result message | String | Result message of the Roboception camera. | |
Load carrier empty | Boolean | Indicates, whether the load carrier has been declared empty by the Roboception camera. |
Box Pick - Static¶
The function block triggers the Roboception Box Pick Module to get the grasp pose for a box model. The function block supports just static calibrated setups.
Name | Data type | Description | |
---|---|---|---|
Inputs | Region of Interest ID | String | ID string of the region of interest to be used. The region of interest has to be configured in the Roboception Web Interface. If the field is left empty, no region of intetrest is used. |
Load Carrier ID | String | ID string of the load carrier to be used. The load carrier has to be configured in the Roboception Web Interface. If the field is left empty, no load carrier is used. | |
Length of Suction Surface | Float | Length of the suction surface in meters. | |
Width of Suction Surface | Float | Width of the suction surface in meters. | |
Minimum Box Length | Float | Minimum length of the box to search in meters. | |
Minimum Box Width | Float | Minimum width of the box to search in meters. | |
Maximum Box Length | Float | Maximum length of the box to search in meters. | |
Maximum Box Width | Float | Maximum width of the box to search in meters. | |
Outputs | Success | Boolean | Indicates, whether the Roboception has found an object with sufficient grasp pose. |
Calculated Suction Pose | Pose | Pose of the found grasp respecting the hand eye calibration. | |
Result message | String | Result message of the Roboception camera. | |
Load carrier empty | Boolean | Indicates, whether the load carrier has been declared empty by the Roboception camera. |