# LumiScan VGR 1.8.4.6 – complete documentation

> All pages of the LumiScan VGR 1.8.4.6 manual (language: de) by HD Vision Systems GmbH, in navigation order. Each page starts with a level-1 heading followed by its URL; cite that URL. Manual: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/

# LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/index.html

|   |   |   |
| --- | --- | --- |
| ![LumiScan-X-Kamera über einer Kiste mit Teilen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/intro/step-1.svg)<br><br>**Die Kiste in 3D aufnehmen.** LumiScan X erzeugt eine Punktwolke der Teile. | ![Punktwolke mit erkanntem Teil und markiertem Greifpunkt](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/intro/step-2.svg)<br><br>**Teile und besten Griff finden.** Lage jedes Objekts, Greifpunkte und ein kollisionsfreier Weg. | ![Roboterarm greift ein Teil aus der Kiste](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/intro/step-3.svg)<br><br>**Der Roboter greift.** Die SPS erhält den besten Greifpunkt über PROFINET oder OPC UA. |

LumiScan VGR ist Software für bildgeführte Robotik beim Griff in die Kiste und in der automatisierten Montage. Sie erzeugt Punktwolken mit der 3D-Kamera LumiScan X, lokalisiert die Teile über 3D-Modelle oder bei komplexen Szenen mit maschinellem Lernen, berechnet Greifpunkte und plant einen kollisionsfreien Weg für den Roboter. Die SPS steuert jeden Schritt und erhält den besten Greifpunkt über PROFINET oder OPC UA.

Zur Lizenzierung siehe [Lizenz](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/system-requirements.html#licence). Fragen oder eine Fehlermeldung? Siehe [FAQ](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/faq.html).

LumiScan VGR ist ein Vision-System für Greifroboter (Vision-Guided Robotics). Es kombiniert 3D-Bildaufnahme, Objekterkennung und Robotersteuerung für automatisierte Greifvorgänge in industriellen Anwendungen.

# Beschreibung – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/description.html

LumiScan VGR ist eine Software, die für eine Vielzahl von Anwendungen eingesetzt werden kann, z. B. Bin-Picking oder automatisierte Montage.

Die hochwertigen Daten, die von der Kamera empfangen werden, werden verwendet, um präzise Punktwolken zur Objektlokalisation zu erzeugen.

Dabei werden zwei Ansätze verfolgt:

- Die erzeugte Punktwolke wird mit 3D-Modellen der Objekte verglichen.
- Für komplexere Szenen werden Algorithmen des maschinellen Lernens eingesetzt.

Dadurch ist LumiScan VGR hochgradig anpassungsfähig an verschiedene Objekttexturen.

Die Roboterkinematik und das Kollisionsnetzwerk berechnen die Bahn des Roboters und ermöglichen kollisionsfreie Bewegungen.

LumiScan VGR ist in Module gegliedert, die jeweils eine oder mehrere Kameras, Pipelines und Roboter enthalten (Abb. 1).

**LumiScan VGR: Module, SPS und Roboter**

```mermaid
%% LumiScan VGR - Module, SPS und Roboter. Mermaid rendert es im Browser; bearbeiten und Vorschau unter https://mermaid.live
flowchart LR
  sensor["LumiScan X"]
  subgraph vgr["LumiScan VGR"]
    direction LR
    cam["`**Kameramodul**
    austauschbar`"]
    pipe["`**Pipeline-Modul**
    austauschbar`"]
    robotmod["`**Robotermodul**
    austauschbar`"]
    cam -- Daten --> pipe -- Objekte --> robotmod
  end
  plc["`**SPS**`"]
  robot["Roboter"]
  sensor --- cam
  plc -- TriggerCamera --> cam
  plc -- ComputeObjects --> pipe
  plc -- "GetBestResult, GripBestResult" --> robotmod
  robotmod -- Greifpunkte --> plc
  plc -- Greifpunkte --> robot
  class cam,pipe,robotmod key
  classDef key fill:#faf6dc,stroke:#a8961f,color:#1f2328
```

Zu jedem Zeitpunkt ist ein Satz von Modulen aktiv, und alle Funktionen beziehen sich auf diese aktive Konfiguration. Die aktiven Module können entweder über die Benutzeroberfläche oder die SPS umgeschaltet werden.

Der allgemeine Workflow ist wie folgt:

1. Eine LumiScan-Kamera erfasst ein Bild und erzeugt eine Punktwolke.
2. In dem erfassten Bild werden Objekte detektiert.
3. Die 6-DoF-Pose jedes detektierten Objekts wird unter Verwendung der Punktwolke berechnet.
4. Für jedes Objekt wird ein Satz möglicher Greifpunkte berechnet.
5. Der beste verfügbare Greifpunkt wird über PROFINET an die SPS übertragen.

Die Software kann umfassend über JSON-Einstellungsdateien konfiguriert werden.

# Systemanforderungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/system-requirements.html

## IPC

Der IPC, auf dem LumiScan VGR ausgeführt wird, benötigt:

- Windows 11
- Eine NVIDIA-GPU, die CUDA 11.8 unterstützt
- CUDA Toolkit 11.8
- cuDNN 8.8.1

Die erforderlichen CUDA- und cuDNN-Installer werden von HD Vision Systems bereitgestellt.

## Kommunikationsschnittstelle

Für die Kommunikation mit der Steuerung ist mindestens eine der folgenden Schnittstellen erforderlich:

- PROFINET
- OPC UA

## Kamera

LumiScan VGR benötigt eine LumiScanX-Kamera, die über Ethernet mit dem IPC verbunden ist.

Bevor Sie LumiScan VGR installieren und betreiben, stellen Sie sicher, dass das Kameranetzwerk korrekt konfiguriert ist. Prüfen Sie auch die relevanten Einstellungen von Windows-Firewall und Virenschutz.

Detaillierte Informationen zu den erforderlichen Netzwerk-, Firewall- und Virenschutzeinstellungen finden Sie im Handbuch der LumiScanX-Kamera.

## Lizenz {#licence}

Wie LumiScan VGR lizenziert wird, hängt davon ab, wo Sie es gekauft haben und wo es läuft:

| Gekauft bei | Läuft auf | Lizenzierung |
| --- | --- | --- |
| HD Vision Systems | Windows 11 | Die Lizenz liegt auf Ihrem LumiScan Key. Sie ist ein Einmalkauf und wird nicht verlängert.<br><br>[Lizenzierungsweg: gekauft bei HD Vision Systems](https://docs.hdvisionsystems.com/de/lumiscan-licensing-de/1.0.4/path-hdvs.html) |
| ctrlX Store | Windows 11 | Die Lizenz liegt in ctrlX WORKS. Zusätzlich ist der LumiScan Key erforderlich; er schützt die Software vor Reverse Engineering.<br><br>[Lizenzierungsweg: ctrlX Store, Windows](https://docs.hdvisionsystems.com/de/lumiscan-licensing-de/1.0.4/path-ctrlx-windows.html) |

Jedes Gerät, auf dem LumiScan VGR gleichzeitig läuft, benötigt einen eigenen LumiScan Key. Keys können zwischen Geräten ausgetauscht werden.

Wie Sie die CodeMeter Runtime installieren und Lizenzen anfordern, verlängern und an einem anderen PC verwenden, steht in [LumiScan Lizenzierung](https://docs.hdvisionsystems.com/de/lumiscan-licensing-de/1.0.4/index.html).

# Installation – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/installation.html

## CodeMeter Runtime installieren {#installing-codemeter-runtime}

LumiScan VGR wird mit dem LumiScan Key lizenziert und benötigt die CodeMeter Runtime 9.00 oder neuer. Installieren Sie die CodeMeter Runtime und stecken Sie den LumiScan Key ein, wie unter [CodeMeter Runtime installieren](https://docs.hdvisionsystems.com/de/lumiscan-licensing-de/1.0.4/installing-codemeter.html) beschrieben.

## Installation von LumiScan VGR {#installing-lumiscan-vgr}

Installieren und konfigurieren Sie vor der Installation von LumiScan VGR die LumiScanX-Kamera gemäß dem LumiScanX-Handbuch.

So installieren Sie LumiScan VGR:

1. Schließen Sie alle geöffneten Anwendungen.
2. Navigieren Sie zum Speicherort des LumiScan-VGR-Installationsprogramms.
3. Doppelklicken Sie auf `Installer_LumiScan_VGR_va_b_c_d.exe`\*.
4. Warten Sie, bis das Fenster mit der Lizenzvereinbarung geöffnet wird.
5. Akzeptieren Sie die Lizenzbedingungen, indem Sie auf **Accept** klicken.
6. Um den voreingestellten Installationsspeicherort zu ändern, klicken Sie auf **Browse**, wählen Sie den gewünschten Speicherort aus und klicken Sie auf **OK**.
7. Klicken Sie auf **Next**, um fortzufahren.
8. Wählen Sie bei Bedarf einen **Start Menu**-Ordner für die Programmverknüpfungen aus.
9. Um keine Verknüpfungen zu erstellen, wählen Sie **Do not create links**.
10. Klicken Sie auf **Install**.
11. Klicken Sie nach Abschluss der Installation auf **OK**.
12. Klicken Sie auf **Finish**.

**wobei \*a**, **b**, **c** und **d** von der Softwareversion abhängen.

> [!NOTE]
> Die Startmenü-Auswahl kann je nach Installationspaket entfallen.

# JSON-Einstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings.html

Die JSON-Einstellungen bilden die zentrale Konfigurationsschnittstelle für LumiScan VGR. Sie enthalten Informationen zu Kameras, Aufnahmen, neuronalen Netzen, Robotern, Objekten, Pipelines und weiteren Anwendungseinstellungen (Abb. 2).

Die erforderlichen Parameter hängen von der Anwendung und der Projektkonfiguration ab.

![Ein Flussdiagramm, das Einstellungen für Kameras, Netze, Roboter, Objekte, Geometrie, Grafik und Bewegung sowie deren Verbindungen zu Detektion, Kalibrierung und anderen Anwendungsfunktionen zeigt](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/vgr.png)

Für jede Anwendung wird ein Projektordner erstellt. Er enthält alle für das Projekt erforderlichen Dateien und Ordner.

Die Hauptabschnitte der JSON-Einstellungen sind in Tabelle 1 beschrieben. Klicken Sie auf einen Parameternamen, um die detaillierte Konfigurationsreferenz für den jeweiligen Abschnitt zu öffnen.

**Tabelle 1. Tabelle 1: Standard-JSON-Einstellungen von LumiScan VGR**

| Parameter | Beschreibung |
| --- | --- |
| [`meta`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/meta.html) | Enthält Metadaten zur Einstellungsdatei, einschließlich des Einstellungsformats, der Zielmaschine, des Anwendungsnamens und der Softwareversion. |
| [`cameras`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/cameras.html) | Enthält die von der Anwendung verwendeten physischen Kameras. In der Regel ist nur eine Kamera erforderlich, es können jedoch mehrere Kameras konfiguriert werden.<br> Jeder Eintrag enthält die Kamera-`id`, die der Seriennummer der LumiScan-Kamera entspricht, sowie die `calibrationFile`. |
| [`recordings`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/recordings.html) | Definiert, wie Bild- und Punktwolkendaten von einer LumiScan-Kamera aufgenommen werden. Zu den Einstellungen gehören Filter, Tiefenbereich und Belichtungsparameter.<br> Es können mehrere Aufnahmekonfigurationen erstellt werden, um verschiedene Szenen oder Objekte zu unterstützen. |
| [`networks`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/networks.html) | Enthält die von der Anwendung verwendeten neuronalen Netze und definiert, wie sie in LumiScan VGR geladen werden.<br> Verschiedene Objekte oder Detektionsaufgaben können unterschiedliche Netze oder Netzarchitekturen erfordern. |
| [`robots`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/robots.html) | Enthält Informationen zur Robotergeometrie und zur Position des Roboters relativ zu den Kameras.<br> Ein physischer Roboter kann durch mehrere Roboterkonfigurationen dargestellt werden, um beispielsweise verschiedene Greifer zu beschreiben.<br><br>Jede Konfiguration erfordert eine gültige Hand-Auge-Kalibrierungstransformation und verweist auf eine Roboterbeschreibungsdatei im Format `.urdf`.<br><br>Für die Kollisionserkennung kann zusätzliche 3D-Geometrie bereitgestellt werden. Roboter und Greifer können außerdem mithilfe von CAD-Modellen im Format `.stl` visualisiert werden.<br><br>Objekte wie Behälter können ebenfalls als Roboter dargestellt werden, wenn ihre Geometrie für die Kollisionserkennung erforderlich ist. |
| [`objects`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/objects.html) | Definiert die Objekte oder Ergebnisse, die von der Anwendung detektiert werden können.<br><br>Zu greifende Objekte werden einzeln aufgelistet. LumiScan VGR kann sowohl 2D- als auch 3D-Daten verwenden, um Objekte zu detektieren und im Raum zu lokalisieren.<br><br>Je nach Anwendung kann die Detektion auf Folgendem basieren:<br><br>- 2D-Detektion mit neuronalen Netzen<br>- 3D-Objektdetektion<br>- einer Kombination beider Methoden<br><br>Es können auch abstrakte Objekte definiert werden, beispielsweise zusammengesetzte Objekteigenschaften oder Klassifikationsergebnisse wie `emptyContainer`. |
| [`pipelines`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/pipelines.html) | Definiert, wie Bild- und Punktwolkendaten verarbeitet werden, um Objektposen zu bestimmen.<br> Eine Pipeline kann Punktwolken-Verarbeitungsschritte, eine Region of Interest (ROI) und eine Liste zu detektierender Objekte enthalten.<br><br>Es können mehrere Pipelines konfiguriert und von der SPS ausgewählt werden. Zusammen mit der Kamera- und Roboterkonfiguration legt die aktive Pipeline fest, wie ein Greifvorgang durchgeführt wird. |
| [`user`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/user.html) | Optional. Enthält Einstellungen für den Benutzerzugriff, einschließlich Passwortschutz für Funktionen, die erhöhte Berechtigungen erfordern, wie `adminPassword` und `manualModePassword`. |
| [`system`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/system.html) | Optional. Enthält Systemeinstellungen für Aufnahme und Debugging, einschließlich der Festlegung, welche Diagnosedaten aufgezeichnet werden sollen. |

## Detaillierte JSON-Einstellungen

Detaillierte Beschreibungen der verfügbaren Eigenschaften und Konfigurationsoptionen finden Sie auf den folgenden Seiten:

- [Meta-Einstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/meta.html)
- [Kameraeinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/cameras.html)
- [Aufnahmeeinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/recordings.html)
- [Netzwerkeinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/networks.html)
- [Robotereinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/robots.html)
- [Objekteinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/objects.html)
- [Pipeline-Einstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/pipelines.html)
- [Benutzereinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/user.html)
- [Systemeinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/system.html)

# Meta-Einstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/meta.html

Der Abschnitt `meta` enthält Informationen zur JSON-Einstellungsdatei und zur Version von LumiScan VGR, für die die Konfiguration vorgesehen ist.

Er identifiziert das Einstellungsformat, verknüpft die Konfiguration mit einer Zielmaschine und erfasst die zugehörige Anwendung und Softwareversion.

## Eigenschaften

| Eigenschaft | Beschreibung |
| --- | --- |
| `inputFileType` | Identifiziert den Typ der Einstellungsdatei. Für LumiScan-VGR-Einstellungen lautet der Wert `LumiScanVGRSettings`. |
| `inputFileVersion` | Gibt die Version des JSON-Einstellungsformats an. |
| `targetMachine` | Gibt die Maschine oder das System an, für das die Konfiguration vorgesehen ist. |
| `programName` | Gibt die Anwendung an, die die Konfiguration verwendet. Für LumiScan VGR lautet der Wert `LumiScanVGR`. |
| `programVersion` | Gibt die Version von LumiScan VGR an, die mit der Konfiguration verknüpft ist. |

## Metadatenformat

Das JSON-Metadatenformat wurde nach Version 1.7.0.0 von LumiScan VGR geändert.

**Altes Format**

```json
{
  "inputFileType": "LumiScanVGRSettings",
  "inputFileVersion": "1.2.0",
  "VGRVersion": "1.7.0.4",
  ...
}
```

**Neues Format**

```json
{
  "meta": {
    "inputFileType": "LumiScanVGRSettings",
    "inputFileVersion": "1.2.0",
    "targetMachine": "Inspection1",
    "programName": "LumiScanVGR",
    "programVersion": "1.7.0.5"
  },
  ...
}
```

Neue Konfigurationen sollten die aktuelle `meta`-Struktur verwenden.

# Kameraeinstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/cameras.html

Der Abschnitt `cameras` definiert die physischen LumiScan-Kameras, die vom Projekt verwendet werden, sowie die Einstellungen, die zur Aufnahme kalibrierter Bild- und Tiefeninformationen erforderlich sind.

Zu diesen Einstellungen gehören die Kamerakennung, die Belichtungssteuerung, die Tiefenschätzung sowie Korrekturen, die auf die Kameradaten angewendet werden.

## Kameraparameter

- [CameraSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/camera-settings.html)
  - [AutoexposureSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/autoexposure-settings.html)
  - [DepthEstimationSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/depth-estimation-settings.html)
  - [CorrectionSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-base.html)
    - [CorrectionSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings.html)
    - [CorrectionFeature](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-feature.html)
    - [Cloud-Scale-Korrektur](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-scale.html)
    - [Cloud-Z-Kalibrierung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration.html)
      - [Bild-Distanz-Paar](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration-imagedistancepair.html)

# Aufnahmeeinstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/recordings.html

Der Abschnitt `recordings` definiert, wie Bild- und Punktwolkendaten aufgenommen und für die weitere Verarbeitung vorbereitet werden.

Aufnahmekonfigurationen können an verschiedene Szenen, Objekte und Aufnahmebedingungen angepasst werden. Sie können Parameter für die Bildaufnahme sowie die Filterung der erzeugten Punktwolke enthalten.

## Aufnahmeparameter

- [RecordingSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-settings.html)

### Punktwolken-Filter

- [CloudFilterParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/cloud-filter-parameter-base.html)
  - [ConcreteCloudFilterParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/concrete-cloud-filter-parameter-base.html)
    - [BoxFilterParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/box-filter-parameter.html)
    - [RadiusOutlierRemovalParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/radius-outlier-removal-parameters.html)
    - [RemoveNaNFilterParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/remove-na-n-filter-parameter.html)

# Netzwerkeinstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/networks.html

Der Abschnitt `networks` definiert die neuronalen Netze, die für LumiScan VGR verfügbar sind, sowie wie sie von der Anwendung geladen und verwendet werden.

Verschiedene Objekte oder Detektionsaufgaben können unterschiedliche Netze oder Netzarchitekturen verwenden.

## Netzwerkparameter

- [NetworkSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/network-settings.html)
  - [ModelTrainingParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/model-training-parameters.html)

### Alte Netzwerkbeschreibung (Legacy)

Die folgenden Einstellungen beschreiben das alte (Legacy-)Netzwerkkonfigurationsformat.

- [NetworkDescription](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-network-description.html)
  - [InputLayout](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-input-layout.html)
  - [OutputLayout](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-output-layout.html)
  - [TensorLayout](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-tensor-layout.html)

# Robotereinstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/robots.html

Der Abschnitt `robots` definiert die Roboter, Greifer, Koordinatentransformationen und Bewegungsinformationen, die für die Roboterinteraktion erforderlich sind.

Ein physischer Roboter kann durch mehrere Konfigurationen dargestellt werden, beispielsweise wenn verschiedene Greifer verwendet werden. Die Robotereinstellungen beschreiben außerdem die Positionen und Bewegungssegmente, die zum Anfahren und Ausführen eines Griffs erforderlich sind.

## Roboterparameter

- [RobotSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/robot-settings.html)

### Koordinatentransformationen

- [Transform](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/transform.html)

### Wegpunkte

- [WaypointSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-base.html)
  - [WaypointSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings.html)
    - [Absoluter Wegpunkt](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html)
    - [Relativer Wegpunkt](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html)
    - [Klon-Wegpunkt](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html)
    - [Greifpunkt-Wegpunkt](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html)

### Pfadsegmente

- [PathSegmentSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/path-segment-settings.html)

# Objekteinstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/objects.html

Der Abschnitt `objects` definiert die Objekte und weiteren Ergebnisse, die LumiScan VGR detektieren und lokalisieren kann.

Die Objekteinstellungen können festlegen, wie Objekte in 2D detektiert werden, wie ihre Pose anhand von 3D-Daten bestimmt wird, wie Detektionsergebnisse gefiltert oder sortiert werden und wie mit Objektsymmetrien umgegangen wird.

Je nach Anwendung können die 2D-Detektion, die 3D-Detektion oder eine Kombination beider Methoden verwendet werden.

## Objektparameter

- [ObjectSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-settings.html)
  - [ObjectDetectionParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-detection-parameters.html)

### 2D-Detektion

- [Detection2DSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-settings.html)
  - [Detection2DStepSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-base.html)
    - [Detection2DStepSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings.html)
      - [Instanzen aus Datei hinzufügen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html)
      - [Feature-Matching](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html)
      - [Nach Klassifikation filtern](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html)
      - [Seitenverhältnis neu ausrichten](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html)
      - [Klassifikation neu ausrichten](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html)
      - [Rotation um Winkel](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html)
      - [Skalieren](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html)
      - [Seitenverhältnis skalieren](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html)
      - [Skalieren auf](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html)
      - [Vollständig setzen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html)
      - [Netzwerk festlegen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html)
      - [Anderes festlegen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html)
      - [ROI festlegen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html)
      - [ROI-Pipeline festlegen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html)
      - [Verschieben](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html)

### 2D-Filterung und -Sortierung

- [FilteringObject2DParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/filtering-object-2d-parameter-base.html)
- [SortingObject2DParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-object-2d-parameter-base.html)
  - [SortingBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-base.html)
    - [SortingBaseCRTP](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-base-crtp.html)
    - [NullSort](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/null-sort.html)
    - [SortDirection](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sort-direction.html)
    - [SortPosition](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sort-position.html)
    - [TopNParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/top-n-parameter.html)
    - [DistanceToReferencePointParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/distance-to-reference-point-parameter.html)

### 3D-Detektion

- [Detection3DSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-base.html)
  - [Detection3DSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings.html)
    - [Aus Umgebung greifen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html)
    - [Linienanpassung an die Längsachse](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html)
    - [Gemischte Ebenenanpassung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html)
    - [Objektabgleich](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html)
    - [Objektverfeinerung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html)
    - [Ebenenanpassung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html)
    - [RANSAC-Zylinderanpassung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html)
    - [RANSAC-Ebenenanpassung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html)
  - [Detection3DSettingsGeom](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-geom.html)
  - [ObjectRefinementParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-refinement-parameters.html)

### Symmetrie

- [SymmetrySettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-base.html)
  - [SymmetrySettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings.html)
    - [Rotationssymmetrie](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-symmetry-type-rotation.html)

# Pipeline-Einstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/pipelines.html

Der Abschnitt `pipelines` definiert, wie Bild- und Punktwolkendaten verarbeitet werden, um Objektposen zu bestimmen und geeignete Greifergebnisse zu berechnen.

Eine Pipeline kombiniert die erforderlichen Verarbeitungsschritte für eine bestimmte Anwendung. Es können mehrere Pipelines konfiguriert und von der SPS ausgewählt werden.

## Pipeline-Parameter

- [PipelineSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/pipeline-settings.html)

### Greifpunkt-Berechnung

- [GripPointSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-settings.html)
  - [GripPointFilterSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings-base.html)
    - [GripPointFilterSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings.html)
      - [Z-Achsen-Filter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings-filter-type-z-axis.html)
  - [GripPointCorrection](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-correction.html)
    - [OffsetMap](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-correction-offset-map.html)

# Benutzereinstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/user.html

Der optionale Abschnitt `user` definiert Zugriffsbeschränkungen für Funktionen, die zusätzliche Berechtigungen erfordern.

Für den administrativen und den manuellen Betrieb können Passwörter konfiguriert werden, sodass diese Funktionen nur autorisierten Benutzern zur Verfügung stehen.

## Benutzerparameter

- `adminPassword`
- \`manualModePassword

# Systemeinstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/system.html

Der optionale Abschnitt `system` enthält Einstellungen zum allgemeinen Anwendungsverhalten, zur Aufnahme, zur Pipeline-Ausführung und zur Diagnose.

Diese Einstellungen dienen in erster Linie zur Konfiguration des systemweiten Verhaltens und nicht einer einzelnen Kamera, eines Objekts, Roboters oder einer Pipeline.

## Systemparameter

- [SystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/system-settings.html)
  - [RecordingSystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-system-settings.html)
  - [PipelineSystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/pipeline-system-settings.html)

# LumiScan VGR starten

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/start-menu.html

LumiScan VGR kann entweder über das Startmenü oder über die Kommandozeile gestartet werden.

## Start über das Startmenü

Beim Start der Software öffnet sich das Startmenü-Fenster (Abb. 3).

So starten Sie LumiScan VGR:

1. Geben Sie den Pfad zur Konfigurationsdatei ein.
2. Klicken Sie alternativ auf **Load** und wählen Sie die Konfigurationsdatei aus.
3. Aktivieren Sie bei Bedarf zusätzliche Startoptionen.
4. Klicken Sie auf **Start**.

Standardmäßig ist nur der Pfad zur Konfigurationsdatei erforderlich. Zusätzliche Optionen stehen für die Kamerasimulation, die SPS-Simulation und den Debug-Modus zur Verfügung.

![LumiScan-VGR-Startmenü mit Pfad zur Einstellungsdatei, Optionen für Kamerasimulation, SPS-Simulation und Debug-Modus sowie den Schaltflächen Cancel und Start](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/Screenshot_2024-02-26_161132.png)

## Start über die Kommandozeile

LumiScan VGR kann auch über die Kommandozeile gestartet werden.

Mindestens erforderlich ist die Angabe der Einstellungsdatei über die Option `-s` oder `--settings`.

Die verfügbaren Kommandozeilenoptionen sind in Tabelle 2 aufgelistet.

**Tabelle 1. Tabelle 2: Kommandozeilenargumente**

| Kommandozeilenoption | Wirkung |
| --- | --- |
| `-s`, `--settings <filepath>` | Erforderlich. Gibt den Pfad zur Einstellungsdatei an. |
| `--gen-settings` | Erstellt eine Einstellungsdatei. |
| `-v`, `--version` | Zeigt Informationen zur aktuellen Softwareversion an. |
| `--simulate-camera` | Optional. Simuliert eine Kamera, sodass keine physische Kamera angeschlossen werden muss. Bilder und Punktwolken werden von der Festplatte geladen.<br> Für Testzwecke vorgesehen. |
| `--simulate-sps` | Optional. Simuliert die SPS, sodass keine physische SPS angeschlossen werden muss. Die SPS-Kommunikation kann über den PROFINET-Tab simuliert werden. |
| `-d`, `--debug` | Optional. Startet LumiScan VGR im Debug-Modus. |
| `-?`, `-h`, `--help` | Zeigt die Kommandozeilen-Hilfe an. |
| `--help-all` | Zeigt zusätzliche Hilfe an, einschließlich Qt-spezifischer Optionen. |

# Benutzeroberfläche – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html

Standardmäßig enthält die Benutzeroberfläche den Tab **Bild**, Statusinformationen und die Schaltfläche **Manual Mode** (Abb. 4).

Das lila Rechteck kennzeichnet die Region of Interest (ROI). Es definiert den Bereich des aufgenommenen Bilds, in dem das Netz nach Objekten sucht.

Wenn der Debug-Modus aktiviert ist, wird zusätzlich ein gelbes Polygon der automatischen Belichtung angezeigt (Abb. 5). Dies ist hilfreich beim Konfigurieren der anfänglichen Belichtungsparameter.

![Benutzeroberfläche von LumiScan VGR mit dem Tab Bild, Statusinformationen und den Steuerelementen für den manuellen Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/LumIScanVGRps.png)

Eine detaillierte Beschreibung der Benutzeroberfläche finden Sie in Abb. 6 und Tabelle 4.

![Benutzeroberfläche von LumiScan VGR mit einem aufgenommenen Bild, erkannten Objekten, Statusinformationen sowie manuellen und administrativen Steuerelementen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/Screenshot_2024-02-26_160226.png)

**Tabelle 1. Tabelle 4: Elemente der LumiScan-VGR-Benutzeroberfläche**

| Element | Beschreibung |
| --- | --- |
| T0 | **Bild-Tab**<br><br>Zeigt das Bild der aktiven Kamera zusammen mit den aktuellen Ergebnissen der Objekterkennung an.<br><br>- Im manuellen Modus können in dieser Ansicht Bounding Boxes von Objekten gezeichnet und geändert werden. |
| T1 | **Szenen-Tab** ([Abb. 9](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/admin-mode.html))<br><br>Zeigt 3D-Informationen zur Szene sowie die berechneten Greifpunkte für erkannte Objekte an.<br><br>Die Ansicht kann mit der Maus gesteuert werden:<br><br>- Scrollen Sie mit der mittleren Maustaste, um hinein- oder herauszuzoomen.<br>- Halten Sie die mittlere Maustaste gedrückt, und bewegen Sie die Maus, um die Ansicht zu drehen.<br>- Halten Sie **Shift** und die mittlere Maustaste gedrückt, während Sie die Maus bewegen, um den angezeigten Ausschnitt zu verschieben.<br><br>Beim Öffnen dieses Tabs werden zusätzliche Szenen-Steuerelemente (Sc1 bis Sc6) angezeigt.<br><br>- Nur im [Admin-Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/admin-mode.html) sichtbar. |
| T2 | **PROFINET-Tab** ([Abb. 10](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/admin-mode.html))<br><br>Zeigt die aktuellen Daten an, die mit der SPS ausgetauscht werden.<br><br>- Nur im [Admin-Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/admin-mode.html) sichtbar. |
| S1 | Zeigt allgemeine Statusinformationen an. |
| S2 | Zeigt den aktuellen Anwendungsstatus an. Weitere Informationen finden Sie in [Tabelle 6: Rückgabewerte](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#status-information). |
| S3 | Öffnet das Log-Fenster, das zusätzliche Informationen zu Prozessen und Ereignissen in der Anwendung bereitstellt. |
| S4 | Sammelt Diagnoseinformationen zur Anwendung.<br><br>- Die gesammelten Daten können verschlüsselt und zu Diagnosezwecken an HD Vision Systems gesendet werden.<br>- Die Optionen **Camera png** und **Camera ply** unter **Export** in den **Admin-Einstellungen** (A1) müssen aktiviert sein, um die entsprechenden Kameradaten einzuschließen. |
| M1 | Aktiviert den manuellen Modus. Siehe [Manueller Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/manual-mode.html). |
| M2 | Enthält die im manuellen Modus verfügbaren Steuerelemente. Siehe [Manueller Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/manual-mode.html). |
| M3 | **Schritt 1** des manuellen Workflows: Benutzer auswählen.<br><br>- Vor dem Fortfahren muss ein Benutzer ausgewählt werden.<br>- Neue Benutzer können über die Schaltfläche **…** hinzugefügt werden.<br>- Der ausgewählte Benutzer wird beim Export neuer Trainingsdaten als Metadaten gespeichert.<br>- Nur im manuellen Modus sichtbar. |
| M4 | **Schritt 2** des manuellen Workflows: Bild aufnehmen und analysieren.<br><br>- Nimmt ein neues Bild auf und erkennt Objekte.<br>- Anschließend können erkannte Objekte korrigiert und fehlende Objekte mit den Labels aus M5 annotiert werden.<br>- Die Funktion kann mehrfach ausgeführt werden.<br>- Nur im manuellen Modus sichtbar. |
| M5 | **Schritt 3** des manuellen Workflows: Label auswählen.<br><br>- Enthält alle verfügbaren Objekt-Labels.<br>- Das ausgewählte Label wird beim Erstellen neuer Bounding Boxes im Bild-Tab (T0) verwendet.<br>- Nur im manuellen Modus sichtbar. |
| M6 | **Schritt 4** des manuellen Workflows: Vorgang abschließen.<br><br>Ist das Bild korrekt annotiert, klicken Sie auf **DONE**. Eine Bestätigungsmeldung zeigt an, dass die Trainingsdaten exportiert und die Greifpunkte berechnet wurden.<br><br>Können keine Greifpunkte berechnet werden, weil die 3D-Informationen ungültig sind – beispielsweise aufgrund einer schlechten Punktwolke oder einer falschen Konfiguration –, wechselt der Status zu **RESULTS_EMPTY**. Es wird keine Bestätigung angezeigt, und es werden keine Trainingsdaten exportiert.<br><br>- Die Trainingsdaten werden in den Ausgabeordner für Trainingsdaten exportiert. Siehe [Generierte Daten und Dateien](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/output-data.html).<br>- Nur im manuellen Modus sichtbar. |
| A1 | **Admin-Einstellungen**<br><br>Enthält Optionen zum Aktivieren und Deaktivieren des Datenexports.<br><br>- Die Einstellungen können bei laufender Anwendung geändert werden.<br>- Die verfügbaren Ausgabeoptionen können sich unterscheiden, wenn der Debug-Modus aktiviert ist. Siehe [Admin- und Debug-Modi](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/admin-mode.html).<br>- Nur im Admin-Modus sichtbar. |
| A2 | **Admin-Steuerelemente**<br><br>Enthält Steuerelemente zum manuellen Ausführen einzelner Anwendungsfunktionen.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv, um sicherzustellen, dass der automatische Prozess angehalten ist. |
| A3 | Wechselt die aktive Kamera.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A4 | Wechselt die aktive Pipeline.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A5 | Wechselt den aktiven Roboter.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A6 | Initialisiert die Anwendung.<br><br>Die Initialisierung ist erforderlich, bevor die Funktionen A7 bis A13 verwendet werden können.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A7 | Nimmt ein Bild mit der aktiven Kamera auf.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A8 | Analysiert das zuletzt aufgenommene Bild mit der aktiven Pipeline.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A9 | Exportiert das aktuell annotierte Bild als Trainingsdaten.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A10 | Berechnet die Pose aller erkannten Objekte im aktuell annotierten Bild.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A11 | Hebt das Objekt mit der höchsten Greifpriorität hervor.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A12 | Simuliert das Greifen des Objekts mit der höchsten Greifpriorität durch den Roboter.<br><br>Die entsprechende Bounding Box wird aus dem Bild-Tab (T0) entfernt, und die Position wird als letzte Greifposition gespeichert.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A13 | Leert alle internen Puffer.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| A14 | Führt benutzerdefinierte Befehle aus.<br><br>- Nur im Admin-Modus sichtbar.<br>- Nur im manuellen Modus aktiv. |
| Sc1 | **Szenen-Einstellungen**<br><br>Enthält die Steuerelemente zum Konfigurieren des Szenen-Tabs.<br><br>- Nur im Admin-Modus sichtbar. |
| Sc2 | **Bezugsframe**<br><br>Wählt das Koordinatensystem (Frame) aus, relativ zu dem die Szene angezeigt wird.<br><br>Zur Auswahl stehen unter anderem:<br><br>- **Camera**<br>- **Robot**<br>- Nur im Admin-Modus sichtbar. |
| Sc3 | **Allgemein**<br><br>- **Show Cloud**: Zeigt die generierte Punktwolke an.<br>- Nur im Admin-Modus sichtbar. |
| Sc4 | **Objekt**<br><br>Enthält Visualisierungsoptionen für erkannte Objekte.<br><br>- **Mesh**: Zeigt das aus der Punktwolke erzeugte CAD-Modell an.<br>- **Highlight**: Hebt die für das Objekt-Matching verwendeten Punktwolkenpunkte rot hervor.<br> Hierfür muss **Show Cloud** (Sc3) deaktiviert sein.<br>- **Bounding Box**: Zeigt die Bounding Box jedes Objekts gelb an.<br>- **Show Origin**: Zeigt das Koordinatensystem jedes erkannten Objekts an.<br>- **Show Grip Candidates**: Zeigt die verfügbaren Greifkandidaten an.<br> Hierfür muss **Show Origin** deaktiviert sein.<br>- Nur im Admin-Modus sichtbar. |
| Sc5 | **Roboter**<br><br>Enthält Visualisierungsoptionen für den Roboter und seine Umgebung.<br><br>- **Static Geometries**: Zeigt statische Elemente in der Roboterumgebung an. Diese Option ist verfügbar, wenn **Collision Meshes** oder **Visualization Meshes** aktiviert sind.<br>- **Collision Meshes**: Zeigt die vereinfachte Robotergeometrie, die für die Kollisionserkennung verwendet wird. Verfügbar erst nach Ausführung von **Show Best Grip** (A11).<br>- **Visualization Meshes**: Zeigt das Visualisierungsmodell des Roboters an. Verfügbar erst nach Ausführung von **Show Best Grip** (A11).<br>- **Coordinate Frames**: Zeigt die Koordinatenframes des Roboters an.<br>- **Collision Octree**: Zeigt Informationen an, die zur Bewertung möglicher Kollisionen bei der Roboterbewegung herangezogen werden.<br>- **Animate**: Simuliert die Roboterbewegung automatisch. Diese Option ist verfügbar, nachdem **Show Best Grip** (A11) oder **Simulate Grip** (A12) ausgeführt wurde.<br>- Nur im Admin-Modus sichtbar. |
| Sc6 | Bewegt den Roboterarm durch die simulierte Bewegung.<br> Diese Option ist verfügbar, nachdem **Show Best Grip** (A11) oder **Simulate Grip** (A12) ausgeführt wurde und wenn **Animate** deaktiviert ist. |

> [!NOTE]
> Der manuelle Modus erfordert, dass die Anwendung initialisiert ist, z. B. durch Ausführen von **Setup** im Admin-Modus oder von der SPS aus. Ist die Anwendung nicht initialisiert, wird die Kamera möglicherweise nicht erkannt, und es können keine Bilder aufgenommen werden.

# Admin- und Debug-Modus – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/admin-mode.html

LumiScan VGR bietet zusätzliche Modi für Konfiguration, Tests, Wartung und Diagnose. Diese Modi können über die in Tabelle 3 aufgeführten Tastenkombinationen aktiviert werden.

**Tabelle 1. Tabelle 3: Tastenkombinationen**

| Tastenkombination | Auswirkung |
| --- | --- |
| Strg + Umschalt + A | Wechselt in den Admin-Modus. |
| Strg + Umschalt + D | Wechselt in den Debug-Modus. |
| Strg + Umschalt + V | Zeigt die aktuelle Build-Version an. |

## Admin-Modus

Der Admin-Modus dient der Konfiguration, dem Testen und der Wartung.

Drücken Sie **Strg + Umschalt + A**, um den Admin-Modus zu aktivieren oder zu deaktivieren.

Wenn der Admin-Modus aktiv ist, stehen zusätzliche Steuerelemente und Ansichten zur Verfügung. Dazu gehören die Admin-Steuerelemente und die Funktionen des Tabs **Scene**, die in [Tabelle 4](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html) beschrieben sind (A1 bis A14 sowie Sc1 bis Sc6).

![LumiScan-VGR-Benutzeroberfläche im Admin-Modus mit Kamerabild und zusätzlichen Steuerelementen für Kamera, Roboter und Verarbeitung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/adminmodus1.png)

![LumiScan-VGR-Admin-Oberfläche mit Scene-Einstellungen, Auswahl des aktiven Geräts und administrativen Steuerelementen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/Screenshot_2024-02-26_160405.png)

![LumiScan-VGR-Benutzeroberfläche mit aufgenommenem Bild und zusätzlichen administrativen Steuerelementen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/Screenshot_2024-02-26_160226.png)

## Debug-Modus

Der Debug-Modus liefert zusätzliche Diagnoseinformationen und Visualisierungen, die bei der Erstkonfiguration und der Fehlerbehebung hilfreich sind.

Drücken Sie **Strg + Umschalt + D**, um den Debug-Modus zu aktivieren oder zu deaktivieren.

Wenn der Debug-Modus aktiv ist:

- Das Log-Level der Konsole wird auf „Debug“ geändert. Die Konsole zeigt dann dieselbe detaillierte Ausgabe an, die auch in die Log-Datei geschrieben wird.
- Im Tab **Image** wird ein gelbes Polygon für die automatische Belichtung angezeigt. Dies kann bei der Konfiguration und Prüfung der initialen Belichtungsparameter hilfreich sein.
- Die Exportoptionen in der Gruppe **Admin Settings** (A1) können eine zusätzliche Diagnoseausgabe erzeugen.

Der Debug-Modus ist im normalen Betrieb nicht erforderlich.

# Manueller Modus – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/manual-mode.html

Der manuelle Modus wird verwendet, um neue Trainingsdaten zu erstellen, wenn das neuronale Netz noch keine ausreichend robusten Erkennungsergebnisse liefert. Er ermöglicht das manuelle Korrigieren erkannter Objekte und Labels.

Der manuelle Modus kann auch verwendet werden, um den Workflow manuell fortzusetzen, wenn die automatische Erkennung nicht erfolgreich ist – beispielsweise wenn ein Objekt im 2D-Bild nicht korrekt erkannt wird.

Um den manuellen Modus zu aktivieren, klicken Sie auf die Schaltfläche **Manual Mode** ([M1](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html)).

Wenn in der Einstellungsdatei ein Passwort für den manuellen Modus konfiguriert ist, muss dieses beim Aktivieren des manuellen Modus eingegeben werden. Ist der Admin-Modus bereits aktiv, ist kein Passwort erforderlich.

Während der manuelle Modus aktiv ist:

- werden die manuellen Steuerungen ([M2](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html)) und die Workflow-Schritte [M3](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html) bis [M6](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html) angezeigt,
- wird der SPS-gesteuerte Betrieb angehalten, und die meisten Funktionen können nicht mehr von der SPS ausgelöst werden,
- wird der manuelle Workflow über die Schritte M3 bis M6 ausgeführt, wie in [Tabelle 4](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html) beschrieben.

![Manueller Modus von LumiScan VGR mit einem aufgenommenen Bild und den Steuerelementen des manuellen Workflows](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/mmobraz.png)

# Bildannotation – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/image-annotation.html

Im manuellen Modus (siehe [Manueller Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/manual-mode.html)) können im Tab **Bild** ([T0](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html)) orientierte Bounding Boxes hinzugefügt oder geändert werden.

**Hinzufügen einer Bounding Box:** Eine neue Bounding Box wird in drei Schritten hinzugefügt:

1. Doppelklicken Sie an die Stelle, an der sich die Unterkante der Bounding Box befinden soll. Diese Kante wird lila angezeigt.
2. Klicken Sie auf die Oberkante des Objekts, um die Höhe der Bounding Box festzulegen.
3. Klicken Sie auf einen Punkt an einer der beiden Seiten des Objekts, um die Breite der Bounding Box festzulegen.

**Auswählen einer Bounding Box:** Klicken Sie mit der linken Maustaste auf eine vorhandene Box, um sie auszuwählen. Eine ausgewählte Box wird in einer leicht abweichenden Farbe hervorgehoben und zeigt vier gelbe runde Anfasser an den Ecken.

**Ändern des Labels:** Während eine Bounding Box ausgewählt ist, können Sie ihr Label ändern, indem Sie im Label-Panel ein anderes Label auswählen oder ein neues Label eingeben.

**Bearbeiten einer Bounding Box:** Eine ausgewählte Box kann auf verschiedene Arten bearbeitet werden:

- Ziehen Sie innerhalb der Box, um sie zu verschieben.
- Ziehen Sie an einer Kante, um die Größe der Box in diese Richtung zu ändern.
- Ziehen Sie an einer Ecke, um die Box um ihren Mittelpunkt zu drehen.

**Löschen einer Bounding Box:** Klicken Sie mit der rechten Maustaste auf eine ausgewählte Box, um sie zu löschen.

> [!NOTE]
> Die meisten Funktionen in der Admin-Steuerungsgruppe sind nur verfügbar, während der manuelle Modus aktiv ist. Dies verhindert Konflikte mit dem SPS-gesteuerten Betrieb.

# SPS-Einstellungen – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html

Die SPS-Parameter sind im Tab **PROFINET** verfügbar, mit dem die zwischen LumiScan VGR und der SPS ausgetauschten Daten überwacht werden können.

**SPS-Parameter können nur geändert werden, während der manuelle Modus deaktiviert ist.**

## Prozessablauf {#process-flow}

Jeder Prozess verwendet drei Variablen:

1. `OUT_*Ready`
2. `IN_*Request`
3. `OUT_*Running`

Die Ausführungsreihenfolge ist für alle Prozesse gleich.

**Tabelle 1. Tabelle 5: SPS-Datenübertragungsprozess**

| Schritt | HD Vision Systems → SPS (OUT) | SPS → HD Vision Systems (IN) | Hinweis |
| --- | --- | --- | --- |
| 1 |   | Warten, bis `OUT_*Ready == 1` | Gilt nicht für Reset-Funktionen |
| 2 |   | `IN_*Request → 1` setzen |   |
| 3 | Prüfen, ob `IN_*Request == 1` |   |   |
| 4 | `OUT_*Ready → 0` setzen |   |   |
| 5 | `OUT_*Running → 1` setzen |   |   |
| 6 |   | Warten, bis `OUT_*Ready == 0` | Gilt nicht für Reset-Funktionen |
| 7 |   | Prüfen, ob `OUT_*Running == 1` | Andernfalls wird der Trigger verworfen |
| 8 |   | `IN_*Request → 0` setzen |   |
| 9 | Warten, bis `IN_*Request == 0` |   |   |
| 10 | Angeforderte Funktion ausführen |   |   |
| 11 | Ausgabevariablen setzen |   |   |
| 12 | `OUT_*Running → 0` setzen |   |   |
| 13 | `OUT_*Ready → 1` setzen |   |   |
| 14 |   | Warten, bis `OUT_*Running == 0` |   |
| 15 |   | Prüfen, ob die Rückgabewerte gültig sind |   |
| 16 |   | Ausgabevariablen lesen |   |

## Statusinformationen {#status-information}

Das Ergebnis jeder Aktion wird an zwei Stellen angezeigt:

- als Statusmeldung im Statusfenster, z. B. **SUCCESS**
- als numerischer Wert in `OUT_ReturnCode` im Tab **PROFINET**, z. B. `0`

Die verfügbaren Rückgabewerte sind in [Tabelle 6](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#status-information) aufgelistet.

![PROFINET-Schnittstelle von LumiScan VGR mit SPS-Daten, Statusinformationen und Rückgabewerten](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/profinetcode.png)

**Tabelle 2. Tabelle 6: Rückgabewerte**

| Status | Wert | Bedeutung |
| --- | --- | --- |
| `SUCCESS` | 0 | Es ist kein Fehler aufgetreten. |
| `UNKNOWN_ERROR` | 1 | Es ist ein unbekannter Fehler aufgetreten. |
| `CAMERA_NOT_INITIALIZED` | 2 | Die aktuell aktive Kamera wurde nicht initialisiert oder existiert nicht. |
| `CAMERA_NOT_CONNECTED` | 3 | Es konnte keine Verbindung zur Kamera hergestellt werden. |
| `CAMERA_ACQUISITION_ERROR` | 4 | Bei der Kommunikation mit der Kamera oder beim Erfassen von Daten ist ein Fehler aufgetreten. |
| `PIPELINE_NOT_INITIALIZED` | 5 | Die aktuell aktive Pipeline wurde nicht initialisiert oder existiert nicht. |
| `ROBOT_NOT_INITIALIZED` | 6 | Der aktuell aktive Roboter wurde nicht initialisiert oder existiert nicht. |
| `MISSING_DATA` | 7 | Zusätzliche, zur Ausführung der Funktion erforderliche Daten fehlen, z. B. aufgezeichnete Daten oder Ergebnisse eines vorherigen Berechnungsschritts. |
| `ID_DOES_NOT_EXIST` | 8 | Die angegebene ID existiert nicht. Dies kann beispielsweise auftreten, wenn versucht wird, eine nicht konfigurierte Kamera, Pipeline oder einen nicht konfigurierten Roboter zu aktivieren. |
| `MISSING_TRANSFORM` | 9 | Die erforderliche Koordinatentransformation ist nicht verfügbar. Dies kann beispielsweise auftreten, wenn für ein Roboter-Kamera-Paar keine Hand-Auge-Kalibrierungsdaten vorhanden sind. |
| `RESULTS_EMPTY` | 10 | Für den aktiven Roboter sind keine gültigen Greifpunkte verfügbar. |
| `CAMERA_HARDWARE_TRIGGER_AGAIN` | 12 | Die automatische Belichtung war nicht erfolgreich. Lösen Sie die Kamera erneut aus, um ein weiteres Bild aufzunehmen. |
| `CAMERA_BAD_EXPOSURETIME_SETTING` | 13 | Die angeforderte Belichtungszeit kann nicht erreicht werden, z. B. weil der konfigurierte Bereich für die aktuellen Lichtverhältnisse zu kurz oder zu lang ist.<br> Überprüfen Sie die Einstellungen der automatischen Belichtung oder wenden Sie sich an HD Vision Systems. |

## Manueller Modus und SPS-Betrieb

Während des automatischen Betriebs kann der manuelle Modus über die Benutzeroberfläche aktiviert werden. Der Betriebsmodus wechselt dann zu `OUT_OperationMode → 2`.

Während der manuelle Modus aktiv ist, wird die SPS-gesteuerte Verarbeitung angehalten, und die meisten Verarbeitungsfunktionen können nicht gestartet werden.

Beim Verlassen des manuellen Modus kehrt das System in den Leerlaufmodus zurück (`OUT_OperationMode → 0`). Um den normalen Betrieb fortzusetzen, schalten Sie das System über die SPS mit `OUT_SetParameter` wieder in den Automatikmodus.

## Projekte mit mehreren Komponenten

Alle Berechnungen verwenden die aktuell aktive Kamera, Pipeline und den aktuell aktiven Roboter.

Enthält ein Projekt mehrere Kameras, Pipelines oder Roboter, stellen Sie sicher, dass vor dem Ausführen einer Funktion die richtigen Komponenten über `OUT_SetParameter` ausgewählt sind.

Detaillierte Informationen zur SPS-Konfiguration, zu Signalen und zu Funktionsbeschreibungen finden Sie in den Datenblättern zur PROFINET-Schnittstellenbeschreibung.

# Generierte Daten und Dateien – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/output-data.html

Die Speicherorte der zur Laufzeit erzeugten Daten sind in Tabelle 7 aufgelistet.

In diesem Kapitel bezeichnet `HDVAppData` den folgenden Pfad:

`C:\Users\<UserName>\AppData\Local\HD Vision Systems GmbH`

**Tabelle 1. Tabelle 7: Generierte Daten und Dateien**

| Ausgabetyp | Beschreibung |
| --- | --- |
| Logdaten | Logdateien werden in `<HDVAppData>\LumiScan VGR\logs` gespeichert.<br><br>Die Logdateien verwenden ein rotierendes Dateisystem. Jede Datei hat eine maximale Größe von 10 MB. Sobald diese Größe erreicht ist, wird eine neue Logdatei erstellt. Es werden maximal fünf Logdateien vorgehalten; bei Erstellung einer weiteren Datei wird die älteste Datei gelöscht. |
| Crash-Dumps | Stürzt die Anwendung ab, wird zur weiteren Analyse ein Speicherabbild in `<HDVAppData>\LumiScan VGR` erstellt. |
| Daten | Enthält aufgezeichnete und berechnete Ausgabedaten.<br><br>Der Ausgabeordner und die zu exportierenden Datentypen werden in der Einstellungsdatei definiert. Einige Ausgabeoptionen können auch über die Benutzeroberfläche im Admin-Modus aktiviert oder deaktiviert werden (siehe [A1](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html)).<br><br>Zusammengehörige Ausgabedateien verwenden denselben Basisnamen, z. B. einen gemeinsamen Zeitstempel. |
| Trainingsdaten | Trainingsdaten werden im Ordner `training_data` innerhalb des Projektordners **Settings** gespeichert. |

# Fehlerbehebung – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html

Diese Seite beschreibt bekannte Probleme mit LumiScan VGR, gruppiert nach Kategorien. Beginnen Sie mit den [allgemeinen Prüfungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#general-checks): Sie erklären, wo Sie die Informationen finden, die die Diagnoseschritte verwenden. Suchen Sie dann Ihr Symptom in den folgenden Kategorien und führen Sie die Schritte des Eintrags aus.

## Allgemeine Prüfungen {#general-checks}

- **Admin-Modus:** Drücken Sie **Strg + Umschalt + A**, um den Admin-Modus ein- oder auszuschalten. Der Tab **PROFINET** (T2) und der Tab **Scene** (T1) sind nur im Admin-Modus sichtbar. Die Admin-Steuerelemente (A2 bis A14) sind nur im manuellen Modus aktiv. Aktivieren Sie für die SPS-Diagnose den Admin-Modus, aber nicht den manuellen Modus: Solange der manuelle Modus aktiv ist, ist die SPS-gesteuerte Verarbeitung angehalten.
- **Status und Rückgabewert:** Das Ergebnis jeder Aktion erscheint als Statusmeldung im Statusfenster (S2), zum Beispiel **SUCCESS**. Bei PROFINET erscheint es zusätzlich als Zahl in `OUT_ReturnCode` im Tab **PROFINET**. OPC-UA-Methoden liefern den Code als String `ReturnCode`. Die Bedeutung der Werte steht unter [SPS-Einstellungen: Statusinformationen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#status-information) und in der [FAQ](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/faq.html#faq-return-codes).
- **Betriebsmodus:** Die meisten Funktionen setzen den Betriebsmodus `AUTOMATIC` (`1`) voraus. Bei PROFINET zeigt `OUT_OperationMode` den aktuellen Modus an. Bei OPC UA liefert ihn `GetOperationMode`.
- **Logdateien:** Logdateien werden in `<HDVAppData>\LumiScan VGR\logs` gespeichert; `HDVAppData` steht für `C:\Users\<UserName>\AppData\Local\HD Vision Systems GmbH`. Die Logdateien rotieren: Jede Datei ist maximal 10 MB groß, und es werden höchstens fünf Dateien vorgehalten. Das Log-Fenster öffnen Sie mit S3. Im Debug-Modus (**Strg + Umschalt + D** oder Startoption `-d` / `--debug`) zeigt die Konsole dieselbe detaillierte Ausgabe, die auch in die Logdatei geschrieben wird. Stürzt die Anwendung ab, wird ein Speicherabbild in `<HDVAppData>\LumiScan VGR` erstellt.
- **Kamera:** LumiScan VGR benötigt eine LumiScanX-Kamera, die über Ethernet mit dem IPC verbunden ist. Kameranetzwerk, Windows-Firewall und Virenschutz müssen so konfiguriert sein, wie im LumiScanX-Handbuch beschrieben: [Netzwerkeinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-x-de/2.0.0/installation.html#sec-network-settings), [Windows-Firewall](https://docs.hdvisionsystems.com/de/lumiscan-x-de/2.0.0/installation.html#sec-windows-firewall) und [Virenschutz](https://docs.hdvisionsystems.com/de/lumiscan-x-de/2.0.0/installation.html#sec-virus-protection).
- **Lizenz:** Bei Problemen mit dem LumiScan Key oder der CodeMeter Runtime siehe [Lizenzierung: Fehlerbehebung](https://docs.hdvisionsystems.com/de/lumiscan-licensing-de/1.0.4/troubleshooting.html).

## Start und Kamera {#startup-and-camera}

### Problem: Die Kamera wird nach dem Start nicht erkannt oder es wird kein Bild aufgenommen {#faq-setup-required}

**Symptome**

Nach dem Start von LumiScan VGR wird die Kamera nicht erkannt, und es kann kein Bild aufgenommen werden. Trigger Camera (PROFINET) oder `CaptureImage` (OPC UA) liefert `CAMERA_NOT_INITIALIZED` (`2`).

**Mögliche Ursachen**

- Die Anwendung wurde nicht initialisiert (Setup). Das automatische Setup beim Start (`enableAutomaticSetup`) ist standardmäßig deaktiviert.
- Die Kamera wurde mit der Funktion Reset Camera zurückgesetzt, und das Setup wurde nicht erneut ausgeführt.

**Diagnose**

1. PROFINET: Prüfen Sie im Tab **PROFINET** (Admin-Modus) `OUT_IsSetup`. Erwartet: `1` (das System-Setup ist abgeschlossen).
2. OPC UA: Prüfen Sie, ob der Client seit dem Start der Anwendung mindestens einmal `SetupSystem` aufgerufen hat. Erwartet: `SetupSystem` hat `SUCCESS` geliefert.
3. Prüfen Sie in der Einstellungsdatei `enableAutomaticSetup` im Abschnitt `system`. Fehlt der Eintrag oder steht er auf `false` (Standard), wird das Setup beim Start nicht automatisch ausgeführt.
4. Prüfen Sie, ob die Kamera seit dem letzten Setup zurückgesetzt wurde (PROFINET: Funktion Reset Camera mit `IN_ResetCameraRequest`; OPC UA: `ResetCamera`).

**Lösung**

- **Wenn die Anwendung nicht initialisiert wurde:** Führen Sie vor der Aufnahme das Setup aus:
  - SPS: Führen Sie die Setup-Funktion mit `IN_SetupRequest` aus. Prüfen: `OUT_IsSetup` ist `1`.
  - OPC UA: Rufen Sie `SetupSystem` auf. Prüfen: Der Aufruf liefert `SUCCESS`.
  - Benutzeroberfläche: Aktivieren Sie den manuellen Modus (M1) und initialisieren Sie die Anwendung dann mit A6 im Admin-Modus.
  - Nehmen Sie nach dem Setup erneut ein Bild auf. Prüfen: Das Bild erscheint im Tab **Image** (T0), und das Statusfenster (S2) zeigt **SUCCESS**.
- **Wenn die Kamera zurückgesetzt wurde:** Führen Sie das Setup wie oben beschrieben erneut aus. Nach dem Zurücksetzen der Kamera muss das Setup erneut ausgeführt werden.
- **Wenn das Setup beim Start automatisch laufen soll:** Setzen Sie [`enableAutomaticSetup`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/system-settings.html#system-settings-enable-automatic-setup) im Abschnitt `system` auf `true`.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit dem Rückgabewert von Trigger Camera bzw. `CaptureImage` und der Einstellungsdatei.

### Problem: Die Bildaufnahme schlägt mit einem Kamera-Rückgabewert fehl {#ts-camera-error-code}

**Symptome**

Vom LumiScanX-Sensorsystem werden keine Bilder erfasst. Trigger Camera (PROFINET) oder `CaptureImage` (OPC UA) liefert einen dieser Codes:

- `CAMERA_NOT_CONNECTED` (`3`): Es konnte keine Verbindung zur Kamera hergestellt werden.
- `CAMERA_ACQUISITION_ERROR` (`4`): Bei der Kommunikation mit der Kamera oder beim Erfassen von Daten ist ein Fehler aufgetreten.
- `CAMERA_HARDWARE_TRIGGER_AGAIN` (`12`): Die automatische Belichtung war nicht erfolgreich.
- `CAMERA_BAD_EXPOSURETIME_SETTING` (`13`): Die angeforderte Belichtungszeit kann nicht erreicht werden.
- Nur OPC UA: `CAMERA_RESTART_REQUIRED`: Kameratreiber oder Firmware erfordern einen Neustart.

**Mögliche Ursachen**

- Die Kamerahardware ist nicht erreichbar, zum Beispiel wegen der Verkabelung oder des Kameranetzwerks.
- Die Bildaufnahme ist wegen eines Belichtungs-, Trigger- oder Übertragungsproblems fehlgeschlagen.
- Die automatische Belichtung hat keine gültige Belichtung erreicht.
- Der konfigurierte Belichtungsbereich ist für die aktuellen Lichtverhältnisse zu kurz oder zu lang.
- Kameratreiber oder Firmware erfordern einen Neustart.

**Diagnose**

1. Lesen Sie den Rückgabewert im Statusfenster (S2), in `OUT_ReturnCode` (PROFINET) oder in `ReturnCode` (OPC UA). Erwartet: `SUCCESS` (`0`). Notieren Sie den Code: Er bestimmt die Ursache.
2. Prüfen Sie die Verkabelung der LumiScanX-Kamera. Erwartet: Die Kamera ist über Ethernet mit dem IPC verbunden.
3. Prüfen Sie das Kameranetzwerk wie unter [LumiScanX: Netzwerkeinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-x-de/2.0.0/installation.html#sec-network-settings) beschrieben.
4. Öffnen Sie das Log-Fenster (S3) und prüfen Sie die Einträge zum Zeitpunkt der Aufnahme.
5. Bei `CAMERA_HARDWARE_TRIGGER_AGAIN` oder `CAMERA_BAD_EXPOSURETIME_SETTING`: Prüfen Sie die [Einstellungen der automatischen Belichtung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/autoexposure-settings.html) der Kamera im Abschnitt `cameras`. Im Debug-Modus zeigt das gelbe Polygon der automatischen Belichtung im Tab **Image** den Bereich, der für die Berechnung der automatischen Belichtung verwendet wird (`polygon`).

**Lösung**

- **Wenn die Kamera nicht erreichbar ist (`CAMERA_NOT_CONNECTED`):**
  1. Prüfen Sie Verkabelung und Kameranetzwerk wie im LumiScanX-Handbuch beschrieben.
  2. Setzen Sie die Kamera zurück: PROFINET: Funktion Reset Camera (`IN_ResetCameraRequest`, Kamera-ID in `IN_ParamArgString`); OPC UA: `ResetCamera` (ein leerer String setzt alle Kameras zurück).
  3. Führen Sie das Setup erneut aus. Nach dem Zurücksetzen der Kamera muss das Setup erneut ausgeführt werden.
  4. Nehmen Sie ein Bild auf. Prüfen: Der Rückgabewert ist `SUCCESS` (`0`).
- **Wenn die Bildaufnahme fehlgeschlagen ist (`CAMERA_ACQUISITION_ERROR`):** Setzen Sie die Kamera zurück und führen Sie das Setup erneut aus, wie oben beschrieben. Bleibt der Fehler bestehen, prüfen Sie die LumiScanX-Dokumentation.
- **Wenn die automatische Belichtung nicht erfolgreich war (`CAMERA_HARDWARE_TRIGGER_AGAIN`):** Lösen Sie die Kamera erneut aus (Trigger Camera oder `CaptureImage`). Prüfen: Der Rückgabewert ist `SUCCESS` (`0`).
- **Wenn die Belichtungszeit nicht erreicht werden kann (`CAMERA_BAD_EXPOSURETIME_SETTING`):** Prüfen Sie die Einstellungen der automatischen Belichtung oder wenden Sie sich an HD Vision Systems.
- **Wenn ein Neustart der Kamera erforderlich ist (`CAMERA_RESTART_REQUIRED`, OPC UA):** Rufen Sie `ResetCamera` auf.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit dem Rückgabewert, der Seriennummer der Kamera und dem Abschnitt `cameras` der Einstellungsdatei.

### Problem: Es erscheint eine Timeout-Meldung oder nur ein schwarzes Bild, obwohl die Kamera erkannt wird {#faq-black-image-timeout}

**Symptome**

Es erscheint eine Timeout-Meldung. Während der Aufnahme wird nur ein schwarzes Bild angezeigt, obwohl der angeschlossene Sensor erkannt wird und im Dropdown-Menü erscheint.

**Mögliche Ursachen**

- Die Windows-Firewall ist nicht korrekt konfiguriert und blockiert die Geräte.
- Der Virenschutz blockiert die Geräte.

**Diagnose**

1. Prüfen Sie die Netzwerkkonfiguration der LumiScanX-Kamera wie unter [LumiScanX: Netzwerkeinstellungen](https://docs.hdvisionsystems.com/de/lumiscan-x-de/2.0.0/installation.html#sec-network-settings) beschrieben.
2. Prüfen Sie die Einstellungen der Windows-Firewall wie unter [LumiScanX: Windows-Firewall](https://docs.hdvisionsystems.com/de/lumiscan-x-de/2.0.0/installation.html#sec-windows-firewall) beschrieben. Erwartet: Die Geräte werden nicht von der Firewall blockiert.
3. Prüfen Sie die Einstellungen des Virenschutzes wie unter [LumiScanX: Virenschutz](https://docs.hdvisionsystems.com/de/lumiscan-x-de/2.0.0/installation.html#sec-virus-protection) beschrieben.

**Lösung**

- **Wenn die Windows-Firewall die Geräte blockiert:** Konfigurieren Sie die Windows-Firewall wie im LumiScanX-Handbuch beschrieben. Nehmen Sie dann erneut ein Bild auf. Prüfen: Das Bild ist nicht schwarz, und es erscheint keine Timeout-Meldung.
- **Wenn der Virenschutz die Geräte blockiert:** Konfigurieren Sie den Virenschutz wie im LumiScanX-Handbuch beschrieben und nehmen Sie dann erneut ein Bild auf.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit der genauen Timeout-Meldung und der Seriennummer der Kamera.

## SPS-Kommunikation (PROFINET) {#plc-communication-profinet}

### Problem: LumiScan VGR reagiert nicht nach GripBestResult {#faq-no-reaction-plc-request}

**Symptome**

Die SPS hat eine GripBestResult-Anforderung (`IN_GripBestResultRequest`) gesendet, aber die Anwendung liefert nicht das erwartete Ergebnis. LumiScan VGR scheint zu hängen. Dasselbe Vorgehen gilt, wenn LumiScan VGR auf eine andere SPS-Anforderung nicht reagiert, zum Beispiel Trigger Camera, Compute Objects, Get Best Result, Set Parameter, Get Parameter oder Setup. Ersetzen Sie dann `GripBestResult` in den folgenden Signalnamen durch den Namen dieser Funktion.

**Mögliche Ursachen**

- Die PROFINET-Verbindung ist unterbrochen.
- Die Anwendung führt die Funktion noch aus.
- Der SPS-Handshake ist unvollständig, zum Beispiel hat die SPS `IN_GripBestResultRequest` nicht auf `0` zurückgesetzt oder es gesetzt, bevor `OUT_GripBestResultReady` gleich `1` war.
- Die SPS hat die Anforderung nicht gesetzt, zum Beispiel weil eine Bedingung im SPS-Programm nicht erfüllt ist.
- LumiScan VGR ist nicht im Betriebsmodus `AUTOMATIC`.
- Die Anwendung befindet sich in einem unerwarteten internen Zustand.

**Diagnose**

1. **Prüfen Sie die PROFINET-Verbindung.** Aktivieren Sie den Admin-Modus mit **Strg + Umschalt + A**. Aktivieren Sie nicht den manuellen Modus. Öffnen Sie den Tab **PROFINET** (T2). Erwartet: Der Tab zeigt die aktuell mit der SPS ausgetauschten Daten. Fragen Sie den SPS-Programmierer, ob die SPS noch eine Verbindung zu LumiScan VGR hat.

2. **Prüfen Sie die Heartbeat-Signale.** Beobachten Sie im Tab **PROFINET** `IN_HeartBeat` und `OUT_HeartBeat`. Erwartet: Beide blinken rot und grün; `OUT_HeartBeat` folgt `IN_HeartBeat`. Blinken sie nicht, ist die PROFINET-Verbindung verloren. Der SPS-Heartbeat wird mit [`enableHeartbeat`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/system-settings.html#system-settings-enable-heartbeat) im Abschnitt `system` aktiviert (Standard `true`).

3. **Prüfen Sie die Anforderungs- und Antwortsignale.** Prüfen Sie im Tab **PROFINET** die Signale und vergleichen Sie sie mit [Tabelle 5: SPS-Datenübertragungsprozess](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#process-flow):
   - `OUT_OperationMode`: erwartet `1` (`AUTOMATIC`).
   - `OUT_Error`: erwartet `0`; `1` bedeutet, dass sich LumiScan VGR in einem Fehlerzustand befindet.
   - Vor der Anforderung: `OUT_GripBestResultReady` ist `1` und `OUT_GripBestResultRunning` ist `0`.
   - Nachdem die SPS `IN_GripBestResultRequest` auf `1` gesetzt hat (angezeigt als **True**, grün): `OUT_GripBestResultReady` wechselt auf `0` und `OUT_GripBestResultRunning` auf `1`. Bleibt `IN_GripBestResultRequest` auf **False**, hat LumiScan VGR die Anforderung nicht erhalten.
   - Die SPS setzt `IN_GripBestResultRequest` dann auf `0` zurück. LumiScan VGR führt die Funktion erst aus, wenn die Anforderung wieder `0` ist.
   - Wenn die Funktion abgeschlossen ist: `OUT_GripBestResultRunning` ist `0` und `OUT_GripBestResultReady` ist `1`.
   - Wenn die SPS den letzten Schritt als nicht abgeschlossen betrachtet: Prüfen Sie, ob `OUT_SetParameterReady`, `OUT_TriggerCameraReady`, `OUT_ComputeObjectsReady`, `OUT_GetBestResultReady`, `OUT_GripBestResultReady` und `OUT_GetParameterReady` auf `1` stehen und `OUT_SetParameterRunning`, `OUT_TriggerCameraRunning`, `OUT_ComputeObjectsRunning`, `OUT_GetBestResultRunning`, `OUT_GripBestResultRunning` und `OUT_GetParameterRunning` auf `0`.
   - Notieren Sie den Handshake-Schritt, bei dem sich die Signale nicht mehr ändern.

4. **Prüfen Sie die Logs der Anwendung.** Öffnen Sie das Log-Fenster (S3) oder die Logdatei `LumiScanVGR.log` in `<HDVAppData>\LumiScan VGR\logs`. Suchen Sie nach `PLC - Procedure "GripBestResult" called` und `PLC - Procedure "GripBestResult" finished`. Erwartet: Beide Einträge sind zum Zeitpunkt der Anforderung vorhanden. Fehlt `called`, wurde die Funktion nicht von der SPS aufgerufen. Ist `called` vorhanden, aber `finished` fehlt, ist die Funktion nicht abgeschlossen.

   Mögliche Funktionsnamen in diesen Einträgen: `TriggerCamera`, `ComputeObjects`, `GetBestResult`, `GripBestResult`, `SetParameter`, `GetParameter`, `Setup`.

5. **Notieren Sie den Rückgabewert.** Lesen Sie, nachdem `OUT_GripBestResultRunning` auf `0` gewechselt hat, `OUT_ReturnCode` im Tab **PROFINET** und die Statusmeldung im Statusfenster (S2). Erwartet: `0` (`SUCCESS`) oder `10` (`RESULTS_EMPTY`). Bei `10` siehe [Problem: `RESULTS_EMPTY` wird zurückgegeben](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-results-empty). Bei anderen Werten siehe [Tabelle 6: Rückgabewerte](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#status-information).

**Lösung**

- **Wenn die PROFINET-Verbindung unterbrochen ist** (`IN_HeartBeat` und `OUT_HeartBeat` blinken nicht):
  1. Bitten Sie den SPS-Programmierer, die PROFINET-Verbindung auf der SPS-Seite zu prüfen.
  2. Steht `enableHeartbeat` im Abschnitt `system` auf `false`, setzen Sie den Wert auf `true` und starten Sie LumiScan VGR mit der geänderten Einstellungsdatei neu.
  3. Prüfen: `IN_HeartBeat` und `OUT_HeartBeat` blinken wieder rot und grün.
  4. Senden Sie die Anforderung erneut, beginnend mit Schritt 1 des Handshakes.

- **Wenn die Anwendung die Funktion noch ausführt** (`OUT_GripBestResultRunning` ist `1`, die Anforderung ist wieder `0`, und das Log enthält `called`, aber noch nicht `finished`): Warten Sie, bis `OUT_GripBestResultRunning` gleich `0` ist. Prüfen Sie dann den Rückgabewert und lesen Sie die Ausgabevariablen (Handshake-Schritte 14 bis 16). Prüfen: Das Log enthält `PLC - Procedure "GripBestResult" finished`.

- **Wenn der SPS-Handshake unvollständig ist:** Stellen Sie sicher, dass das SPS-Programm den Handshake einhält:
  1. Warten Sie, bis `OUT_GripBestResultReady` gleich `1` ist.

  2. Setzen Sie `IN_GripBestResultRequest` auf `1`.

  3. Warten Sie, bis `OUT_GripBestResultReady` gleich `0` ist, und prüfen Sie, ob `OUT_GripBestResultRunning` gleich `1` ist. Wird `OUT_GripBestResultRunning` nicht `1`, wird der Trigger verworfen; beginnen Sie erneut mit Schritt 1.

  4. Setzen Sie `IN_GripBestResultRequest` auf `0`.

  5. Warten Sie, bis `OUT_GripBestResultRunning` gleich `0` ist, prüfen Sie den Rückgabewert und lesen Sie die Ausgabevariablen.

     Prüfen: `OUT_GripBestResultReady` ist wieder `1`, und `OUT_ReturnCode` ist `0` oder `10`.

- **Wenn die SPS die Anforderung nicht gesetzt hat** (`IN_GripBestResultRequest` bleibt im Tab **PROFINET** auf **False**, und das Log enthält keinen Eintrag `called`): Bitten Sie den SPS-Programmierer zu prüfen, ob das SPS-Programm eine nicht erfüllte Bedingung zum Setzen der Anforderung hat, ob die SPS auf ein Signal wartet und ob eine SPS-interne Prüfung, die nicht mit LumiScan VGR zusammenhängt, den Ablauf blockiert (zum Beispiel ein Roboterfehler oder ein Zylinderfehler). Prüfen: `IN_GripBestResultRequest` wechselt im Tab **PROFINET** auf **True** (grün).

- **Wenn LumiScan VGR nicht im Betriebsmodus `AUTOMATIC` ist:** Siehe [Problem: Die SPS kann nach dem manuellen Modus keine Funktionen mehr starten](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-manual-mode-plc).

- **Wenn sich die Anwendung in einem unerwarteten internen Zustand befindet:** Setzt die SPS die Anforderung auf **True**, zeigt der Tab **PROFINET** sie aber weiterhin als **False** an, hat LumiScan VGR einen internen Fehler aufgrund nebenläufiger Ausführung. Ist `OUT_Error` gleich `1`, befindet sich LumiScan VGR in einem Fehlerzustand. Informieren Sie in beiden Fällen HD Vision Systems und senden Sie die unten aufgeführten Informationen.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit:

- der Softwareversion (**Strg + Umschalt + V**) und dem Betriebssystem des IPC,
- den relevanten Logs: der exportierten Logdatei `LumiScanVGR.log`, die den Zeitpunkt der Anforderung abdeckt,
- Datum und Uhrzeit des Fehlers,
- dem Kommunikationsstatus: einem Screenshot des Tabs **PROFINET** im Admin-Modus, den Werten von `OUT_ReturnCode`, `OUT_OperationMode` und `OUT_Error` und nach Möglichkeit dem gespeicherten Status der SPS-Variablen,
- dem Handshake-Schritt, bei dem die SPS oder LumiScan VGR hängt,
- der Angabe, ob die SPS noch eine Verbindung zu LumiScan VGR hat, ob die SPS auf Signale wartet und ob die SPS das Anforderungssignal bereits gesetzt hat,
- der Angabe, ob die SPS interne Prüfungen oder Prozessstatusprüfungen hat, die nicht mit LumiScan VGR zusammenhängen (zum Beispiel Roboterfehler oder Zylinderfehler).

### Problem: Die SPS kann nach dem manuellen Modus keine Funktionen mehr starten {#faq-manual-mode-plc}

**Symptome**

Nachdem der manuelle Modus verwendet wurde, kann die SPS keine Verarbeitungsfunktionen mehr starten. `OUT_OperationMode` zeigt `2` (`MANUAL`), solange der manuelle Modus aktiv ist, oder `0` (`IDLE`), nachdem der manuelle Modus verlassen wurde.

**Mögliche Ursachen**

- Der manuelle Modus ist noch aktiv. Solange der manuelle Modus aktiv ist, ist die SPS-gesteuerte Verarbeitung angehalten.
- Der manuelle Modus wurde verlassen. Das System wechselt dann nach `IDLE` (`0`), in dem nur Funktionen zum Setzen von Parametern verfügbar sind.

**Diagnose**

1. Prüfen Sie im Tab **PROFINET** (Admin-Modus) `OUT_OperationMode`. Erwartet: `1` (`AUTOMATIC`).
2. Prüfen Sie in der Benutzeroberfläche, ob der manuelle Modus aktiv ist. Der manuelle Modus ist aktiv, wenn die manuellen Steuerungen (M2) und die Workflow-Schritte M3 bis M6 angezeigt werden.

**Lösung**

- **Wenn der manuelle Modus noch aktiv ist:** Beenden Sie den manuellen Modus in der Benutzeroberfläche. Die SPS kann das System nicht aus dem manuellen Modus holen. Das System wechselt dann nach `IDLE` (`0`); fahren Sie mit dem nächsten Schritt fort.
- **Wenn sich das System in `IDLE` befindet:** Setzen Sie den Betriebsmodus von der SPS aus mit der Funktion Set Parameter wieder auf `AUTOMATIC`:
  1. Setzen Sie `IN_ParamId` auf `0` (`SET_OPERATION_MODE`) und `IN_ParamArgByte` auf `1` (`AUTOMATIC`).
  2. Führen Sie Set Parameter mit `IN_SetParameterRequest` gemäß dem Handshake aus ([Tabelle 5](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#process-flow)).
  3. Prüfen: `OUT_ReturnCode` ist `0`, und `OUT_OperationMode` ist `1`.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit den Werten von `OUT_OperationMode` und `OUT_ReturnCode` nach Set Parameter.

## OPC UA {#opc-ua}

### Problem: OPC-UA-Aufrufe schlagen mit `BadTimeout` oder `BadResourceUnavailable` fehl {#faq-opcua-timeout}

**Symptome**

Ein Methodenaufruf schlägt im Client mit `BadTimeout` oder einem Verbindungsabbruch fehl, oder er wird mit `BadResourceUnavailable` abgewiesen.

**Mögliche Ursachen**

- Das Timeout für Methodenaufrufe im Client ist zu kurz. Viele Methoden dauern deutlich länger als übliche SPS-Operationen; die typische Ausführungszeit beträgt 3 bis 10 Sekunden. Die Standard-Timeouts der SDKs (oft 2 bis 5 Sekunden) sind zu kurz.
- Ein anderer Client führt gerade eine Methode aus, oder der Client ruft Methoden parallel auf. Der Server bearbeitet immer nur eine Methode gleichzeitig; parallele Aufrufe werden mit `BadResourceUnavailable` abgewiesen.

**Diagnose**

1. Prüfen Sie das im OPC-UA-Client eingestellte Timeout für Methodenaufrufe. Erwartet: mindestens 15 Sekunden.
2. Prüfen Sie, ob der Client Methoden parallel aufruft und ob ein zweiter Client verbunden ist (höchstens 2 Clients können gleichzeitig verbunden sein). Erwartet: Es wird immer nur eine Methode gleichzeitig ausgeführt.

**Lösung**

- **Wenn das Timeout zu kurz ist:** Setzen Sie das Timeout für Methodenaufrufe im Client auf mindestens 15 Sekunden. Prüfen: Die Methode liefert einen `ReturnCode` statt `BadTimeout`.
- **Wenn ein anderer Client eine Methode ausführt oder Methoden parallel aufgerufen werden:** Rufen Sie Methoden nicht parallel auf. Führt ein anderer Client gerade eine Methode aus, warten Sie und wiederholen Sie den Aufruf. Prüfen: Der Aufruf wird nicht mehr mit `BadResourceUnavailable` abgewiesen.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit der fehlschlagenden Methode, dem vom Client gemeldeten Fehler und den eingestellten Client-Timeouts.

### Problem: OPC-UA-Methoden liefern `OPERATION_MODE_INVALID` {#ts-opcua-operation-mode-invalid}

**Symptome**

OPC-UA-Methoden liefern `OPERATION_MODE_INVALID`. Nur `SetOperationMode` und `GetOperationMode` werden angenommen.

**Mögliche Ursachen**

- Der Server ist nicht im Betriebsmodus `AUTOMATIC`, zum Beispiel weil er in `IDLE` oder `MANUAL` ist (lokale Steuerung bzw. Steuerung über die Benutzeroberfläche aktiv).

**Diagnose**

1. Rufen Sie `GetOperationMode` auf. Erwartet: `Mode` ist `1` und `ModeName` ist `AUTOMATIC`.

**Lösung**

- **Wenn der Server nicht in `AUTOMATIC` ist:** Rufen Sie `SetOperationMode` mit dem Wert `1` (`AUTOMATIC`) auf und wiederholen Sie dann die Methode. Prüfen: `GetOperationMode` liefert `1`, und die Methode liefert nicht mehr `OPERATION_MODE_INVALID`.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit dem Ergebnis von `GetOperationMode` und dem `ReturnCode` von `SetOperationMode`.

### Problem: `CameraTemperature` ist `-273.1528` {#ts-opcua-camera-temperature}

**Symptome**

`GetCameraTemperature` liefert in `CameraTemperature` den Wert `-273.1528`.

**Mögliche Ursachen**

- Die Kamera meldet keine Temperatur.

**Diagnose**

1. Prüfen Sie den Wert von `CameraTemperature`. `-273.1528` bedeutet, dass der Wert nicht verfügbar ist; es handelt sich nicht um einen physikalischen Messwert.

**Lösung**

- **Wenn die Kamera keine Temperatur meldet:** Behandeln Sie den Wert als „nicht verfügbar“, nicht als gemessene Temperatur.

**Wenn das Problem weiterhin besteht**

Wenden Sie sich mit den unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support.

### Problem: `Shutdown` hat keine Wirkung {#ts-opcua-shutdown-no-effect}

**Symptome**

Nach einem Aufruf der OPC-UA-Methode `Shutdown` läuft LumiScan VGR weiter.

**Mögliche Ursachen**

- Das Beenden aus der Ferne ist noch nicht implementiert. `Shutdown` ist ein Platzhalter und hat keine Auswirkung auf den laufenden Prozess.

**Diagnose**

1. Prüfen Sie auf dem Host-Rechner, ob der Prozess von LumiScan VGR nach dem Aufruf von `Shutdown` noch läuft. Erwartet: Er läuft noch; `Shutdown` hat keine Wirkung.

**Lösung**

- **Wenn LumiScan VGR beendet werden muss:** Beenden Sie den Serverprozess auf dem Host-Rechner.

**Wenn das Problem weiterhin besteht**

Wenden Sie sich mit den unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support.

## Konfiguration und Erkennungsergebnisse {#configuration-and-detection}

### Problem: `RESULTS_EMPTY` wird zurückgegeben {#faq-results-empty}

**Symptome**

Get Best Result oder Grip Best Result (PROFINET) bzw. `GetBestResult` oder `GripBestResult` (OPC UA) liefert `RESULTS_EMPTY` (`10`): Für den aktiven Roboter sind keine gültigen Greifpunkte verfügbar. Im manuellen Modus wechselt der Status nach **DONE** (M6) zu **RESULTS_EMPTY**; es wird keine Bestätigung angezeigt, und es werden keine Trainingsdaten exportiert.

**Mögliche Ursachen**

- Die Objekte wurden noch nicht berechnet.
- Alle Kandidaten der letzten Erkennung wurden bereits verbraucht. Jeder Aufruf von Grip Best Result liefert den nächsten Kandidaten.
- Es wurden keine Objekte erkannt (Objektanzahl `0`).
- Die 3D-Informationen sind ungültig, zum Beispiel wegen einer schlechten Punktwolke oder einer falschen Konfiguration.

**Diagnose**

1. Prüfen Sie, ob Compute Objects (PROFINET) bzw. `ComputeObjects` (OPC UA) nach der letzten Bildaufnahme ausgeführt wurde. Erwartet: Die Funktion hat `SUCCESS` geliefert.
2. Prüfen Sie die Anzahl der Objekte:
   - PROFINET: `OUT_NumObjects` ist die Anzahl der Objekte in der Szene, die noch nicht gegriffen wurden. Mit Get Parameter liefert `IN_ParamId` `0` (`GET_NUM_OBJECTS_2D_TOTAL`) die Gesamtzahl der in 2D erkannten Objekte und `1` (`GET_NUM_OBJECTS_3D_TOTAL`) die Anzahl der in 3D erkannten Objekte, die noch nicht gegriffen wurden.
   - OPC UA: `ComputeObjects` liefert `NumObjects2D` und `NumObjects3D`; `GetReport` mit `ParamId` `0` oder `1` liefert die Gesamtzahlen.
3. Vergleichen Sie die Objektanzahlen. Wurden in 2D keine Objekte erkannt, siehe [Problem: Es werden keine Objekte erkannt (Objektanzahl `0`)](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-no-objects-detected). Wurden Objekte erkannt, ist aber keines mehr zum Greifen übrig, sind alle Kandidaten verbraucht.
4. Öffnen Sie im Admin-Modus den Tab **Scene** (T1). Aktivieren Sie **Show Cloud** (Sc3), um die Punktwolke anzuzeigen, und **Show Grip Candidates** (Sc4, bei deaktiviertem **Show Origin**), um die Greifkandidaten anzuzeigen. Erwartet: Die Punktwolke deckt die Objekte ab, und es werden Greifkandidaten angezeigt.

**Lösung**

- **Wenn die Objekte nicht berechnet wurden oder alle Kandidaten verbraucht sind:** Nehmen Sie ein neues Bild auf und berechnen Sie die Objekte erneut (PROFINET: Trigger Camera und Compute Objects; OPC UA: `CaptureImage` und `ComputeObjects`). Prüfen: Get Best Result liefert `SUCCESS` (`0`).
- **Wenn keine Objekte erkannt wurden:** Siehe [Problem: Es werden keine Objekte erkannt (Objektanzahl `0`)](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-no-objects-detected).
- **Wenn die 3D-Informationen ungültig sind:** Prüfen Sie die Punktwolke im Tab **Scene** und die Konfiguration der aktiven Kamera, Pipeline und des aktiven Roboters in der Einstellungsdatei.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit den Objektanzahlen und den aufgezeichneten Daten der Aufnahme (siehe [Generierte Daten und Dateien](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/output-data.html)).

### Problem: Es werden keine Objekte erkannt (Objektanzahl `0`) {#ts-no-objects-detected}

**Symptome**

Nach Compute Objects ist die Objektanzahl `0`: OPC UA `ComputeObjects` liefert `NumObjects2D` und `NumObjects3D` mit `0`, oder PROFINET Get Parameter `GET_NUM_OBJECTS_2D_TOTAL` liefert `0` in `OUT_NumObjects`. Der Tab **Image** (T0) zeigt keine Erkennungsergebnisse.

**Mögliche Ursachen**

- Kameraposition oder Beleuchtung lassen keine Erkennung der Objekte zu.
- Die Objekte liegen außerhalb der Region of Interest (ROI), des lila Rechtecks im Tab **Image**, in dem das Netz nach Objekten sucht.
- Die falsche Pipeline ist aktiv, oder die Pipeline-Konfiguration passt nicht zu den Objekten.
- Das neuronale Netz liefert für die Objekte noch keine ausreichend robusten Erkennungsergebnisse.

**Diagnose**

1. Prüfen Sie das aufgenommene Bild im Tab **Image** (T0). Erwartet: Die Objekte sind sichtbar und liegen innerhalb des lila ROI-Rechtecks.
2. Prüfen Sie die aktive Pipeline. OPC UA: Lesen Sie `ActivePipeline`. Erwartet: die Pipeline, die für diese Objekte konfiguriert ist.
3. Prüfen Sie die Pipeline-Konfiguration im Abschnitt `pipelines` der Einstellungsdatei. Erwartet: Die Pipeline enthält die zu erkennenden Objekte.

**Lösung**

- **Wenn Kameraposition oder Beleuchtung nicht geeignet sind:** Korrigieren Sie Kameraposition oder Beleuchtung, nehmen Sie dann ein Bild auf und berechnen Sie die Objekte erneut. Prüfen: Die Objektanzahl ist größer als `0`.
- **Wenn die Objekte außerhalb der ROI liegen:** Platzieren Sie die Objekte innerhalb der ROI, oder korrigieren Sie die ROI der Pipeline in der Einstellungsdatei.
- **Wenn die falsche Pipeline aktiv ist:** Wählen Sie die richtige Pipeline, bevor Sie die Objekte berechnen (PROFINET: Set Parameter mit `IN_ParamId` `2` = `SET_PIPELINE_ID`, ID in `IN_ParamArgString`; OPC UA: `SetActivePipeline`).
- **Wenn die Erkennung nicht robust genug ist:** Verwenden Sie den [manuellen Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/manual-mode.html), um erkannte Objekte und Labels zu korrigieren und neue Trainingsdaten zu erstellen.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit dem aufgenommenen Bild und den Abschnitten `pipelines` und `objects` der Einstellungsdatei.

### Problem: Es kann kein Punktwolken-Matching durchgeführt werden {#ts-no-point-cloud-matching}

**Symptome**

Es kann kein Punktwolken-Matching durchgeführt werden: Die erzeugte Punktwolke wird nicht mit den 3D-Modellen der Objekte verglichen.

**Mögliche Ursachen**

- Die HALCON-Lizenz ist nicht installiert.
- Die HALCON-Installation ist nicht Teil der Umgebungsvariablen `PATH`.

**Diagnose**

1. Prüfen Sie, ob auf dem IPC eine gültige HALCON-Lizenz installiert ist.
2. Lassen Sie sich in PowerShell die Umgebungsvariable `PATH` anzeigen. Erwartet: Sie enthält den absoluten Pfad zum HALCON-Verzeichnis `bin`.

**Lösung**

- **Wenn die HALCON-Lizenz nicht installiert ist:** Installieren Sie eine gültige HALCON-Lizenz.
- **Wenn die HALCON-Installation nicht in `PATH` enthalten ist:** Fügen Sie den absoluten Pfad zum HALCON-Verzeichnis `bin` zur Umgebungsvariablen `PATH` hinzu. Prüfen: In PowerShell enthält `PATH` dieses Verzeichnis.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit dem Inhalt der Umgebungsvariablen `PATH`.

### Problem: Eine Funktion liefert `ID_DOES_NOT_EXIST` {#ts-id-does-not-exist}

**Symptome**

Die Auswahl einer Kamera, einer Pipeline, eines Roboters oder eines Rezepts liefert `ID_DOES_NOT_EXIST` (`8`): PROFINET Set Parameter mit `SET_CAMERA_ID`, `SET_PIPELINE_ID` oder `SET_ROBOT_ID` oder OPC UA `SetActiveCamera`, `SetActivePipeline`, `SetActiveRobot`, `ExecuteSimpleRecipe` oder `ExecuteRecipe`.

**Mögliche Ursachen**

- Die Kamera-, Pipeline-, Roboter- oder Rezept-ID ist in der Einstellungsdatei nicht konfiguriert.
- OPC UA: Die ID wurde nach dem Start des Servers in der Konfiguration hinzugefügt oder geändert. Die Arrays `PossibleCameras`, `PossiblePipelines` und `PossibleRobots` werden beim Start des Servers befüllt.

**Diagnose**

1. Vergleichen Sie die ID mit den `id`-Einträgen in den Abschnitten `cameras`, `pipelines` und `robots` der Einstellungsdatei und mit den Rezept-IDs in der Projektkonfiguration. Erwartet: Die ID stimmt exakt überein.
2. PROFINET: Prüfen Sie im Tab **PROFINET** `IN_ParamId` und `IN_ParamArgString`. Erwartet: `IN_ParamArgString` enthält die ID.
3. OPC UA: Lesen Sie `PossibleCameras`, `PossiblePipelines` oder `PossibleRobots`. Erwartet: Die ID ist aufgeführt.

**Lösung**

- **Wenn die ID nicht konfiguriert ist:** Verwenden Sie eine konfigurierte ID, oder fügen Sie die Komponente zur Einstellungsdatei hinzu. Prüfen: Die Funktion liefert `SUCCESS` (`0`).
- **Wenn die ID nach dem Start des Servers hinzugefügt oder geändert wurde:** Starten Sie den Server neu, damit er die neue Konfiguration übernimmt. Prüfen: Die ID ist in den Arrays `Possible*` aufgeführt.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit der verwendeten ID und der Einstellungsdatei.

### Problem: Eine Funktion liefert `MISSING_TRANSFORM` {#ts-missing-transform}

**Symptome**

Eine Funktion liefert `MISSING_TRANSFORM` (`9`): Die erforderliche Koordinatentransformation ist nicht verfügbar.

**Mögliche Ursachen**

- Für das aktive Roboter-Kamera-Paar fehlen Hand-Auge-Kalibrierungsdaten.

**Diagnose**

1. Prüfen Sie, welche Kamera und welcher Roboter aktiv sind (OPC UA: `ActiveCamera` und `ActiveRobot` lesen; PROFINET: die zuletzt mit `SET_CAMERA_ID` und `SET_ROBOT_ID` gesetzten IDs).
2. Prüfen Sie im Abschnitt `robots` der Einstellungsdatei [`cameraToRobot`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/robot-settings.html#robot-settings-camera-to-robot) des aktiven Roboters. Erwartet: Es gibt einen Eintrag für die aktive Kamera-ID mit einer gültigen 4x4-Transformationsmatrix.

**Lösung**

- **Wenn die Hand-Auge-Kalibrierungsdaten fehlen:** Fügen Sie die Hand-Auge-Transformation für die Kamera-ID zu `cameraToRobot` des Roboters hinzu, oder wählen Sie ein Roboter-Kamera-Paar, für das Hand-Auge-Kalibrierungsdaten vorhanden sind. Prüfen: Die Funktion liefert `SUCCESS` (`0`).

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit dem Abschnitt `robots` der Einstellungsdatei.

## Hand-Auge-Kalibrierung {#hand-eye-troubleshooting}

Diese Probleme treten in LumiScan Hand-Eye Calibration auf. Der **Pose Status** jedes aufgenommenen Bilds wird in der Bildliste im Tab **Hand-Eye** angezeigt.

### Problem: Pose Status zeigt „Can not be interpreted“ {#ts-hand-eye-cannot-be-interpreted}

**Symptome**

Nach der Aufnahme zeigt **Pose Status** die Meldung `Can not be interpreted`.

**Mögliche Ursachen**

- Die von der SPS ausgelesene Position scheint falsch zu sein, weil die SPS nicht für den **Pose Mode** verwendet wird.
- LumiScan Hand-Eye Calibration ist nicht mit der SPS verbunden.
- Der cifX-Kartenname ist falsch.

**Diagnose**

1. Prüfen Sie im Tab **Setup** den **Pose Mode**. Erwartet: `SPS` (die SPS wird für den Pose Mode verwendet).

2. Prüfen Sie im Tab **PROFINET** den Meldungsbereich. Erwartet: keine Verbindungsfehlermeldung. Wird eine Meldung wie `Hilscher card not connected!` angezeigt, wurde die Verbindung zur SPS nicht hergestellt.

   ![Tab PROFINET von LumiScan Hand-Eye Calibration mit der rot markierten Verbindungsfehlermeldung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/Problem_tabelle03.png)

3. Prüfen Sie im Tab **Setup** das Feld **CifX Card Name** in der Gruppe **SPS Layout**. Erwartet: der Name der Hilscher-Karte, normalerweise `cifx0;0`, wenn Sie nur eine Hilscher-Karte haben.

   ![Tab Setup von LumiScan Hand-Eye Calibration mit dem rot markierten Feld CifX Card Name in der Gruppe SPS Layout](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/Problem_tabelle04.png)

**Lösung**

- **Wenn die SPS nicht für den Pose Mode verwendet wird:** Setzen Sie **Pose Mode** auf `SPS` und nehmen Sie erneut auf. Prüfen: **Pose Status** zeigt nicht mehr `Can not be interpreted`.
- **Wenn LumiScan Hand-Eye Calibration nicht mit der SPS verbunden ist:** Stellen Sie die Verbindung zur SPS her. Prüfen: Der Tab **PROFINET** zeigt keine Verbindungsfehlermeldung. Nehmen Sie dann erneut auf.
- **Wenn der cifX-Kartenname falsch ist:** Geben Sie in **CifX Card Name** den richtigen Kartennamen ein (normalerweise `cifx0;0` bei einer Hilscher-Karte). Prüfen: Der Tab **PROFINET** zeigt keine Verbindungsfehlermeldung. Nehmen Sie dann erneut auf.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit Screenshots der Tabs **Setup** und **PROFINET**.

### Problem: Pose Status zeigt „Bad pose quality.“ {#ts-hand-eye-bad-pose-quality}

**Symptome**

Nach der Aufnahme zeigt **Pose Status** die Meldung `Bad pose quality.`

**Mögliche Ursachen**

- Das Programm kann das Muster der Kalibrierplatte nicht gut erkennen. Dies kann zu einer schlechten Kalibrierung führen.

**Diagnose**

1. Prüfen Sie im Tab **Hand-Eye** den **Pose Status** jedes Bilds in der Bildliste. Notieren Sie die Bilder, die `Bad pose quality.` zeigen.

**Lösung**

- **Wenn das Muster nicht gut erkannt wird:**
  1. Löschen Sie das Bild.
  2. Ändern Sie die Ausrichtung der Kalibrierplatte.
  3. Nehmen Sie ein neues Bild auf. Prüfen: Der **Pose Status** des neuen Bilds zeigt nicht `Bad pose quality.`

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit einem Screenshot des Tabs **Hand-Eye**.

### Problem: Nach der Aufnahme wird kein Bild hinzugefügt {#ts-hand-eye-no-image-added}

**Symptome**

Nach der Aufnahme wird kein Bild zur Bildliste hinzugefügt.

**Mögliche Ursachen**

- Das Kalibriermuster wird nicht gefunden.

**Diagnose**

1. Prüfen Sie, ob das Bild über- oder unterbelichtet ist (zu hell oder zu dunkel).
2. Prüfen Sie, ob die Kamera die Musterpunkte auf der Kalibrierplatte sehen kann.

**Lösung**

- **Wenn das Kalibriermuster nicht gefunden wird:**
  1. Korrigieren Sie die Belichtung, wenn das Bild zu hell oder zu dunkel ist.
  2. Stellen Sie sicher, dass die Kamera die Musterpunkte auf der Platte sehen kann.
  3. Ändern Sie die Ausrichtung der Kalibrierplatte.
  4. Nehmen Sie erneut auf. Prüfen: Das Bild wird zur Bildliste hinzugefügt.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit einem aufgenommenen Bild der Kalibrierplatte.

### Problem: Das Kalibrierergebnis ist sehr schlecht {#ts-hand-eye-poor-result}

**Symptome**

Das Kalibrierergebnis ist sehr schlecht, zum Beispiel T:Max > 0.02 (die Grenze hängt von der Anwendung ab). Der Dialog **Success** zeigt den Kalibrierfehler als RMS- und MAX-Werte für `T` und `R`:

![Dialog Success mit dem Kalibrierfehler als RMS- und MAX-Werte für T und R](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/Problem_tabelle01.png)

**Mögliche Ursachen**

- Es wurden zu viele oder zu wenige Kalibrierbilder aufgenommen.
- Die Kalibrierplatte ist zu weit von der Kamera entfernt.
- Die Blickwinkel der Kalibrierbilder unterscheiden sich zu wenig.

**Diagnose**

1. Zählen Sie die aufgenommenen Kalibrierbilder. Erwartet: zwischen 6 und 15 Bilder.
2. Prüfen Sie, ob die aufgenommenen Bilder der empfohlenen Ausrichtung der Kalibrierplatte entsprechen.
3. Prüfen Sie, ob sich die Blickwinkel der Bilder deutlich unterscheiden und die Platte nicht zu weit von der Kamera entfernt ist.

**Lösung**

- **Wenn zu viele oder zu wenige Bilder aufgenommen wurden:** Nehmen Sie zwischen 6 und 15 Bilder auf.
- **Wenn die Platte zu weit von der Kamera entfernt ist:** Bringen Sie die Kalibrierplatte näher an die Kamera und nehmen Sie die Bilder erneut auf.
- **Wenn sich die Blickwinkel zu wenig unterscheiden:** Nehmen Sie die Bilder aus deutlich unterschiedlichen Blickwinkeln auf, in den empfohlenen Ausrichtungen der Kalibrierplatte.

Prüfen Sie nach der Kalibrierung den Kalibrierfehler im Dialog **Success**. Erwartet: Er liegt innerhalb der Grenze Ihrer Anwendung.

**Wenn das Problem weiterhin besteht**

Senden Sie die unter [Informationen für den Support](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#support-information) aufgeführten Informationen an den Support, zusammen mit einem Screenshot des Dialogs **Success** und der Anzahl der aufgenommenen Bilder.

## Informationen für den Support {#support-information}

Senden Sie diese Informationen an den Support:

- **Softwareversion:** Drücken Sie **Strg + Umschalt + V**, um die Build-Version anzuzeigen, oder starten Sie LumiScan VGR mit `-v` / `--version`. Über OPC UA lesen Sie `Version`, `GitRevision` und `BuildTime` unter `LumiScanVGR/Version`.
- **Betriebssystem:** Die Windows-Version des IPC (LumiScan VGR benötigt Windows 11) sowie die installierte NVIDIA-GPU und die CUDA- und cuDNN-Versionen.
- **Logs:** Die Logdateien aus `<HDVAppData>\LumiScan VGR\logs` (`LumiScanVGR.log`) und, falls die Anwendung abgestürzt ist, das Speicherabbild aus `<HDVAppData>\LumiScan VGR`. `HDVAppData` steht für `C:\Users\<UserName>\AppData\Local\HD Vision Systems GmbH`.
- **Diagnoseinformationen:** S4 sammelt Diagnoseinformationen zur Anwendung; die gesammelten Daten können verschlüsselt an HD Vision Systems gesendet werden. Um Kameradaten einzuschließen, aktivieren Sie vorher **Camera png** und **Camera ply** unter **Export** in den **Admin Settings** (A1).
- **Zeitpunkt des Fehlers:** Datum und Uhrzeit, zu der der Fehler aufgetreten ist.
- **Kommunikationsstatus:**
  - PROFINET: ein Screenshot des Tabs **PROFINET** im Admin-Modus, die Werte von `OUT_ReturnCode`, `OUT_OperationMode` und `OUT_Error` und nach Möglichkeit der gespeicherte Status der SPS-Variablen.
  - OPC UA: die aufgerufene Methode, ihr `ReturnCode` oder der vom Client gemeldete Fehler (zum Beispiel `BadTimeout`) und das Ergebnis von `GetOperationMode`.
- **Konfiguration:** Die JSON-Einstellungsdatei, die beim Start geladen wurde.
- **Meldungen und Seriennummern:** Die genaue Meldung aus dem Statusfenster oder dem Log, ein Screenshot, die Seriennummer der Kamera und bei Lizenzproblemen die Seriennummer des LumiScan Key.

Customer Success von HD Vision Systems erreichen Sie unter [customer.success@hdvisionsystems.com](mailto:customer.success@hdvisionsystems.com) oder +49 6221 6721905. Fragen zu Lizenzen richten Sie an [licenses@hdvisionsystems.com](mailto:licenses@hdvisionsystems.com).

# FAQ – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/faq.html

Kurze Antworten auf häufige Fragen und Fehlermeldungen zu LumiScan VGR. Jeder Eintrag verweist auf die Seite mit den Details.

> [!TIP]
> Durchsuchen Sie diese Seite nach der genauen Fehlermeldung. Jeder Eintrag hat einen festen Anker (zum Beispiel `#faq-return-codes`).

## Anforderungen, Installation und Lizenzierung

### Was benötigt der IPC, um LumiScan VGR auszuführen? {#faq-system-requirements}

- **Antwort:**
  - Windows 11
  - Eine NVIDIA-GPU, die CUDA 11.8 unterstützt, mit CUDA Toolkit 11.8 und cuDNN 8.8.1 (die Installer stellt HD Vision Systems bereit)
  - Eine LumiScanX-Kamera, die über Ethernet mit dem IPC verbunden ist
  - Mindestens eine Schnittstelle zur Steuerung: PROFINET oder OPC UA
- **Mehr:** [Systemanforderungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/system-requirements.html)

### Was muss vor der Installation von LumiScan VGR installiert und geprüft werden? {#faq-install-prerequisites}

- **Antwort:**
  - CodeMeter Runtime 9.00 oder neuer, mit eingestecktem LumiScan Key.
  - CUDA 11.8.0 und cuDNN 8.8.1.
  - Die LumiScanX-Kamera, installiert und konfiguriert gemäß dem LumiScanX-Handbuch, einschließlich Netzwerk-, Windows-Firewall- und Virenschutzeinstellungen.
- **Mehr:** [Installation](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/installation.html#installing-lumiscan-vgr)

### Wie wird LumiScan VGR lizenziert? {#faq-licence}

- **Antwort:**
  - Bei HD Vision Systems gekauft: Die Lizenz liegt auf dem LumiScan Key. Installieren Sie die CodeMeter Runtime 9.00 oder neuer und stecken Sie den Key ein.
  - Im ctrlX Store für Windows 11 gekauft: Sie benötigen ctrlX WORKS und einen LumiScan Key.
  - Pro Gerät, auf dem die Software gleichzeitig läuft, ist ein LumiScan Key erforderlich. Keys können zwischen Geräten getauscht werden.
- **Mehr:** [Lizenz](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/system-requirements.html#licence), [FAQ zur Lizenzierung](https://docs.hdvisionsystems.com/de/lumiscan-licensing-de/1.0.4/faq.html)

## Start und Konfiguration

### Wie starte ich LumiScan VGR? {#faq-start}

- **Antwort:** Geben Sie im Startmenü-Fenster den Pfad zur Konfigurationsdatei ein (oder klicken Sie auf **Load** und wählen Sie sie aus) und klicken Sie auf **Start**. Über die Kommandozeile geben Sie mindestens die Einstellungsdatei mit `-s` oder `--settings <filepath>` an; `-v` zeigt die Version, `-h` die Kommandozeilen-Hilfe.
- **Mehr:** [LumiScan VGR starten](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/start-menu.html)

### Kann ich LumiScan VGR ohne Kamera oder SPS testen? {#faq-simulation}

- **Antwort:** Ja. Aktivieren Sie die Simulationsoptionen im Startmenü oder verwenden Sie die Kommandozeilenoptionen:
  - `--simulate-camera`: Bilder und Punktwolken werden statt von einer Kamera von der Festplatte geladen. Der Pfad wird mit `loadFilePath` festgelegt; ein Center-Bild (`.png`) und eine Punktwolke (`.ply`) mit demselben Basisnamen müssen vorhanden sein.
  - `--simulate-sps`: Es wird keine physische SPS benötigt; die SPS-Kommunikation kann über den Tab **PROFINET** simuliert werden.
- **Mehr:** [LumiScan VGR starten](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/start-menu.html), [RecordingSystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-system-settings.html#recording-system-settings-load-file-path)

### Was enthält die JSON-Einstellungsdatei, und wie stelle ich eine alte Datei um? {#faq-settings-file}

- **Antwort:** Die Einstellungsdatei enthält die Abschnitte `cameras`, `recordings`, `networks`, `robots`, `objects` und `pipelines` sowie die optionalen Abschnitte `user` und `system`. Das Metadatenformat hat sich nach Version 1.7.0.0 geändert: Die Dateiinformationen (`inputFileType`, `inputFileVersion`, `targetMachine`, `programName`, `programVersion`) stehen jetzt in einem Objekt `meta` statt in Feldern auf oberster Ebene wie `VGRVersion`. Neue Konfigurationen sollten die Struktur `meta` verwenden. `--gen-settings` erstellt eine Einstellungsdatei.
- **Mehr:** [JSON-Einstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings.html), [Meta-Einstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/json-settings/meta.html)

### Wie öffne ich den Admin- oder Debug-Modus, und warum sind die Admin-Steuerelemente inaktiv? {#faq-admin-debug-mode}

- **Antwort:**
  - **Strg + Umschalt + A** schaltet den Admin-Modus ein oder aus, **Strg + Umschalt + D** den Debug-Modus; **Strg + Umschalt + V** zeigt die Build-Version an.
  - Die Tabs **Scene** und **PROFINET** sind nur im Admin-Modus sichtbar.
  - Die Admin-Steuerelemente (A2 bis A14) sind nur im manuellen Modus aktiv, damit der automatische Ablauf angehalten ist.
  - Passwörter lassen sich mit `adminPassword` und `manualModePassword` im Abschnitt `user` festlegen; bleiben sie leer, ist kein Passwort erforderlich. Ist `system/enableExternalAdminModeControl` auf `true` gesetzt, schaltet die SPS den Admin-Modus über `IN_EnableAdminMode`, und der Passwortschutz für den Admin-Modus ist deaktiviert.
- **Mehr:** [Admin- und Debug-Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/admin-mode.html), [Benutzeroberfläche](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html)

## Betrieb und SPS-Kommunikation (PROFINET)

### Was ist der Unterschied zwischen Get Best Result und Grip Best Result? {#faq-get-vs-grip-best-result}

- **Antwort:** Beide berechnen aus den zuletzt berechneten Objektposen Greifpunkte für den aktiven Roboter und liefern den gültigen Griff mit der höchsten Priorität. Grip Best Result teilt dem System zusätzlich mit, dass das gewählte Ergebnis gegriffen wurde oder wird; über OPC UA liefert jeder Aufruf von `GripBestResult` den nächsten Kandidaten in der Rangfolge. Get Best Result verbraucht das Ergebnis nicht.
- **Mehr:** [PROFINET-Schnittstellenreferenz](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/profinet.html), [OPC UA Client Integration Guide](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/opcua/opc-ua-client-integration-guide.html)

### Mein Projekt hat mehrere Kameras, Pipelines oder Roboter. Welche werden verwendet? {#faq-multiple-components}

- **Antwort:** Alle Berechnungen verwenden die aktuell aktive Kamera, Pipeline und den aktiven Roboter. Wählen Sie sie vor jeder Funktion aus: über PROFINET mit `OUT_SetParameter` (`IN_ParamId` `1` = `SET_CAMERA_ID`, `2` = `SET_PIPELINE_ID`, `3` = `SET_ROBOT_ID`, ID in `IN_ParamArgString`), über OPC UA mit `SetActiveCamera`, `SetActivePipeline` und `SetActiveRobot`. Eine unbekannte ID liefert `ID_DOES_NOT_EXIST`.
- **Mehr:** [SPS-Einstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html)

## OPC UA

### Wie verbinde ich einen OPC-UA-Client mit LumiScan VGR? {#faq-opcua-connect}

- **Antwort:** Verbinden Sie sich mit `opc.tcp://<host>:4840`. Security Policy und Mode sind None mit anonymer Anmeldung; höchstens 2 Clients können gleichzeitig verbunden sein, das empfohlene Session-Timeout beträgt 10 s. Alle Knoten liegen unter `Objects/LumiScanVGR` (Namespace-Index 1). Da keine Authentifizierung erfolgt, sollte der Server nur innerhalb des Werksnetzes erreichbar sein.
- **Mehr:** [OPC UA Client Integration Guide](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/opcua/opc-ua-client-integration-guide.html)

### In welcher Reihenfolge rufe ich die OPC-UA-Methoden auf? {#faq-opcua-call-sequence}

- **Antwort:** Für den Standardbetrieb führt `ExecuteSimpleRecipe` (Kamera-, Pipeline- und Roboter-ID) oder `ExecuteRecipe` (vorkonfigurierte Rezept-ID) den Ablauf aus Aufnahme und Griff in einem Aufruf aus. Für eine feinere Steuerung verwenden Sie die Einzelschritte:
  1. Modus mit `GetOperationMode` prüfen; ist er nicht `AUTOMATIC`, `SetOperationMode` aufrufen.
  2. `SetupSystem` aufrufen und auf `SUCCESS` warten.
  3. Konfiguration mit `SetActiveCamera`, `SetActivePipeline` und `SetActiveRobot` wählen.
  4. `CaptureImage` und anschließend `ComputeObjects` aufrufen.
  5. `GetBestResult` (verbraucht das Ergebnis nicht) und/oder `GripBestResult` (liefert bei jedem Aufruf den nächsten Kandidaten) aufrufen.
- **Mehr:** [OPC UA Client Integration Guide](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/opcua/opc-ua-client-integration-guide.html)

## Rückgabewerte und Logdateien

### Was bedeuten die Rückgabewerte? {#faq-return-codes}

- **Antwort:** Das Ergebnis jeder Aktion erscheint im Statusfenster (zum Beispiel **SUCCESS**) und bei PROFINET als Zahl in `OUT_ReturnCode`. OPC-UA-Methoden liefern den Code als String `ReturnCode`.
  - `0` `SUCCESS`: kein Fehler
  - `1` `UNKNOWN_ERROR`: unbekannter Fehler; Log prüfen
  - `2` `CAMERA_NOT_INITIALIZED`: aktive Kamera nicht initialisiert oder nicht vorhanden; zuerst Setup ausführen
  - `3` `CAMERA_NOT_CONNECTED`: keine Verbindung zur Kamera
  - `4` `CAMERA_ACQUISITION_ERROR`: Fehler bei der Kommunikation mit der Kamera oder beim Erfassen von Daten
  - `5` `PIPELINE_NOT_INITIALIZED` / `6` `ROBOT_NOT_INITIALIZED`: aktive Pipeline bzw. aktiver Roboter nicht initialisiert oder nicht vorhanden
  - `7` `MISSING_DATA`: erforderliche Daten fehlen, z. B. eine Aufnahme oder das Ergebnis eines vorherigen Berechnungsschritts
  - `8` `ID_DOES_NOT_EXIST`: die Kamera-, Pipeline- oder Roboter-ID ist nicht konfiguriert
  - `9` `MISSING_TRANSFORM`: Koordinatentransformation nicht verfügbar, z. B. fehlende Hand-Auge-Kalibrierungsdaten für ein Roboter-Kamera-Paar
  - `10` `RESULTS_EMPTY`: keine gültigen Greifpunkte für den aktiven Roboter
  - `12` `CAMERA_HARDWARE_TRIGGER_AGAIN`: automatische Belichtung nicht erfolgreich; Kamera erneut auslösen
  - `13` `CAMERA_BAD_EXPOSURETIME_SETTING`: die angeforderte Belichtungszeit ist nicht erreichbar; Einstellungen der automatischen Belichtung prüfen
  - Nur OPC UA: `CAMERA_RESTART_REQUIRED` (`ResetCamera` aufrufen) und `OPERATION_MODE_INVALID` (Server nicht in `AUTOMATIC`; `SetOperationMode` mit `1` aufrufen)
- **Mehr:** [SPS-Einstellungen: Statusinformationen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#status-information), [OPC UA Client Integration Guide](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/opcua/opc-ua-client-integration-guide.html)

### Wo werden Logdateien, Aufnahmen und Trainingsdaten gespeichert? {#faq-logs-output-data}

- **Antwort:** `HDVAppData` steht für `C:\Users\<UserName>\AppData\Local\HD Vision Systems GmbH`.
  - Logdateien: `<HDVAppData>\LumiScan VGR\logs` (rotierend, max. 10 MB pro Datei, max. fünf Dateien). Das Log-Fenster öffnen Sie mit S3 in der Benutzeroberfläche; im Debug-Modus zeigt die Konsole die detaillierte Log-Ausgabe.
  - Crash-Dumps: `<HDVAppData>\LumiScan VGR`.
  - Aufgezeichnete und berechnete Daten: der in der Einstellungsdatei festgelegte Ausgabeordner (`saveFilePath`, Standard `data`). Einige Exportoptionen lassen sich im Admin-Modus unter **Admin Settings** (A1) schalten.
  - Trainingsdaten: Ordner `training_data` im Projektordner **Settings**.
- **Mehr:** [Generierte Daten und Dateien](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/output-data.html), [RecordingSystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-system-settings.html#recording-system-settings-save-file-path)

## Fehlerbehebung {#troubleshooting}

Probleme und Fehlermeldungen sind Schritt für Schritt unter [Fehlerbehebung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html) beschrieben:

- [Die Kamera wird nach dem Start nicht erkannt oder es wird kein Bild aufgenommen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-setup-required)
- [Die Bildaufnahme schlägt mit einem Kamera-Rückgabewert fehl](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-camera-error-code)
- [Es erscheint eine Timeout-Meldung oder nur ein schwarzes Bild, obwohl die Kamera erkannt wird](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-black-image-timeout)
- [LumiScan VGR reagiert nicht nach GripBestResult](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-no-reaction-plc-request)
- [Die SPS kann nach dem manuellen Modus keine Funktionen mehr starten](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-manual-mode-plc)
- [OPC-UA-Aufrufe schlagen mit `BadTimeout` oder `BadResourceUnavailable` fehl](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-opcua-timeout)
- [OPC-UA-Methoden liefern `OPERATION_MODE_INVALID`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-opcua-operation-mode-invalid)
- [`CameraTemperature` ist `-273.1528`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-opcua-camera-temperature)
- [`Shutdown` hat keine Wirkung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-opcua-shutdown-no-effect)
- [`RESULTS_EMPTY` wird zurückgegeben](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-results-empty)
- [Es werden keine Objekte erkannt (Objektanzahl `0`)](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-no-objects-detected)
- [Es kann kein Punktwolken-Matching durchgeführt werden](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-no-point-cloud-matching)
- [Eine Funktion liefert `ID_DOES_NOT_EXIST`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-id-does-not-exist)
- [Eine Funktion liefert `MISSING_TRANSFORM`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-missing-transform)
- [Pose Status zeigt „Can not be interpreted“](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-hand-eye-cannot-be-interpreted)
- [Pose Status zeigt „Bad pose quality.“](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-hand-eye-bad-pose-quality)
- [Nach der Aufnahme wird kein Bild hinzugefügt](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-hand-eye-no-image-added)
- [Das Kalibrierergebnis ist sehr schlecht](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-hand-eye-poor-result)

## Support

### Wo erhalte ich weitere Hilfe? {#faq-support}

- **Antwort:** Siehe die übergreifende [LumiScan FAQ](https://docs.hdvisionsystems.com/de/faq.html). Diagnoseinformationen lassen sich mit S4 in der Benutzeroberfläche sammeln und verschlüsselt an HD Vision Systems senden. Customer Success erreichen Sie unter [customer.success@hdvisionsystems.com](mailto:customer.success@hdvisionsystems.com) oder +49 6221 6721905; Fragen zu Lizenzen richten Sie an [licenses@hdvisionsystems.com](mailto:licenses@hdvisionsystems.com).
- **Mehr:** [Benutzeroberfläche](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/user-interface.html)

# Haftungsausschluss – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/disclaimer.html

1. Für alle Schäden die eine Verletzung des Lebens, des Körpers oder der Gesundheit nach sich ziehen sowie entstandene Sachschäden, die aus nicht bestimmungsgemäßer Verwendung entstehen, haftet nicht der Hersteller sondern, der Betreiber. Bitte beachten Sie, das Bedienungs- und/oder Anschlussfehler außerhalb unseres Einflussbereiches liegen. Verständlicherweise können wir für Schäden, die daraus entstehen, keinerlei Haftung übernehmen.
2. Alle Schäden, die durch unautorisierte Debugger-basierten Aktivitäten zur Inspektion, Analyse oder Manipulation der von HD Vision Systems bereitgestellten Software entstehen, liegen in der alleinigen Verantwortung des Benutzers. Jeglicher Versuch, einen Debugger zu verwenden, ist strengstens verboten und kann irreversible Folgen wie Datenverlust, Dienstunterbrechung bis hin zu rechtlichen Konsequenzen nach sich ziehen. Die Hersteller, Entwickler und Vertreiber der Software haften nicht für Schäden und Verluste, die sich aus der Nichtbeachtung dieser Warnung durch den Benutzer entstehen.
3. Schadensersatzansprüche des Käufers aus Verschulden bei Vertragsabschluss, Verletzung vertraglicher Nebenpflichten und unerlaubter Handlung sind ausgeschlossen, es sei denn, sie beruhen auf Vorsatz oder grober Fahrlässigkeit durch die HD Vision Systems GmbH selbst oder einen unserer Erfüllungsgehilfen.
4. Regressforderungen im Sinne des §12 Produkthaftungsgesetzes sind ausgeschlossen, es sei denn, der Regressberechtigte weist nach, dass der Fehler von der HD Vision Systems GmbH verursacht und zumindest grob fahrlässig verschuldet worden ist.
5. Sollten einzelne Bestimmungen dieses Vertrages unwirksam oder undurchführbar sein oder nach Vertragsschluss unwirksam oder undurchführbar werden, bleibt davon die Wirksamkeit des Vertrages im Übrigen unberührt. An die Stelle der unwirksamen oder undurchführbaren Bestimmung soll diejenige wirksame und durchführbare Regelung treten, deren Wirkungen der wirtschaftlichen Zielsetzung am nächsten kommen, die die Vertragsparteien mit der unwirksamen bzw. undurchführbaren Bestimmung verfolgt haben. Die vorstehenden Bestimmungen gelten entsprechend für den Fall, dass sich der Vertrag als lückenhaft erweist. Für Streitigkeiten im Zusammenhang mit diesem Haftungsausschluss sind ausschließlich deutsche Gerichte zuständig.

Für weitere Informationen zur Garantie, wenden Sie sich bitte an den Hersteller.

# OPC UA Client Integration Guide – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/opcua/opc-ua-client-integration-guide.html

> [!NOTE]
> Die API-Referenz ist nur auf Englisch verfügbar, da sie aus den englischen Quellcode-Kommentaren generiert wird. Technische Begriffe (Klassennamen, Methoden, Parameter) bleiben unverändert.

This document describes how to connect to and operate the LumiScan VGR OPC UA server. Because OPC UA is self-describing, clients can browse the available nodes and methods directly. This guide covers the configuration settings and call patterns clients **must** follow to integrate reliably.

## Client Configuration & Execution Behavior

Due to physical hardware operations (camera triggers, robot communication) and heavy computational tasks (neural network inference), clients **must** respect the following execution constraints:

- **Execution Time & Call Timeouts**: Many methods take significantly longer than standard PLC operations.
  - **Typical execution time**: 3 to 10 seconds.
  - **Recommended client call timeout**: At least **15 seconds**.
  - *Failure to configure this timeout will result in client-side errors such as `BadTimeout` or transport disconnects.*
- **Concurrency**: The server processes **one method at a time**. Parallel or concurrent method calls are not supported and will be rejected with `BadResourceUnavailable`.

## Connection Profile

| Property | Value |
| --- | --- |
| Endpoint | `opc.tcp://<host>:4840` |
| Security Policy / Mode | None (anonymous, unauthenticated) |
| Authentication | **None** (Anonymous login) |
| Max. simultaneous clients | **2** (additional connection attempts will be refused) |
| Recommended Session Timeout | **10s** (adjust up or down based on your polling interval) |

> **Note:** The server currently requires no authentication. Ensure it is accessible only within your plant network perimeter.

## Address Space Layout

All nodes are hosted under `Objects/LumiScanVGR` (namespace index 1).

### Manufacturer

Child object: `LumiScanVGR/Manufacturer`

| Variable | Type | Access | Description |
| --- | --- | --- | --- |
| `Name` | `String` | Read | Manufacturer name. |
| `Address` | `String` | Read | Manufacturer address. |

### Version

Child object: `LumiScanVGR/Version`

| Variable | Type | Access | Description |
| --- | --- | --- | --- |
| `Version` | `String` | Read | Version string of the running software build. |
| `GitRevision` | `String` | Read | Commit hash of the running build. |
| `BuildTime` | `String` | Read | Build timestamp of the running build. |

### Capability Catalogs

These arrays are populated at server startup from the project configuration. If hardware IDs are added or changed, the server must be restarted to reflect them.

| Variable | Type | Access | Description |
| --- | --- | --- | --- |
| `PossibleCameras` | `String[]` | Read | All configured camera IDs. |
| `PossiblePipelines` | `String[]` | Read | All configured pipeline IDs. |
| `PossibleRobots` | `String[]` | Read | All configured robot IDs. |

### Live Configuration

These nodes are updated on every read and reflect the current active selections.

| Variable | Type | Access | Description |
| --- | --- | --- | --- |
| `ActiveCamera` | `String` | Read | Currently active camera. |
| `ActivePipeline` | `String` | Read | Currently active pipeline/recipe. |
| `ActiveRobot` | `String` | Read | Currently active robot definition. |

## Method Reference

All methods return their status as the first output argument `ReturnCode` (type `String`). See `Return Codes` for all possible values.

| Method | Input Arguments | Output Arguments | Description |
| --- | --- | --- | --- |
| `ExecuteSimpleRecipe` | `CameraId` (`String`), `PipelineId` (`String`), `RobotId` (`String`) | `ReturnCode` | Convenience method. Runs the full capture-and-grip sequence using the IDs supplied by the client. Passing an empty string reuses the last known ID for that parameter — explicitly providing all IDs is strongly recommended. |
| `ExecuteRecipe` | `RecipeId` (`String`) | `ReturnCode` | Convenience method. Runs the full capture-and-grip sequence using a pre-configured server-side recipe identified by `RecipeId`. Recipe IDs and their associated camera/pipeline/robot combinations are defined in the LumiScan VGR project configuration. Empty strings are **not** allowed. |
| `SetOperationMode` | `Mode` (`Byte`) | `ReturnCode` | Switches the server between `IDLE` (0), `AUTOMATIC` (1), `MANUAL` (2), and `SHUTDOWN` (3). All other methods are only accepted in `AUTOMATIC` mode. |
| `GetOperationMode` | — | `ReturnCode`, `Mode` (`Byte`), `ModeName` (`String`) | Returns the current operation mode as a numeric value and a human-readable name. |
| `SetActiveCamera` | `ActiveCamera` (`String`) | `ReturnCode` | Selects the camera for subsequent operations. |
| `SetActivePipeline` | `ActivePipeline` (`String`) | `ReturnCode` | Selects the vision pipeline/recipe for subsequent captures. |
| `SetActiveRobot` | `ActiveRobot` (`String`) | `ReturnCode` | Selects the robot definition used to express grip poses. |
| `SetupSystem` | — | `ReturnCode` | Initializes all hardware and software resources. Must be called at least once after the application starts. |
| `ResetCamera` | `CameraId` (`String`, optional) | `ReturnCode` | Performs a deep reset of the specified camera. Pass an empty string to reset all cameras. |
| `Shutdown` | — | `ReturnCode` | **Placeholder** — not yet implemented. Has no effect on the running process. |
| `CaptureImage` | — | `ReturnCode` | Acquires a fresh image from the active camera. |
| `GetCameraTemperature` | — | `ReturnCode`, `CameraTemperature` (`Double`) | Returns the current temperature of the active camera in °C. Returns `-273.1528` when the value is unavailable — treat this as "unknown". |
| `ComputeObjects` | — | `ReturnCode`, `NumObjects2D` (`Byte`), `NumObjects3D` (`Byte`) | Runs object detection on the last captured image. Returns the number of detected 2D and 3D objects (capped at 255). |
| `GetBestResult` | — | `ReturnCode`, `GripPointPose` (`Float[7]`) | Returns the highest-ranked grip pose from the most recent detection. Use for inspection or simulation without consuming the result. |
| `GripBestResult` | — | `ReturnCode`, `GripPointPose` (`Float[7]`) | Returns the next grip pose in ranked order and advances the internal iterator. Call repeatedly to step through all candidates. |
| `GetReport` | `ParamId` (`Byte`), `ArgByte` (`Byte`), `ArgFloat` (`Float`), `ArgString` (`String`) | `ReturnCode`, `ValueByte` (`Byte`), `ValueInt` (`Int32`), `ValueFloat` (`Float`), `ValueString` (`String`) | Generic getter for querying object counters and similar values. See `Parameter IDs` below. |

### Pose Array Layout

`GripPointPose` always contains exactly seven `Float` values:

| Index | Field | Description |
| --- | --- | --- |
| 0 | `x` | Translation X in robot coordinate system (meters) |
| 1 | `y` | Translation Y in robot coordinate system (meters) |
| 2 | `z` | Translation Z in robot coordinate system (meters) |
| 3 | `rx` | Rotation X (Euler / axis-angle, robot-driver dependent) |
| 4 | `ry` | Rotation Y |
| 5 | `rz` | Rotation Z |
| 6 | `w` | Optional fourth component (quaternion W or unused). Remains `0` when not supplied. |

Interpret the pose according to your robot plug-in documentation.

### Parameter IDs

Used via `GetReport` to query detection results.

| `ParamId` | ParamId Description | Input Field `ArgString` | Result field | Description |
| --- | --- | --- | --- | --- |
| `0` | `GET_NUM_OBJECTS2D_TOTAL` | — | `ValueByte` | Total number of detected 2D objects. |
| `1` | `GET_NUM_OBJECTS3D_TOTAL` | — | `ValueByte` | Total number of detected 3D objects. |
| `2` | `GET_NUM_OBJECTS2D_TYPE` | \<Object Id> | `ValueByte` | Number of 2D objects matching the given class. |
| `3` | `GET_NUM_OBJECTS3D_TYPE` | \<Object Id> | `ValueByte` | Number of 3D objects matching the given class. |
| `4` | `GET_DEPTH_DIFFERENCE` | — | `ValueFloat` | Thickness of gripped object |

`SetParameter` is not supported via OPC UA.

### Operation Mode

The server enforces an operation mode that must be set before most methods are usable.

| Mode | Value (`Byte`) | Description |
| --- | --- | --- |
| `IDLE` | `0` | Standby. Most methods rejected. |
| `AUTOMATIC` | `1` | Normal production mode. All methods accepted. |
| `MANUAL` | `2` | Local/GUI control active. Most methods rejected. |
| `SHUTDOWN` | `3` | Shutdown in progress. |

Only `SetOperationMode` and `GetOperationMode` are accepted in any mode. All other methods return `OPERATION_MODE_INVALID` when the mode is not `AUTOMATIC`. The server starts in `AUTOMATIC` by default.

## Recommended Call Sequence

> **Shortcut for standard production:** Replace steps 2–6 with a single call:\* ExecuteSimpleRecipe(CameraId, PipelineId, RobotId) — client provides IDs directly. + \* ExecuteRecipe(RecipeId) — use a pre-configured server-side recipe(settings.json). Use the step-by-step sequence below when you need finer control, e.g. to inspect intermediate counts or repeat only the capture step.

1. **Get/Set Operation Mode** — Verify the server is in `AUTOMATIC`. If it reports `IDLE` or `MANUAL`, call `SetOperationMode` before anything else.
2. **SetupSystem** — Initialize hardware and load all resources. Wait for `SUCCESS` before continuing.
3. **SetActiveCamera / SetActivePipeline / SetActiveRobot** — Define the working configuration. Required at least once per production order; skip if the previous selection is still valid.
4. **CaptureImage** — Acquire the current scene.
5. **ComputeObjects** — Run detection. `NumObjects2D` and `NumObjects3D` are available on `SUCCESS`. Repeat from step 4 if a fresh scene is required.
6. **GetBestResult** — Read the highest-ranked grip pose without consuming it (useful for logging or simulation).
7. **GripBestResult** — Retrieve the next executable grip pose for the robot. Call repeatedly to step through all candidates.
8. *(Optional)* **GripBestResult** — Required for measuring object’s thickness by calling this function after robot grip the current object away.
9. *(Optional)* **GetReport(ParamId:4)** — It will return object thickness in `ValueFloat` field

Read `ActiveCamera`, `ActivePipeline`, and `ActiveRobot` at any time to confirm which configuration is currently active.

## Return Codes

Every method returns a `ReturnCode` string as its first output. The table below lists all possible values and their meaning.

| ReturnCode | Description |
| --- | --- |
| `SUCCESS` | Operation completed without errors. |
| `UNKNOWN_ERROR` | Unclassified failure. Check the server-side application log for details. |
| `CAMERA_NOT_INITIALIZED` | Camera was not initialized. Call `SetupSystem` first. |
| `CAMERA_NOT_CONNECTED` | Camera hardware is not reachable. Use `ResetCamera` or check cabling. |
| `CAMERA_ACQUISITION_ERROR` | Image acquisition failed (exposure, trigger, or transport problem). |
| `PIPELINE_NOT_INITIALIZED` | The selected pipeline is not ready. Verify `SetActivePipeline` succeeded. |
| `ROBOT_NOT_INITIALIZED` | Robot configuration is missing or invalid. |
| `MISSING_DATA` | Required data (image, point cloud, etc.) is not available yet. |
| `ID_DOES_NOT_EXIST` | The supplied camera/pipeline/robot/recipe ID is not known. Verify against the `Possible*` arrays. |
| `MISSING_TRANSFORM` | The robot-to-world transform could not be determined. |
| `RESULTS_EMPTY` | No grip candidates are available. Run `ComputeObjects` first. |
| `CAMERA_HARDWARE_TRIGGER_AGAIN` | Hardware trigger produced no frame. Retry `CaptureImage`. |
| `CAMERA_BAD_EXPOSURETIME_SETTING` | Exposure setting prevented a valid image from being acquired. |
| `CAMERA_RESTART_REQUIRED` | Camera driver/firmware requires a restart. Call `ResetCamera`. |
| `OPERATION_MODE_INVALID` | Method was rejected because the server is not in `AUTOMATIC` mode. Call `GetOperationMode` to check the current state, then `SetOperationMode` to switch back. |

## Troubleshooting

Probleme bei OPC-UA-Aufrufen sind Schritt für Schritt unter [Fehlerbehebung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#opc-ua) beschrieben:

- Aufrufe laufen in ein Timeout, oder `BadResourceUnavailable`: [OPC-UA-Aufrufe schlagen mit `BadTimeout` oder `BadResourceUnavailable` fehl](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-opcua-timeout)
- `OPERATION_MODE_INVALID`: [OPC-UA-Methoden liefern `OPERATION_MODE_INVALID`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-opcua-operation-mode-invalid)
- `ID_DOES_NOT_EXIST`, oder die Arrays `Possible*` sind veraltet: [Eine Funktion liefert `ID_DOES_NOT_EXIST`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-id-does-not-exist)
- Objektanzahlen sind nach `ComputeObjects` 0: [Es werden keine Objekte erkannt (Objektanzahl `0`)](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-no-objects-detected)
- `GripBestResult` liefert `RESULTS_EMPTY`: [`RESULTS_EMPTY` wird zurückgegeben](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#faq-results-empty)
- `CameraTemperature` ist `-273.1528`: [`CameraTemperature` ist `-273.1528`](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-opcua-camera-temperature)
- `Shutdown` hat keine Wirkung: [`Shutdown` hat keine Wirkung](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#ts-opcua-shutdown-no-effect)

---

# AutoexposureSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/autoexposure-settings.html

Definiert, wie die automatische Belichtung angewendet wird, d. h. wie die aktuelle Bildintensität berechnet wird und wann/wie die neue Belichtungszeit angewendet wird.

## Membervariablen

- **`polygon`:** `std::vector< cv::Point >`, Standard: `\{\{50, 50\}, \{1230, 50\}, \{1230, 910\}, \{50, 910\}\}` *JSON-Typ*: Array +*Anforderung*: Das Array muss Tupel aus Ganzzahlen enthalten (d. h. Arrays aus zwei Ganzzahlen). Enthält Bildkoordinatenpaare, die die polygonförmige ROI beschreiben, die für die Berechnung der automatischen Belichtung verwendet wird.

- **`referenceIntensity`:** `int`, Standard: `{60}` *JSON-Typ*: Ganzzahl +*Anforderung*: Der Wert muss im Bereich (0, 255) liegen. Referenzintensitätswert. Die aktuelle Intensität eines von der Kamera aufgenommenen Bilds sollte idealerweise diesem Wert entsprechen.

- **`maxRetryTimeout_ms`:** `size_t`, Standard: `{800}` Innerhalb dieser Zeit unternimmt der Software-Trigger der automatischen Belichtung weitere Versuche, eine bessere Belichtungszeit zu ermitteln. Bei Mono8 benötigt lumiscanX 170–200 ms, sodass 2–4 Versuche möglich sind;

- **`referenceIntensityTolerance`:** `uint8_t`, Standard: `{5}` Wenn der Ziel-Referenzwert der automatischen Belichtung nach der Aufnahme innerhalb von referenceIntensity ± Toleranz liegt, wird die automatische Belichtung vorzeitig beendet, anstatt bis zum Timeout weitere Versuche durchzuführen.

- **`allowedIntensityUpperBound`:** `uint8_t`, Standard: `{255}` Dies ist die obere Grenze der zulässigen Intensität. *JSON-Typ*: Ganzzahl +*Anforderung*: Der Wert muss im Bereich (0, 255) liegen und muss größer als allowedIntensityLowerBound und größer als referenceIntensity sein. Nach der Bildaufnahme prüft die automatische Belichtung, ob der Wert des neuen Bilds nahe am Referenzwert liegt. Wenn der Wert größer als dieser Wert ist, wird dies als ungültige automatische Belichtung betrachtet, und die Kamera versucht erneut aufzunehmen.

- **`allowedIntensityLowerBound`:** `uint8_t`, Standard: `{0}` Dies ist die untere Grenze der zulässigen Intensität. *JSON-Typ*: Ganzzahl +*Anforderung*: Der Wert muss im Bereich (0, 255) liegen und muss kleiner als allowedIntensityUpperBound und referenceIntensity sein. Nach der Bildaufnahme prüft die automatische Belichtung, ob der Wert des neuen Bilds nahe am Referenzwert liegt. Wenn der Wert kleiner als dieser Wert ist, wird dies als ungültige automatische Belichtung betrachtet, und die Kamera versucht erneut aufzunehmen.

- **`intensityMeasurementAlgorithm`:** `IntensityMeasurementAlgorithm`, Standard: `\{IntensityMeasurementAlgorithm::Mean\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Der Wert muss aus der folgenden Menge ausgewählt werden: \\{Mean, Median\\} Definiert, welche Methode zur Bestimmung der Referenzintensität verwendet wird.

- **`lowerExposureTimeLimit_us`:** `int`, Standard: `{500}` *JSON-Typ*: Ganzzahl +*Anforderung*: Der Wert muss größer/gleich 500 µs und kleiner als upperExposureTimeLimit_us sein. Untere Grenze der berechneten Belichtungszeit der automatischen Belichtung.

- **`upperExposureTimeLimit_us`:** `int`, Standard: `{1500000}` *JSON-Typ*: Ganzzahl +*Anforderung*: Der Wert muss kleiner/gleich 1.500.000 µs und größer als lowerExposureTimeLimit_us sein. Obere Grenze der berechneten Belichtungszeit der automatischen Belichtung.

## Enumerationen

**Tabelle 1. IntensityMeasurementAlgorithm**

| Wert | Beschreibung |
| --- | --- |
| `Mean` |   |
| `Median` |   |

# BoxFilterParameter – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/box-filter-parameter.html

Entfernt Punkte innerhalb/außerhalb der angegebenen Box (Bounding Box).

## Membervariablen

- **`minVertex`:** `std::array< float, 3 >` [m] (x, y, z) Unterer linker Eckpunkt der Box

- **`maxVertex`:** `std::array< float, 3 >` [m] (x, y, z) Oberer rechter Eckpunkt der Box

- **`transform`:** `Transform`, Standard: `\{\}` Koordinatensystem, in dem die Box-Eckpunkte angegeben sind

- **`keepInside`:** `bool`, Standard: `{true}` Bei false werden die Punkte außerhalb der Box behalten

- **`filterType`:** `CloudFilterType` Typ des Punktwolken-Filters

## Enumerationen

**Tabelle 1. CloudFilterType**

| Wert | Beschreibung |
| --- | --- |
| `BOX` | Box-Filter. |
| `REMOVE_NAN` | Entfernt NaN-Punkte. |

# CameraSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/camera-settings.html

LumiScan-Einstellungen. Die Einträge entsprechen den Einstellungen des LumiScan Viewers.

## Membervariablen

- **`id`:** `std::string`, Standard: `\{""\}` *JSON-Typ*: Zeichenkette Eindeutiger Kameraname in den Einstellungen

- **`serial`:** `std::string`, Standard: `\{""\}` *JSON-Typ*: Zeichenkette Die Seriennummer der Kamera. Ist sie nicht angegeben, wird `id` als Seriennummer verwendet.

- **`calibrationFile`:** `std::filesystem::path`, Standard: `\{""\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Muss ein Pfad zu einer regulären Datei sein. Dateipfad zur Kalibrierungsdatei, die dem LumiScan-Gerät zugeordnet ist.

- **`simulateCamera`:** `bool`, Standard: `{false}` *JSON-Typ*: (optional) Boolean Zwingt die Anwendung, eine Kamera zu simulieren. Hierfür ist keine physische Kamera erforderlich. Bei der Bildaufnahme werden stattdessen die über loadFilePath/datasetName angegebenen Daten geladen. Ist kein datasetName angegeben, wird die id der Aufnahmeeinstellungen als datasetName verwendet.

- **`genTLSettings`:** `std::optional< hdv::camera::genicam::GenTLSettings >`, Standard: \`\\{std::nullopt\\}

# CloudFilterParameterBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/cloud-filter-parameter-base.html

Abstrakte Basisklasse für alle Punktwolken-Filterparameter.

## Memberfunktionen

- **`CloudFilterParameterBase(CloudFilterType filterType_)`:**

- **`virtual ~CloudFilterParameterBase()=default`:** == Membervariablen
- **`filterType`:** `CloudFilterType` Typ des Punktwolken-Filters

## Enumerationen

**Tabelle 1. CloudFilterType**

| Wert | Beschreibung |
| --- | --- |
| `BOX` | Box-Filter. |
| `REMOVE_NAN` | Entfernt NaN-Punkte. |

# ConcreteCloudFilterParameterBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/concrete-cloud-filter-parameter-base.html

(keine Beschreibung)

## Memberfunktionen

- **`ConcreteCloudFilterParameterBase()`:** == Membervariablen
- **`filterType`:** `CloudFilterType` Typ des Punktwolken-Filters

## Enumerationen

**Tabelle 1. CloudFilterType**

| Wert | Beschreibung |
| --- | --- |
| `BOX` | Box-Filter. |
| `REMOVE_NAN` | Entfernt NaN-Punkte. |

# CorrectionFeature – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-feature.html

(keine Beschreibung)

## Membervariablen

- **`objectId`:** `std::string`, Standard: `\{""\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Darf nicht leer sein. Objekt-ID des Merkmals.

- **`position`:** `Eigen::Vector2f`, Standard: `\{Eigen::Vector2f::Zero()\}` *JSON-Typ*: Array +*Anforderung*: Muss zwei Elemente haben. Position des Merkmals im Koordinatensystem der orientierten Bounding Box (d. h. die Box-Ecken liegen bei [±1, ±1]).

# CorrectionSettingsBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-base.html

Definiert, wie eine Punktwolke korrigiert werden kann (z. B. wenn beim Greifen nichtlineare Versätze auftreten). Basisklasse. Instanzen finden Sie unter [CAMERA_CORRECTION_TYPE](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-base.html#correction-settings-base-camera-correction-type).

## Memberfunktionen

- **`virtual ~CorrectionSettingsBase()=default`:**

- **`virtual CAMERA_CORRECTION_TYPE type() const =0`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss ein CAMERA_CORRECTION_TYPE sein. Typ der Korrektur.

## Enumerationen

**Tabelle 1. CAMERA_CORRECTION_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `CLOUD_SCALE` | Skaliert jeden Punkt der Punktwolke um einen festen Faktor. Siehe [CorrectionSettings\<CAMERA_CORRECTION_TYPE::CLOUD_SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-scale.html). |
| `CLOUD_Z_CALIBRATION` | Addiert einen Korrekturfaktor zur z-Komponente jedes Punkts. Siehe [CorrectionSettings\<CAMERA_CORRECTION_TYPE::CLOUD_Z_CALIBRATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration.html). |

# CorrectionSettings< CAMERA_CORRECTION_TYPE::CLOUD_SCALE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-scale.html

Kamerakorrektur.

Wendet eine Skalierung auf alle Punkte der Punktwolke an.

## Memberfunktionen

- **`virtual CAMERA_CORRECTION_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::SET_FULL sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`scale`:** `std::array< float, 3 >`, Standard: `\{1.0f, 1.0f, 1.0f\}` *JSON-Typ*: Array +*Anforderung*: Muss drei Elemente enthalten. Jedes Element muss größer als null sein. Skalierungsfaktoren für x, y und z.

## Enumerationen

**Tabelle 1. CAMERA_CORRECTION_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `CLOUD_SCALE` | Skaliert jeden Punkt der Punktwolke um einen festen Faktor. Siehe [CorrectionSettings\<CAMERA_CORRECTION_TYPE::CLOUD_SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-scale.html#). |
| `CLOUD_Z_CALIBRATION` | Addiert einen Korrekturfaktor zur z-Komponente jedes Punkts. Siehe [CorrectionSettings\<CAMERA_CORRECTION_TYPE::CLOUD_Z_CALIBRATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration.html). |

# CorrectionSettings< CAMERA_CORRECTION_TYPE::CLOUD_Z_CALIBRATION >::ImageDistancePair – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration-imagedistancepair.html

(keine Beschreibung)

## Membervariablen

- **`imagePath`:** `std::filesystem::path` *JSON-Typ*: Zeichenkette +*Anforderung*: Muss auf ein gültiges Kalibrierungsbild verweisen (z. B. 1 Kanal). Das Bild enthält Versatzwerte für Punkte im Abstand zDistance.

- **`zDistance`:** `float`, Standard: `\{0.0f\}` *JSON-Typ*: Gleitkommazahl +*Anforderung*: Muss größer als null sein. Kalibrierungstiefe des Bilds.

- **`maxCalibrationDistance`:** `float`, Standard: `\{0.02\}` *JSON-Typ*: Gleitkommazahl +*Anforderung*: Muss größer als minCalibrationDistance sein. Der Abstand, dem die maximale Bildintensität (z. B. 255) entspricht. Ein positiver Abstand führt zu einer Verschiebung der Punktwolke von der Kamera weg.

- **`minCalibrationDistance`:** `float`, Standard: `\{0.00\}` *JSON-Typ*: Gleitkommazahl +*Anforderung*: Muss kleiner als minCalibrationDistance sein. Der Abstand, dem die minimale Bildintensität (z. B. 0) entspricht. Ein positiver Abstand führt zu einer Verschiebung der Punktwolke von der Kamera weg.

- **`decayDistance`:** `float`, Standard: `\{0.1\}` *JSON-Typ*: Gleitkommazahl +*Anforderung*: Muss größer als null sein. Diese Kalibrierungsebene beeinflusst alle Punkte bis zu einem Abstand von decayDistance zu zDistance. Der Wert fällt linear ab.

# CorrectionSettings< CAMERA_CORRECTION_TYPE::CLOUD_Z_CALIBRATION > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration.html

Kamerakorrektur.

Wendet eine Skalierung und die Addition eines z-Versatzes auf alle Punkte der Punktwolke an. Alle Angaben erfolgen in Metern.

## Memberfunktionen

- **`virtual CAMERA_CORRECTION_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::SET_FULL sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`scale`:** `std::array< float, 3 >`, Standard: `\{1.0f, 1.0f, 1.0f\}` *JSON-Typ*: Array +*Anforderung*: Muss drei Elemente enthalten. Jedes Element muss größer als null sein. Skalierungsfaktoren für x, y und z.

- **`layers`:** `std::vector< ImageDistancePair >` *JSON-Typ*: Array aus ImageDistancePair-Objekten. +*Anforderung*: Darf nicht leer sein.

## Enumerationen

**Tabelle 1. CAMERA_CORRECTION_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `CLOUD_SCALE` | Skaliert jeden Punkt der Punktwolke um einen festen Faktor. Siehe [CorrectionSettings\<CAMERA_CORRECTION_TYPE::CLOUD_SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-scale.html). |
| `CLOUD_Z_CALIBRATION` | Addiert einen Korrekturfaktor zur z-Komponente jedes Punkts. Siehe [CorrectionSettings\<CAMERA_CORRECTION_TYPE::CLOUD_Z_CALIBRATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration.html#). |

# CorrectionSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings.html

(keine Beschreibung)

# DepthEstimationSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/depth-estimation-settings.html

Die Methode zur Tiefenschätzung.

## Membervariablen

- **`rayRadius`:** `float`, Standard: `\{0.1f\}` *JSON-Typ*: Gleitkommazahl +*Anforderung*: Muss größer als null sein. Alle Punkte, deren Abstand zum Strahl von der Kamera zum vorherigen Objektzentrum kleiner als rayRadius ist, werden für die Tiefenschätzung des Objekts berücksichtigt.

# Detection2DSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-settings.html

Definiert die einzelnen Schritte, die für die 2D-Detektion ausgeführt werden. Die Schritte sind in chronologischer Reihenfolge angeordnet, d. h. jede Ausgabe des Verarbeitungsschritts i wird einzeln vom Verarbeitungsschritt i + 1 verarbeitet.

## Membervariablen

- **`steps`:** `std::vector< std::shared_ptr< Detection2DStepSettingsBase > >` *JSON-Typ*: Array aus Detection2DStepSettingsBase-Objekten

- **`sort`:** `std::optional< DistanceToReferencePointParameter >`, Standard: `\{std::nullopt\}`

- **`filter`:** `std::optional< TopNParameter >`, Standard: \`\\{std::nullopt\\}

# Detection2DStepSettingsBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-base.html

Gemeinsame Basisklasse für 2D-Detektionseinstellungen. Spezifische Detektoren finden Sie unter [OBJ_DET_2D_TYPE](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-base.html#detection-2d-step-settings-base-obj-det-2d-type).

## Memberfunktionen

- **`virtual ~Detection2DStepSettingsBase()=default`:**

- **`virtual OBJ_DET_2D_TYPE type() const =0`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss ein OBJ_DET_2D_TYPE sein. Typ des 2D-Detektionsschritts.

## Enumerationen

**Tabelle 1. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html

Schritt der 2D-Detektions-Pipeline.

Lädt voreingestellte orientierte Bounding Boxes mit der angegebenen Klassen-ID aus einer CSV-Datei

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::FEATURE_MATCHING sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`instancesFile`:** `std::filesystem::path` *JSON-Typ*: Vektor aus Zeichenketten +*Anforderung*: Darf nicht leer sein, und die TSV-Datei muss vorhanden sein. Muss eine Kopfzeile sowie die Spalten centerX/centerY/width/height/angleRad/label enthalten. Derzeit wird nur Tab als Trennzeichen unterstützt.

## Enumerationen

**Tabelle 1. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html#). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::FEATURE_MATCHING > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html

Schritt der 2D-Detektions-Pipeline.

Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet.

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::FEATURE_MATCHING sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`optimizationParameters`:** `std::vector< FEATURE_MATCHING_OPT_PARAM >` *JSON-Typ*: Vektor aus Zeichenketten +*Anforderung*: Darf nicht leer sein. Jedes Element muss ein FEATURE_MATCHING_OPT_PARAM sein. Gibt an, welche Parameter während des Feature-Matchings optimiert werden.

- **`iterations`:** `int`, Standard: `{3}` *JSON-Typ*: Ganzzahl +*Anforderung*: Muss größer als null sein. Anzahl der Gauß-Newton-Iterationen.

- **`features`:** `std::vector< CorrectionFeature >` *JSON-Typ*: Vektor aus CorrectionFeature-Objekten +*Anforderung*: Darf nicht leer sein. Beschreibung der Merkmale und ihrer Position innerhalb jeder orientierten Bounding Box.

## Enumerationen

**Tabelle 1. FEATURE_MATCHING_OPT_PARAM**

| Wert | Beschreibung |
| --- | --- |
| `SCALEX` | Skaliert die orientierte Bounding Box in x-Richtung. |
| `SCALEY` | Skaliert die orientierte Bounding Box in y-Richtung. |
| `TX` | Verschiebt die orientierte Bounding Box in x-Richtung. |
| `TY` | Verschiebt die orientierte Bounding Box in y-Richtung. |
| `ANGLE` | Rotiert die orientierte Bounding Box. |

**Tabelle 2. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html#). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html

Schritt der 2D-Detektions-Pipeline.

Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus, bei denen die Klassifikation ein anderes Objekt erkennt.

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`networkId`:** `std::string`, Standard: `\{""\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Muss eine gültige Netzwerk-ID für die Objektklassifikation sein (siehe NetworkSettings). ID des Objektklassifikationsnetzwerks.

- **`labelId`:** `std::optional< std::string >`, Standard: `\{""\}` *JSON-Typ*: (optional) Zeichenkette Label des Objekts. Ist kein Label angegeben, wird die Objekt-ID als Label-ID verwendet. Alle verfügbaren Labels finden sich in der JSON-Klassenliste der Netzwerkbeschreibung, die jedem Netzwerk beiliegt.

- **`detectionThreshold`:** `float`, Standard: `\{0.3f\}` *JSON-Typ*: Gleitkommazahl +*Anforderung*: Muss im Bereich [0.0, 1.0] liegen. Schwellenwert für den Score der Objektklassifikation.

- **`local`:** `bool`, Standard: `{false}` *JSON-Typ*: Boolean Bei true wird das vollständige Bild für die Inferenz verwendet. Bei false wird die aktuelle orientierte Bounding Box verwendet.

## Enumerationen

**Tabelle 1. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html#). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::REORIENT_ASPECT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html

Schritt der 2D-Detektions-Pipeline.

Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben.

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::REORIENT_ASPECT sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`topSide`:** `REORIENT_ASPECT_TOP_SIDE`, Standard: `\{REORIENT_ASPECT_TOP_SIDE::LONG\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Muss ein REORIENT_ASPECT_TOP_SIDE sein. Bestimmt, welche Seite der orientierten Bounding Box als Oberseite betrachtet werden soll.

## Enumerationen

**Tabelle 1. REORIENT_ASPECT_TOP_SIDE**

| Wert | Beschreibung |
| --- | --- |
| `LONG` | Lange Seite der orientierten Bounding Box. |
| `SHORT` | Kurze Seite der orientierten Bounding Box. |

**Tabelle 2. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html#). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html

Schritt der 2D-Detektions-Pipeline.

Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein.

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`orientationNetwork`:** `std::string`, Standard: `\{""\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Muss eine gültige Netzwerk-ID für die Objektklassifikation sein (siehe NetworkSettings). ID des Objektklassifikationsnetzwerks.

## Enumerationen

**Tabelle 1. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html#). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::ROTATE_ANGLE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html

Schritt der 2D-Detektions-Pipeline.

Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ zu ihrer aktuellen Orientierung und Größe liegt.

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::ROTATE_ANGLE sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`angleDeg`:** `float`, Standard: `\{0.0f\}` *JSON-Typ*: Gleitkommazahl Rotationswinkel in Grad.

- **`fixedPoint`:** `Eigen::Vector2f`, Standard: `\{0.0, 0.0\}` *JSON-Typ*: Array +*Anforderung*: Muss zwei Elemente haben. Fester Punkt im Koordinatensystem der orientierten Bounding Box (d. h. die Box-Ecken liegen bei [±1, ±1]).

## Enumerationen

**Tabelle 1. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html#). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SCALE_ASPECT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html

Schritt der 2D-Detektions-Pipeline.

Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ zu ihrer aktuellen Orientierung und Größe liegt.

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::SCALE_ASPECT sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`aspectRatio`:** `float`, Standard: `\{1.0f\}` *JSON-Typ*: Gleitkommazahl Ziel-Seitenverhältnis.

- **`keepSide`:** `SCALE_ASPECT_KEEP_SIDE`, Standard: `\{SCALE_ASPECT_KEEP_SIDE::LONG\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Muss ein SCALE_ASPECT_KEEP_SIDE sein. Bestimmt, welche Seite der orientierten Bounding Box in ihrer Größe unverändert bleiben soll.

- **`fixedPoint`:** `Eigen::Vector2f`, Standard: `\{0.0, 0.0\}` *JSON-Typ*: Array +*Anforderung*: Muss zwei Elemente haben. Fester Punkt im Koordinatensystem der orientierten Bounding Box (d. h. die Box-Ecken liegen bei [±1, ±1]).

## Enumerationen

**Tabelle 1. SCALE_ASPECT_KEEP_SIDE**

| Wert | Beschreibung |
| --- | --- |
| `LONG` | Lange Seite der orientierten Bounding Box. |
| `SHORT` | Kurze Seite der orientierten Bounding Box. |
| `WIDTH` | „Breite“-Seite der orientierten Bounding Box |
| `HEIGHT` | „Höhe“-Seite der orientierten Bounding Box |

**Tabelle 2. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html#). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SCALE_TO > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html

Schritt der 2D-Detektions-Pipeline.

Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ zu ihrer aktuellen Orientierung und Größe liegt.

## Memberfunktionen

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON-Typ*: Zeichenkette +*Anforderung*: Muss OBJ_DET_2D_TYPE::SCALE_TO sein. Typ des 2D-Detektionsschritts.

## Membervariablen

- **`keepAspectRatio`:** `bool`, Standard: `{true}` *JSON-Typ*: Boolean Legt fest, ob das Seitenverhältnis beibehalten werden soll. Dieser Wert wird ignoriert, wenn eine der Seiten die Größe null hat.

- **`newSize`:** `float`, Standard: `\{100.0\}` *JSON-Typ*: Gleitkommazahl +*Anforderung*: Muss größer als null sein. Größe in Pixeln, auf die die orientierte Bounding Box skaliert wird.

- **`modifySide`:** `SCALE_TO_SIDE_MODIFY`, Standard: `\{SCALE_TO_SIDE_MODIFY::LONG\}` *JSON-Typ*: Zeichenkette +*Anforderung*: Muss ein SCALE_TO_SIDE_MODIFY sein. Bestimmt, welche Seite der orientierten Bounding Box in ihrer Größe unverändert bleiben soll.

- **`fixedPoint`:** `Eigen::Vector2f`, Standard: `\{0.0, 0.0\}` *JSON-Typ*: Array +*Anforderung*: Muss zwei Elemente haben. Fester Punkt im Koordinatensystem der orientierten Bounding Box (d. h. die Box-Ecken liegen bei [±1, ±1]).

## Enumerationen

**Tabelle 1. SCALE_TO_SIDE_MODIFY**

| Wert | Beschreibung |
| --- | --- |
| `LONG` | Lange Seite der orientierten Bounding Box. |
| `SHORT` | Kurze Seite der orientierten Bounding Box. |
| `WIDTH` | „Breite“-Seite der orientierten Bounding Box |
| `HEIGHT` | „Höhe“-Seite der orientierten Bounding Box |

**Tabelle 2. OBJ_DET_2D_TYPE**

| Wert | Beschreibung |
| --- | --- |
| `SET_FULL` | Alle aktuellen orientierten Bounding Boxes werden auf die volle Bildgröße gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | Alle aktuellen orientierten Bounding Boxes werden auf eine angegebene ROI gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | Alle aktuellen orientierten Bounding Boxes werden auf die ROI der Pipeline gesetzt (die Oberseite zeigt nach oben). >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | Alle aktuellen orientierten Bounding Boxes werden auf das Ergebnis einer anderen 2D-Detektions-Pipeline gesetzt. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Wendet ein Objektdetektionsnetzwerk auf alle aktuellen orientierten Bounding Boxes an. Gibt alle detektierten >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Wendet einen Klassifikationsfilter auf alle aktuellen orientierten Bounding Boxes an. Filtert alle Boxen heraus >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Verschiebt alle aktuellen orientierten Bounding Boxes relativ zu ihrer aktuellen Orientierung und Größe. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotiert alle aktuellen orientierten Bounding Boxes um einen festen Winkel um einen festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Skaliert alle aktuellen orientierten Bounding Boxes um einen festen Wert ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html#). |
| `SCALE_ASPECT` | Skaliert alle aktuellen orientierten Bounding Boxes auf ein festes Seitenverhältnis ausgehend von einem festen Punkt, der relativ >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes so, dass die lange oder kurze Seite zur Oberseite wird. Beachten Sie, dass alle Box-Ecken unverändert bleiben. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Ändert die „Up-Richtung“ aller orientierten Bounding Boxes mithilfe eines Klassifikationsnetzwerks. Die Netzwerkklassen müssen „Links“, „Rechts“, „Oben“, „Unten“ sein. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Definiert eine Menge von CorrectionFeature, die die Merkmale eines Objekts definieren. Werden alle Merkmale in einer aktuellen orientierten Bounding Box eindeutig detektiert, wird diese so optimiert, dass der Abstand zu den definierten Merkmalen minimiert wird. Intern wird ein iterativer Gauß-Newton-Algorithmus angewendet. >>> Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | Siehe [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SCALE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html

Step of the 2D detection pipeline.

Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative to their current orientation and size.

## Member Functions

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJ_DET_2D_TYPE::SCALE. Type of the 2D detection step.

## Member Variables

- **`scale`:** `Eigen::Vector2f`, default: `\{Eigen::Vector2f::Zero()\}` *JSON Type*: array +*Requirement*: Must have two elements. Scaling factor in x and y direction (in oriented bounding box frame).

- **`fixedPoint`:** `Eigen::Vector2f`, default: `\{0.0, 0.0\}` *JSON Type*: array +*Requirement*: Must have two elements. Fixed point in oriented bounding box frame (i.e. box corners are located at [±1, ±1]).

## Enumerations

**Tabelle 1. OBJ_DET_2D_TYPE**

| Value | Description |
| --- | --- |
| `SET_FULL` | All current oriented bounding boxes are set to the full image size (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | All current oriented bounding boxes are set to a specified ROI (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | All current oriented bounding boxes are set to the ROI of the pipeline (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | All current oriented bounding boxes are set to the result of another 2D detection pipeline. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Applies an object detection network to all current oriented bounding boxes. Returns all detected >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Applies a classification filter to all current oriented bounding boxes. Filters out all boxes >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Translate all current oriented bounding boxes relative to their current orientation and size. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotate all current oriented bounding boxes by a fixed angle around a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html#). |
| `SCALE_TO` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Modify all oriented bounding boxes "up-direction", such that the long or short size becomes the top. Note that all box corners stay the same. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Modify all oriented bounding boxes "up-direction" using a classification network. The network classes must be "Links", "Rechts", "Oben", "Unten". >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Define a set of CorrectionFeature that define features of an object. If all features are uniquely detected in a current oriented bounding box it is optimized such that the distance to these defined features is minimized. Internally an iterative Gauss-Newton algorithm is applied. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_FULL > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html

Step of the 2D detection pipeline.

All current oriented bounding boxes are set to the full image size (top is up).

## Member Functions

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJ_DET_2D_TYPE::SET_FULL. Type of the 2D detection step.

## Enumerations

**Tabelle 1. OBJ_DET_2D_TYPE**

| Value | Description |
| --- | --- |
| `SET_FULL` | All current oriented bounding boxes are set to the full image size (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html#). |
| `SET_ROI` | All current oriented bounding boxes are set to a specified ROI (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | All current oriented bounding boxes are set to the ROI of the pipeline (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | All current oriented bounding boxes are set to the result of another 2D detection pipeline. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Applies an object detection network to all current oriented bounding boxes. Returns all detected >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Applies a classification filter to all current oriented bounding boxes. Filters out all boxes >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Translate all current oriented bounding boxes relative to their current orientation and size. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotate all current oriented bounding boxes by a fixed angle around a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Modify all oriented bounding boxes "up-direction", such that the long or short size becomes the top. Note that all box corners stay the same. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Modify all oriented bounding boxes "up-direction" using a classification network. The network classes must be "Links", "Rechts", "Oben", "Unten". >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Define a set of CorrectionFeature that define features of an object. If all features are uniquely detected in a current oriented bounding box it is optimized such that the distance to these defined features is minimized. Internally an iterative Gauss-Newton algorithm is applied. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_NETWORK > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html

Step of the 2D detection pipeline.

Applies an object detection network to all current oriented bounding boxes. Returns all detected objects with scores above a specified detection threshold.

## Member Functions

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJ_DET_2D_TYPE::SET_NETWORK. Type of the 2D detection step.

## Member Variables

- **`networkId`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be a valid object detection network ID (see NetworkSettings). Id of the object detection network.

- **`labelId`:** `std::optional< std::string >`, default: `\{""\}` *JSON Type*: (optional) string Label of the object. If not specified the object Id is used as label Id. All available labels can be found in the network decription json class list that comes with each network.

- **`detectionThreshold`:** `float`, default: `\{0.3f\}` *JSON Type*: float +*Requirement*: Must be in [0.0, 1.0]. Threshold for the object detection score.

- **`local`:** `bool`, default: `{false}` *JSON Type*: bool If true, the full image is used for the inference. If false, the current oriented bounding box is used.

## Enumerations

**Tabelle 1. OBJ_DET_2D_TYPE**

| Value | Description |
| --- | --- |
| `SET_FULL` | All current oriented bounding boxes are set to the full image size (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | All current oriented bounding boxes are set to a specified ROI (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | All current oriented bounding boxes are set to the ROI of the pipeline (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | All current oriented bounding boxes are set to the result of another 2D detection pipeline. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Applies an object detection network to all current oriented bounding boxes. Returns all detected >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html#). |
| `FILTER_CLASSIFICATION` | Applies a classification filter to all current oriented bounding boxes. Filters out all boxes >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Translate all current oriented bounding boxes relative to their current orientation and size. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotate all current oriented bounding boxes by a fixed angle around a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Modify all oriented bounding boxes "up-direction", such that the long or short size becomes the top. Note that all box corners stay the same. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Modify all oriented bounding boxes "up-direction" using a classification network. The network classes must be "Links", "Rechts", "Oben", "Unten". >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Define a set of CorrectionFeature that define features of an object. If all features are uniquely detected in a current oriented bounding box it is optimized such that the distance to these defined features is minimized. Internally an iterative Gauss-Newton algorithm is applied. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_OTHER > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html

Step of the 2D detection pipeline.

All current oriented bounding boxes are set to the result of another 2D detection pipeline.

## Member Functions

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJ_DET_2D_TYPE::SET_OTHER. Type of the 2D detection step.

## Member Variables

- **`objectId`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must not be empty. Id of the object whose results are used.

## Enumerations

**Tabelle 1. OBJ_DET_2D_TYPE**

| Value | Description |
| --- | --- |
| `SET_FULL` | All current oriented bounding boxes are set to the full image size (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | All current oriented bounding boxes are set to a specified ROI (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | All current oriented bounding boxes are set to the ROI of the pipeline (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | All current oriented bounding boxes are set to the result of another 2D detection pipeline. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html#). |
| `SET_NETWORK` | Applies an object detection network to all current oriented bounding boxes. Returns all detected >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Applies a classification filter to all current oriented bounding boxes. Filters out all boxes >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Translate all current oriented bounding boxes relative to their current orientation and size. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotate all current oriented bounding boxes by a fixed angle around a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Modify all oriented bounding boxes "up-direction", such that the long or short size becomes the top. Note that all box corners stay the same. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Modify all oriented bounding boxes "up-direction" using a classification network. The network classes must be "Links", "Rechts", "Oben", "Unten". >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Define a set of CorrectionFeature that define features of an object. If all features are uniquely detected in a current oriented bounding box it is optimized such that the distance to these defined features is minimized. Internally an iterative Gauss-Newton algorithm is applied. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_ROI_PIPELINE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html

Step of the 2D detection pipeline.

All current oriented bounding boxes are set to the ROI of the pipeline (top is up).

## Member Functions

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJ_DET_2D_TYPE::SET_ROI. Type of the 2D detection step.

## Enumerations

**Tabelle 1. OBJ_DET_2D_TYPE**

| Value | Description |
| --- | --- |
| `SET_FULL` | All current oriented bounding boxes are set to the full image size (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | All current oriented bounding boxes are set to a specified ROI (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | All current oriented bounding boxes are set to the ROI of the pipeline (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html#). |
| `SET_OTHER` | All current oriented bounding boxes are set to the result of another 2D detection pipeline. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Applies an object detection network to all current oriented bounding boxes. Returns all detected >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Applies a classification filter to all current oriented bounding boxes. Filters out all boxes >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Translate all current oriented bounding boxes relative to their current orientation and size. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotate all current oriented bounding boxes by a fixed angle around a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Modify all oriented bounding boxes "up-direction", such that the long or short size becomes the top. Note that all box corners stay the same. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Modify all oriented bounding boxes "up-direction" using a classification network. The network classes must be "Links", "Rechts", "Oben", "Unten". >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Define a set of CorrectionFeature that define features of an object. If all features are uniquely detected in a current oriented bounding box it is optimized such that the distance to these defined features is minimized. Internally an iterative Gauss-Newton algorithm is applied. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_ROI > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html

Step of the 2D detection pipeline.

All current oriented bounding boxes are set to a specified ROI (top is up).

## Member Functions

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJ_DET_2D_TYPE::SET_ROI. Type of the 2D detection step.

## Member Variables

- **`imageROI`:** `cv::Rect`, default: `\{0, 0, 1280, 960\}` *JSON Type*: image ROI (fields: x, y, width, height) +*Requirement*: Must define a ROI inside the image dimensions 1280 x 960.

## Enumerations

**Tabelle 1. OBJ_DET_2D_TYPE**

| Value | Description |
| --- | --- |
| `SET_FULL` | All current oriented bounding boxes are set to the full image size (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | All current oriented bounding boxes are set to a specified ROI (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html#). |
| `SET_ROI_PIPELINE` | All current oriented bounding boxes are set to the ROI of the pipeline (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | All current oriented bounding boxes are set to the result of another 2D detection pipeline. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Applies an object detection network to all current oriented bounding boxes. Returns all detected >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Applies a classification filter to all current oriented bounding boxes. Filters out all boxes >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Translate all current oriented bounding boxes relative to their current orientation and size. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html). |
| `ROTATE_ANGLE` | Rotate all current oriented bounding boxes by a fixed angle around a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Modify all oriented bounding boxes "up-direction", such that the long or short size becomes the top. Note that all box corners stay the same. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Modify all oriented bounding boxes "up-direction" using a classification network. The network classes must be "Links", "Rechts", "Oben", "Unten". >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Define a set of CorrectionFeature that define features of an object. If all features are uniquely detected in a current oriented bounding box it is optimized such that the distance to these defined features is minimized. Internally an iterative Gauss-Newton algorithm is applied. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings< OBJ_DET_2D_TYPE::TRANSLATE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html

Step of the 2D detection pipeline.

Translate all current oriented bounding boxes relative to their current orientation and size.

## Member Functions

- **`virtual OBJ_DET_2D_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJ_DET_2D_TYPE::TRANSLAT. Type of the 2D detection step.

## Member Variables

- **`translate`:** `Eigen::Vector2f`, default: `\{Eigen::Vector2f::Zero()\}` *JSON Type*: array +*Requirement*: Must have two elements. Translation vector in oriented bounding box frame (i.e. box corners are located at [±1, ±1]).

## Enumerations

**Tabelle 1. OBJ_DET_2D_TYPE**

| Value | Description |
| --- | --- |
| `SET_FULL` | All current oriented bounding boxes are set to the full image size (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_FULL>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html). |
| `SET_ROI` | All current oriented bounding boxes are set to a specified ROI (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html). |
| `SET_ROI_PIPELINE` | All current oriented bounding boxes are set to the ROI of the pipeline (top is up). >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_ROI_PIPELINE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html). |
| `SET_OTHER` | All current oriented bounding boxes are set to the result of another 2D detection pipeline. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_OTHER>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html). |
| `SET_NETWORK` | Applies an object detection network to all current oriented bounding boxes. Returns all detected >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SET_NETWORK>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html). |
| `FILTER_CLASSIFICATION` | Applies a classification filter to all current oriented bounding boxes. Filters out all boxes >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html). |
| `TRANSLATE` | Translate all current oriented bounding boxes relative to their current orientation and size. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::TRANSLATE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html#). |
| `ROTATE_ANGLE` | Rotate all current oriented bounding boxes by a fixed angle around a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ROTATE_ANGLE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html). |
| `SCALE` | Scale all current oriented bounding boxes by a fixed value from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html). |
| `SCALE_TO` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_TO>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html). |
| `SCALE_ASPECT` | Scale all current oriented bounding boxes to a fixed aspect ratio from a fixed point that is relative >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::SCALE_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html). |
| `REORIENT_ASPECT` | Modify all oriented bounding boxes "up-direction", such that the long or short size becomes the top. Note that all box corners stay the same. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_ASPECT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html). |
| `REORIENT_CLASSIFICATION` | Modify all oriented bounding boxes "up-direction" using a classification network. The network classes must be "Links", "Rechts", "Oben", "Unten". >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html). |
| `FEATURE_MATCHING` | Define a set of CorrectionFeature that define features of an object. If all features are uniquely detected in a current oriented bounding box it is optimized such that the distance to these defined features is minimized. Internally an iterative Gauss-Newton algorithm is applied. >>> See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::FEATURE_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html). |
| `ADD_INSTANCES_FROM_FILE` | See [Detection2DStepSettings\<OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html). |

# Detection2DStepSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings.html

(no description)

# Detection3DSettingsBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-base.html

Common base class for 3D detection settings. See [OBJECT_FIT_METHOD](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html#detection-3d-settings-object-fit-method-ransac-cylinder-fit-object-fit-method) for specific detectors.

## Member Functions

- **`virtual ~Detection3DSettingsBase()=default`:**

- **`virtual OBJECT_FIT_METHOD type() const =0`:** *JSON Type*: string +*Requirement*: Must be a OBJECT_FIT_METHOD. Type of the 3D object detection.

## Member Variables

- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

# Detection3DSettingsGeom – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-geom.html

Common base class for 3D Geometry detection settings.

## Member Variables

- **`centerStrategy`:** `CENTER_STRATEGY`, default: `\{CENTER_STRATEGY::REPROJECT_2D_CENTER\}` *JSON Type*: (optional) string +*Requirement*: Must be a CENTER_STRATEGY. Type of the 3D center estimation strategy.

[[-2]] `sizeStrategy`:: `SIZE_STRATEGY`, default: `\{SIZE_STRATEGY::REPROJECT_2D_DETECTION\}` *JSON Type*: (optional) string +*Requirement*: Must be a SIZE_STRATEGY. Type of the 3D object size estimation strategy.

[[-3]] `useKdeCorrection`:: `bool`, default: `{false}` *JSON Type*: (optional) bool DEPRECATED: see shiftCorrection

[[-4]] `shiftCorrection`:: `SHIFT_CORRECTION`, default: `\{SHIFT_CORRECTION::NONE\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_CORRECTION. Correct the detected object by shifts in teh direction specified in shiftReference

[[-5]] `kdeAllowedShiftRange`:: `std::array< float, 2 >`, default: `\{0, 0.1\}`

[[-6]] `kdeShiftCorrectionFallback`:: `float`, default: `\{0.0\}` If shift correction fails(i.e. outside of kdeAllowedShiftRange), shift correction will fallback to this value. *Requirement*: Must >= 0

[[-7]] `shiftCorrectionPercentage`:: `float`, default: `\{1.0\}` *JSON Type*: (optional) float +*Requirement*: Must be a within [0, 1]. While doing a shift correction, the only the x farthest/closest percent of the pointcloud will be considered (depending on the shift correction settings: CLOSEST/FARTHEST). This makes the shifting process less sensitive to outliers.

[[-8]] `shiftReference`:: `SHIFT_REFERENCE`, default: `\{SHIFT_REFERENCE::OBJECT_NORMAL\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_REFERENCE. Set he direction detected objects are to be shifted in.

[[-9]] `shortAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning short axis of the detected object by the camera position.

[[-10]] `longAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning long axis of the detected object by the camera position.

## Enumerations

**Tabelle 1. SIZE_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_DETECTION` | Determine the size of the 3D object by reprojecting all centers of the 2D oriented bounding box sides into the object plane. |
| `FROM_3D_POINTS` | Determine the size of the 3D object from the 3D bounding box of all points that that lie inside the roiPercentage of the detected object. |

**Tabelle 2. CENTER_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_CENTER` | The 3D object center is determined by reprojecting the oriented bounding box center onto the object plane. |
| `REPROJECT_2D_DETECTION` | DEPRECATED! The 3D object center is determined by reprojecting the centers of all sides of the oriented bounding box onto the object plane. The average of all projected points defines the center point. |
| `FROM_3D_BBOX` | The 3D object center is chosen as the center of the topmost xy-plane of the computed 3D bounding box. |

**Tabelle 3. SHIFT_CORRECTION**

| Value | Description |
| --- | --- |
| `NONE` | Do not shift the object. |
| `KDE` | This feature shifts a detected object plane in the direction of its normal to the first echo. Consider the case when an object has holes and the camera observes points that lie under the object. Then a RANSAC_PLANE_FIT should be used to robustly detect one of the planes (either top or parallel one below). The kde correction then shifts the detected plane to the top. |
| `CLOSEST` | Shift the object along its normal direction such that it has the same height as the top-most point (i.e. closest to camera) of the subset of points used for the fit. |
| `FARTHEST` | Shift the object along its normal direction such that it has the same height as the bottom-most point (i.e. furthest to camera) of the subset of points used for the fit. |

**Tabelle 4. SHIFT_REFERENCE**

| Value | Description |
| --- | --- |
| `OBJECT_NORMAL` | Shift objects along object normal |
| `OBJECT_RAY` | Shift objects along the connection line between object and origin (camera position) |

**Tabelle 5. AXIS_ALIGNMENT**

| Value | Description |
| --- | --- |
| `TO_CAMERA_AXIS` | Align the indicated axis towards the camera axis |
| `TO_CAMERA_PLANE` | Align the indicated axis towards the camera plane |
| `FROM_FIT_METHOD` | Do not change axis alignments |

# Detection3DSettings< OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html

Infere grippoint from environment.

Instead of fitting something to an object this returns a placeholder grippoint. Its normal points towards the camera, its origin does not say anything. Together with the shift correction and axis alignment steps this can be useful. This detection method should be used for objects that are hard to detect on pointclouds, but have a rather well defined position in space, once located on an image

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT. Type of the 3D detection.

## Member Variables

- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

- **`centerStrategy`:** `CENTER_STRATEGY`, default: `\{CENTER_STRATEGY::REPROJECT_2D_CENTER\}` *JSON Type*: (optional) string +*Requirement*: Must be a CENTER_STRATEGY. Type of the 3D center estimation strategy.

- **`sizeStrategy`:** `SIZE_STRATEGY`, default: `\{SIZE_STRATEGY::REPROJECT_2D_DETECTION\}` *JSON Type*: (optional) string +*Requirement*: Must be a SIZE_STRATEGY. Type of the 3D object size estimation strategy.

- **`useKdeCorrection`:** `bool`, default: `{false}` *JSON Type*: (optional) bool DEPRECATED: see shiftCorrection

- **`shiftCorrection`:** `SHIFT_CORRECTION`, default: `\{SHIFT_CORRECTION::NONE\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_CORRECTION. Correct the detected object by shifts in teh direction specified in shiftReference

- **`kdeAllowedShiftRange`:** `std::array< float, 2 >`, default: `\{0, 0.1\}`

- **`kdeShiftCorrectionFallback`:** `float`, default: `\{0.0\}` If shift correction fails(i.e. outside of kdeAllowedShiftRange), shift correction will fallback to this value. *Requirement*: Must >= 0

- **`shiftCorrectionPercentage`:** `float`, default: `\{1.0\}` *JSON Type*: (optional) float +*Requirement*: Must be a within [0, 1]. While doing a shift correction, the only the x farthest/closest percent of the pointcloud will be considered (depending on the shift correction settings: CLOSEST/FARTHEST). This makes the shifting process less sensitive to outliers.

- **`shiftReference`:** `SHIFT_REFERENCE`, default: `\{SHIFT_REFERENCE::OBJECT_NORMAL\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_REFERENCE. Set he direction detected objects are to be shifted in.

- **`shortAxisAlignment`:** `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning short axis of the detected object by the camera position.

- **`longAxisAlignment`:** `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning long axis of the detected object by the camera position.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html#). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

**Tabelle 2. SIZE_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_DETECTION` | Determine the size of the 3D object by reprojecting all centers of the 2D oriented bounding box sides into the object plane. |
| `FROM_3D_POINTS` | Determine the size of the 3D object from the 3D bounding box of all points that that lie inside the roiPercentage of the detected object. |

**Tabelle 3. CENTER_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_CENTER` | The 3D object center is determined by reprojecting the oriented bounding box center onto the object plane. |
| `REPROJECT_2D_DETECTION` | DEPRECATED! The 3D object center is determined by reprojecting the centers of all sides of the oriented bounding box onto the object plane. The average of all projected points defines the center point. |
| `FROM_3D_BBOX` | The 3D object center is chosen as the center of the topmost xy-plane of the computed 3D bounding box. |

**Tabelle 4. SHIFT_CORRECTION**

| Value | Description |
| --- | --- |
| `NONE` | Do not shift the object. |
| `KDE` | This feature shifts a detected object plane in the direction of its normal to the first echo. Consider the case when an object has holes and the camera observes points that lie under the object. Then a RANSAC_PLANE_FIT should be used to robustly detect one of the planes (either top or parallel one below). The kde correction then shifts the detected plane to the top. |
| `CLOSEST` | Shift the object along its normal direction such that it has the same height as the top-most point (i.e. closest to camera) of the subset of points used for the fit. |
| `FARTHEST` | Shift the object along its normal direction such that it has the same height as the bottom-most point (i.e. furthest to camera) of the subset of points used for the fit. |

**Tabelle 5. SHIFT_REFERENCE**

| Value | Description |
| --- | --- |
| `OBJECT_NORMAL` | Shift objects along object normal |
| `OBJECT_RAY` | Shift objects along the connection line between object and origin (camera position) |

**Tabelle 6. AXIS_ALIGNMENT**

| Value | Description |
| --- | --- |
| `TO_CAMERA_AXIS` | Align the indicated axis towards the camera axis |
| `TO_CAMERA_PLANE` | Align the indicated axis towards the camera plane |
| `FROM_FIT_METHOD` | Do not change axis alignments |

# Detection3DSettings< OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html

3D detection

The object pose is computed based on a line fit of all points that lie inside the roiPercentage of the detected object. The line is fit such that it projects onto a line from the center top to the center bottom points of the 2D object detection result. The objects coordinate system is positioned in the center, where x points to the right of the object (width direction), y points to the top of the object (height direction) and z is the object surface normal. This detection method should be used when the object has a very high / very low aspect ratio since the plane detection algorithms would then be unstable (i.e. rotation around long axis).

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS. Type of the 3D detection.

## Member Variables

- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

[[-4]] `centerStrategy`:: `CENTER_STRATEGY`, default: `\{CENTER_STRATEGY::REPROJECT_2D_CENTER\}` *JSON Type*: (optional) string +*Requirement*: Must be a CENTER_STRATEGY. Type of the 3D center estimation strategy.

[[-5]] `sizeStrategy`:: `SIZE_STRATEGY`, default: `\{SIZE_STRATEGY::REPROJECT_2D_DETECTION\}` *JSON Type*: (optional) string +*Requirement*: Must be a SIZE_STRATEGY. Type of the 3D object size estimation strategy.

[[-6]] `useKdeCorrection`:: `bool`, default: `{false}` *JSON Type*: (optional) bool DEPRECATED: see shiftCorrection

[[-7]] `shiftCorrection`:: `SHIFT_CORRECTION`, default: `\{SHIFT_CORRECTION::NONE\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_CORRECTION. Correct the detected object by shifts in teh direction specified in shiftReference

[[-8]] `kdeAllowedShiftRange`:: `std::array< float, 2 >`, default: `\{0, 0.1\}`

[[-9]] `kdeShiftCorrectionFallback`:: `float`, default: `\{0.0\}` If shift correction fails(i.e. outside of kdeAllowedShiftRange), shift correction will fallback to this value. *Requirement*: Must >= 0

[[-10]] `shiftCorrectionPercentage`:: `float`, default: `\{1.0\}` *JSON Type*: (optional) float +*Requirement*: Must be a within [0, 1]. While doing a shift correction, the only the x farthest/closest percent of the pointcloud will be considered (depending on the shift correction settings: CLOSEST/FARTHEST). This makes the shifting process less sensitive to outliers.

[[-11]] `shiftReference`:: `SHIFT_REFERENCE`, default: `\{SHIFT_REFERENCE::OBJECT_NORMAL\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_REFERENCE. Set he direction detected objects are to be shifted in.

[[-12]] `shortAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning short axis of the detected object by the camera position.

[[-13]] `longAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning long axis of the detected object by the camera position.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html#). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

**Tabelle 2. SIZE_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_DETECTION` | Determine the size of the 3D object by reprojecting all centers of the 2D oriented bounding box sides into the object plane. |
| `FROM_3D_POINTS` | Determine the size of the 3D object from the 3D bounding box of all points that that lie inside the roiPercentage of the detected object. |

**Tabelle 3. CENTER_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_CENTER` | The 3D object center is determined by reprojecting the oriented bounding box center onto the object plane. |
| `REPROJECT_2D_DETECTION` | DEPRECATED! The 3D object center is determined by reprojecting the centers of all sides of the oriented bounding box onto the object plane. The average of all projected points defines the center point. |
| `FROM_3D_BBOX` | The 3D object center is chosen as the center of the topmost xy-plane of the computed 3D bounding box. |

**Tabelle 4. SHIFT_CORRECTION**

| Value | Description |
| --- | --- |
| `NONE` | Do not shift the object. |
| `KDE` | This feature shifts a detected object plane in the direction of its normal to the first echo. Consider the case when an object has holes and the camera observes points that lie under the object. Then a RANSAC_PLANE_FIT should be used to robustly detect one of the planes (either top or parallel one below). The kde correction then shifts the detected plane to the top. |
| `CLOSEST` | Shift the object along its normal direction such that it has the same height as the top-most point (i.e. closest to camera) of the subset of points used for the fit. |
| `FARTHEST` | Shift the object along its normal direction such that it has the same height as the bottom-most point (i.e. furthest to camera) of the subset of points used for the fit. |

**Tabelle 5. SHIFT_REFERENCE**

| Value | Description |
| --- | --- |
| `OBJECT_NORMAL` | Shift objects along object normal |
| `OBJECT_RAY` | Shift objects along the connection line between object and origin (camera position) |

**Tabelle 6. AXIS_ALIGNMENT**

| Value | Description |
| --- | --- |
| `TO_CAMERA_AXIS` | Align the indicated axis towards the camera axis |
| `TO_CAMERA_PLANE` | Align the indicated axis towards the camera plane |
| `FROM_FIT_METHOD` | Do not change axis alignments |

# Detection3DSettings< OBJECT_FIT_METHOD::MIXED_PLANE_FIT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html

3D detection

Uses the RANSAC_PLANE_FIT and PLANE_FIT method. The MIXED_PLANE_FIT uses the plane, which is more parallel to the camera.

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::MIXED_PLANE_FIT. Type of the 3D detection.

## Member Variables

- **`referenceNormal`:** `REFERENCE_NORMAL`, default: `\{REFERENCE_NORMAL::CAMERA_PLANE\}` *JSON Type*: (optional) string +*Requirement*: Must be a REFERENCE_NORMAL Only relevant for OBJECT_FIT_METHOD::MIXED_PLANE_FIT. The plane normals are compared with the selected reference normal. The plane normal which is closer to the reference normal is chosen in the end.

- **`planeCenter`:** `PLANE_CENTER`, default: `\{PLANE_CENTER::RANSAC_PLANE_FIT\}` *JSON Type*: (optional) string +*Requirement*: Must be a PLANE_CENTER Only relevant for OBJECT_FIT_METHOD::MIXED_PLANE_FIT. Select which center point should be used. This influences only the height of the plane. The default is to use the center point from the ransac plane fit, since this point is usually more accurate (in regards to the height). The x and y coordinates are set by the ROI in the 2d detection step.
- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

[[-4]] `centerStrategy`:: `CENTER_STRATEGY`, default: `\{CENTER_STRATEGY::REPROJECT_2D_CENTER\}` *JSON Type*: (optional) string +*Requirement*: Must be a CENTER_STRATEGY. Type of the 3D center estimation strategy.

[[-5]] `sizeStrategy`:: `SIZE_STRATEGY`, default: `\{SIZE_STRATEGY::REPROJECT_2D_DETECTION\}` *JSON Type*: (optional) string +*Requirement*: Must be a SIZE_STRATEGY. Type of the 3D object size estimation strategy.

[[-6]] `useKdeCorrection`:: `bool`, default: `{false}` *JSON Type*: (optional) bool DEPRECATED: see shiftCorrection

[[-7]] `shiftCorrection`:: `SHIFT_CORRECTION`, default: `\{SHIFT_CORRECTION::NONE\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_CORRECTION. Correct the detected object by shifts in teh direction specified in shiftReference

[[-8]] `kdeAllowedShiftRange`:: `std::array< float, 2 >`, default: `\{0, 0.1\}`

[[-9]] `kdeShiftCorrectionFallback`:: `float`, default: `\{0.0\}` If shift correction fails(i.e. outside of kdeAllowedShiftRange), shift correction will fallback to this value. *Requirement*: Must >= 0

[[-10]] `shiftCorrectionPercentage`:: `float`, default: `\{1.0\}` *JSON Type*: (optional) float +*Requirement*: Must be a within [0, 1]. While doing a shift correction, the only the x farthest/closest percent of the pointcloud will be considered (depending on the shift correction settings: CLOSEST/FARTHEST). This makes the shifting process less sensitive to outliers.

[[-11]] `shiftReference`:: `SHIFT_REFERENCE`, default: `\{SHIFT_REFERENCE::OBJECT_NORMAL\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_REFERENCE. Set he direction detected objects are to be shifted in.

[[-12]] `shortAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning short axis of the detected object by the camera position.

[[-13]] `longAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning long axis of the detected object by the camera position.

## Enumerations

**Tabelle 1. REFERENCE_NORMAL**

| Value | Description |
| --- | --- |
| `CAMERA_CENTER` | Normals which are closer to the camera center will be selected. |
| `CAMERA_PLANE` | Normals which are closer to the camera plane will be selected. |

**Tabelle 2. PLANE_CENTER**

| Value | Description |
| --- | --- |
| `RANSAC_PLANE_FIT` | Use the center point coordinates of the ransac plane fit. |
| `PLANE_FIT` | Use the center point coordinates of the plane fit. |

**Tabelle 3. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html#). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

**Tabelle 4. SIZE_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_DETECTION` | Determine the size of the 3D object by reprojecting all centers of the 2D oriented bounding box sides into the object plane. |
| `FROM_3D_POINTS` | Determine the size of the 3D object from the 3D bounding box of all points that that lie inside the roiPercentage of the detected object. |

**Tabelle 5. CENTER_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_CENTER` | The 3D object center is determined by reprojecting the oriented bounding box center onto the object plane. |
| `REPROJECT_2D_DETECTION` | DEPRECATED! The 3D object center is determined by reprojecting the centers of all sides of the oriented bounding box onto the object plane. The average of all projected points defines the center point. |
| `FROM_3D_BBOX` | The 3D object center is chosen as the center of the topmost xy-plane of the computed 3D bounding box. |

**Tabelle 6. SHIFT_CORRECTION**

| Value | Description |
| --- | --- |
| `NONE` | Do not shift the object. |
| `KDE` | This feature shifts a detected object plane in the direction of its normal to the first echo. Consider the case when an object has holes and the camera observes points that lie under the object. Then a RANSAC_PLANE_FIT should be used to robustly detect one of the planes (either top or parallel one below). The kde correction then shifts the detected plane to the top. |
| `CLOSEST` | Shift the object along its normal direction such that it has the same height as the top-most point (i.e. closest to camera) of the subset of points used for the fit. |
| `FARTHEST` | Shift the object along its normal direction such that it has the same height as the bottom-most point (i.e. furthest to camera) of the subset of points used for the fit. |

**Tabelle 7. SHIFT_REFERENCE**

| Value | Description |
| --- | --- |
| `OBJECT_NORMAL` | Shift objects along object normal |
| `OBJECT_RAY` | Shift objects along the connection line between object and origin (camera position) |

**Tabelle 8. AXIS_ALIGNMENT**

| Value | Description |
| --- | --- |
| `TO_CAMERA_AXIS` | Align the indicated axis towards the camera axis |
| `TO_CAMERA_PLANE` | Align the indicated axis towards the camera plane |
| `FROM_FIT_METHOD` | Do not change axis alignments |

# Detection3DSettings< OBJECT_FIT_METHOD::OBJECT_MATCHING > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html

3D detection

Perform a fit with the CAD model of the object. This detection method should be used if we have completely rigid objects that always match a CAD model.

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::OBJECT_MATCHING. Type of the 3D detection.

## Member Variables

- **`cadPath`:** `std::filesystem::path`, default: `\{""\}` *JSON Type*: (optional) string +*Requirement*: Must be a path to a regular file. File path to the CAD file of the object used for the matching. Either cadPath or pointcloudPath need to be set. If both set point cloud path is used.

- **`pointcloudPath`:** `std::filesystem::path`, default: `\{""\}` *JSON Type*: (optional) string +*Requirement*: Must be a path to a regular file. File path to the Pointcloud file of the object used for the matching. Either cadPath or pointcloudPath need to be set. If both set point cloud path is used.

- **`trainingParameters`:** `ModelTrainingParameters` *JSON Type*: (optional) ModelTrainingParameters object Parameters used for training a model. All values of this object are optional as well.

- **`detectionParameters`:** `ObjectDetectionParameters` *JSON Type*: (optional) ObjectDetectionParameters object Parameters used for detecting a model. All values of this object are optional as well.
- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html#). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

# Detection3DSettings< OBJECT_FIT_METHOD::OBJECT_REFINEMENT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html

3D detection for approximately known position

Refine the position of an object with approximately known position. This detection method should be used if we have completely rigid objects that always match a CAD model and are alway at the approximately same position. The maximum number of detections is the number of initial poses, set in refinementParameters. However not every initialPose has to result i a found object, depending on score threshold and filters in refinementParameters.

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::OBJECT_REFINEMENT. Type of the 3D detection.

## Member Variables

- **`cadPath`:** `std::filesystem::path`, default: `\{""\}` *JSON Type*: (optional) string +*Requirement*: Must be a path to a regular file. File path to the CAD file of the object used for the matching. Either cadPath or pointcloudPath need to be set.

- **`pointcloudPath`:** `std::filesystem::path`, default: `\{""\}` *JSON Type*: (optional) string +*Requirement*: Must be a path to a regular file. File path to the Pointcloud file of the object used for the matching. Either cadPath or pointcloudPath need to be set.

- **`trainingParameters`:** `ModelTrainingParameters` *JSON Type*: (optional) ModelTrainingParameters object Parameters used for training a model. All values of this object are optional as well.

- **`refinementParameters`:** `ObjectRefinementParameters` *JSON Type*: (optional) ObjectRefinementParameters object Parameters used for detecting a model. All values of this object are optional as well.
- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html#). |

# Detection3DSettings< OBJECT_FIT_METHOD::PLANE_FIT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html

3D detection

The object pose is computed based on a plane fit of all points that lie inside the roiPercentage of the detected object. The objects coordinate system is positioned in the center, where x points to the right of the object (width direction), y points to the top of the object (height direction) and z is the object surface normal. This detection method should be used when the object is not rigid and does not contain perfect planar surfaces (e.g. bags that can crease).

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::PLANE_FIT. Type of the 3D detection.

## Member Variables

- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

[[-4]] `centerStrategy`:: `CENTER_STRATEGY`, default: `\{CENTER_STRATEGY::REPROJECT_2D_CENTER\}` *JSON Type*: (optional) string +*Requirement*: Must be a CENTER_STRATEGY. Type of the 3D center estimation strategy.

[[-5]] `sizeStrategy`:: `SIZE_STRATEGY`, default: `\{SIZE_STRATEGY::REPROJECT_2D_DETECTION\}` *JSON Type*: (optional) string +*Requirement*: Must be a SIZE_STRATEGY. Type of the 3D object size estimation strategy.

[[-6]] `useKdeCorrection`:: `bool`, default: `{false}` *JSON Type*: (optional) bool DEPRECATED: see shiftCorrection

[[-7]] `shiftCorrection`:: `SHIFT_CORRECTION`, default: `\{SHIFT_CORRECTION::NONE\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_CORRECTION. Correct the detected object by shifts in teh direction specified in shiftReference

[[-8]] `kdeAllowedShiftRange`:: `std::array< float, 2 >`, default: `\{0, 0.1\}`

[[-9]] `kdeShiftCorrectionFallback`:: `float`, default: `\{0.0\}` If shift correction fails(i.e. outside of kdeAllowedShiftRange), shift correction will fallback to this value. *Requirement*: Must >= 0

[[-10]] `shiftCorrectionPercentage`:: `float`, default: `\{1.0\}` *JSON Type*: (optional) float +*Requirement*: Must be a within [0, 1]. While doing a shift correction, the only the x farthest/closest percent of the pointcloud will be considered (depending on the shift correction settings: CLOSEST/FARTHEST). This makes the shifting process less sensitive to outliers.

[[-11]] `shiftReference`:: `SHIFT_REFERENCE`, default: `\{SHIFT_REFERENCE::OBJECT_NORMAL\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_REFERENCE. Set he direction detected objects are to be shifted in.

[[-12]] `shortAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning short axis of the detected object by the camera position.

[[-13]] `longAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning long axis of the detected object by the camera position.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html#). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

**Tabelle 2. SIZE_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_DETECTION` | Determine the size of the 3D object by reprojecting all centers of the 2D oriented bounding box sides into the object plane. |
| `FROM_3D_POINTS` | Determine the size of the 3D object from the 3D bounding box of all points that that lie inside the roiPercentage of the detected object. |

**Tabelle 3. CENTER_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_CENTER` | The 3D object center is determined by reprojecting the oriented bounding box center onto the object plane. |
| `REPROJECT_2D_DETECTION` | DEPRECATED! The 3D object center is determined by reprojecting the centers of all sides of the oriented bounding box onto the object plane. The average of all projected points defines the center point. |
| `FROM_3D_BBOX` | The 3D object center is chosen as the center of the topmost xy-plane of the computed 3D bounding box. |

**Tabelle 4. SHIFT_CORRECTION**

| Value | Description |
| --- | --- |
| `NONE` | Do not shift the object. |
| `KDE` | This feature shifts a detected object plane in the direction of its normal to the first echo. Consider the case when an object has holes and the camera observes points that lie under the object. Then a RANSAC_PLANE_FIT should be used to robustly detect one of the planes (either top or parallel one below). The kde correction then shifts the detected plane to the top. |
| `CLOSEST` | Shift the object along its normal direction such that it has the same height as the top-most point (i.e. closest to camera) of the subset of points used for the fit. |
| `FARTHEST` | Shift the object along its normal direction such that it has the same height as the bottom-most point (i.e. furthest to camera) of the subset of points used for the fit. |

**Tabelle 5. SHIFT_REFERENCE**

| Value | Description |
| --- | --- |
| `OBJECT_NORMAL` | Shift objects along object normal |
| `OBJECT_RAY` | Shift objects along the connection line between object and origin (camera position) |

**Tabelle 6. AXIS_ALIGNMENT**

| Value | Description |
| --- | --- |
| `TO_CAMERA_AXIS` | Align the indicated axis towards the camera axis |
| `TO_CAMERA_PLANE` | Align the indicated axis towards the camera plane |
| `FROM_FIT_METHOD` | Do not change axis alignments |

# Detection3DSettings< OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html

3D detection

Perform a fit with a cylinder. This detection method should be used if we observe parts of a cylinder. The object coordinate system is positioned in the cylinder center, with the z-axis being the main axis. The height of the cylinder is limited by the points used for the fit.

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT. Type of the 3D detection.

## Member Variables

- **`normalSearchRadius`:** `float`, default: `\{0.01\}` *JSON Type*: float +*Requirement*: Must be greater than zero. The RANSAC cylinder fit requires the computation of normals. This value determines the radius used for normal computation for each point of the cloud.

- **`radiusMin`:** `float`, default: `\{0.01\}` *JSON Type*: float +*Requirement*: Must be greater than zero and less or equal to radiusMax. Minimum cylinder radius.

- **`radiusMax`:** `float`, default: `\{0.50\}` *JSON Type*: float +*Requirement*: Must be greater than zero and greater or equal to radiusMin. Maximum cylinder radius.

- **`initialAxis`:** `Eigen::Vector3f`, default: `\{1.0f, 0.0f, 0.0f\}` *JSON Type*: array +*Requirement*: Must have three elements. Norm must not be zero. Initial guess of the cylinder main axis (in camera coordinates).

- **`epsAngleDeg`:** `float`, default: `\{90.0\}` *JSON Type*: float +*Requirement*: Must be greater or equal to zero. Maximum angular deviation of the main axis from the initial guess initialAxis.

- **`distanceThreshold`:** `float`, default: `\{0.01\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Maximum distance of a point to the cylinder to be considered an inlier.

- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

- **`roiPercentage`:** `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

- **`minNumPoints`:** `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html#). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

# Detection3DSettings< OBJECT_FIT_METHOD::RANSAC_PLANE_FIT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html

3D detection

The object pose is computed based on a RANSAC plane fit of all points that lie inside the roiPercentage of the detected object. The objects coordinate system is positioned in the center, where x points to the right of the object (width direction), y points to the top of the object (height direction) and z is the object surface normal. This detection method should be used when the object contains perfectly planar surfaces.

## Member Functions

- **`virtual OBJECT_FIT_METHOD type() const override`:** *JSON Type*: string +*Requirement*: Must be OBJECT_FIT_METHOD::RANSAC_PLANE_FIT. Type of the 3D detection.

## Member Variables

- **`maxNumObjects`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int UNIMPLEMENTED +*Requirement*: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] `roiPercentage`:: `float`, default: `\{0.8f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] `minNumPoints`:: `int`, default: `{50}` *JSON Type*: (optional) int +*Requirement*: Must be greater than zero. Minimum number of points required for the geometric fit.

[[-4]] `centerStrategy`:: `CENTER_STRATEGY`, default: `\{CENTER_STRATEGY::REPROJECT_2D_CENTER\}` *JSON Type*: (optional) string +*Requirement*: Must be a CENTER_STRATEGY. Type of the 3D center estimation strategy.

[[-5]] `sizeStrategy`:: `SIZE_STRATEGY`, default: `\{SIZE_STRATEGY::REPROJECT_2D_DETECTION\}` *JSON Type*: (optional) string +*Requirement*: Must be a SIZE_STRATEGY. Type of the 3D object size estimation strategy.

[[-6]] `useKdeCorrection`:: `bool`, default: `{false}` *JSON Type*: (optional) bool DEPRECATED: see shiftCorrection

[[-7]] `shiftCorrection`:: `SHIFT_CORRECTION`, default: `\{SHIFT_CORRECTION::NONE\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_CORRECTION. Correct the detected object by shifts in teh direction specified in shiftReference

[[-8]] `kdeAllowedShiftRange`:: `std::array< float, 2 >`, default: `\{0, 0.1\}`

[[-9]] `kdeShiftCorrectionFallback`:: `float`, default: `\{0.0\}` If shift correction fails(i.e. outside of kdeAllowedShiftRange), shift correction will fallback to this value. *Requirement*: Must >= 0

[[-10]] `shiftCorrectionPercentage`:: `float`, default: `\{1.0\}` *JSON Type*: (optional) float +*Requirement*: Must be a within [0, 1]. While doing a shift correction, the only the x farthest/closest percent of the pointcloud will be considered (depending on the shift correction settings: CLOSEST/FARTHEST). This makes the shifting process less sensitive to outliers.

[[-11]] `shiftReference`:: `SHIFT_REFERENCE`, default: `\{SHIFT_REFERENCE::OBJECT_NORMAL\}` *JSON Type*: (optional) string +*Requirement*: Must be a SHIFT_REFERENCE. Set he direction detected objects are to be shifted in.

[[-12]] `shortAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning short axis of the detected object by the camera position.

[[-13]] `longAxisAlignment`:: `AXIS_ALIGNMENT`, default: `\{AXIS_ALIGNMENT::FROM_FIT_METHOD\}` *JSON Type*: (optional) string +*Requirement*: Must be a AXIS_ALIGNMENT. Aligning long axis of the detected object by the camera position.

## Enumerations

**Tabelle 1. OBJECT_FIT_METHOD**

| Value | Description |
| --- | --- |
| `PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html). |
| `RANSAC_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html#). |
| `MIXED_PLANE_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html). |
| `LINE_FIT_LONG_AXIS` | See [Detection3DSettings\<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html). |
| `GRIP_FROM_ENVIRONMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html). |
| `RANSAC_CYLINDER_FIT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html). |
| `OBJECT_MATCHING` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_MATCHING>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html). |
| `OBJECT_REFINEMENT` | See [Detection3DSettings\<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html). |

**Tabelle 2. SIZE_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_DETECTION` | Determine the size of the 3D object by reprojecting all centers of the 2D oriented bounding box sides into the object plane. |
| `FROM_3D_POINTS` | Determine the size of the 3D object from the 3D bounding box of all points that that lie inside the roiPercentage of the detected object. |

**Tabelle 3. CENTER_STRATEGY**

| Value | Description |
| --- | --- |
| `REPROJECT_2D_CENTER` | The 3D object center is determined by reprojecting the oriented bounding box center onto the object plane. |
| `REPROJECT_2D_DETECTION` | DEPRECATED! The 3D object center is determined by reprojecting the centers of all sides of the oriented bounding box onto the object plane. The average of all projected points defines the center point. |
| `FROM_3D_BBOX` | The 3D object center is chosen as the center of the topmost xy-plane of the computed 3D bounding box. |

**Tabelle 4. SHIFT_CORRECTION**

| Value | Description |
| --- | --- |
| `NONE` | Do not shift the object. |
| `KDE` | This feature shifts a detected object plane in the direction of its normal to the first echo. Consider the case when an object has holes and the camera observes points that lie under the object. Then a RANSAC_PLANE_FIT should be used to robustly detect one of the planes (either top or parallel one below). The kde correction then shifts the detected plane to the top. |
| `CLOSEST` | Shift the object along its normal direction such that it has the same height as the top-most point (i.e. closest to camera) of the subset of points used for the fit. |
| `FARTHEST` | Shift the object along its normal direction such that it has the same height as the bottom-most point (i.e. furthest to camera) of the subset of points used for the fit. |

**Tabelle 5. SHIFT_REFERENCE**

| Value | Description |
| --- | --- |
| `OBJECT_NORMAL` | Shift objects along object normal |
| `OBJECT_RAY` | Shift objects along the connection line between object and origin (camera position) |

**Tabelle 6. AXIS_ALIGNMENT**

| Value | Description |
| --- | --- |
| `TO_CAMERA_AXIS` | Align the indicated axis towards the camera axis |
| `TO_CAMERA_PLANE` | Align the indicated axis towards the camera plane |
| `FROM_FIT_METHOD` | Do not change axis alignments |

# Detection3DSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings.html

(no description)

# DistanceToReferencePointParameter – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/distance-to-reference-point-parameter.html

(no description)

## Member Variables

- **`referencePoint`:** `std::array< float, 2 >`, default: `\{0.0f, 0.0f\}`
- **`type`:** `Object2DSortType`, default: `\{Object2DSortType::None\}`

# FilteringObject2DParameterBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/filtering-object-2d-parameter-base.html

(no description)

## Member Variables

- **`type`:** `Object2DFilterType`, default: `\{Object2DFilterType::None\}`

# GripPointCorrection::OffsetMap – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-correction-offset-map.html

(no description)

## Member Functions

- **`cv::Mat getImage() const`:**

- **`bool loadImage()`:** == Member Variables

- **`imagePath`:** `std::filesystem::path` *JSON Type*: string +*Requirement*: Must point to a valid 8-bit calibration image. Grayscale, single channel image is recommended. +*Note*: For color image, it will be converted to grayscale. The image contains offset values for points at distance zDistance.

- **`zDistance`:** `float`, default: `\{0.5F\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Calibration depth of the image.

- **`maxOffset`:** `float`, default: `\{0.002F\}` *JSON Type*: float +*Requirement*: Must be greater than minCalibrationDistance. The distance the maximum image intensity (e.g. 255) corresponds to.

- **`minOffset`:** `float`, default: `\{0.000F\}` *JSON Type*: float +*Requirement*: Must be less than minCalibrationDistance. The distance the minimum image intensity (e.g. 0) corresponds to.

- **`decayDistance`:** `float`, default: `\{0.1F\}` *JSON Type*: float +*Requirement*: Must be larger than zero. This calibration layer affects all points between distance of [zDistance-decayDistance, zDistance+decayDistance] to zDistance. The value decays linearly. *Note*: for both decay direction, same signess of offset will be applied. i.e. zDistance = 0.5, maxOffset=0.3, minOffset=0.0, decayDistance=0.2 for x correction, pixel value =127 -→ zDistance@0.6, grippoint.x=1.0 -→ correctionValue = max(0, abs(\\{gripPoint.z\\}-{zDistance})/{decayDistance}) \* (minOffset + {maxOffset-minOffset}\*({pixelValueInCorrectionImage}/255) After correction It becomes \\{original gripPoint.x\\} + {correctionValue} -→ 0.5 + (0.6-0.5)/0.2 \* (0.0 + (0.3-0.0) \* (127/255)) → final value 0.8990196078431373

# GripPointCorrection – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-correction.html

apply grip point correction per pixel in x,y,z direction in camera coordinate systems

## Member Variables

- **`applyBeforeCollisionCheck`:** `bool`, default: `{true}`

- **`xOffsetMaps`:** `std::vector< OffsetMap >`, default: `\{\}` *JSON Type*: array of GripOffsetMap objects. +*Requirement*: Must be empty.

- **`yOffsetMaps`:** `std::vector< OffsetMap >`, default: `\{\}`

- **`zOffsetMaps`:** `std::vector< OffsetMap >`, default: `\{\}`

# GripPointFilterSettingsBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings-base.html

(no description)

## Member Functions

- **`virtual ~GripPointFilterSettingsBase()=default`:**

- **`virtual FILTER_TYPE type() const =0`:** *JSON Type*: string +*Requirement*: Must be a #FILTER_TYPE. Type of the filter.

## Enumerations

**Tabelle 1. FILTER_TYPE**

| Value | Description |
| --- | --- |
| `Z_AXIS` |   |

# GripPointFilterSettings< FILTER_TYPE::Z_AXIS > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings-filter-type-z-axis.html

Define a filter based on a reference orientation for the z-Orientation of a grip point.

## Member Functions

- **`FILTER_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be FILTER_TYPE::ROTATION. Type of the filter.

## Member Variables

- **`referenceFrame`:** `REFERENCE_FRAME`, default: `\{REFERENCE_FRAME::ROBOT\}` *JSON Type*: string +*Requirement*: Must be REFERENCE_FRAME. Frame the reference orientation is given in.

- **`referenceOrientation`:** `Eigen::Vector3f`, default: `\{Eigen::Vector3f::UnitZ()\}` *JSON Type*: array +*Requirement*: Must have three elements. Reference Orientation for the z-axis of a grip point.

- **`acceptedAngle`:** `float`, default: `\{180.0f\}` *JSON Type*: float +*Requirement*: Must larger than 0. maximal accepted z-orientation from referenceOrientation

## Enumerations

**Tabelle 1. REFERENCE_FRAME**

| Value | Description |
| --- | --- |
| `ROBOT` |   |
| `CAMERA` |   |

**Tabelle 2. FILTER_TYPE**

| Value | Description |
| --- | --- |
| `Z_AXIS` |   |

# GripPointFilterSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings.html

(no description)

# GripPointSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-settings.html

Define a grip point.

## Member Variables

- **`frame`:** `GRIP_POINT_FRAME`, default: `\{GRIP_POINT_FRAME::OBJECT_ABSOLUTE\}` *JSON Type*: string / array of string +*Requirement*: Must be a GRIP_POINT_FRAME or vector of GRIP_POINT_FRAME items. determine which translatory dimensions are abosluze (in meter) and which are relative to the size of the 2D detection.

- **`pose`:** `Eigen::Transform< float, 3, Eigen::Affine >`, default: `\{Eigen::Transform<float, 3, Eigen::Affine>::Identity()\}` *JSON Type*: array of array +*Requirement*: Must be a valid 4x4 transformation matrix. Transformation matrix that defines the grip position (grip to object transformation).

- **`translationCorrectionFrame`:** `GRIP_POINT_FRAME`, default: `\{GRIP_POINT_FRAME::BASE_RELATIVE\}`

- **`translationCorrection`:** `Eigen::Vector3f`, default: `\{Eigen::Vector3f::Zero()\}`

- **`rotationCorrectionFrame`:** `GRIP_POINT_FRAME`, default: `\{GRIP_POINT_FRAME::BASE_RELATIVE\}`

- **`rotationCorrection`:** `Eigen::Matrix3f`, default: `\{Eigen::Matrix3f::Identity()\}`

- **`symmetry`:** `std::shared_ptr< SymmetrySettingsBase >` *JSON Type*: (optional) SymmetrySettingsBase object

- **`filter`:** `std::shared_ptr< GripPointFilterSettingsBase >` *JSON Type*: (optional) GripPointFilterSettingsBase object

- **`priority`:** `uint32_t`, default: `{0}` *JSON Type*: uint32_t Priority of the associated grip. The next grip is always computed based on this value and not based on the object. If priorities of two grips are equal other factors are taken into account. The higher the value, the higher the priority.

- **`path`:** `std::vector< PathSegmentSettings >` *JSON Type*: (optional) array of PathSegmentSettings objects Path used for the picking of the object. If left empty or not specified the grip point is considered the sole path planning point.

## Enumerations

**Tabelle 1. GRIP_POINT_FRAME**

| Value | Description |
| --- | --- |
| `OBJECT_ABSOLUTE` | Absolute values, express the grip point pose in object coordinates. |
| `OBJECT_RELATIVE_X` | Relative x value, orientation is same as OBJECT_ABSOLUTE, but translation is relative to the object size which is determined by bounding box3D from the 2D/3D detection. |
| `OBJECT_RELATIVE_Y` | Relative y value. |
| `OBJECT_RELATIVE_Z` | Relative z value. |
| `OBJECT_RELATIVE` | Relative x, y and z values. orientation is same as OBJECT_ABSOLUTE, but translation is relative to the object size which is determined by bounding box3D from the 2D/3D detection. |
| `BASE_ABSOLUTE` = = 1 << 3 | = 1 << 3 |
| `BASE_RELATIVE` = = 1 << 4 | = 1 << 4 |
| `TCP_ABSOLUTE` = = 1 << 5 | = 1 << 5 |
| `TCP_RELATIVE` = = 1 << 6 | = 1 << 6 |

# ModelTrainingParameters – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/model-training-parameters.html

(no description)

## Member Variables

- **`relativeSamplingDistance`:** `float`, default: `\{0.03f\}` *JSON Type*: float +*Requirement*: Must be in (0, 1). Determines the minimum distance between points on the model relative to the model diameter during sampling.

- **`invertNormals`:** `bool`, default: `{true}` *JSON Type*: bool Determines whether to invert all normals of the model.

- **`poseRefinementRelativeSamplingDistance`:** `float`, default: `\{0.01f\}` *JSON Type*: float +*Requirement*: Must be in (0, 1). Determines the sampling distance for the pose refinement step. Lower value ⇒ larger model, slower but more accurate.

- **`featStepRelativeSize`:** `float`, default: `\{0.03f\}` *JSON Type*: float +*Requirement*: Must be in (0, 1). Set the discretization distance of the point pair distance relative to the object’s diameter. This value defaults to the value of RelSamplingDistance. It is not recommended to change this value. For very noisy scenes, the value can be increased to improve the robustness of the matching against noisy points.

- **`featAngleResolution`:** `int`, default: `{30}` *JSON Type*: int +*Requirement*: Must be larger than 1. Determines the angular discretization. Higher values ⇒ more accurate matching, less robustness against noise.

# NetworkSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/network-settings.html

Defines how a single neural network is imported into LumiScan VGR.

## Member Variables

- **`id`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the network object.

- **`networkPath`:** `std::filesystem::path`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must point to a valid network. Path to the neural network (i.e. the .onnx file or the .json file describing the network).

# NullSort – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/null-sort.html

Null sort class that does nothing.

## Member Variables

- **`sortType`:** `SortSelection`

## Enumerations

**Tabelle 1. SortSelection**

| Value | Description |
| --- | --- |
| `None` |   |
| `Position` | sort by position of grip pose |
| `Direction` | sort by orientation of grip pose |

# ObjectDetectionParameters – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-detection-parameters.html

(no description)

## Member Variables

- **`relativeSamplingDistance`:** `float`, default: `\{0.05f\}` *JSON Type*: float +*Requirement*: Must be in (0, 1). Determines the minimum distance between points on the model relative to the model diameter during sampling.

- **`keyPointFraction`:** `float`, default: `\{0.2f\}` *JSON Type*: float +*Requirement*: Must be in (0, 1]. Determines the fraction of sampled scene points to be used as key points for detection..

- **`minScore`:** `float`, default: `\{0.2f\}` *JSON Type*: float +*Requirement*: Must be larger than 0.0. Determines the minimum score a detected object must have in order to be accepted..

- **`sceneNormalComputation`:** `OBJECT_MATCHING_NORMAL_MODE`, default: `\{OBJECT_MATCHING_NORMAL_MODE::MLS\}` *JSON Type*: string +*Requirement*: Must be a #OBJECT_MATCHING_NORMAL_MODE. Determines the mode for the scene normal computation.

- **`sparsePoseRefinement`:** `bool`, default: `{true}` *JSON Type*: bool Enables or disables the sparse pose refinement..

- **`densePoseRefinement`:** `bool`, default: `{true}` *JSON Type*: bool Enables or disables the dense pose refinement.

- **`densePoseRefinementSteps`:** `int`, default: `{5}` *JSON Type*: int +*Requirement*: Must be larger than 0. Number of iterations for the dense pose refinement. Increasing the number of iteration leads to a more accurate pose at the expense of runtime. However, once convergence is reached, the accuracy can no longer be increased, even if the number of steps is increased.

- **`densePoseRefinementSubsampling`:** `int`, default: `{2}` *JSON Type*: int +*Requirement*: Must be larger than 0. Set the rate of scene points to be used for the dense pose refinement. For example, if this value is set to 5, every 5th point from the scene is used for pose refinement. This parameter allows an easy tradeoff between speed and accuracy of the pose refinement: Increasing the value leads to less points being used and in turn to a faster but less accurate pose refinement. Decreasing the value has the inverse effect.

- **`densePoseRefinementDistanceThreshold`:** `float`, default: `\{0.1f\}` *JSON Type*: float +*Requirement*: Must be larger than 0.0. Set the distance threshold for dense pose refinement relative to the diameter of the surface model. Only scene points that are closer to the object than this distance are used for the optimization. Scene points further away are ignored.

- **`maxNumMatches`:** `int`, default: `{10}` *JSON Type*: int +*Requirement*: Must be larger than 0. Maximum number of matches to be considered during detection. Increasing this parameter can result in higher detection times.

## Enumerations

**Tabelle 1. OBJECT_MATCHING_NORMAL_MODE**

| Value | Description |
| --- | --- |
| `MLS` | Compute normals based on larger neighborhood. More complex but more accurate. |
| `FAST` | Consider small neighborhood of points. |

# ObjectRefinementParameters – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-refinement-parameters.html

(no description)

## Member Variables

- **`minScore`:** `float`, default: `\{0.2f\}` *JSON Type*: float +*Requirement*: Must be larger than 0.0. Determines the minimum score a detected object must have in order to be accepted..

- **`poseRefinementSteps`:** `int`, default: `{5}` *JSON Type*: int +*Requirement*: Must be larger than 0. Number of iterations for the pose refinement. Increasing the number of iteration leads to a more accurate pose at the expense of runtime. However, once convergence is reached, the accuracy can no longer be increased, even if the number of steps is increased.

- **`poseRefinementSubsampling`:** `int`, default: `{2}` *JSON Type*: int +*Requirement*: Must be larger than 0. Set the rate of scene points to be used for the pose refinement. For example, if this value is set to 5, every 5th point from the scene is used for pose refinement. This parameter allows an easy tradeoff between speed and accuracy of the pose refinement: Increasing the value leads to less points being used and in turn to a faster but less accurate pose refinement. Decreasing the value has the inverse effect.

- **`poseRefinementDistanceThreshold`:** `float`, default: `\{0.1f\}` *JSON Type*: float +*Requirement*: Must be larger than 0.0. Set the distance threshold for the pose refinement relative to the diameter of the surface model. Only scene points that are closer to the object than this distance are used for the optimization. Scene points further away are ignored.

- **`initialPoses`:** `std::vector< std::array< double, 6 > >` *JSON Type*: array of array of double Set initial poses to be subsequently refined

- **`checkRefinedPose`:** `bool`, default: `{true}` *JSON Type*: bool Flag to check if the detected (refined) pose is within limits (10% of the objects size and 15 degrees of the original rotation) of the initial pose. It should not be necessary to use this option in an production environment, however it is useful for debugging purposes or to see why objects might be filtered out during setup.

- **`topResultOnly`:** `bool`, default: `{false}` *JSON Type*: bool Flag to only return the refined pose with best score

# ObjectSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-settings.html

Corresponds to an object that we want to detect.

Note that we can also define abstract objects such as features of composed parts or classification results (e.g. "emptyContainer").

## Member Functions

- **`ObjectSettings()`:** == Member Variables

- **`id`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the object.

- **`plcId`:** `int`, default: `\{-1\}` *JSON Type*: (optional) int Identifier for the object that will be transmitted to the PLC (see HDV_ObjectId).

- **`cadPath`:** `std::optional< std::filesystem::path >`, default: `\{""\}` *JSON Type*: (optional) string +*Requirement*: Must be a path to a regular file. File path to the CAD file of the object. This model is used for visualization and collision purposes.

- **`depthEstimation`:** `std::optional< DepthEstimationSettings >` *JSON Type*: (optional) DepthEstimationSettings object

- **`detection2d`:** `Detection2DSettings` *JSON Type*: Detection2DSettings object

- **`detection3d`:** `std::shared_ptr< Detection3DSettingsBase >` *JSON Type*: (optional) Detection3DSettingsBase object

- **`gripPoints`:** `std::vector< GripPointSettings >` *JSON Type*: (optional) array of GripPointSettings object

# old_network_description::InputLayout – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-input-layout.html

(no description)

## Member Variables

- **`image`:** `TensorLayout`, default: `\{"image"\}`

# old_network_description::NetworkDescription – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-network-description.html

(no description)

## Member Variables

- **`classList`:** `std::unordered_map< std::string, std::string >`, default: `\{\}`

- **`nonMaximumSuppression`:** `uint32_t`, default: `{9}`

- **`input`:** `InputLayout`

- **`output`:** `OutputLayout`

- **`evaluation_result`:** `std::unordered_map< std::string, double >`, default: `\{\}`

- **`networkArch`:** `NetworkArchitecture`, default: `\{NetworkArchitecture::LumiScanOOD\}`

# old_network_description::OutputLayout – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-output-layout.html

(no description)

## Member Variables

- **`heatmap`:** `TensorLayout`, default: `\{"heatmap", std::array<uint32_t, 4>\{1, 1, 180, 240\}, std::array<uint32_t, 4>\{1, 1, 180, 240\}\}`

- **`boxparams`:** `TensorLayout`, default: `\{"boxparams", std::array<uint32_t, 4>\{1, 8, 180, 240\}, std::array<uint32_t, 4>\{1, 8, 180, 240\}\}`

- **`offset`:** `TensorLayout`, default: `\{"heatmap", std::array<uint32_t, 4>\{1, 2, 180, 240\}, std::array<uint32_t, 4>\{1, 2, 180, 240\}\}`

# old_network_description::TensorLayout – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-tensor-layout.html

(no description)

## Member Variables

- **`tensorName`:** `std::string`, default: `\{""\}`

- **`sizeMin`:** `std::array< uint32_t, 4 >`, default: `\{1, 3, 720, 960\}`

- **`sizeMax`:** `std::array< uint32_t, 4 >`, default: `\{1, 3, 720, 960\}`

- **`batchDim`:** `uint8_t`, default: `{0}`

- **`channelDim`:** `uint8_t`, default: `{1}`

- **`heightDim`:** `uint8_t`, default: `{2}`

- **`widthDim`:** `uint8_t`, default: `{3}`

- **`dataType`:** `InputDataType`

# PathSegmentSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/path-segment-settings.html

Define a continuous path segment from the current pose to a waypoint.

## Member Variables

- **`type`:** `PATH_SEGMENT_TYPE`, default: `\{PATH_SEGMENT_TYPE::MOVE_LINEAR_STATE\}` *JSON Type*: string +*Requirement*: Must be a PATH_SEGMENT_TYPE Determine how the path segment should be executed.

- **`destination`:** `std::string`, default: `\{\}` *JSON Type*: string +*Requirement*: Must be a valid waypoint id. Id of the destination waypoint.

- **`sendActionId`:** `int`, default: `{0}` *JSON Type*: (optional) int Id that is transmitted to the PLC when this waypoint is returned.

- **`enableCollisionCheck`:** `bool`, default: `{true}` *JSON Type*: (optional) bool Turn collision check for this segment off/on, default is on.

- **`numberOfAllowedCollisions`:** `size_t`, default: `{0}` Configure how many collisions are allowed accumulated from start point to end point(end point not included). *JSON Type*: (optional) size_t

## Enumerations

**Tabelle 1. PATH_SEGMENT_TYPE**

| Value | Description |
| --- | --- |
| `MOVE_LINEAR_STATE` | The path segment is executed linear in state space. |
| `MOVE_LINEAR_JOINT` | The path segment is executed linear in joint space (UNIMPLEMENTED). |
| `MOVE_NONLINEAR` | The path segment is executed nonlinear (UNIMPLEMENTED). |

# PipelineSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/pipeline-settings.html

A pipeline defines how to process a point cloud in order to obtain object orientations (in camera frame). It contains point cloud postprocessing steps, a definition of the ROI and a list of objects that should be computed.

*Note*: filtering sequence BoxFilters→ROR→downsampling→ RemoveNaN → SOR

## Member Functions

- **`bool hasObjectFrameBasedCollisionCloudFilter() const`:** == Member Variables

- **`id`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the recording object.

- **`radiusOutlierRemoval`:** `std::optional< RadiusOutlierRemovalParameters >`, default: `\{std::nullopt\}` Parameters for radius outlier removal filter. *JSON Type*: (optional) object

- **`filters`:** `std::vector< std::shared_ptr< CloudFilterParameterBase > >`, default: `\{\}` filtering point cloud before any processing steps. *JSON Type*: array +*pre*: BaseFrame of Transform must not be BaseFrame::OBJECT (for now) *Note*: This will affect 3D object detection and collision checking.

- **`downsampling`:** `std::optional< std::array< float, 3 > >`, default: `\{std::nullopt\}` Parameters for downsampling the point cloud using voxel grid. *JSON Type*: array +*Requirement*: Must contain three elements. The three elements define the voxel leaf size in x, y and z direction [m], it will

- **`enableSOR`:** `bool`, default: `{false}` *JSON Type*: bool Enable or disable the statistic outlier removal filter that is applied to the recorded point cloud. It removes outliers for a better grip computation but increases processing time.

- **`sorMeanK`:** `int`, default: `{5}` *JSON Type*: integer +*Requirement*: Must be larger than zero. Number of neighbours considered for the SOR filter.

- **`sorStddevMulThresh`:** `float`, default: `\{0.2f\}` *JSON Type*: float +*Requirement*: Must be larger than zero. Threshold used to specify when a point is considered an outlier inthe SOR filter.

- **`imageROI`:** `cv::Rect`, default: `\{0, 0, 1280, 960\}` *JSON Type*: image ROI (fields: x, y, width, height) +*Requirement*: Must define a ROI inside the image dimensions 1280 x 960.

- **`collisionCloudFilters`:** `std::vector< std::shared_ptr< CloudFilterParameterBase > >`, default: `\{\}` filtering point cloud before collision check. *JSON Type*: array +*Note*: This will affect only collision checking.

- **`collisionRobotFilter`:** `std::vector< std::string >`, default: `\{\}` *JSON Type*: (optional) array of strings Contains names of all robots that should be considered for collision checks. The active robot is tested against all robots specified in this filter.

- **`collisionCloud`:** `bool`, default: `{false}` *JSON Type*: (optional) bool Indicates if the point cloud is considered for collision checks.

- **`collisionPart`:** `bool`, default: `{false}` *JSON Type*: (optional) bool UNIMPLEMENTED Indicates if the gripped part is considered for collision checks.

- **`collisionObjects`:** `bool`, default: `{false}` *JSON Type*: bool Defines if the detected objects are used for robot collision detection.

- **`objectFilter`:** `std::vector< std::string >`, default: `\{\}` *JSON Type*: (optional) array of strings Contains names of all objects that should be computed. Considers all objects if left empty or missing.

- **`reject2DObjectsOutsideROI`:** `bool`, default: `{true}` Whether reject 2D objects if its polygon is outside the ROI. *JSON Type*: (optional) bool Indicates if objects outside the ROI should be rejected.

- **`numGripsPrecomputeMin`:** `std::size_t`, default: `{0}` *JSON Type*: (optional) int +*Requirement*: Must be larger or equal to zero. Number of grips that should at least be precomputed for the pipeline.

- **`numGripsPrecomputeMax`:** `std::size_t`, default: `{100}` *JSON Type*: (optional) int +*Requirement*: Must be larger than zero. Number of grips that should at most be precomputed for the pipeline.

- **`gripPointOrdering`:** `std::optional< std::vector< std::array< float, 4 > > >`, default: `\{std::nullopt\}` *JSON Type*: (optional) array of arrays (direction + epsilon) +*Requirement*: May contain n arrays of length 4 (3 \* orientation + 1 \* epsilon) The orientation part of the vector contains a direction to be sorted along, the epsilon part of the vector states how much deviation along one row defined by a vector may occur. The sorting/definition of rows is going to be in the same order as they appear in the array. The vectors are defined in the camera base. This means that sorting along z, y, x, would first fill up a row along x, then go the he next row one up in y, the finally go to the next layer in z. Positive x direction is from right to left, positive y direction is from bottom to top, positive z direction is from camera to scene. epsilon is corresponding to value of cosine(theta). -→ epsilon = 0.1 -→ angle tolerance = arccos(0.1) = 84.3 degrees

- **`sorting`:** `std::shared_ptr< SortingBase >`, default: `\{new` Sort final result. default coordinates: GripTCPinRobotBase.

# PipelineSystemSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/pipeline-system-settings.html

Defines interactions between your OS and the pipeline.

## Member Variables

- **`saveFilePath`:** `std::filesystem::path`, default: `\{"data"\}` *JSON Type*: string Path where all generated output data will be stored.

[[-2]] `exportObjectDetectionText`:: `bool`, default: `{false}` *JSON Type*: bool Indicates if the 2D object detection result has to be saved to the disk as txt file. The output folder is specified by saveFilePath.

[[-3]] `exportObjectDetectionImage`:: `bool`, default: `{false}` *JSON Type*: bool Indicates if the 2D object detection result has to be saved to the disk as png file. The output folder is specified by saveFilePath.

# ProjectSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/project-settings.html

Global settings object for LumiScan VGR.

## Member Functions

- **`static ProjectSettings generatePreset()`:** == Member Variables

- **`m_meta`:** `hdv::application::SettingMeta`, default: `\{"LumiScanVGR", SETTINGS_FILE_VERSION, "NoMachineId", "LumiScanVGR", VGR::Version::String()\}`

- **`communicationProtocol`:** `CommunicationType`, default: `\{CommunicationType::Profinet\}`

- **`m_projectSettingsFile`:** `std::string`, default: `\{""\}`

- **`cameras`:** `std::vector< CameraSettings >` *JSON Type*: array of camera objects +*Requirement*: Must contain at least one element.

- **`recordings`:** `std::vector< RecordingSettings >` *JSON Type*: array of recording objects +*Requirement*: Must contain at least one element.

- **`networks`:** `std::vector< NetworkSettings >` *JSON Type*: array of NetworkSettings objects

- **`objects`:** `std::vector< ObjectSettings >` *JSON Type*: array of ObjectSettings objects

- **`pipelines`:** `std::vector< PipelineSettings >` *JSON Type*: array of PipelineSettings objects

- **`robots`:** `std::vector< RobotSettings >` *JSON Type*: array of RobotSettings objects +*Requirement*: Must contain at least one element.

- **`user`:** `UserSettings` *JSON Type*: UserSettings object

- **`system`:** `SystemSettings` *JSON Type*: SystemSettings object

# RadiusOutlierRemovalParameters – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/radius-outlier-removal-parameters.html

(no description)

## Member Variables

- **`radius`:** `float`, default: `\{0.01f\}` *JSON Type*: float +*Requirement*: Must be larger than zero. The radius search distance for each point in the point cloud.

- **`minNeighbors`:** `int`, default: `{10}` *JSON Type*: integer +*Requirement*: Must be larger than zero. The number of neighbours to search for in the radius search.

# RecordingSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-settings.html

Define how a LumiScan camera should acquire new data. Each entry corresponds to one physical LumiScan camera.

## Member Variables

- **`id`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the recording object.

- **`cameraId`:** `std::string`, default: `\{""\}` *JSON Type*: string Camera ID of the used LumiScan camera.

- **`depthMin_mm`:** `int`, default: `{150}` *JSON Type*: integer +*Requirement*: The value must be larger than zero and less than depthMax_mm. Minimum distance of area where depth is observed.

- **`depthMax_mm`:** `int`, default: `{300}` *JSON Type*: integer +*Requirement*: The value must be larger than zero and larger than depthMin_mm. Maximum distance of area where depth is observed.

- **`confidenceThreshold`:** `double`, default: `\{0.7\}` *JSON Type*: float +*Requirement*: The value must be larger than zero and less than one. Threshold for the confidence in our depth estimate. Larger values lead to less points that are more accurate. Smaller values result in more pointswith a lower accuracy.

- **`pixelFormat`:** `HDV_PIXEL_FORMAT`, default: `{HDV_MONO12}` *JSON Type*: string +*Requirement*: Must be one of [MONO8, MONO12]. Internal image format (8 bit or 12 bit). While 8 bit results in a higherframerate the point cloud accuracy is better at 12 bit.

- **`preProcessingFilter`:** `HDV_PRE_PROCESSING_FILTER`, default: `{HDV_PRE_PROCESS_BLUR}` *JSON Type*: string +*Requirement*: Must be one of [NONE, BLUR]. Type of the preprocessing filter.

- **`postProcessingFilter`:** `HDV_POST_PROCESSING_FILTER`, default: `{HDV_POST_PROCESS_NONE}` *JSON Type*: string +*Requirement*: Must be one of [NONE, MEDIAN, SMOOTH_OUTLIER]. Type of the postprocessing filter.

- **`triggerMode`:** `HDV_TRIGGER_MODE`, default: `{HDV_TRIGGER_SOFTWARE}` *JSON Type*: string +*Requirement*: Must be one of [OFF, SOFTWARE, HARDWARE]. Trigger mode of the camera:\* OFF: The camera continously captures images. The most recent result is returned when requesting a frame. + \* SOFTWARE: The camera is triggered directly and only once when a frame is requested. + \* HARDWARE: The camera must be triggered externally using a hardwaretrigger. The most recent result is returned when requesting a frame

- **`initialExposureTime_us`:** `int`, default: `{11000}` *JSON Type*: integer +*Requirement*: Must be larger than zero. Initial camera exposure time in microseconds.

- **`autoexposureEnabled`:** `bool`, default: `{false}` *JSON Type*: (optional) bool +*Requirement*: Can only be true, if an autoexposure object is specified. Enable/disable autoxposure specified by the autoexposure object. If enabled the cameras exposure time is recomputed after each trigger. In order to initialize the brightness of a scene correctly it is adviced to trigger twice at the beginning of a new process.

- **`autoexposure`:** `std::shared_ptr< AutoexposureSettings >`, default: `\{new` *JSON Type*: (optional) AutoexposureSettings object

- **`correctionEnabled`:** `bool`, default: `{false}` *JSON Type*: (optional) bool +*Requirement*: Enable the camera correction. If enabled each point of the cloud is corrected according to the steps defined in correction. Each point is at most corrected by one correction step.

- **`correction`:** `std::shared_ptr< CorrectionSettingsBase >`, default: `{nullptr}` *JSON Type*: (optional) CorrectionSettingsBase objects.

- **`timeoutTimer`:** `int`, default: `{500}` *JSON Type*: (optional) int +*Requirement*: Set timeout value for image acquisition in ms.

# RecordingSystemSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-system-settings.html

Defines interactions between your OS and the cameras.

## Member Functions

- **`void exportAll(bool val)`:** == Member Variables

- **`exportHdf5`:** `bool`, default: `{false}` *JSON Type*: (optional) bool Indicates if a camera frame has to be saved to the disk. The output folder is specified by saveFilePath.

- **`exportCenterView`:** `bool`, default: `{false}` *JSON Type*: (optional) bool Indicates if a camera center view has to be saved to the disk. The output folder is specified by saveFilePath.

- **`exportPcl`:** `bool`, default: `{false}` *JSON Type*: (optional) bool Indicates if a camera point cloud has to be saved to the disk. The output folder is specified by saveFilePath.

- **`pointcloudFiletype`:** `POINTCLOUD_FILETYPE`, default: `\{POINTCLOUD_FILETYPE::PLY\}` *JSON Type*: (optional) POINTCLOUD_FILETYPE Indicates what file format is to be used for storing and loading point cloud files

- **`saveFilePath`:** `std::filesystem::path`, default: `\{"data"\}` *JSON Type*: (optional) string Path where all generated output data will be stored.

- **`numRecordingsToKeep`:** `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int +*Requirement*: Must be larger or equal to zero Number of recordings to keep in the saveFilePath folder. Keep all files if nothing is specified.

- **`loadFilePath`:** `std::filesystem::path` *JSON Type*: (optional) string Path to image and point cloud data which shall be used when sim-ulating the camera. Must be a path without filename extension. Both a centerimage (.png) and a point cloud (.ply) with the same base name must exist inorder to be load correctly.

- **`extraDatasets`:** `std::unordered_map< std::string, std::filesystem::path >`, default: `\{\}` path to simulation datasets key: dataset name, value: path to dataset *Note*: : dataset name cannot exist in both loadFilePath and extraDatasets

- **`verboseGenICamLog`:** `bool`, default: `{false}`

# RemoveNaNFilterParameter – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/remove-na-n-filter-parameter.html

Remove NaN points from the point cloud.

## Member Variables

- **`filterType`:** `CloudFilterType` type of cloud filter

## Enumerations

**Tabelle 1. CloudFilterType**

| Value | Description |
| --- | --- |
| `BOX` | Box filter. |
| `REMOVE_NAN` | Remove NaN points. |

# RobotSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/robot-settings.html

Contains information on the robots geometry, spatial position relative to cameras and its communication interface.

One physical robot may be described by multiple robot objects. For example, multiple robot objects can be created to represent different grippers.

## Member Variables

- **`id`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the recording object.

- **`poseInterpreter`:** `std::shared_ptr< hdv::PoseInterpreter >`, default: `\{new hdv::QuaternionInterpreter\{hdv::TRANSLATION_UNIT::MILLIMETER, hdv::QUATERNION_TYPE::WXYZ\}\}` *JSON Type*: (optional) poseInterpreter object This object defines how poses can be interfaced with the robot. The required fields of this object depend on the rotation type:\* Quaternions: "type" - must be "QUATERNION" "quaternionType" "translationUnit" "labels" + \* Axis Angle (Rodrigues Rotation): "type" - must be "RODRIGUES" "translationUnit" "labels" + \* Euler Angles "type" - must be "EULER" "eulerType" "translationUnit" "rotationUnit" "labels" The individual fields must have the following values:\* "translationUnit": must be one of ["MILLIMETER", "CENTIMETER", "METER"] + \* "rotationUnit": must be one of ["RAD", "DEG"] + \* "quaternionType": must be one of ["XYZW", "WXYZ"] + \* "eulerType": must be one of the following: Proper Euler Angles (intrinsic): ["INT_ZXZ", "INT_ZYZ", "INT_YZY", "INT_YXY", "INT_XYX", "INT_XZX"] Kardan Euler Angles (intrinsic): ["INT_ZYX", "INT_ZXY", "INT_YZX", "INT_YXZ", "INT_XYZ", "INT_XZY"] Proper Euler Angles (extrinsic): ["EXT_ZXZ", "EXT_ZYZ", "EXT_YZY", "EXT_YXY", "EXT_XYX", "EXT_XZX"] Kardan Euler Angles (extrinsic): ["EXT_XYZ", "EXT_YXZ", "EXT_XZY", "EXT_ZXY", "EXT_ZYX", "EXT_YZX"] + \* "labels": array of strings that matches the dimension of the pose (6 elements for Euler Angles and Axis Angle formulation, 7 elements for the Quaternion format). The format always follows [tx, ty, tz, r1, r2, r3, (r4)], i.e. first the translation components, then the rotation components. The rotation components order is defined by the rotation type.

- **`worldUp`:** `Eigen::Vector3f`, default: `\{Eigen::Vector3f::UnitZ()\}` *JSON Type*: (optional) array +*Requirement*: Must have three elements. Direction of "up" in the robot base coordinate system. Used to compute the topmost objects.

- **`urdfPath`:** `std::filesystem::path`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be a path to a regular file. File path to the urdf file associated with this robot.

- **`baseFrame`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be not empty. Name of the urdf base frame (i.e. base link in the urdf file).

- **`moveFrame`:** `std::string`, default: `\{""\}` *JSON Type*: (optional) string +*Requirement*: Must be not empty. Name of the urdf move frame (i.e. move link in the urdf file).

- **`tcpFrame`:** `std::string`, default: `\{""\}` *JSON Type*: (optional) string +*Requirement*: Must not empty. Name of the urdf tcp frame (i.e. tcp link in the urdf file).

- **`gripTransform`:** `EigenTf`, default: `\{Eigen::Matrix4f::Identity()\}` *JSON Type*: (optional) array of array +*Requirement*: Must be a valid 4x4 transformation matrix. Transformation matrix that is applied to each computed grip position from the right (i.e. tcp frame to grip frame transform).

- **`enableGripPointCorrection`:** `bool`, default: `{false}`

- **`gripPointCorrection`:** `GripPointCorrection`, default: `\{\}`

- **`cameraToRobot`:** `std::unordered_map< std::string, EigenTf >` *JSON Type*: (optional) dictionary +*Requirement*: Each value must be a valid 4x4 transformation matrix. Contains cameraId / hand-eye-transform pairs.

- **`objectFilter`:** `std::vector< std::string >`, default: `\{\}` *JSON Type*: (optional) array of strings Contains names of all objects that should be grippable by the robot. Considers all objects if left empty or missing.

- **`waypoints`:** `std::vector< std::shared_ptr< WaypointSettingsBase > >` *JSON Type*: (optional) array of WaypointSettingsBase objects Contains definitions of all waypoints associated with the robot.

# SortDirection – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sort-direction.html

Sort points based on their orientation of grip frame.

## Member Variables

- **`referenceDirection`:** `Transform::AxisSelection`, default: `\{` Axis in GripFrame used to compare orientation.

- **`referenceAxis`:** `Transform::AxisSelection`, default: `\{` Axis in referenceFrame used as reference axis. [SortDirection](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sort-direction.html#) is sorting based on angle between 'referenceDirection' and 'referenceAxis'.

- **`invertReferenceAxis`:** `bool`, default: `{false}` true: the negative direction of selected axis is used.

- **`referenceFrame`:** `Transform::BaseFrame`, default: `\{` coordinate systems used for sorting *JSON Type*: string [CAMERA|ROBOT] coordinate systems used for sorting
- **`sortType`:** `SortSelection`

## Enumerations

**Tabelle 1. SortSelection**

| Value | Description |
| --- | --- |
| `None` |   |
| `Position` | sort by position of grip pose |
| `Direction` | sort by orientation of grip pose |

# SortPosition – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sort-position.html

Sort points based on their position of grip frame.

## Member Variables

- **`gripPointOrdering`:** `std::vector< std::array< float, 4 > >`, default: `\{std::array<float, 4>\{0.F, 0.F, 1.F, 0.F\}\}` *JSON Type*: (optional) array of arrays (direction + epsilon) +*Requirement*: May contain n arrays of length 4 (3 \* orientation + 1 \* epsilon) The orientation part of the vector contains a direction to be sorted along, the epsilon part of the vector states how much deviation along one row defined by a vector may occur. The sorting/definition of rows is going to be in the same order as they appear in the array. The vectors are defined in the camera base. This means that sorting along z, y, x, would first fill up a row along x, then go the he next row one up in y, the finally go to the next layer in z. Positive x direction is from right to left, positive y direction is from bottom to top, positive z direction is from camera to scene. epsilon is corresponding to value of cosine(theta). -→ epsilon = 0.1 -→ angle tolerance = arccos(0.1) = 84.3 degrees

- **`referenceFrame`:** `Transform::BaseFrame`, default: `\{` *JSON Type*: string [CAMERA|ROBOT] coordinate systems used for sorting
- **`sortType`:** `SortSelection`

## Enumerations

**Tabelle 1. SortSelection**

| Value | Description |
| --- | --- |
| `None` |   |
| `Position` | sort by position of grip pose |
| `Direction` | sort by orientation of grip pose |

# SortingBaseCRTP – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-base-crtp.html

(no description)

## Member Functions

- **`SortingBaseCRTP()`:** == Member Variables

- **`sortType`:** `SortSelection`

## Enumerations

**Tabelle 1. SortSelection**

| Value | Description |
| --- | --- |
| `None` |   |
| `Position` | sort by position of grip pose |
| `Direction` | sort by orientation of grip pose |

# SortingBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-base.html

Abstract Sorting.

## Member Functions

- **`SortingBase(SortSelection sortType_)`:**

- **`virtual ~SortingBase()=default`:** == Member Variables
- **`sortType`:** `SortSelection`

## Enumerations

**Tabelle 1. SortSelection**

| Value | Description |
| --- | --- |
| `None` |   |
| `Position` | sort by position of grip pose |
| `Direction` | sort by orientation of grip pose |

# SortingObject2DParameterBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-object-2d-parameter-base.html

(no description)

## Member Variables

- **`type`:** `Object2DSortType`, default: `\{Object2DSortType::None\}`

# SymmetrySettingsBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-base.html

Common base class for grip point symmetry settings. See [SYMMETRY_TYPE](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-base.html#symmetry-settings-base-symmetry-type) for specific symmetry types.

## Member Functions

- **`virtual ~SymmetrySettingsBase()=default`:**

- **`virtual SYMMETRY_TYPE type() const =0`:** *JSON Type*: string +*Requirement*: Must be a SYMMETRY_TYPE. Type of the symmetry.

## Enumerations

**Tabelle 1. SYMMETRY_TYPE**

| Value | Description |
| --- | --- |
| `ROTATION` | see [SymmetrySettings\<SYMMETRY_TYPE::ROTATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-symmetry-type-rotation.html) |

# SymmetrySettings< SYMMETRY_TYPE::ROTATION > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-symmetry-type-rotation.html

Define a rotation symmetry.

## Member Functions

- **`virtual SYMMETRY_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be SYMMETRY_TYPE::ROTATION. Type of the symmetry.

## Member Variables

- **`center`:** `Eigen::Vector3f`, default: `\{Eigen::Vector3f::Zero()\}` *JSON Type*: array +*Requirement*: Must have three elements. Center of the rotation.

- **`axis`:** `Eigen::Vector3f`, default: `\{Eigen::Vector3f::UnitZ()\}` *JSON Type*: array +*Requirement*: Must have three elements. Norm must not be zero. Axis of the rotation.

- **`angleMinDeg`:** `float`, default: `\{0.0f\}` *JSON Type*: float +*Requirement*: Must be less or equal to angleMaxDeg. Minimum rotation angle around the rotation axis.

- **`angleMaxDeg`:** `float`, default: `\{360.0f\}` *JSON Type*: float +*Requirement*: Must be greater or equal to angleMinDeg. Maximum rotation angle around the rotation axis.

- **`angleStepDeg`:** `float`, default: `\{10.0f\}` *JSON Type*: float +*Requirement*: Must be greater than zero. Angle discretization stepsize.

- **`sortingRefDirInRobotBase`:** `Eigen::Vector3f`, default: `\{Eigen::Vector3f::UnitX()\}` Reference direction for sorting symmetric grip points. *JSON Type*: array

- **`sortedDirInTcp`:** `Eigen::Vector3f`, default: `\{Eigen::Vector3f::UnitX()\}` Direction use to sort, align with. It is represent Tcp coordinate at grip position. After sorting, the sortedDirInTcp with least angle toward sortingRefDirInRobotBase will has higher priority *JSON Type*: array

## Enumerations

**Tabelle 1. SYMMETRY_TYPE**

| Value | Description |
| --- | --- |
| `ROTATION` | see [SymmetrySettings\<SYMMETRY_TYPE::ROTATION>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-symmetry-type-rotation.html#) |

# SymmetrySettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings.html

(no description)

# SystemSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/system-settings.html

(no description)

## Member Functions

- **`void exportAll(bool val)`:** == Member Variables

- **`enableHeartbeat`:** `bool`, default: `{true}` *JSON Type*: (optional) bool Enable the PLC heartbeat.

- **`enableAutomaticSetup`:** `bool`, default: `{false}` *JSON Type*: (optional) bool Enable program automatic setup at start This is old behavior of VGR that connect automatically

- **`enableFullScreen`:** `bool`, default: `{false}` If enable, the VGR will start in full screen mode. *JSON Type*: (optional) bool

- **`enableExternalAdminModeControl`:** `bool`, default: `{false}` If enable, PLC can enable/disable the Admin mode by switch value of 'IN_EnableAdminMode'. *Note*: This will disable password protection for the admin mode

[[-2]] `exportHdf5`:: `bool`, default: `{false}` *JSON Type*: (optional) bool Indicates if a camera frame has to be saved to the disk. The output folder is specified by saveFilePath.

[[-3]] `exportCenterView`:: `bool`, default: `{false}` *JSON Type*: (optional) bool Indicates if a camera center view has to be saved to the disk. The output folder is specified by saveFilePath.

[[-4]] `exportPcl`:: `bool`, default: `{false}` *JSON Type*: (optional) bool Indicates if a camera point cloud has to be saved to the disk. The output folder is specified by saveFilePath.

[[-5]] `pointcloudFiletype`:: `POINTCLOUD_FILETYPE`, default: `\{POINTCLOUD_FILETYPE::PLY\}` *JSON Type*: (optional) POINTCLOUD_FILETYPE Indicates what file format is to be used for storing and loading point cloud files

[[-6]] `saveFilePath`:: `std::filesystem::path`, default: `\{"data"\}` *JSON Type*: (optional) string Path where all generated output data will be stored.

[[-7]] `numRecordingsToKeep`:: `std::optional< int >`, default: `{100}` *JSON Type*: (optional) int +*Requirement*: Must be larger or equal to zero Number of recordings to keep in the saveFilePath folder. Keep all files if nothing is specified.

[[-8]] `loadFilePath`:: `std::filesystem::path` *JSON Type*: (optional) string Path to image and point cloud data which shall be used when sim-ulating the camera. Must be a path without filename extension. Both a centerimage (.png) and a point cloud (.ply) with the same base name must exist inorder to be load correctly.

[[-9]] `extraDatasets`:: `std::unordered_map< std::string, std::filesystem::path >`, default: `\{\}` path to simulation datasets key: dataset name, value: path to dataset *Note*: : dataset name cannot exist in both loadFilePath and extraDatasets

[[-10]] `verboseGenICamLog`:: `bool`, default: `{false}`

- **`saveFilePath`:** `std::filesystem::path`, default: `\{"data"\}` *JSON Type*: string Path where all generated output data will be stored.

- **`exportObjectDetectionText`:** `bool`, default: `{false}` *JSON Type*: bool Indicates if the 2D object detection result has to be saved to the disk as txt file. The output folder is specified by saveFilePath.

- **`exportObjectDetectionImage`:** `bool`, default: `{false}` *JSON Type*: bool Indicates if the 2D object detection result has to be saved to the disk as png file. The output folder is specified by saveFilePath.

# TopNParameter – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/top-n-parameter.html

(no description)

## Member Variables

- **`numOfInstances`:** `int`, default: `{1}`
- **`type`:** `Object2DFilterType`, default: `\{Object2DFilterType::None\}`

# Transform – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/transform.html

Transformation between coordinate systems.

## Member Variables

- **`translation`:** `std::array< float, 3 >`, default: `\{0.F, 0.F, 0.F\}` [m] (x, y, z)

- **`orientation`:** `std::array< float, 3 >`, default: `\{0.F, 0.F, 0.F\}` [degrees] ExtrinsicXYZ (Rx, Ry, Rz)

- **`baseFrame`:** `BaseFrame`, default: `\{` FrameType[CAMERA|ROBOT|OBJECT]: [Transform](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/transform.html#) into specified base frame(coordinate system). Currently only CAMERA supported.

- **`objectId`:** `std::optional< std::string >`, default: `\{std::nullopt\}`

## Enumerations

**Tabelle 1. BaseFrame**

| Value | Description |
| --- | --- |
| `ROBOT` | select robot base coordinate system |
| `CAMERA` | select camera coordinate system |
| `OBJECT` | select object coordinate system |
| `GRIP` | select TCP @ grip position |

**Tabelle 2. AxisSelection**

| Value | Description |
| --- | --- |
| `X` | select x axis of coordinate system |
| `Y` | select y axis of coordinate system |
| `Z` | select z axis of coordinate system |

# UserSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/user-settings.html

(no description)

## Member Variables

- **`adminPassword`:** `std::string`, default: `\{""\}` *JSON Type*: string Passwort for activating the admin mode. No password is required if left empty.

- **`manualModePassword`:** `std::string`, default: `\{""\}` *JSON Type*: string Passwort for activating the manual mode. No password is required if left empty.

# WaypointSettingsBase – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-base.html

Abstract base class to define unique waypoints. See [WAYPOINT_TYPE](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html#waypoint-settings-waypoint-type-wp-relative-waypoint-type) for specific waypoint types.

## Member Functions

- **`virtual ~WaypointSettingsBase()=default`:**

- **`virtual WAYPOINT_TYPE type() const =0`:** *JSON Type*: string +*Requirement*: Must be a #OBJ_DET_2D_TYPE. Type of the 2D detection step.

## Member Variables

- **`id`:** `std::string` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the waypoint.

## Enumerations

**Tabelle 1. WAYPOINT_TYPE**

| Value | Description |
| --- | --- |
| `WP_GRIP_POINT` | See [WaypointSettings\<WAYPOINT_TYPE::WP_GRIP_POINT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html). |
| `WP_CLONE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_CLONE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html). |
| `WP_ABSOLUTE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_ABSOLUTE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html). |
| `WP_RELATIVE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_RELATIVE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html). |

# WaypointSettings< WAYPOINT_TYPE::WP_ABSOLUTE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html

Defines the absolute waypoint. This waypoint defines a fixed pose in the robot coordinate system.

## Member Functions

- **`virtual WAYPOINT_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be WAYPOINT_TYPE::WP_ABSOLUTE. Type of the waypoint.

## Member Variables

- **`transform`:** `EigenTf`, default: `\{Eigen::Matrix4f::Identity()\}` *JSON Type*: array of array +*Requirement*: Must be a valid 4x4 transformation matrix. Defines a static transformation from the robot "move-frame" to the robot "base-frame".
- **`id`:** `std::string` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the waypoint.

## Enumerations

**Tabelle 1. WAYPOINT_TYPE**

| Value | Description |
| --- | --- |
| `WP_GRIP_POINT` | See [WaypointSettings\<WAYPOINT_TYPE::WP_GRIP_POINT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html). |
| `WP_CLONE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_CLONE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html). |
| `WP_ABSOLUTE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_ABSOLUTE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html#). |
| `WP_RELATIVE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_RELATIVE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html). |

# WaypointSettings< WAYPOINT_TYPE::WP_CLONE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html

Defines the clone waypoint.

## Member Functions

- **`virtual WAYPOINT_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be WAYPOINT_TYPE::WP_CLONE. Type of the waypoint.

## Member Variables

- **`cloneId`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be a valid waypoint id. Name of the waypoint this ones position is defined relative to.
- **`id`:** `std::string` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the waypoint.

## Enumerations

**Tabelle 1. WAYPOINT_TYPE**

| Value | Description |
| --- | --- |
| `WP_GRIP_POINT` | See [WaypointSettings\<WAYPOINT_TYPE::WP_GRIP_POINT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html). |
| `WP_CLONE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_CLONE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html#). |
| `WP_ABSOLUTE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_ABSOLUTE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html). |
| `WP_RELATIVE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_RELATIVE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html). |

# WaypointSettings< WAYPOINT_TYPE::WP_GRIP_POINT > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html

Defines the grip point waypoint. For each individual object this waypoint is defined as the grip point.

## Member Functions

- **`virtual WAYPOINT_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be WAYPOINT_TYPE::WP_GRIP_POINT. Type of the waypoint.

## Member Variables

- **`id`:** `std::string` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the waypoint.

## Enumerations

**Tabelle 1. WAYPOINT_TYPE**

| Value | Description |
| --- | --- |
| `WP_GRIP_POINT` | See [WaypointSettings\<WAYPOINT_TYPE::WP_GRIP_POINT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html#). |
| `WP_CLONE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_CLONE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html). |
| `WP_ABSOLUTE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_ABSOLUTE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html). |
| `WP_RELATIVE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_RELATIVE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html). |

# WaypointSettings< WAYPOINT_TYPE::WP_RELATIVE > – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html

Defines a waypoint relative to another waypoint (e.g. relative to the grip point).

A reference transformation "tfRef" is constructed such that its translation is equal to the translation of the referencePosition waypoint and its orientation is equivalent to the referenceOrientation waypoint. Depending on the value of "applyFrom" the full relative waypoint transform is given as:\* "LEFT" : transform \* tfRef + \* "RIGHT": tfRef \* transform The effect of this is, that "LEFT" implies a transformation in relation to ROBOT coordinates (extrinsic), while "RIGHT" implies a transformation in OBJECT coordinates (intrinsic). Visual examples for these settings can (soon) be found in the manual of VGR.

## Member Functions

- **`virtual WAYPOINT_TYPE type() const override`:** *JSON Type*: string +*Requirement*: Must be WAYPOINT_TYPE::WP_RELATIVE. Type of the waypoint.

## Member Variables

- **`transform`:** `EigenTf`, default: `\{Eigen::Matrix4f::Identity()\}` *JSON Type*: array of array +*Requirement*: Must be a valid 4x4 transformation matrix. Defines a static transformation from the robot "move-frame" to the robot "base-frame".

- **`referencePosition`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be a valid waypoint id. Name of the waypoint this ones position is defined relative to.

- **`referenceOrientation`:** `std::string`, default: `\{""\}` *JSON Type*: string +*Requirement*: Must be not empty. Name of the waypoint this ones orientation is defined relative to.

- **`applyFrom`:** `REL_WAYPOINT_ORDER`, default: `\{REL_WAYPOINT_ORDER::LEFT\}` *JSON Type*: string +*Requirement*: Must be a REL_WAYPOINT_ORDER. Define if the relative transform is applied from the left or the right.

- **`id`:** `std::string` *JSON Type*: string +*Requirement*: Must be unique and not empty. Identifier for the waypoint.

## Enumerations

**Tabelle 1. REL_WAYPOINT_ORDER**

| Value | Description |
| --- | --- |
| `LEFT` | The relative transform is multiplied from the left to its reference. |
| `RIGHT` | The relative transform is multiplied from the right to its reference. |

**Tabelle 2. WAYPOINT_TYPE**

| Value | Description |
| --- | --- |
| `WP_GRIP_POINT` | See [WaypointSettings\<WAYPOINT_TYPE::WP_GRIP_POINT>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html). |
| `WP_CLONE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_CLONE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html). |
| `WP_ABSOLUTE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_ABSOLUTE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html). |
| `WP_RELATIVE` | See [WaypointSettings\<WAYPOINT_TYPE::WP_RELATIVE>](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html#). |

# WaypointSettings – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings.html

(no description)

# OPC UA-Schnittstellenreferenz – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/opcua.html

Die OPC UA-Schnittstelle ermöglicht die Kommunikation zwischen LumiScan VGR und einem OPC UA-Client.

Die Referenzdokumentation umfasst:

- Verbindungseinstellungen
- den OPC UA-Adressraum
- verfügbare Methoden und ihre Argumente
- die empfohlene Aufrufreihenfolge
- Rückgabecodes
- Fehlerbehebung (siehe [Fehlerbehebung: OPC UA](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/troubleshooting.html#opc-ua))

Die Dokumentation wird aus der Doxygen-Quellcode-Dokumentation der OPC UA-Schnittstelle von LumiScan VGR generiert.

## OPC UA-Dokumentation

- [Leitfaden zur Integration von OPC UA-Clients](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/opcua/opc-ua-client-integration-guide.html)

# PROFINET-Schnittstellenreferenz – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/profinet.html

Die PROFINET-Schnittstelle ermöglicht die Kommunikation zwischen LumiScan VGR und der SPS.

Dieses Kapitel beschreibt:

- das Speicherlayout der ausgetauschten Signale
- die PROFINET-Gerätemodule
- den Prozessablauf für Funktionsaufrufe
- die verfügbaren Funktionen
- Rückgabecodes
- Betriebsmodi

Eine Erläuterung zur Verwendung der Schnittstelle im Betrieb finden Sie in [SPS-Einstellungen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html).

## Speicherlayout

Der Signalspeicher ist in Slots organisiert.

Zwei Gruppen von Signalen werden ausgetauscht:

- **SPS-Eingänge (`OUT_`**):\* Von LumiScan VGR geschriebene und von der SPS gelesene Werte.
- **SPS-Ausgänge (`IN_`**):\* Von der SPS geschriebene und von LumiScan VGR gelesene Werte.

### SPS-Eingänge (`OUT_*`)

| Slot / Gruppe | Byteadresse | Bit | Datentyp | Name | Beschreibung |
| --- | --- | --- | --- | --- | --- |
| Slot 1 - Systemsignale | 0 | 0 | bool | `OUT_HeartBeat` | Spiegelt den Wert von `IN_HeartBeat`. |
| Slot 1 - Systemsignale | 0 | 1 | bool | `OUT_Error` | Wird auf `1` gesetzt, wenn sich LumiScan VGR in einem Fehlerzustand befindet. |
| Slot 1 - Systemsignale | 0 | 2 | bool | `OUT_ResetReady` | Gibt an, ob die Reset-Funktion zur Ausführung bereit ist. |
| Slot 1 - Systemsignale | 0 | 3 | bool | `OUT_ResetRunning` | Gibt an, ob die Reset-Funktion derzeit ausgeführt wird. |
| Slot 1 - Systemsignale | 0 | 4 | bool | `OUT_SetupReady` | Gibt an, ob die Setup-Funktion zur Ausführung bereit ist. |
| Slot 1 - Systemsignale | 0 | 5 | bool | `OUT_SetupRunning` | Gibt an, ob die Setup-Funktion derzeit ausgeführt wird. |
| Slot 1 - Systemsignale |   |   |   |   | Reserviert |
| Slot 1 - Statussignale | 4 |   | byte/uchar | `OUT_OperationMode` | Enthält den aktuellen Betriebsmodus. Er kann über die Funktion Set Parameter geändert werden.<br> `0` - `IDLE`: Es sind nur Funktionen zum Setzen von Parametern verfügbar.<br> `1` - `AUTOMATIC`: Alle Verarbeitungsfunktionen sind verfügbar.<br> `2` - `MANUAL`: LumiScan VGR wird über die Benutzeroberfläche gesteuert. |
| Slot 1 - Statussignale | 5 | 0 | bool | `OUT_IsSetup` | Gibt an, ob das System-Setup abgeschlossen wurde. |
| Slot 1 - Statussignale |   |   |   |   | Reserviert |
| Slot 1 - Triggersignale | 8 | 0 | bool | `OUT_SetParameterReady` | Gibt an, ob die Funktion Set Parameter bereit ist. |
| Slot 1 - Triggersignale | 8 | 1 | bool | `OUT_SetParameterRunning` | Gibt an, ob die Funktion Set Parameter ausgeführt wird. |
| Slot 1 - Triggersignale | 9 | 0 | bool | `OUT_TriggerCameraReady` | Gibt an, ob die Kameraauslösung bereit ist. |
| Slot 1 - Triggersignale | 9 | 1 | bool | `OUT_TriggerCameraRunning` | Gibt an, ob die Kameraauslösung ausgeführt wird. |
| Slot 1 - Triggersignale | 10 | 0 | bool | `OUT_ComputeObjectsReady` | Gibt an, ob die Objektberechnung bereit ist. |
| Slot 1 - Triggersignale | 10 | 1 | bool | `OUT_ComputeObjectsRunning` | Gibt an, ob die Objektberechnung ausgeführt wird. |
| Slot 1 - Triggersignale | 11 | 0 | bool | `OUT_GetBestResultReady` | Gibt an, ob die Berechnung des besten Ergebnisses bereit ist. |
| Slot 1 - Triggersignale | 11 | 1 | bool | `OUT_GetBestResultRunning` | Gibt an, ob die Berechnung des besten Ergebnisses ausgeführt wird. |
| Slot 1 - Triggersignale | 12 | 0 | bool | `OUT_GripBestResultReady` | Gibt an, ob die Funktion Grip Best Result bereit ist. |
| Slot 1 - Triggersignale | 12 | 1 | bool | `OUT_GripBestResultRunning` | Gibt an, ob die Funktion Grip Best Result ausgeführt wird. |
| Slot 1 - Triggersignale | 13 | 0 | bool | `OUT_GetParameterReady` | Gibt an, ob die Funktion Get Parameter bereit ist. |
| Slot 1 - Triggersignale | 13 | 1 | bool | `OUT_GetParameterRunning` | Gibt an, ob die Funktion Get Parameter ausgeführt wird. |
| Slot 1 - Triggersignale | 14 | 0 | bool | `OUT_ResetCameraReady` | Gibt an, ob die Funktion Reset Camera bereit ist. |
| Slot 1 - Triggersignale | 14 | 1 | bool | `OUT_ResetCameraRunning` | Gibt an, ob die Funktion Reset Camera ausgeführt wird. |
| Slot 1 - Triggersignale | … |   |   | `OUT_GripPriority` | Greifpriorität des ausgewählten Ergebnisses. |
| Slot 2 - Daten | 64 |   | byte/uchar | `OUT_ReturnCode` | Enthält den Rückgabecode der zuletzt ausgeführten Funktion. |
| Slot 2 - Daten | 65 |   | byte/uchar | `OUT_ObjectId` | ID des Objekts gemäß Definition in den JSON-Einstellungen. |
| Slot 2 - Daten | 66 |   | 6 x float | `OUT_BBoxGripFrame` | Nicht implementiert. |
| Slot 2 - Daten | 90 |   | 6 x float | `OUT_BBoxObjectFrame` | Bounding box des Objekts im Objektkoordinatensystem:<br> `[xmin, ymin, zmin, xmax, ymax, zmax]` in Metern. |
| Slot 2 - Daten | 114 |   | float | `OUT_PrevObjectDepth` | Tiefe des zuvor gegriffenen Objekts in Metern. Nur gültig, wenn der Wert größer oder gleich `0.0` ist. |
| Slot 2 - Daten | 118 |   | byte/uchar | `OUT_NumObjects` | Anzahl der Objekte in der Szene, die noch nicht gegriffen wurden. |
| Slot 2 - Daten | … |   |   |   | Reserviert |
| Slot 3 - Daten | 128 |   | 7 x float | `OUT_PoseMoveInRobot` | Pose des Move-Frames für einen Greifpunkt in Roboterkoordinaten:<br> `[tx, ty, tz, r1, r2, r3, r4]`<br> `t` steht für den Translationsanteil, `r` für den Rotationsanteil. Einheiten und Rotationskonventionen hängen von der Roboterkonfiguration ab. Verwendet die Rotationskonvention keine Quaternionen, enthält `r4` keine Information. |
| Slot 3 - Daten | 156 |   | 7 x float | `OUT_PoseObjectInTcp` | Pose des Objekts in TCP-Koordinaten. Verwendet dasselbe Pose-Format wie `OUT_PoseMoveInRobot`. |
| Slot 3 - Daten | … |   |   |   | Reserviert |
| Slot 4 - Daten | 192 |   | float | `OUT_ObjectScore2D` | Score des 2D-Objekterkennungsergebnisses. |
| Slot 4 - Daten | 196 |   | float | `OUT_PrevObjectCurvature` | Krümmung des zuvor gegriffenen Objekts. |
| Slot 4 - Daten | 200 |   | int | `OUT_PrevObjectInnerNearestNeighbour` | Nearest-Neighbor-Wert des zuvor gegriffenen Objekts. |
| Slot 4 - Daten | 204 |   | int | `OUT_DepthLimitMM` | Aktuell konfigurierte untere oder obere Tiefengrenze. |
| Slot 4 - Daten | 208 |   | int | `OUT_ImageReference` | Aktuell konfigurierte Bildreferenz. |
| Slot 4 - Daten | 212 |   | float | `OUT_ObjectScore3D` | Score des 3D-Objekterkennungsergebnisses. |
| Slot 4 - Daten | 216 |   | float | `OUT_CameraTemperature` | Aktuelle Kameratemperatur in °C. Der Wert wird bei jeder Bildaufnahme aktualisiert. |
| Slot 4 - Daten | … |   |   |   | Reserviert |

### SPS-Ausgänge (`IN_*`)

| Slot / Gruppe | Byteadresse | Bit | Datentyp | Name | Beschreibung |
| --- | --- | --- | --- | --- | --- |
| Slot 5 - Systemsignale | 0 | 0 | bool | `IN_HeartBeat` | Heartbeat-Signal von der SPS. `OUT_HeartBeat` folgt diesem Wert. |
| Slot 5 - Systemsignale | 0 | 1 | bool | `IN_Error` | Für SPS-Fehler reserviert. |
| Slot 5 - Systemsignale | 0 | 2 | bool | `IN_ResetRequest` | Fordert die Ausführung der Reset-Funktion an. |
| Slot 5 - Systemsignale | 0 | 3 | bool | `IN_EnableAdminMode` | Wenn `system/enableExternalAdminModeControl` in den JSON-Einstellungen auf `true` gesetzt ist, kann mit diesem Signal der Admin-Modus aktiviert oder deaktiviert werden.<br> Die SPS sollte diesen Wert nur ändern, wenn derzeit keine Funktion ausgeführt wird. |
| Slot 5 - Systemsignale | 0 | 4 | bool | `IN_SetupRequest` | Fordert die Ausführung der Setup-Funktion an. |
| Slot 5 - Systemsignale |   |   |   |   | Reserviert |
| Slot 5 - Statussignale | 4 |   |   |   | Reserviert |
| Slot 5 - Statussignale | … |   |   |   |   |
| Slot 5 - Triggersignale | 8 | 0 | bool | `IN_SetParameterRequest` | Fordert die Ausführung der Funktion Set Parameter an. |
| Slot 5 - Triggersignale | 9 | 0 | bool | `IN_TriggerCameraRequest` | Fordert ein neues Bild der aktiven Kamera an. |
| Slot 5 - Triggersignale | 10 | 0 | bool | `IN_ComputeObjectsRequest` | Fordert die Objektberechnung an. |
| Slot 5 - Triggersignale | 11 | 0 | bool | `IN_GetBestResultRequest` | Fordert die Berechnung des besten Greifergebnisses an. |
| Slot 5 - Triggersignale | 12 | 0 | bool | `IN_GripBestResultRequest` | Fordert die Bestätigung des besten Greifergebnisses an. |
| Slot 5 - Triggersignale | 13 | 0 | bool | `IN_GetParameterRequest` | Fordert einen Parameterwert an. |
| Slot 5 - Triggersignale | 14 | 0 | bool | `IN_ResetCameraRequest` | Fordert einen Reset der angegebenen Kamera an. |
| Slot 5 - Triggersignale | … |   |   |   | Reserviert |
| Slot 6 - Daten | 64 |   | byte/uchar | `IN_ParamId` | Gibt den von der Funktion Set Parameter oder Get Parameter verwendeten Parameter bzw. Vorgang an. |
| Slot 6 - Daten | 65 |   | byte/uchar | `IN_ParamArgByte` | Byte-Argument, das von Parameterfunktionen verwendet wird. |
| Slot 6 - Daten | 66 |   | int | `IN_ParamArgInt` | Ganzzahl-Argument, das von Parameterfunktionen verwendet wird. |
| Slot 6 - Daten | 70 |   | float | `IN_ParamArgFloat` | Float-Argument, das von Parameterfunktionen verwendet wird. |
| Slot 6 - Daten | 74 |   | 32 x byte/uchar | `IN_ParamArgString` | String-Argument, das von Parameterfunktionen verwendet wird. |
| Slot 6 - Daten | … |   |   |   | Reserviert |
| Slot 7 - Daten | 128 |   | 7 x float | `IN_PoseMoveInRobot` | Aktuelle Pose in Roboterkoordinaten unter Verwendung des Move-Frames. Dieser Wert sollte immer verfügbar sein. |
| Slot 7 - Daten | … |   |   |   | Reserviert |
| Slot 8 - Reserviert | 192 |   |   |   | Reserviert |
| Slot 8 - Reserviert | … |   |   |   | Reserviert |

## Gerätemodule

### Eingänge

| Slot | Modul | Typ | Länge | Adresse |
| --- | --- | --- | --- | --- |
| 1 | 64 Byte Eingang | QB | 64 | 0 |
| 2 | 64 Byte Eingang | QB | 64 | 64 |
| 3 | 64 Byte Eingang | QB | 64 | 128 |
| 4 | 64 Byte Eingang | QB | 64 | 192 |

### Ausgänge

| Slot | Modul | Typ | Länge | Adresse |
| --- | --- | --- | --- | --- |
| 5 | 64 Byte Ausgang | IB | 64 | 0 |
| 6 | 64 Byte Ausgang | IB | 64 | 64 |
| 7 | 64 Byte Ausgang | IB | 64 | 128 |
| 8 | 64 Byte Ausgang | IB | 64 | 192 |

## Prozessablauf

Jeder Prozess verwendet drei Signale:

- `OUT_*Ready`
- `IN_*Request`
- `OUT_*Running`

Die Ausführungsreihenfolge ist für alle Funktionen gleich.

| Schritt | OUT | IN | Hinweis |
| --- | --- | --- | --- |
| 1 |   | Warten, bis `OUT_*Ready == 1` | Gilt nicht für Reset-Funktionen |
| 2 |   | `IN_*Request → 1` setzen |   |
| 3 | Prüfen, ob `IN_*Request == 1` |   |   |
| 4 | `OUT_*Ready → 0` setzen |   |   |
| 5 | `OUT_*Running → 1` setzen |   |   |
| 6 |   | Warten, bis `OUT_*Ready == 0` | Gilt nicht für Reset-Funktionen |
| 7 |   | Prüfen, ob `OUT_*Running == 1` | Andernfalls wird der Trigger verworfen |
| 8 |   | `IN_*Request → 0` setzen |   |
| 9 | Warten, bis `IN_*Request == 0` |   |   |
| 10 | Angeforderte Funktion ausführen |   |   |
| 11 | Ausgabevariablen setzen |   |   |
| 12 | `OUT_*Running → 0` setzen |   |   |
| 13 | `OUT_*Ready → 1` setzen |   |   |
| 14 |   | Warten, bis `OUT_*Running == 0` |   |
| 15 |   | Rückgabecode prüfen |   |
| 16 |   | Ausgabevariablen lesen |   |

Eine detailliertere Erläuterung des Handshake-Verhaltens finden Sie in [SPS-Einstellungen: Prozessablauf](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#process-flow).

## Funktionsbeschreibungen

| Funktion | Eingang | Ausgang | Beschreibung | Voraussetzung |
| --- | --- | --- | --- | --- |
| `IN_Reset` |   |   | Setzt alle `OUT_*`-Variablen auf ihre Standardwerte zurück. Alle Ausgabewerte werden auf null gesetzt, und `OUT_OperationMode` wird auf `IDLE` gesetzt. |   |
| `OUT_Reset` |   |   | Setzt alle `IN_*`-Variablen auf ihre Standardwerte zurück. |   |
| `OUT_SetParameter` | `IN_ParamId`<br> `IN_ParamArgByte`<br> `IN_ParamArgInt`<br> `IN_ParamArgFloat`<br> `IN_ParamArgString` | `OUT_ReturnCode` | Setzt einen Parameter. `IN_ParamId` gibt an, welcher Parameter geändert wird:<br><br><br>`0` - `SET_OPERATION_MODE`: Setzt `OUT_OperationMode` auf den Wert von `IN_ParamArgByte`. Die SPS kann das System nicht aus dem manuellen Modus herausschalten; der manuelle Modus muss über die Benutzeroberfläche beendet werden.<br><br><br>`1` - `SET_CAMERA_ID`: Setzt die aktive Kamera auf die in `IN_ParamArgString` angegebene ID.<br><br><br>`2` - `SET_PIPELINE_ID`: Setzt die aktive Pipeline auf die in `IN_ParamArgString` angegebene ID.<br><br><br>`3` - `SET_ROBOT_ID`: Setzt den aktiven Roboter auf die in `IN_ParamArgString` angegebene ID. | `OUT_OperationMode = AUTOMATIC` oder `IDLE` |
| `OUT_GetParameter` | `IN_ParamId`<br> `IN_ParamArgByte`<br> `IN_ParamArgInt`<br> `IN_ParamArgFloat`<br> `IN_ParamArgString` | `OUT_ReturnCode` sowie die durch den ausgewählten Parameter bestimmte Ausgabe | Liest einen Parameter. `IN_ParamId` gibt den angeforderten Wert an:<br><br><br>`0` - `GET_NUM_OBJECTS_2D_TOTAL`: Gibt die Gesamtzahl der in 2D erkannten Objekte über `OUT_NumObjects` zurück.<br><br><br>`1` - `GET_NUM_OBJECTS_3D_TOTAL`: Gibt die Anzahl der in 3D erkannten und noch nicht gegriffenen Objekte über `OUT_NumObjects` zurück.<br><br><br>`2` - `GET_NUM_OBJECTS_2D_TYPE`: Gibt die Anzahl der in 2D erkannten Objekte des in `IN_ParamArgString` angegebenen Typs zurück.<br><br><br>`3` - `GET_NUM_OBJECTS_3D_TYPE`: Gibt die Anzahl der in 3D erkannten Objekte des in `IN_ParamArgString` angegebenen Typs zurück, die noch nicht gegriffen wurden.<br><br><br>`4` - `GET_DEPTH_MIN_MM`: Gibt die minimale Tiefe über `OUT_DepthLimitMM` zurück.<br><br><br>`5` - `GET_DEPTH_MAX_MM`: Gibt die maximale Tiefe über `OUT_DepthLimitMM` zurück. | `OUT_OperationMode = AUTOMATIC` |
| `OUT_TriggerCamera` |   | `OUT_ReturnCode` | Nimmt ein Bild mit der aktuell aktiven Kamera auf. | `OUT_OperationMode = AUTOMATIC` |
| `OUT_ComputeObjects` |   | `OUT_ReturnCode` | Berechnet die Posen aller erkannten Objekte aus dem zuletzt aufgenommenen Bild unter Verwendung der aktiven Pipeline. | `OUT_OperationMode = AUTOMATIC` |
| `OUT_GetBestResult` | `IN_ParamArgByte`<br> `IN_ParamArgFloat` | `OUT_ReturnCode`<br> `OUT_ObjectId`<br> `OUT_ObjectScore2D`<br> `OUT_ObjectScore3D`<br> `OUT_BBoxGripFrame`<br> `OUT_BBoxObjectFrame`<br> `OUT_PrevObjectDepth`<br> `OUT_PrevObjectCurvature`<br> `OUT_PrevObjectInnerNearestNeighbour`<br> `OUT_NumObjects`<br> `OUT_PoseMoveInRobot`<br> `OUT_PoseObjectInTcp`<br> `OUT_GripPriority` | Berechnet Greifpunkte für den aktiven Roboter aus den zuletzt berechneten Objektposen und gibt Informationen zum gültigen Greifvorgang mit der höchsten Priorität zurück.<br><br>Ist eine Pfadplanung konfiguriert, können die Eingangsargumente verwendet werden, um die Trajektorie an einem bestimmten Punkt auszuwerten:<br><br>\* `IN_ParamArgByte`: ID des Pfadsegments (`0` bis `n - 1`) \* `IN_ParamArgFloat`: Interpolationsfaktor von `0.0` bis `1.0`<br><br>`0.0` steht für den Anfang des Pfadsegments, `1.0` für das Ende.<br><br>Das Pfadsegment `0` existiert immer, auch wenn keine Pfadplanung konfiguriert ist. In diesem Fall wird für alle Interpolationsfaktoren ein konstantes Ergebnis zurückgegeben.<br><br>Werden ungültige Argumente übergeben, werden sie vor der Ausführung auf `0` gesetzt. In diesem Fall wird kein Fehler zurückgegeben.<br><br>`OUT_GripPriority` gibt die Priorität des ausgewählten Greifpunkts an. Die Priorität wird für jeden Greifpunkt eines Objekts konfiguriert. | `OUT_OperationMode = AUTOMATIC` |
| `OUT_GripBestResult` | `IN_ParamArgByte`<br> `IN_ParamArgFloat` |   | Führt dieselbe Berechnung wie `OUT_GetBestResult` durch und teilt dem System zusätzlich mit, dass das ausgewählte Ergebnis gegriffen wurde bzw. wird. | `OUT_OperationMode = AUTOMATIC` |
| `OUT_ResetCamera` | `IN_ParamArgString` |   | Setzt die Kamera zurück, deren ID in `IN_ParamArgString` angegeben ist. Nach dem Zurücksetzen der Kamera muss Setup erneut ausgeführt werden. | `OUT_OperationMode = AUTOMATIC` |

## Rückgabecodes

Die Rückgabecodes sind in [SPS-Einstellungen: Statusinformationen](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#status-information) beschrieben.

## Anwendungsbeispiel

Das folgende Diagramm zeigt einen Beispielprozess mit einer Kamera, einer Pipeline und einem Roboter.

Das Beispiel geht davon aus, dass sich der Betriebsmodus während des Prozesses nicht ändert. Prüfen Sie nach jedem Funktionsaufruf den Rückgabecode und behandeln Sie einen gemeldeten Fehler, bevor Sie fortfahren.

Ist in der Konfiguration die automatische Belichtung aktiviert, wird sie nach jeder Bildaufnahme angewendet. Bei einer veränderten Szene kann daher vor Beginn des Greifprozesses zunächst ein Anfangsbild aufgenommen werden, um die Belichtung anzupassen.

Aus einem einzelnen aufgenommenen Bild können mehrere Objekte gegriffen werden. Je nach erforderlicher Taktzeit kann es auch zweckmäßig sein, vor jedem Greifvorgang ein neues Bild aufzunehmen.

![Beispielhafter PROFINET-Prozess mit einer Kamera, einer Pipeline und einem Roboter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/profinet-example-process.png)

### Manueller Modus

Während des Betriebs kann der manuelle Modus über die Benutzeroberfläche aktiviert werden. Der Betriebsmodus wechselt dann zu `MANUAL` (`2`).

Während der manuelle Modus aktiv ist, können Verarbeitungsfunktionen nicht von der SPS aus gestartet werden.

Beim Verlassen des manuellen Modus wechselt das System zu `IDLE` (`0`). Um die automatische Verarbeitung fortzusetzen, stellen Sie den Betriebsmodus über die SPS wieder auf `AUTOMATIC` ein.

Siehe auch [Manueller Modus](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/manual-mode.html).

### Mehrere Komponenten

Alle Berechnungen verwenden die aktuell aktive Kamera, Pipeline und den aktuell aktiven Roboter.

Enthält ein Projekt mehrere Kameras, Pipelines oder Roboter, stellen Sie sicher, dass vor der Ausführung jeder Funktion die richtigen aktiven Komponenten über `OUT_SetParameter` ausgewählt sind.

## Referenzlisten

### Betriebsmodi

| ID | Modus | Beschreibung |
| --- | --- | --- |
| 0 | `IDLE` | Das System befindet sich im Leerlauf. Verarbeitungsfunktionen sind nicht verfügbar. |
| 1 | `AUTOMATIC` | Automatischer SPS-gesteuerter Betrieb. Verarbeitungsfunktionen sind verfügbar. |
| 2 | `MANUAL` | Manueller Betrieb über die Benutzeroberfläche. |
| 3 | `SHUTDOWN` | Die Anwendung wird heruntergefahren. |

# Settings-API – LumiScan VGR

URL: https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/settings.html

Die Dokumentation der Settings-API bietet eine vollständige Referenz aller JSON-Konfigurationsparameter, die von LumiScan VGR verwendet werden.

Dazu gehören Einstellungen für:

- Kamerakonfiguration
- Objekterkennung (2D und 3D)
- Roboter-Wegpunkte
- Greifpunkte
- Pfadsegmente
- Symmetrie
- Filter für die Punktwolkenverarbeitung

Die vollständige Referenz ist nativ auf dieser Website integriert – jede Konfigurationsklasse und jedes Struct hat eine eigene Seite, die im Folgenden aufgeführt ist. Die Seiten werden aus der Doxygen-Quellcode-Dokumentation von `settings.h` generiert.

## Alle Einstellungsseiten

- [AutoexposureSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/autoexposure-settings.html)
- [BoxFilterParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/box-filter-parameter.html)
- [CameraSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/camera-settings.html)
- [CloudFilterParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/cloud-filter-parameter-base.html)
- [ConcreteCloudFilterParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/concrete-cloud-filter-parameter-base.html)
- [CorrectionFeature](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-feature.html)
- [CorrectionSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings.html)
- [CorrectionSettings< CAMERA_CORRECTION_TYPE::CLOUD_SCALE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-scale.html)
- [CorrectionSettings< CAMERA_CORRECTION_TYPE::CLOUD_Z_CALIBRATION >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration.html)
- [CorrectionSettings< CAMERA_CORRECTION_TYPE::CLOUD_Z_CALIBRATION >::ImageDistancePair](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-camera-correction-type-cloud-z-calibration-imagedistancepair.html)
- [CorrectionSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/correction-settings-base.html)
- [DepthEstimationSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/depth-estimation-settings.html)
- [Detection2DSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-settings.html)
- [Detection2DStepSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::ADD_INSTANCES_FROM_FILE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-add-instances-from-file.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::FEATURE_MATCHING >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-feature-matching.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::FILTER_CLASSIFICATION >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-filter-classification.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::REORIENT_ASPECT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-aspect.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::REORIENT_CLASSIFICATION >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-reorient-classification.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::ROTATE_ANGLE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-rotate-angle.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SCALE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SCALE_ASPECT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-aspect.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SCALE_TO >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-scale-to.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_FULL >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-full.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_NETWORK >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-network.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_OTHER >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-other.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_ROI >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::SET_ROI_PIPELINE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-set-roi-pipeline.html)
- [Detection2DStepSettings< OBJ_DET_2D_TYPE::TRANSLATE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-obj-det-2d-type-translate.html)
- [Detection2DStepSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-2d-step-settings-base.html)
- [Detection3DSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-grip-from-environment.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-line-fit-long-axis.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::MIXED_PLANE_FIT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-mixed-plane-fit.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::OBJECT_MATCHING >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-matching.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::OBJECT_REFINEMENT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-object-refinement.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::PLANE_FIT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-plane-fit.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-cylinder-fit.html)
- [Detection3DSettings< OBJECT_FIT_METHOD::RANSAC_PLANE_FIT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-object-fit-method-ransac-plane-fit.html)
- [Detection3DSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-base.html)
- [Detection3DSettingsGeom](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/detection-3d-settings-geom.html)
- [DistanceToReferencePointParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/distance-to-reference-point-parameter.html)
- [FilteringObject2DParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/filtering-object-2d-parameter-base.html)
- [GripPointCorrection](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-correction.html)
- [GripPointCorrection::OffsetMap](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-correction-offset-map.html)
- [GripPointFilterSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings.html)
- [GripPointFilterSettings< FILTER_TYPE::Z_AXIS >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings-filter-type-z-axis.html)
- [GripPointFilterSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-filter-settings-base.html)
- [GripPointSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/grip-point-settings.html)
- [ModelTrainingParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/model-training-parameters.html)
- [NetworkSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/network-settings.html)
- [NullSort](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/null-sort.html)
- [ObjectDetectionParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-detection-parameters.html)
- [ObjectRefinementParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-refinement-parameters.html)
- [ObjectSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/object-settings.html)
- [old_network_description::InputLayout](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-input-layout.html)
- [old_network_description::NetworkDescription](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-network-description.html)
- [old_network_description::OutputLayout](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-output-layout.html)
- [old_network_description::TensorLayout](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/old-network-description-tensor-layout.html)
- [PathSegmentSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/path-segment-settings.html)
- [PipelineSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/pipeline-settings.html)
- [PipelineSystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/pipeline-system-settings.html)
- [ProjectSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/project-settings.html)
- [RadiusOutlierRemovalParameters](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/radius-outlier-removal-parameters.html)
- [RecordingSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-settings.html)
- [RecordingSystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/recording-system-settings.html)
- [RemoveNaNFilterParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/remove-na-n-filter-parameter.html)
- [RobotSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/robot-settings.html)
- [SortDirection](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sort-direction.html)
- [SortingBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-base.html)
- [SortingBaseCRTP](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-base-crtp.html)
- [SortingObject2DParameterBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sorting-object-2d-parameter-base.html)
- [SortPosition](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/sort-position.html)
- [SymmetrySettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings.html)
- [SymmetrySettings< SYMMETRY_TYPE::ROTATION >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-symmetry-type-rotation.html)
- [SymmetrySettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/symmetry-settings-base.html)
- [SystemSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/system-settings.html)
- [TopNParameter](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/top-n-parameter.html)
- [Transform](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/transform.html)
- [UserSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/user-settings.html)
- [WaypointSettings](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings.html)
- [WaypointSettings< WAYPOINT_TYPE::WP_ABSOLUTE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-absolute.html)
- [WaypointSettings< WAYPOINT_TYPE::WP_CLONE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-clone.html)
- [WaypointSettings< WAYPOINT_TYPE::WP_GRIP_POINT >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-grip-point.html)
- [WaypointSettings< WAYPOINT_TYPE::WP_RELATIVE >](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-waypoint-type-wp-relative.html)
- [WaypointSettingsBase](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/api/settings/waypoint-settings-base.html)
