find_box_3dT_find_box_3dFindBox3dFindBox3d (Operator)

Name

find_box_3dT_find_box_3dFindBox3dFindBox3d — Findet Boxen in 3D-Daten.

Signatur

find_box_3d( : : ObjectModel3DScene, SideLen1, SideLen2, SideLen3, MinScore, GenParam : GrippingPose, Score, ObjectModel3DBox, BoxInformation)

Herror T_find_box_3d(const Htuple ObjectModel3DScene, const Htuple SideLen1, const Htuple SideLen2, const Htuple SideLen3, const Htuple MinScore, const Htuple GenParam, Htuple* GrippingPose, Htuple* Score, Htuple* ObjectModel3DBox, Htuple* BoxInformation)

void FindBox3d(const HTuple& ObjectModel3DScene, const HTuple& SideLen1, const HTuple& SideLen2, const HTuple& SideLen3, const HTuple& MinScore, const HTuple& GenParam, HTuple* GrippingPose, HTuple* Score, HTuple* ObjectModel3DBox, HTuple* BoxInformation)

HPoseArray HObjectModel3D::FindBox3d(const HTuple& SideLen1, const HTuple& SideLen2, const HTuple& SideLen3, const HTuple& MinScore, const HDict& GenParam, HTuple* Score, HObjectModel3DArray* ObjectModel3DBox, HDict* BoxInformation) const

HPose HObjectModel3D::FindBox3d(const HTuple& SideLen1, const HTuple& SideLen2, const HTuple& SideLen3, double MinScore, const HDict& GenParam, HTuple* Score, HObjectModel3DArray* ObjectModel3DBox, HDict* BoxInformation) const

static HPoseArray HSurfaceModel::FindBox3d(const HObjectModel3D& ObjectModel3DScene, const HTuple& SideLen1, const HTuple& SideLen2, const HTuple& SideLen3, const HTuple& MinScore, const HDict& GenParam, HTuple* Score, HObjectModel3DArray* ObjectModel3DBox, HDict* BoxInformation)

static HPose HSurfaceModel::FindBox3d(const HObjectModel3D& ObjectModel3DScene, const HTuple& SideLen1, const HTuple& SideLen2, const HTuple& SideLen3, double MinScore, const HDict& GenParam, HTuple* Score, HObjectModel3DArray* ObjectModel3DBox, HDict* BoxInformation)

static void HOperatorSet.FindBox3d(HTuple objectModel3DScene, HTuple sideLen1, HTuple sideLen2, HTuple sideLen3, HTuple minScore, HTuple genParam, out HTuple grippingPose, out HTuple score, out HTuple objectModel3DBox, out HTuple boxInformation)

HPose[] HObjectModel3D.FindBox3d(HTuple sideLen1, HTuple sideLen2, HTuple sideLen3, HTuple minScore, HDict genParam, out HTuple score, out HObjectModel3D[] objectModel3DBox, out HDict boxInformation)

HPose HObjectModel3D.FindBox3d(HTuple sideLen1, HTuple sideLen2, HTuple sideLen3, double minScore, HDict genParam, out HTuple score, out HObjectModel3D[] objectModel3DBox, out HDict boxInformation)

static HPose[] HSurfaceModel.FindBox3d(HObjectModel3D objectModel3DScene, HTuple sideLen1, HTuple sideLen2, HTuple sideLen3, HTuple minScore, HDict genParam, out HTuple score, out HObjectModel3D[] objectModel3DBox, out HDict boxInformation)

static HPose HSurfaceModel.FindBox3d(HObjectModel3D objectModel3DScene, HTuple sideLen1, HTuple sideLen2, HTuple sideLen3, double minScore, HDict genParam, out HTuple score, out HObjectModel3D[] objectModel3DBox, out HDict boxInformation)

Beschreibung

find_box_3dfind_box_3dFindBox3dFindBox3dFindBox3d findet Boxen im 3D-Objektmodell ObjectModel3DSceneObjectModel3DSceneObjectModel3DSceneObjectModel3DSceneobjectModel3DScene und gibt für jede Box die Pose eines Greifpunktes GrippingPoseGrippingPoseGrippingPoseGrippingPosegrippingPose, ein 3D-Objektmodell ObjectModel3DBoxObjectModel3DBoxObjectModel3DBoxObjectModel3DBoxobjectModel3DBox, eine Bewertung ScoreScoreScoreScorescore und ein Dictionary BoxInformationBoxInformationBoxInformationBoxInformationboxInformation mit weiteren Informationen zu den gefundenen Boxen zurück.

Die Kantenlängen der zu suchenden Boxen werden in SideLen1SideLen1SideLen1SideLen1sideLen1, SideLen2SideLen2SideLen2SideLen2sideLen2 und SideLen3SideLen3SideLen3SideLen3sideLen3 übergeben. Jede dieser Längen besteht aus einem Tupel mit zwei Werten, die den möglichen Wertebereich der Kantenlänge angeben. Wenn zu erwarten ist, dass nur eine Seite der Box zu sehen ist, kann SideLen3SideLen3SideLen3SideLen3sideLen3 auch auf -1 gesetzt werden.

Der Parameter MinScoreMinScoreMinScoreMinScoreminScore setzt die Mindestbewertung für die zurückgegebenen Boxen fest. Boxen, die eine Bewertung unterhalb dieses Wertes haben, werden nicht zurückgegeben.

ObjectModel3DSceneObjectModel3DSceneObjectModel3DSceneObjectModel3DSceneobjectModel3DScene muss ein XYZ-Mapping aufweisen, was beispielsweise der Fall ist, wenn das Modell mit xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d erzeugt wurde.

Üblicher Arbeitsablauf

Ein üblicher Arbeitsablauf zum Finden von 3D-Boxen in 3D-Daten sieht wie folgt aus:

  1. Die 3D-Daten werden entweder als XYZ-Bilder, oder direkt als 3D-Objektmodell mit XYZ-Mapping erzeugt.

  2. Es muss sichergestellt werden, dass die Koordinatensysteme der Bilder der notwendigen Konvention entsprechen. Details zu den Koordinatensystemen finden sich weiter unten im Abschnitt „Problembehandlung“.

  3. Es sollte so viel wie möglich vom Hintergrund und von anderen Störobjekten entfernt werden, die nicht Teil einer Box sind. Dies macht das Auffinden von Boxen robuster und schneller. Dafür kann z.B. thresholdthresholdThresholdThresholdThreshold und reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain auf die XYZ-Bilder angewendet werden, um im Anschluss das Modell mit xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d zu erzeugen. Andere Möglichkeiten zur Verbesserung der Laufzeit finden sich weiter unten im dem Abschnitt über Problembehandlung.

  4. Wenn die 3D-Daten als XYZ-Bilder vorliegen, müssen sie mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d in ein 3D-Objektmodell konvertiert werden.

  5. Die ungefähren Seitenlängen der zu findenden Boxen müssen ermittelt werden. Zu beachten ist, dass spätere Änderungen dieser Seitenlängen möglicherweise auch die Anpassung anderer Parameter notwendig macht, etwa MinScoreMinScoreMinScoreMinScoreminScore.

  6. find_box_3dfind_box_3dFindBox3dFindBox3dFindBox3d wird aufgerufen. Als Parameter wird das 3D-Objektmodell der Szene sowie die ungefähren Seitenlängen übergeben.

  7. Mittels der Prozedur visualize_object_model_3d können, wenn notwendig, die Ergebnisse visualisiert werden.

Interpretation der Ergebnisse

Die gefundenen Boxen werden auf verschiedene Weisen zurückgegeben.

Zunächst wird für jede Box die Pose eines Greifpunktes in GrippingPoseGrippingPoseGrippingPoseGrippingPosegrippingPose zurückgegeben. Ist nur eine Seite der Box sichtbar, dann liegt das Zentrum der Greifpose in der Mitte dieser Seite und ihre z-Achse ist senkrecht zur Boxseite und in die gleiche Richtung wie die z-Achse des Koordinatensystems der Szene ausgerichtet. Wenn mehrere Seiten der Box sichtbar sind, liegt die Pose des Greifpunkts in der Mitte der Seite, die am meisten zur z-Achse des Koordinatensystems der Szene ausgerichtet ist und die z-Achse der Pose ist wieder senkrecht auf diese Seite und in Richtung der z-Achse des Koordinatensystems der Szene ausgerichtet. Für die x-Achse der Pose wird die Boxachse gewählt, die am besten mit der x-Achse des Szenenkoordinatensystems ausgerichtet ist. Die y-Achse wird aus der x- und z-Achse berechnet.

Die Boxen werden außerdem in ObjectModel3DBoxObjectModel3DBoxObjectModel3DBoxObjectModel3DBoxobjectModel3DBox als vermaschtes 3D-Objektmodell zurückgegeben. Dies ermöglicht eine einfache Visualisierung der Ergebnisse.

Für jede gefundene Box wird in ScoreScoreScoreScorescore eine Bewertung zwischen 0 und 1 zurückgegeben. Diese gibt an, wie gut die Box und ihre Kanten sichtbar sind, und wie gut die gefundene Box zu den spezifizierten Kantenlängen passt.

Schlussendlich wird mit BoxInformationBoxInformationBoxInformationBoxInformationboxInformation ein Dictionary zurückgegeben, welches weitere Informationen über die Ergebnisse enthält. Diese können mit get_dict_paramget_dict_paramGetDictParamGetDictParamGetDictParam und get_dict_tupleget_dict_tupleGetDictTupleGetDictTupleGetDictTuple abgerufen werden, oder mit dem Handle Inspect-Fenster in HDevelop untersucht werden.

Das Dictionary BoxInformationBoxInformationBoxInformationBoxInformationboxInformation enthält folgende Schlüssel:

'results''results''results''results''results':

Dieser Schlüssel verweist auf ein Dictionary, das die gefundenen Boxen enthält. Diese sind absteigend nach Bewertung sortiert und sind durch aufsteigende Integer-Werte (Startwert 0) als Schlüssel referenziert.

Für jede gefundene Box wird ein Dictionary mit folgenden Schlüsseln zurückgegeben:

'box_pose''box_pose''box_pose''box_pose''boxPose':

Beschreibt die Pose der Box relativ zum Koordinatensystem der Szene. Diese Pose wird zur Visualisierung der Box verwendet.

'box_length_x''box_length_x''box_length_x''box_length_x''boxLengthX', 'box_length_y''box_length_y''box_length_y''box_length_y''boxLengthY' 'box_length_z''box_length_z''box_length_z''box_length_z''boxLengthZ':

Die Kantenlängen der gefundenen Box entsprechend der Pose 'box_pose''box_pose''box_pose''box_pose''boxPose'. box_length_xbox_length_xbox_length_xbox_length_xboxLengthX und box_length_ybox_length_ybox_length_ybox_length_yboxLengthY enthalten immer einen positiven Wert. Wenn nur eine Seite der Box sichtbar ist wird box_length_zbox_length_zbox_length_zbox_length_zboxLengthZ auf 0 gesetzt.

'gripping_pose''gripping_pose''gripping_pose''gripping_pose''grippingPose':

Entspricht der Pose, die in GrippingPoseGrippingPoseGrippingPoseGrippingPosegrippingPose zurückgegeben wird.

'gripping_length_x''gripping_length_x''gripping_length_x''gripping_length_x''grippingLengthX', 'gripping_length_y''gripping_length_y''gripping_length_y''gripping_length_y''grippingLengthY' 'gripping_length_z''gripping_length_z''gripping_length_z''gripping_length_z''grippingLengthZ':

Die Kantenlängen der gefundenen Box entsprechend der Pose GrippingPoseGrippingPoseGrippingPoseGrippingPosegrippingPose. gripping_length_xgripping_length_xgripping_length_xgripping_length_xgrippingLengthX und gripping_length_ygripping_length_ygripping_length_ygripping_length_ygrippingLengthY enthalten immer einen positiven Wert. Wenn nur eine Seite der Box sichtbar ist wird gripping_length_zgripping_length_zgripping_length_zgripping_length_zgrippingLengthZ auf 0 gesetzt.

'score''score''score''score''score':

Entspricht der Bewertung, die in ScoreScoreScoreScorescore zurückgegeben wird.

'one_side_only''one_side_only''one_side_only''one_side_only''oneSideOnly':

Gibt an, ob nur eine Seite der Box sichtbar ist ('true'"true""true""true""true") oder mehr ('false'"false""false""false""false").

'gen_param''gen_param''gen_param''gen_param''genParam':

Dieses Dictionary enthält die Parameter, die an find_box_3dfind_box_3dFindBox3dFindBox3dFindBox3d übergeben wurden. SideLen1SideLen1SideLen1SideLen1sideLen1, SideLen2SideLen2SideLen2SideLen2sideLen2, und SideLen3SideLen3SideLen3SideLen3sideLen3 sind in einem Tupel mit dem Schlüssel 'lengths''lengths''lengths''lengths''lengths' zusammengefasst. Der Schlüssel 'min_score''min_score''min_score''min_score''minScore' verweist auf MinScoreMinScoreMinScoreMinScoreminScore. Die weiteren Schlüssel sind analog zu den generischen Parametern im Dictionary GenParamGenParamGenParamGenParamgenParam bezeichnet (siehe unten).

'sampled_edges''sampled_edges''sampled_edges''sampled_edges''sampledEdges':

Dieses 3D-Objektmodell mit abgetasteten Kanten enthält die Blickrichtung der Kantenpunkte als Normalenvektoren.

'sampled_edges_direction''sampled_edges_direction''sampled_edges_direction''sampled_edges_direction''sampledEdgesDirection':

Dieses 3D-Objektmodell mit abgetasteten Kanten (analog zu 'sampled_edges''sampled_edges''sampled_edges''sampled_edges''sampledEdges') enthält die Kantenrichtungen der Kantenpunkte als Normalenvektoren.

'sampled_scene''sampled_scene''sampled_scene''sampled_scene''sampledScene':

Dieser Schlüssel enthält die abgetastete Szene, in der die Boxen gesucht werden. Sie kann zur Visualisierung oder zur Überprüfung der Abtastdistanz verwendet werden.

'sampled_reference_points''sampled_reference_points''sampled_reference_points''sampled_reference_points''sampledReferencePoints':

Dieser Schlüssel enthält ein 3D-Objektmodell mit allen Punkten der 3D-Szene, die als Referenzpunkte für das Matching verwendet wurde. Für jeden dieser Referenzpunkte wird eine optimale Box-Pose berechnet, in der Annahme, dass sich der Punkt auf der Oberfläche der Box befindet.

Generische Parameter

Weitere generische Parameter können als Schlüssel-Tupeldaten-Paare in das Dictionary GenParamGenParamGenParamGenParamgenParam übergeben werden um den Matching-Vorgang zu verbessern. Die folgenden Parameternamen fungieren als Schlüssel zu den dazugehörigen Tupeldaten (siehe create_dictcreate_dictCreateDictCreateDictCreateDict und set_dict_tupleset_dict_tupleSetDictTupleSetDictTupleSetDictTuple).

'3d_edges''3d_edges''3d_edges''3d_edges''3dEdges':

Mit diesem Schlüssel können die zu verwendenden 3D-Kanten übergeben werden. Als Wert muss ein 3D-Objektmodell übergeben werden. Dieses Modell wird üblicherweise mit edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d erzeugt , und kann bei Bedarf noch weiter gefiltert werden um z.B. Ausreißer zu entfernen. Wenn dieser Parameter nicht angegeben wird, werden die Kanten intern aus der Szene ähnlich zum Operator edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d extrahiert.

'3d_edge_min_amplitude''3d_edge_min_amplitude''3d_edge_min_amplitude''3d_edge_min_amplitude''3dEdgeMinAmplitude':

Legt die minimale Amplitude einer Unstetigkeit fest, um als Kante klassifiziert zu werden. Falls Kanten manuell in '3d_edges''3d_edges''3d_edges''3d_edges''3dEdges' übergeben werden ist zu beachten, dass dieser Parameter ignoriert wird. Andernfalls verhält sich '3d_edge_min_amplitude''3d_edge_min_amplitude''3d_edge_min_amplitude''3d_edge_min_amplitude''3dEdgeMinAmplitude' wie MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitude für den Operator edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d.

Assertion: '3d_edge_min_amplitude''3d_edge_min_amplitude''3d_edge_min_amplitude''3d_edge_min_amplitude''3dEdgeMinAmplitude' >= 0

Standardwert: 10% der kleinsten Boxdiagonale.

'viewpoint''viewpoint''viewpoint''viewpoint''viewpoint', 'max_gap''max_gap''max_gap''max_gap''maxGap':

Wenn keine 3D-Kanten mittels '3d_edges''3d_edges''3d_edges''3d_edges''3dEdges' übergeben wurden, werden diese intern automatisch extrahiert. Die hier aufgeführten Parameter steuern diese Kantenextraktion.

'viewpoint''viewpoint''viewpoint''viewpoint''viewpoint' und 'max_gap''max_gap''max_gap''max_gap''maxGap' haben die gleiche Bedeutung wie in edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d.

'remove_outer_edges''remove_outer_edges''remove_outer_edges''remove_outer_edges''removeOuterEdges':

Entfernt die am äußersten gelegenen Kanten (wenn auf 'true'"true""true""true""true" gesetzt). Für Anwendungen bei denen ein Griff in die Kiste erfolgt kann dies zum Beispiel nützlich sein, um die Kiste aus den 3D-Daten zu entfernen.

Standardwert: 'false'"false""false""false""false"

Mögliche Werte: 'false'"false""false""false""false", 'true'"true""true""true""true"

'max_num_boxes''max_num_boxes''max_num_boxes''max_num_boxes''maxNumBoxes':

Begrenzt die Anzahl an zurückgegebenen Boxen. Standardmäßig gibt find_box_3dfind_box_3dFindBox3dFindBox3dFindBox3d alle gefundenen Boxen zurück, deren Bewertung über MinScoreMinScoreMinScoreMinScoreminScore liegt. Mit diesem Parameter kann die Anzahl entsprechend begrenzt werden.

Standardwert: 0 (alle Boxen zurückgeben)

'box_type''box_type''box_type''box_type''boxType':

Legt die Arten von Boxen fest, die gesucht werden sollen. Es kann nur nach Boxen gesucht werden, bei denen nur eine Seite sichtbar ist ('single_side_visible'"single_side_visible""single_side_visible""single_side_visible""single_side_visible"), nach Boxen, bei denen alle drei Kantenlängen sichtbar sind ('full_box_visible'"full_box_visible""full_box_visible""full_box_visible""full_box_visible"), oder nach allen Boxen ('all'"all""all""all""all").

Standardwert: 'all'"all""all""all""all"

Mögliche Werte: 'all'"all""all""all""all", 'single_side_visible'"single_side_visible""single_side_visible""single_side_visible""single_side_visible", 'full_box_visible'"full_box_visible""full_box_visible""full_box_visible""full_box_visible"

Problembehandlung

Visualisierung der gefundenen Kanten und der abgetasteten Szene:

Um die Ergebnisse der Boxerkennung besser zu verstehen, können einige der intern verwendeten Daten mittels get_dict_tupleget_dict_tupleGetDictTupleGetDictTupleGetDictTuple aus BoxInformationBoxInformationBoxInformationBoxInformationboxInformation ausgelesen werden

Die abgetastete Szene kann mit dem Schlüssel 'sampled_scene''sampled_scene''sampled_scene''sampled_scene''sampledScene' ausgelesen werden. Das Finden von kleineren Boxen braucht eine dichter abgetastete Szene, was die Boxerkennung langsamer macht.

Die abgetasteten 3D-Kanten können mit den Schlüsseln 'sampled_edges''sampled_edges''sampled_edges''sampled_edges''sampledEdges' und 'sampled_edges_directions''sampled_edges_directions''sampled_edges_directions''sampled_edges_directions''sampledEdgesDirections'. ausgelesen werden. Die beiden 3D-Objektmodelle enthalten die gleichen Punkte, allerdings sind in 'sampled_edges''sampled_edges''sampled_edges''sampled_edges''sampledEdges' die Normalenrichtungen auf die Blickrichtungen der Kanten gesetzt, während in 'sampled_edges_directions''sampled_edges_directions''sampled_edges_directions''sampled_edges_directions''sampledEdgesDirections' die Normalenrichtungen auf die Kantenrichtung gesetzt werden. Die Kantenrichtung steht senkrecht auf den Kanten und zeigt nach außen.

Koordinatensysteme:

Die 3D-Kantenextraktion wird mit find_box_3dfind_box_3dFindBox3dFindBox3dFindBox3d intern analog zu edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d durchgeführt. Damit die Kantenrichtungen korrekt extrahiert werden, müssen die Bilder der folgenden Konvention folgen: Im X-Bild müssen die Werte von links nach rechts aufsteigen, im Y-Bild müssen die Werte von oben nach unten aufsteigen. Im Z-Bild müssen die Werte von vorne nach hinten aufsteigen, weiterhin müssen alle Werte positiv sein (d.h. die z-Achse des Sensors zeigt nach vorne).

Wenn diese Voraussetzungen nicht erfüllt sind, werden die falschen 3D-Kanten extrahiert, oder die extrahierten 3D-Kanten haben falsche Kantenrichtungen.

Wenn nur ein 3D-Objektmodell mit Mappings zu Verfügung steht, aber keine Bilder, können die Bilder mittels object_model_3d_to_xyzobject_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyzObjectModel3dToXyz mit dem Modus 'from_xyz_map'"from_xyz_map""from_xyz_map""from_xyz_map""from_xyz_map" rekonstruiert werden.

Die Koordinatenrichtungen können z.B. durch eine Transformation des 3D-Objektmodells mittels rigid_trans_object_model_3drigid_trans_object_model_3dRigidTransObjectModel3dRigidTransObjectModel3dRigidTransObjectModel3d geändert werden, oder durch Skalierung der X-, Y- und Z-Bilder mittels scale_imagescale_imageScaleImageScaleImageScaleImage. Im letzten Fall ist darauf zu achten, dass die Rechtshändigkeit des Koordinatensystems nicht geändert wird.

Zur Überprüfung des Koordinatensystems kann der „Automatic Value Check“ in der Prozedur debug_find_surface_model verwendet werden.

Verbesserung der Laufzeit:

Wenn find_box_3dfind_box_3dFindBox3dFindBox3dFindBox3d zu lange dauert, können die folgenden Schritte helfen, die Laufzeit zu verringern.

Ausführungsinformationen

Dieser Operator unterstützt Cancel-Timeouts und Interrupts.

Parameter

ObjectModel3DSceneObjectModel3DSceneObjectModel3DSceneObjectModel3DSceneobjectModel3DScene (input_control)  object_model_3d HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des 3D-Objektmodells, welches die Szene enthält.

SideLen1SideLen1SideLen1SideLen1sideLen1 (input_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Länge der ersten Boxkante.

SideLen2SideLen2SideLen2SideLen2sideLen2 (input_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Länge der zweiten Boxkante.

SideLen3SideLen3SideLen3SideLen3sideLen3 (input_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Länge der dritten Boxkante.

Defaultwert: -1

MinScoreMinScoreMinScoreMinScoreminScore (input_control)  real HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Mindestbewertung der zurückgegebenen Boxen.

Defaultwert: 0.25

Restriktion: 0 <= MinScore <= 1

GenParamGenParamGenParamGenParamgenParam (input_control)  dict HDict, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionary für generische Parameter.

Defaultwert: []

GrippingPoseGrippingPoseGrippingPoseGrippingPosegrippingPose (output_control)  pose(-array) HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Greifposen der gefundenen Boxen.

ScoreScoreScoreScorescore (output_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Bewertungen der gefundenen Boxen.

ObjectModel3DBoxObjectModel3DBoxObjectModel3DBoxObjectModel3DBoxobjectModel3DBox (output_control)  object_model_3d-array HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Gefundene Boxen als 3D-Objektmodell.

BoxInformationBoxInformationBoxInformationBoxInformationboxInformation (output_control)  dict HDict, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Weitere Informationen als Dictionary.

Ergebnis

Wenn alle Parameter korrekt sind liefert find_box_3dfind_box_3dFindBox3dFindBox3dFindBox3d den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d, xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d

Nachfolger

gen_box_object_model_3dgen_box_object_model_3dGenBoxObjectModel3dGenBoxObjectModel3dGenBoxObjectModel3d, get_dict_tupleget_dict_tupleGetDictTupleGetDictTupleGetDictTuple

Alternativen

find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModel

Modul

3D Metrology