Hallo zusammen,

es ist sehr interessant zu lesen, dass ROS nicht wirklich effektiv einen Sensor wie Kinect unterstützt. Simulation und Visualisierung besitzen in ROS ja einen hohen Anteil, allerdings dass es scheinbar nicht vernünftig möglich ist die Werte des Kinect Sensors für eine 3D Hinderniserkennung einzusetzen lässt mich mein Projekt (Umstellung auf ROS) erneut überdenken.
Aber dies ist nicht das Thema.
Die Berechnung passiert ja auf Triangulation, also einfachen Dreiecksberechnungen. Positiv dabei ist das die Entfernung immer die gerade vom Bot zum Objekt darstellt. Um mein damaliges Vorgehen grob darzustellen:
Ich prüfe kontinuierlich in Bewegungsrichtung das Deph-Image auf gültige Entfernungswerte, die dem Umriss meines Bot entsprechen. Größe des Bot und Position der CAM ist ja bekannt und somit auch die notwendigen Bereiche. Tritt innerhalb des Bot-Bereiches ein gültiger Entfernungswert auf, wird in einem Array genau dieses Element erhöht. Das Array besteht also aus genau der Anzahl maximal möglicher Entfernungswerte. Nach Analyse des Tiefenbildes wird das Array ausgewertet. Der erste Arraywert, welcher eine Mindestanzahl von Punkten beinhaltet, (Mehrere gleiche Entfernungswerte sind notwendig um Fehlmessungen nicht als Hindernis zu interpretieren und auch auf eine Mindestobjektgröße zu prüfen) entspricht der Entfernung zum Hindernis.
Bei meiner Botgröße und der damaligen Position/Winkel des Kinect Sensors konnte ich aber nur bis auf 5cm Bodenhöhe abtasten um nicht diesen situationsbedingt als Hindernis zu erhalten.
Dieser Prozess geschieht kontinuierlich und aktualisiert zyklisch den Entfernungswert zu einem Hindernis mit welchem der Bot kollidieren würde.
Ich hatte dies hier auch mal grafisch im unteren Bild visualisiert, an welchem man erkennt, dass er mit dem Drehstuhl unten und oben in ca. 110cm Entfernung kollidieren würde.
http://home-robotics.de/Seite22.html


Gruß André