Roboception - SilhouetteMatch

This command can be used to perform a SilhouetteMatch command by Roboception. The command uses a contour based template matching algorithm to locate the object in 3D-Space and retrieve the optimal grasping pose in either the robot’s or camera’s coordinate system [1]. The templates are defined in the .dxf format and have to be uploaded to the template database in the Roboception GUI. Check out the Template generation chapter in the Roboception documentation for more details of how to generate these files.

Parameterization panel

The following section describes how to parameterize the command while being in the Modify mode. Navigation between the different setup panels can be done by pressing the belonging tab in the voraus.operator (Fig. 22/).

Configuration

Template Name:

The name of the silhouette model to be detected. The model has to be uploaded to the Roboception using the Roboception’s GUI beforehand (Fig. 22/).

Camera Pipeline:

The pipeline ID of the camera to use (Fig. 22/).

Target Coordinate System:

The retrieved grasp pose is stored inside the configured User CS. Afterwards a motion command can be applied with regard of the configured User CS (Fig. 22/).

Load Carrier ID:

(Optional): The ID of the Load Carrier defined within Roboception’s GUI (Fig. 22/).

2D Region of Interest ID:

(Optional): The ID of the 2D Region of Interest defined within Roboception’s GUI (Fig. 22/).

Robot Synchronization:

Sync (default): The detection is only executed after the robot has finished its latest movement command. Async (for experts only): The detection is executed asynchronous to the movement of the robot. Should only be used if currently enqueued movement commands can not interfere with the detection (Fig. 22/).

Object Plane Detection:

Select Off if the objects are placed on a calibrated base plane, select On if the objects surfaces are planar and the base plane is unknown, or the objects are located on multiple different planes, e.g. stacks (Fig. 22/).

Baseplane Offset:

An offset, in case the calibrated base plane should be used, but the objects are not lying on this plane but on a plane parallel to it. The offset is the distance between both planes given in the direction towards the camera (Fig. 22/).

Configuration of the SilhouetteMatch command

Fig. 22 Configuration of the SilhouetteMatch command.

Gripper

Configuration of the gripper and Collision Check.

Use Collision Check:

Activates the Collision Check of the Roboception camera. Read the Roboception manual to learn about the included and non-included checks (Fig. 23/).

Gripper ID:

The ID of the gripper to be used for the Collision Check. This is the gripper configured in the Roboception database, not the voraus.core tool (Fig. 23/).

Pre-Grasp Offset:

The offset that will be used for the Collision Check. It is just evaluated during the Collision Check and will not be used as a movement in the application (Fig. 23/).

Configuration of the gripper tab of a SilhouetteMatch command

Fig. 23 Configuration of the gripper tab of a SilhouetteMatch command.

Last Detection

Snapshot of the last result image retrieved by the Roboception camera (Fig. 24).

Image of the last detection tab of a SilhouetteMatch command

Fig. 24 Image of the last detection tab of a SilhouetteMatch command.

Runtime behavior

Once configured, the application can be executed. In case that at least one object was found, the selected Target Coordinate System will be set to the best detection instance and the SUCCESS branch will be executed, otherwise the ELSE branch is executed. The detection result can be reviewed inside the Last Detection panel by clicking at the command in Modify mode. In order to move with regard to the detected object, a Move To command can be added to the SUCCESS branch. The chosen coordinate system should match the Target Coordinate System configured in the detection command.

Errors

For the documentation of raised error codes see the Roboception’s rc_cube manual: https://doc.rc-cube.com/latest/en/silhouettematch.html

Python API

The command triggers a detect_object() method call and stores the result in a local variable called silhouette_detect_result. For advanced post-processing of the detection result, access this variable in a Run Script command.