Pack

Einführung

Das Pack-Modul liefert eine gebrauchsfertige Perzeptionslösung für robotische Pick-and-Place-Anwendungen, bei denen zuvor gegriffene Objekte in einem Packvolumen, z. B. einem Karton, einer Kiste oder auf einer Palette, platziert werden sollen. Anhand der Bounding Box des zu platzierenden Objekts und des bzw. der Greifpunkte, mit denen es aufgenommen werden kann, berechnet Pack eine Pose, an der das Objekt platziert werden kann, wobei der aktuelle Füllstand des Packvolumens berücksichtigt wird. Die Platzierungspose wird so gewählt, dass sie die niedrigste Position mit stabiler Unterstützung für das Objekt darstellt und dadurch den nach der Platzierung verbleibenden Freiraum maximiert.

Darüber hinaus bietet das Modul:

  • eine intuitiv gestaltete Bedienoberfläche für Inbetriebnahme, Konfiguration und Test auf der rc_reason_stack Web GUI
  • die Definition einer Region of Interest, um das relevante Packvolumen in der Szene festzulegen oder den Suchbereich für den Load Carrier einzuschränken (siehe RoiDB)
  • eine Load-Carrier-Erkennungsfunktion (siehe LoadCarrier), um Objekte ausschließlich innerhalb eines erkannten Load Carriers zu platzieren
  • einen konfigurierbaren Startpunkt, um zu steuern, wo das Packen beginnt
  • die Unterstützung von sowohl statisch montierten als auch robotergeführten Kameras. Optional kann es mit der Hand-Auge-Kalibrierung kombiniert werden, um Platzierungsposen in einem benutzerdefinierten externen Koordinatensystem zu liefern
  • eine 3D-Visualisierung des Packvolumens und der berechneten Platzierungspose in der Web GUI

Bemerkung

Dieses Softwaremodul ist pipelinespezifisch. Änderungen seiner Einstellungen oder Parameter betreffen nur die zugehörige Kamerapipeline und haben keinen Einfluss auf die anderen Pipelines, die auf dem rc_reason_stack laufen.

Das Modul ist ein optional erhältliches Modul, welches intern auf dem rc_reason_stack läuft und eine gesonderte Pack Lizenz benötigt.

Berechnung von Platzierungsposen

Das Pack-Modul bietet einen Service zur Berechnung einer Platzierungspose für ein Objekt, unabhängig davon, ob dieses bereits gegriffen wurde oder erst noch gegriffen werden soll. Das zu platzierende Objekt wird durch seine bounding_box beschrieben. Optional können zusätzlich die aktuelle pose des Objekts und ein oder mehrere Greifpunkte (grasps), mit denen es gegriffen werden kann, angegeben werden; diese Pose und diese Greifpunkte können aus einem anderen Detektionsmodul stammen, z. B. ItemPick und ItemPickAI oder BoxPick. Alternativ können die Greifpunkte relativ zum Mittelpunkt der Bounding Box des Objekts angegeben werden.

Das Modul diskretisiert das Packvolumen in x- und y-Richtung entsprechend dem Laufzeitparameter resolution. Ausgehend von der Ecke des Packvolumens, die dem konfigurierten Startpunkt am nächsten liegt, sucht es die niedrigste Position, an der das Objekt – vergrößert um den Laufzeitparameter object_padding als Sicherheitsspielraum – ohne Überlappung mit bereits platzierten Objekten oder dem Load Carrier passt. Dadurch wird der nach der Platzierung verbleibende Freiraum maximiert und es werden möglichst viele Packoptionen für das nächste zu platzierende Objekt offengehalten.

Optional können dem Modul zu einer Berechnung einer Platzierungspose weitere Informationen übergeben werden:

  • die ID des Load Carriers, der das Packvolumen definiert
  • die ID der 3D Region of Interest, die das Packvolumen definiert, falls kein Load Carrier angegeben ist, oder die den Suchbereich für den Load Carrier einschränkt

Die Platzierungspose enthält zusätzlich den timestamp der ältesten Bildaufnahme, die für ihre Berechnung verwendet wurde.

Festlegen des Startpunkts

Das Pack-Modul bestimmt anhand des Startpunkts, wo das Befüllen des Packvolumens beginnt. Das Modul vergleicht den konfigurierten Startpunkt mit den Ecken des Packvolumens, das durch den konfigurierten Load Carrier oder die Region of Interest definiert wird, und beginnt das Befüllen an derjenigen Ecke, die ihm am nächsten liegt.

Der Startpunkt kann über den Service set_starting_point oder auf der Pack-Seite der Web GUI festgelegt werden und wird dauerhaft gespeichert. Er kann im Kamera-Koordinatensystem oder, falls eine Hand-Auge-Kalibrierung vorliegt, im externen Koordinatensystem angegeben werden.

Festlegen der bevorzugten TCP-Orientierung

Beim Platzieren einer Box besteht für jede Platzierungspose eine 180°-Rotationsmehrdeutigkeit um die z-Achse. Von den angegebenen Greifpunkten (grasps) wählt das Pack-Modul diejenigen aus, deren Orientierungen zum Platzieren des Objekts der bevorzugten TCP-Orientierung am nächsten kommen, wodurch die 180°-Platzierungsmehrdeutigkeit aufgelöst wird. Die bevorzugte TCP-Orientierung kann über den Service set_preferred_orientation oder auf der Pack-Seite der Web GUI festgelegt werden. Greifpunkte, die um mehr als den Laufzeitparameter grasp_filter_orientation_threshold davon abweichen, werden verworfen.

Die bevorzugte TCP-Orientierung kann im Kamera-Koordinatensystem oder im externen Koordinatensystem gesetzt werden, wenn eine Hand-Auge-Kalibrierung verfügbar ist. Wenn die bevorzugte TCP-Orientierung im externen Koordinatensystem definiert ist und der Sensor robotergeführt ist, muss bei jedem Aufruf zur Berechnung einer Platzierungspose die aktuelle Roboterpose angegeben werden.

Wenn keine bevorzugte TCP-Orientierung gesetzt wird, wird die Orientierung der linken Kamera (siehe Coordinate frames im rc_visard Handbuch) als bevorzugte TCP-Orientierung verwendet.

Wechselwirkung mit anderen Modulen

Die folgenden, intern auf dem rc_reason_stack laufenden Module liefern Daten für das Pack-Modul oder haben Einfluss auf die Datenverarbeitung.

Bemerkung

Jede Konfigurationsänderung dieser Module kann direkte Auswirkungen auf die Qualität oder das Leistungsverhalten des Pack-Moduls haben.

Kamera- und Tiefendaten

Folgende Daten werden vom Pack-Modul verarbeitet:

  • die Disparitäts-, Konfidenz- und Fehlerbilder des Stereo-Matching Modul (rc_stereomatching), falls eine Stereokamera verwendet wird.
  • die Disparitäts-, Konfidenz- und Fehlerbilder der Orbbec Modul (rc_orbbec), falls eine Orbbec Kamera verwendet wird
  • die Disparitäts-, Konfidenz- und Fehlerbilder des Zivid Modul (rc_zivid), falls eine zivid Kamera verwendet wird

Für alle genutzten Bilder ist garantiert, dass diese nach dem Auslösen des Services aufgenommen wurden.

IOControl und Projektor-Kontrolle

Für den Anwendungsfall, dass der rc_reason_stack zusammen mit einem externen Musterprojektor und dem Modul für IOControl und Projektor-Kontrolle (rc_iocontrol) betrieben wird, wird empfohlen, den Projektor an GPIO Out 1 anzuschließen und den Aufnahmemodus des Stereokamera-Moduls auf SingleFrameOut1 zu setzen (siehe Stereomatching-Parameter), damit bei jedem Aufnahme-Trigger ein Bild mit und ohne Projektormuster aufgenommen wird.

Alternativ kann der verwendete digitale Ausgang in den Betriebsmodus ExposureAlternateActive geschaltet werden (siehe Beschreibung der Laufzeitparameter).

In beiden Fällen sollte die Belichtungszeitregelung (exp_auto_mode) auf AdaptiveOut1 gesetzt werden, um die Belichtung beider Bilder zu optimieren.

Hand-Auge-Kalibrierung

Falls die Kamera zu einem Roboter kalibriert wurde, kann das Pack-Modul automatisch Posen im Roboterkoordinatensystem ausgeben. Für die Services des Pack-Knotens kann das Koordinatensystem der berechneten Posen mit dem Argument pose_frame spezifiziert werden.

Es kann zwischen den folgenden zwei Werten für pose_frame gewählt werden:

  1. Kamera-Koordinatensystem (camera): Alle Posen sind im Kamera-Koordinatensystem angegeben und es ist kein zusätzliches Wissen über die Lage der Kamera in seiner Umgebung notwendig. Das bedeutet insbesondere, dass sich ROIs oder Load Carrier, welche in diesem Koordinatensystem angegeben sind, mit der Kamera bewegen. Es liegt daher in der Verantwortung des Anwenders, in solchen Fällen die entsprechenden Posen der Situation entsprechend zu aktualisieren (beispielsweise für den Anwendungsfall einer robotergeführten Kamera).
  2. Benutzerdefiniertes externes Koordinatensystem (external): Alle Posen sind im sogenannten externen Koordinatensystem angegeben, welches vom Nutzer während der Hand-Auge-Kalibrierung gewählt wurde. In diesem Fall bezieht das Load Carrier Modul alle notwendigen Informationen über die Kameramontage und die kalibrierte Hand-Auge-Transformation automatisch vom Modul Hand-Auge-Kalibrierung. Für den Fall einer robotergeführten Kamera ist vom Nutzer zusätzlich die jeweils aktuelle Roboterpose robot_pose anzugeben.

Bemerkung

Wurde keine Hand-Auge-Kalibrierung durchgeführt, muss als Referenzkoordinatensystem pose_frame immer camera angegeben werden.

Zulässige Werte zur Angabe des Referenzkoordinatensystems sind camera und external. Andere Werte werden als ungültig zurückgewiesen.

Für den Fall eines robotergeführten Sensors ist es abhängig vom Wert von pose_frame nötig, zusätzlich die aktuelle Roboterpose (robot_pose) zur Verfügung zu stellen:

  • Wenn external als pose_frame ausgewählt ist, ist die Angabe der Roboterpose obligatorisch.
  • In allen anderen Fällen ist die Angabe der Roboterpose optional.

LoadCarrier

Das Pack-Modul nutzt die Funktionalität zur Load-Carrier-Erkennung aus dem LoadCarrier-Modul (rc_load_carrier) mit den für dieses Modul festgelegten Laufzeitparametern, um die Grenzen des Packvolumens zu bestimmen. Befinden sich jedoch mehrere passende Load Carrier in der Szene, wird nur einer davon verwendet. Sind mehrere Load Carrier desselben Typs sichtbar, sollte eine 3D Region of Interest gesetzt werden, um sicherzustellen, dass immer derselbe Load Carrier für das Pack-Modul verwendet wird.

Parameter

Das Pack-Modul wird in der REST-API als rc_pack bezeichnet und in der Web GUI in der gewünschten Pipeline unter Module ‣ Pack dargestellt. Der Benutzer kann die Laufzeitparameter des rc_pack-Moduls, z. B. für Entwicklung und Test, über die Web GUI oder die REST-API-Schnittstelle erkunden und konfigurieren.

Übersicht über die Parameter

Dieses Softwaremodul bietet folgende Laufzeitparameter:

Tab. 39 Laufzeitparameter des rc_pack Moduls
Name Typ Min. Max. Default Beschreibung
drop_height float64 0.0 0.5 0.0 Höhe über der Zielplatzierungsposition (in z-Richtung des Packvolumens) zum Loslassen des Objekts
grasp_filter_orientation_-threshold float64 0.0 180.0 45.0 Maximal erlaubte Orientierungsabweichung zwischen Greifpunkt und bevorzugter TCP-Orientierung in Grad
object_padding float64 0.001 1.0 0.005 Breite in Metern zur Vergrößerung der Objektabmessungen in x- und y-Richtung als Sicherheitsspielraum
resolution float64 0.001 0.1 0.005 Auflösung zur Diskretisierung des Packvolumens in x- und y-Richtung

Beschreibung der Laufzeitparameter

Die Laufzeitparameter werden zeilenweise auf der Pack-Seite in der Web GUI dargestellt. Der Name des Parameters in der Web GUI wird dabei in Klammern hinter dem eigentlichen Parameternamen angegeben. Die Parameter sind in derselben Reihenfolge wie in der Web GUI aufgelistet:

resolution (Resolution)

ist die Auflösung in Metern, mit der das Packvolumen in x- und y-Richtung bei der Suche nach einer freien Platzierungsposition diskretisiert wird. Je kleiner dieser Wert ist, desto feiner ist das Suchraster, allerdings auf Kosten einer längeren Berechnungszeit.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/parameters?resolution=<value>
PUT http://<host>/api/v1/nodes/rc_pack/parameters?resolution=<value>

object_padding (Object Padding)

ist die Breite in Metern, um die die bounding_box des Objekts in x- und y-Richtung als Sicherheitsspielraum vergrößert wird, wenn geprüft wird, ob es an einer möglichen Platzierungsposition passt.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/parameters?object_padding=<value>
PUT http://<host>/api/v1/nodes/rc_pack/parameters?object_padding=<value>

drop_height (Drop Height)

legt die Höhe in Metern über der Zielplatzierungsposition entlang der z-Achse des Packvolumens fest, in der der Greifer das Objekt loslässt, z. B. um es ein kurzes Stück fallen zu lassen, statt es vollständig kontrolliert bis zur Oberfläche abzusetzen. Die vom Pack-Modul bereitgestellte Platzierungspose entspricht der empfohlenen Pose des Objekts im Moment des Loslassens.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/parameters?drop_height=<value>
PUT http://<host>/api/v1/nodes/rc_pack/parameters?drop_height=<value>

grasp_filter_orientation_threshold (Grasp Orientation Threshold)

ist die maximale Abweichung der TCP-z-Achse am Greifpunkt von der z-Achse der bevorzugten TCP-Orientierung in Grad. Es werden nur Greifpunkte zurückgeliefert, deren Orientierungsabweichung kleiner als der angegebene Wert ist. Falls der Wert auf Null gesetzt wird, sind alle Abweichungen valide.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/parameters?grasp_filter_orientation_threshold=<value>
PUT http://<host>/api/v1/nodes/rc_pack/parameters?grasp_filter_orientation_threshold=<value>

Statuswerte

Das rc_pack Modul meldet folgende Statuswerte:

Tab. 40 Statuswerte des rc_pack Moduls
Name Beschreibung
data_acquisition_time Zeit in Sekunden, für die beim letzten Aufruf auf Bilddaten gewartet werden musste
last_return_code_message Rückgabecode-Nachricht der letzten Detektion
last_return_code_value Rückgabecode-Wert der letzten Detektion
last_timestamp_processed Zeitstempel des letzten verarbeiteten Bilddatensatzes
load_carrier_detection_time Berechnungszeit für die letzte Load Carrier Detektion in Sekunden
processing_time Berechnungszeit für die letzte Detektion (einschließlich Load Carrier Detektion) in Sekunden

Services

Die angebotenen Services von rc_pack können mithilfe der REST-API-Schnittstelle oder der rc_reason_stack Web GUI ausprobiert und getestet werden.

Das Pack Modul stellt folgende Services zur Verfügung.

detect_place_pose

löst die Berechnung einer Platzierungspose aus, wie in Berechnung von Platzierungsposen beschrieben.

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/services/detect_place_pose
PUT http://<host>/api/v1/nodes/rc_pack/services/detect_place_pose

Obligatorische Serviceargumente:

pose_frame: siehe Hand-Auge-Kalibrierung.

objects: das zu platzierende Objekt, beschrieben durch seine bounding_box und optional die pose, an der es sich aktuell befindet. Derzeit wird nur ein einzelnes Objekt unterstützt.

grasps: ein oder mehrere Greifpunkte, mit denen das in objects aufgeführte Objekt gegriffen wurde oder gegriffen werden kann, referenziert über object_id. Wird kein pose_frame angegeben, wird die pose jedes Greifpunkts relativ zum Mittelpunkt der Bounding Box des Objekts interpretiert. Wird ein pose_frame angegeben, benötigt das Objekt zusätzlich eine pose. Dadurch können Detektionsergebnisse anderer Module, wie ItemPick und ItemPickAI oder BoxPick, für Pack wiederverwendet werden.

Potentiell obligatorische Serviceargumente:

robot_pose: siehe Hand-Auge-Kalibrierung.

Optionale Serviceargumente:

load_carrier_id: ID des Load Carriers, der das Packvolumen definiert.

region_of_interest_id: ID der 3D Region of Interest, die das Packvolumen definiert, falls load_carrier_id nicht gesetzt ist, oder die den Bereich zur Erkennung des Load Carriers einschränkt.

Mindestens eines von load_carrier_id oder region_of_interest_id muss angegeben werden.

Die Definition der Request-Argumente mit jeweiligen Datentypen ist:

{
  "args": {
    "grasps": [
      {
        "gripper_id": "string",
        "id": "string",
        "object_id": "string",
        "pose": {
          "orientation": {
            "w": "float64",
            "x": "float64",
            "y": "float64",
            "z": "float64"
          },
          "position": {
            "x": "float64",
            "y": "float64",
            "z": "float64"
          }
        },
        "pose_frame": "string",
        "stroke_per_finger_approach_mm": "float64",
        "stroke_per_finger_grasp_mm": "float64",
        "tcp_id": "string"
      }
    ],
    "load_carrier_id": "string",
    "objects": [
      {
        "bounding_box": {
          "x": "float64",
          "y": "float64",
          "z": "float64"
        },
        "id": "string",
        "pose": {
          "orientation": {
            "w": "float64",
            "x": "float64",
            "y": "float64",
            "z": "float64"
          },
          "position": {
            "x": "float64",
            "y": "float64",
            "z": "float64"
          }
        },
        "pose_frame": "string"
      }
    ],
    "pose_frame": "string",
    "region_of_interest_id": "string"
  }
}

pose: die berechnete Platzierungspose.

grasps: der/die in der Anfrage übergebene(n) Greifpunkt(e), mit dem/denen die endgültige Platzierung erreicht werden kann.

load_carriers: die Liste, die den erkannten Load Carrier enthält.

timestamp: Zeitstempel des Bildes, das für die Erkennung benutzt wurde.

return_code: enthält mögliche Warnungen oder Fehlercodes und Nachrichten.

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "detect_place_pose",
  "response": {
    "grasps": [
      {
        "collision_checked": "bool",
        "gripper_id": "string",
        "id": "string",
        "object_id": "string",
        "pose": {
          "orientation": {
            "w": "float64",
            "x": "float64",
            "y": "float64",
            "z": "float64"
          },
          "position": {
            "x": "float64",
            "y": "float64",
            "z": "float64"
          }
        },
        "pose_frame": "string",
        "timestamp": {
          "nsec": "int32",
          "sec": "int32"
        }
      }
    ],
    "load_carriers": [
      {
        "height_open_side": "float64",
        "id": "string",
        "inner_dimensions": {
          "x": "float64",
          "y": "float64",
          "z": "float64"
        },
        "outer_dimensions": {
          "x": "float64",
          "y": "float64",
          "z": "float64"
        },
        "overfilled": "bool",
        "pose": {
          "orientation": {
            "w": "float64",
            "x": "float64",
            "y": "float64",
            "z": "float64"
          },
          "position": {
            "x": "float64",
            "y": "float64",
            "z": "float64"
          }
        },
        "pose_frame": "string",
        "rim_ledge": {
          "x": "float64",
          "y": "float64"
        },
        "rim_step_height": "float64",
        "rim_thickness": {
          "x": "float64",
          "y": "float64"
        },
        "type": "string"
      }
    ],
    "pose": {
      "orientation": {
        "w": "float64",
        "x": "float64",
        "y": "float64",
        "z": "float64"
      },
      "position": {
        "x": "float64",
        "y": "float64",
        "z": "float64"
      }
    },
    "pose_frame": "string",
    "return_code": {
      "message": "string",
      "value": "int16"
    },
    "timestamp": {
      "nsec": "int32",
      "sec": "int32"
    }
  }
}

get_starting_point

gibt den Startpunkt zurück, der zur Auswahl der Ecke des Packvolumens verwendet wird, ab der das Befüllen beginnt (siehe Festlegen des Startpunkts).

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/services/get_starting_point
PUT http://<host>/api/v1/nodes/rc_pack/services/get_starting_point
Dieser Service hat keine Argumente.

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "get_starting_point",
  "response": {
    "point": {
      "x": "float64",
      "y": "float64",
      "z": "float64"
    },
    "pose_frame": "string",
    "return_code": {
      "message": "string",
      "value": "int16"
    }
  }
}

set_starting_point

speichert den Startpunkt, der zur Auswahl der Ecke des Packvolumens verwendet wird, ab der das Befüllen beginnt (siehe Festlegen des Startpunkts).

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/services/set_starting_point
PUT http://<host>/api/v1/nodes/rc_pack/services/set_starting_point

Die Definition der Request-Argumente mit jeweiligen Datentypen ist:

{
  "args": {
    "point": {
      "x": "float64",
      "y": "float64",
      "z": "float64"
    },
    "pose_frame": "string"
  }
}

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "set_starting_point",
  "response": {
    "return_code": {
      "message": "string",
      "value": "int16"
    }
  }
}

get_preferred_orientation

gibt die bevorzugte TCP-Orientierung zurück, die bei der Auswahl des Greifpunkts zum Platzieren des Objekts verwendet wird (siehe Festlegen der bevorzugten TCP-Orientierung).

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/services/get_preferred_orientation
PUT http://<host>/api/v1/nodes/rc_pack/services/get_preferred_orientation
Dieser Service hat keine Argumente.

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "get_preferred_orientation",
  "response": {
    "orientation": {
      "w": "float64",
      "x": "float64",
      "y": "float64",
      "z": "float64"
    },
    "pose_frame": "string",
    "return_code": {
      "message": "string",
      "value": "int16"
    }
  }
}

set_preferred_orientation

speichert die bevorzugte TCP-Orientierung, die bei der Auswahl des Greifpunkts zum Platzieren des Objekts verwendet wird (siehe Festlegen der bevorzugten TCP-Orientierung).

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/services/set_preferred_orientation
PUT http://<host>/api/v1/nodes/rc_pack/services/set_preferred_orientation

Die Definition der Request-Argumente mit jeweiligen Datentypen ist:

{
  "args": {
    "orientation": {
      "w": "float64",
      "x": "float64",
      "y": "float64",
      "z": "float64"
    },
    "pose_frame": "string"
  }
}

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "set_preferred_orientation",
  "response": {
    "return_code": {
      "message": "string",
      "value": "int16"
    }
  }
}

trigger_dump

speichert die Detektion im konfigurierten Docker Volume, die dem übergebenen Zeitstempel entspricht, oder die letzte, falls kein Zeitstempel angegeben wurde.

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/services/trigger_dump
PUT http://<host>/api/v1/nodes/rc_pack/services/trigger_dump

Die Definition der Request-Argumente mit jeweiligen Datentypen ist:

{
  "args": {
    "comment": "string",
    "timestamp": {
      "nsec": "int32",
      "sec": "int32"
    }
  }
}

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "trigger_dump",
  "response": {
    "return_code": {
      "message": "string",
      "value": "int16"
    }
  }
}

reset_defaults

stellt die Werkseinstellungen der Parameter dieses Moduls wieder her und wendet sie an. Setzt außerdem den Startpunkt und die bevorzugte TCP-Orientierung zurück.

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_pack/services/reset_defaults
PUT http://<host>/api/v1/nodes/rc_pack/services/reset_defaults
Dieser Service hat keine Argumente.

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "reset_defaults",
  "response": {
    "return_code": {
      "message": "string",
      "value": "int16"
    }
  }
}

Rückgabecodes

Zusätzlich zur eigentlichen Serviceantwort gibt jeder Service einen sogenannten return_code bestehend aus einem Integer-Wert und einer optionalen Textnachricht zurück. Erfolgreiche Service-Anfragen werden mit einem Wert von 0 quittiert. Positive Werte bedeuten, dass die Service-Anfrage zwar erfolgreich bearbeitet wurde, aber zusätzliche Informationen zur Verfügung stehen. Negative Werte bedeuten, dass Fehler aufgetreten sind. Für den Fall, dass mehrere Rückgabewerte zutreffend wären, wird der kleinste zurückgegeben, und die entsprechenden Textnachrichten werden in return_code.message akkumuliert.

Die folgende Tabelle listet die möglichen Rückgabe-Codes auf:

Tab. 41 Rückgabecodes der Services des Pack Moduls
Code Beschreibung
0 Erfolgreich
-1 Ungültige(s) Argument(e)
-4 Die maximal erlaubte Zeitspanne für die interne Akquise der Bilddaten wurde überschritten.
-11 Sensor nicht verbunden, nicht unterstützt oder nicht bereit
-12 Ressource ausgelastet, z.B. wenn trigger_dump zu häufig aufgerufen wird
-200 Ein schwerwiegender interner Fehler ist aufgetreten.
100 Der angefragte Load Carrier wurde in der Szene nicht gefunden
115 Es wurde keine gültige Platzierungspose innerhalb des Packvolumens gefunden
300 Ein gültiges robot_pose-Argument wurde angegeben, ist aber nicht erforderlich.
999 Zusätzliche Hinweise für die Anwendungsentwicklung