> For the complete documentation index, see [llms.txt](https://support.robominds.de/manual/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.robominds.de/manual/robobrain.skills/order-picking/smart-vacuum-picking-skill.md).

# Smart Vacuum Picking Skill

## Overview <a href="#user-content-overview" id="user-content-overview"></a>

A vacuum gripper belongs to the group of astringent grippers in which a continuous holding force is applied without compressive stress. By creating a vacuum inside the gripping system, objects are attracted and held onto the gripper accordingly if the vacuum is maintained sufficiently. The Smart Vacuum Picking Skill is designed for single-suction vacuum grippers.&#x20;

Depending on the setting of the skill, a certain number of possible pick points is displayed in the camera image. The color coding provides information on the interpretation of the pick points. Points marked in yellow represent potential pick points that also meet the quality requirements of the system. The blue point, on the other hand, defines the best pick point selection, which best meets the requirements. The selection and sorting of the pick points can be set via the parameters in the skill. The pick point position [(in *m*eters)](#user-content-fn-1)[^1] and the quality value are also displayed in the Graphical User Interface.

A classic use case for this skill is, for example, singulation in a department store, since this skill can grab a large number of unknown parts. It does not focus on specific parts, but on an optimal grasping point on any object. This means that numerous items, such as pens, packaging, plates and even bags, can be singled out and placed in the shipping carton with just one skill.

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Boxes</td><td><a href="/files/i0PnBlLPNq46IwZRfvyo">/files/i0PnBlLPNq46IwZRfvyo</a></td><td><a href="/pages/wDZBESI1L0c5WHwlmJWo#parameter-example">/pages/wDZBESI1L0c5WHwlmJWo#parameter-example</a></td></tr><tr><td>Sample Tubes</td><td><a href="/files/rU4Qb94jwGSMUJ69xrgk">/files/rU4Qb94jwGSMUJ69xrgk</a></td><td><a href="/pages/wDZBESI1L0c5WHwlmJWo#parameter-example">/pages/wDZBESI1L0c5WHwlmJWo#parameter-example</a></td></tr><tr><td>Random</td><td><a href="/files/qtYCvbic1xHcmZgu7FFz">/files/qtYCvbic1xHcmZgu7FFz</a></td><td><a href="/pages/wDZBESI1L0c5WHwlmJWo#parameter-example">/pages/wDZBESI1L0c5WHwlmJWo#parameter-example</a></td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

## Programm application&#x20;

The skill is already pre-configured in a way that enables it to handle a wide variety of parts. To test the skill, go to "<mark style="color:blue;">**Option**</mark>" - "<mark style="color:blue;">**Test**</mark>". There you have the possibility to run the skill and view the predictions of the grip points.

If the skill is to be optimized for the parts, this can also be implemented in the test area. After the skill has been selected, the parameters can be optimized in the lower right corner. After saving the new parameters, the skill can be executed again immediately. The image on the left shows the new prediction of the skill. With the <mark style="color:blue;">**"Parameter Download"**</mark> button, the parameters can easily be downloaded, so that they can be restored at a later time.

The different recordings of the skill are stored in the <mark style="color:blue;">**"Capture"**</mark> area.&#x20;

{% hint style="warning" %}
&#x20;If a configuration from the capture area is needed, this data can be sent in an encrypted file to our support.
{% endhint %}

## Skill Result Information

<table data-header-hidden><thead><tr><th width="174"></th><th></th></tr></thead><tbody><tr><td><em><mark style="color:blue;"><strong>Position</strong></mark></em></td><td>Position of the grasp point relative to the robot’s coordinate system <em>(in m)</em></td></tr><tr><td><em><mark style="color:blue;"><strong>Orientation</strong></mark></em></td><td>Rotation of the grasp point relative to the robot’s coordinate system <em>(in m)</em></td></tr><tr><td><em><mark style="color:blue;"><strong>Quality</strong></mark></em></td><td>Quality value for the evaluation of a gripper</td></tr></tbody></table>

## Specifications

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th></th><th></th><th></th><th data-type="files"></th></tr></thead><tbody><tr><td align="center"><mark style="color:blue;"><strong>Conditions</strong></mark></td><td><p><strong>Camera mount:</strong> </p><ul><li>Dynamic</li><li>Static</li></ul></td><td><p><strong>Camera distance:</strong> </p><p>35 – 45 cm</p></td><td><p></p><p><strong>Parts dimensions:</strong> </p><p>2 – 6 cm</p></td><td><p></p><p><strong>Parts material:</strong> </p><p>matt - low reflection</p></td><td></td></tr><tr><td align="center"><mark style="color:blue;"><strong>Specs</strong></mark></td><td><p><strong>Avg. recognition time:</strong></p><p>&#x3C; 0.5 seconds</p></td><td><p></p><p><strong>Supported grippers:</strong></p><ul><li>Vacuum</li><li>Magnet</li><li>Single contact point</li></ul><p></p></td><td></td><td></td><td></td></tr><tr><td align="center"><mark style="color:blue;"><strong>Features</strong></mark></td><td><ul><li>Single pick-point recognition</li><li>Generalized to a variety of object types</li><li>Picking from bulk</li></ul></td><td></td><td></td><td></td><td></td></tr></tbody></table>

## Parameter Example&#x20;

To ensure accurate identification of various types of objects, the skill parameters can be easily adjusted to fit your specific needs. Here are some recommendations to help you find the perfect parameters for your application. For your convenience, we've only included descriptions of parameters that differ from the default settings.

{% tabs %}
{% tab title="Boxes" %}

<figure><img src="/files/i0PnBlLPNq46IwZRfvyo" alt=""><figcaption><p>Smart Vacuum Picking Skill for Boxes</p></figcaption></figure>

* Used objects: boxes of varying sizes, matt and shiny surfaces
* Camera distance: 550mm
* Camera mount: 30° angled
* Parameters:
  * Min Quality: 0.32
  * other parameters: default values
    {% endtab %}

{% tab title="Sample Tubes" %}

<figure><img src="/files/rU4Qb94jwGSMUJ69xrgk" alt=""><figcaption><p>Smart Vacuum Picking Skill for Sample Tubes</p></figcaption></figure>

* Used objects: Sample Tubes of varying sizes, shiny surfaces
* Camera distance: 550mm
* Camera mount: 30° angled
* Skill Parameters:
  * Min Quality: 0.3 (Can help in situations with difficult lighting)
  * Shuffle range: 30 (Affects the maximum number of returned pick points, allows for the detection of more sample tubes at once)
  * other parameters: default values
    {% endtab %}

{% tab title="Random" %}

<figure><img src="/files/qtYCvbic1xHcmZgu7FFz" alt=""><figcaption><p>Smart Vacuum Picking Skill for random objects</p></figcaption></figure>

* Used objects: Variety of products of different sizes and shapes, matt and shiny surfaces
* Camera distance: 550 mm
* Camera mount: 30° angled
* Skill parameters:
  * Min Quality: 0.32 (due to difficult lighting)
  * other parameters: default values
    {% endtab %}
    {% endtabs %}

## Technical Parameter Description <a href="#user-content-parameters" id="user-content-parameters"></a>

### Parameter

{% tabs %}
{% tab title="Basic" %}

<table data-view="cards"><thead><tr><th>Name</th><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>Maximum deviation to z axis</strong></mark></td><td><code>deviation_to_z_axis</code></td><td><code>float</code></td><td>Maximum angle in degrees of the pick pose's z-axis to the camera's z-axis.</td></tr><tr><td><mark style="color:blue;"><strong>Shuffle range</strong></mark></td><td><code>shuffle_range</code></td><td><code>float</code></td><td>Maximum number of pick points that can be returned. Ignored if &#x3C; 1.</td></tr><tr><td><mark style="color:blue;"><strong>Margin</strong></mark></td><td><code>margin</code></td><td><code>float</code></td><td>Minimum distance of pick points to the image edges. It is a percentage of image size and the same along all edges.</td></tr><tr><td><mark style="color:blue;"><strong>Z range</strong></mark></td><td><code>z_range</code></td><td><code>float</code></td><td>Maximum allowed distance (in the z direction) between any pick points and the one closest to the camera.</td></tr><tr><td><mark style="color:blue;"><strong>Min quality</strong></mark></td><td><code>min_score</code></td><td><code>float</code></td><td>Minimum quality for pick points, as reported by the AI model. Setting it too high may prevent pick points from being detected.</td></tr></tbody></table>
{% endtab %}

{% tab title="Expert" %}

<table data-view="cards"><thead><tr><th>Name</th><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>Optimize gripper orientation</strong></mark></td><td><code>orientation_optimization</code></td><td><code>boolean</code></td><td>Enables the optimization of the gripper orientation. If enabled the orientation of the pick pose is changed to minimize the rotation of the robot between the capture pose and the pick pose.</td></tr><tr><td><mark style="color:blue;"><strong>Enforce GPU usage</strong></mark></td><td><code>force_gpu</code></td><td><code>boolean</code></td><td>Enforces GPU usage for this skill. Enforcing GPU usage for one skill can disable GPU usage for other skills.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Detections <a href="#user-content-detections" id="user-content-detections"></a>

{% tabs %}
{% tab title="Detection Data" %}

<table data-card-size="large" data-view="cards"><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>pose (Transformation)</code></td><td>Pick pose for the gripper</td></tr><tr><td><code>pixel (list)</code></td><td>Coordinates of the pick point in the image frame</td></tr><tr><td><code>quality (float)</code></td><td>Quality of the original detection, as reported by the AI model.</td></tr><tr><td><code>optimization_angle (float)</code></td><td>Only present if the parameter <code>optimization_orientation</code> is set to <code>true</code>. The parameter represents the rotation angle in radians that was applied to the original pick pose during the orientation-optimization step.</td></tr></tbody></table>
{% endtab %}

{% tab title="Detection Example" %}
{% code lineNumbers="true" %}

```json
{
  "detections":[
    {
      "pose":{
        "x":0.04955317931897811,
        "y":-0.3533660500320835,
        "z":0.3585186826107776,
        "rx":0.5325403821778465,
        "ry":0.005309205709819894,
        "rz":0.001448072456787665
      },
      "pixel":[
        463,
        146
      ],
      "quality":0.9912103414535522,
      "optimization_angle":0.0052687569243785185
    },
    {
      "pose":{
        "x":-0.09056620356773959,
        "y":-0.2685424399923941,
        "z":0.4337687332757568,
        "rx":0.5325403821778465,
        "ry":0.005309205709819894,
        "rz":0.001448072456787665
      },
      "pixel":[
        258,
        309
      ],
      "quality":0.9461788535118103,
      "optimization_angle":0.0052687569243785185
    },
    {
      "pose":{
        "x":-0.0912795197455176,
        "y":-0.26732958879254204,
        "z":0.43448801347182353,
        "rx":0.5325403821778465,
        "ry":0.005309205709819894,
        "rz":0.001448072456787665
      },
      "pixel":[
        257,
        311
      ],
      "quality":0.9578912258148193,
      "optimization_angle":0.0052687569243785185
    },
    {
      "pose":{
        "x":0.13534519716223037,
        "y":-0.17736243163479792,
        "z":0.4895606104602468,
        "rx":0.5325403821778465,
        "ry":0.005309205709819894,
        "rz":0.001448072456787665
      },
      "pixel":[
        577,
        457
      ],
      "quality":0.9114859700202942,
      "optimization_angle":0.0052687569243785185
    },
    {
      "pose":{
        "x":0.13250216629596673,
        "y":-0.17738318705110978,
        "z":0.48956632535729555,
        "rx":0.5325403821778465,
        "ry":0.005309205709819894,
        "rz":0.001448072456787665
      },
      "pixel":[
        573,
        457
      ],
      "quality":0.9156248569488525,
      "optimization_angle":0.0052687569243785185
    }
  ]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

[^1]: ist das richtig?
