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 rektifizierten Bilder des Kamera Modul (
rc_camera)
- 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:
- 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). - 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 Roboterposerobot_poseanzugeben.
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
externalalspose_frameausgewä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 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:
| 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_boxdes 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:
| 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_posePUT http://<host>/api/v1/nodes/rc_pack/services/detect_place_poseObligatorische Serviceargumente:
pose_frame: siehe Hand-Auge-Kalibrierung.
objects: das zu platzierende Objekt, beschrieben durch seinebounding_boxund optional diepose, an der es sich aktuell befindet. Derzeit wird nur ein einzelnes Objekt unterstützt.
grasps: ein oder mehrere Greifpunkte, mit denen das inobjectsaufgeführte Objekt gegriffen wurde oder gegriffen werden kann, referenziert überobject_id. Wird keinpose_frameangegeben, wird dieposejedes Greifpunkts relativ zum Mittelpunkt der Bounding Box des Objekts interpretiert. Wird einpose_frameangegeben, benötigt das Objekt zusätzlich einepose. 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, fallsload_carrier_idnicht gesetzt ist, oder die den Bereich zur Erkennung des Load Carriers einschränkt.Mindestens eines von
load_carrier_idoderregion_of_interest_idmuss 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_pointPUT http://<host>/api/v1/nodes/rc_pack/services/get_starting_pointDieser 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_pointPUT http://<host>/api/v1/nodes/rc_pack/services/set_starting_pointDie 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_orientationPUT http://<host>/api/v1/nodes/rc_pack/services/get_preferred_orientationDieser 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_orientationPUT http://<host>/api/v1/nodes/rc_pack/services/set_preferred_orientationDie 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_dumpPUT http://<host>/api/v1/nodes/rc_pack/services/trigger_dumpDie 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_defaultsPUT http://<host>/api/v1/nodes/rc_pack/services/reset_defaultsDieser 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:
| 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 |