Ich versuche eine zuverlässige Methode zu finden, um die Eckpunkte eines Containers zu berechnen. Von diesem Eckpunkt ist die Idee, den Mittelpunkt des Containers für die Lokalisierung des Roboters zu berechnen, das heißt, dass der berechnete Mittelpunkt das Ziel des Roboters sein wird, um den Container zu holen. Hierfür suche ich nach Vorschlägen zur Berechnung der Eckpunkte oder ggf. nach einer Möglichkeit, den Mittelpunkt direkt zu berechnen. Bis zu diesem Zeitpunkt wird die PCL-Bibliothek C/C++ für die Verarbeitung der 3D-Daten verwendet. Das Bild unten ist der Screenshot des Containers.
danke im voraus.Berechnung des Mittelpunkts für die Lokalisierung des Roboters in 3D-Daten
Antwort
Ich nehme an, die Räder halten den Wagen einen bekannten Abstand vom Boden und Sie können den Boden identifizieren.Filtert alle Punkte aus, die zu nah am Boden liegen (dadurch werden Räder und alles andere außer dem Wagen entfernt, wodurch Daten begrenzt und spätere Schritte vereinfacht werden.
Wenn Sie den Wagen isolieren, können Sie einen einfachen Durchschnittspunkt (Schwerpunkt) anwenden Alternativ können Sie, wenn das nicht genau ist, versuchen, den bounding box des isolierten Wagens zu finden (min max in den Hauptrichtungen) und dann den Schwerpunkt des Begrenzungsrahmens wählen (dies sollte genauer sein, erfordert aber immer noch einen leichten vertikalen Versatz) aufgrund der oberen Griffe)
Wenn Sie den Warenkorb nicht isolieren können oder die anderen Methoden nicht gut funktionieren, können Sie versuchen, PCL sample consensus speziell SACMODEL_LINE.Dies wird eine Strategie sein, wird aber sehr solide Ergebnisse, basic geben Lasse dich durch und finde jede Linie und subtrahiere ihre Mitglieder von der Wolke, um die nächstbeste Linie zu finden. Nachdem Sie Ihre 4 primären Einkaufswagenlinien haben, verwenden Sie ihre Parameter, um Ihren Schwerpunkt zu finden. * Dies wäre auch robust gegen zufällige Gegenstände in oder auf dem Wagen sowie Wagen unterschiedlicher Größe (vorausgesetzt, sie hatten immer lineare senkrechte Wände)
Great suggestions.thanks. Was Sie sagen über (1) die Identifizierung des Bodens und (2) das Herausfiltern der Punkte, die zu nah am Boden sind, um die Räder zu entfernen und nur den Wagen so zu behalten, könnte ich die (3) Begrenzungsbox benutzen. ? –
Das sind ziemlich klare Erklärungen ... was die Implementierung angeht, gibt es viel zu viel zu erklären. Es ist sehr gut dokumentiert mit Tutorials und Web-Dokumentation der Klassen gedacht. Hier ist ein guter Ausgangspunkt: http://pointclouds.org/documentation/tutorials/ Ich schlage vor, die Tutorials zunächst so zu testen, wie sie sind und sie dann an Ihre Bedürfnisse anzupassen. –
tatsächlich habe ich in PCL-Tutorials gesucht und RANSAC für die Flugzeuganpassung etc. verwendet. Könnten Sie ein bestimmtes Beispiel nennen, bei dem das Erkennen und Entfernen von Ebenen möglich ist, irgendwie wäre es einfacher, das Rad herauszufiltern und ein rechteckiges Prisma zu finden Begrenzungsbox auf dem Warenkorbobjekt? –
Ich habe folgende Dinge:
- I binarisiert das Bild (schwarze Pixel = 0, grüner Pixel = 1),
- das Bild invertiert (schwarzen Pixel = 1, grün Pixel = 0),
- erodiert das Bild mit 3x3 Kernel N-mal und erweitert es mit dem gleichen Kernel M-mal.
Left: N = 2, M = 1, rechts: N = 6, M = 6
Danach:
- I berechnete Konturen aller nicht -zero Bereiche und
- entfernt die Kontur, die das gesamte Bild umgeben.
Dies sind die Konturen, die geblieben:
Ich weiß nicht, wie "typisches" Eingabebild wie in Ihrem Fall aussieht. Da ich nur auf ein Beispielbild zugreifen kann, möchte ich nicht über eine "allgemeine Lösung" spekulieren, die für Sie geeignet ist. Aber dieser besonderen Fall zu lösen, könnten Sie jede Kontur in der folgenden Art und Weise analysieren:
- Compute Rechteck rotatated, die am besten um Ihre Kontur paßt (Sie etwas ähnliches wie minAreaRect from OpenCV benötigen)
- Rechenbereiche Rechteck und Konturinnen
- Wenn die Differenz zwischen dem Konturenbereich und dem Bereich des gedrehten Begrenzungsrechtecks klein ist, hat die Kontur eine ungefähr rechteckige Form.
- Suchen Sie nach der Kontur, die rechteckig ist und eine andere Bedingung erfüllt (Beispiel: typischer Bereich des Containers)). Angenommen, dies gehört zum Container und berechnet sein Zentrum.
Ich behaupte nicht, dass dies eine Lösung ist, die in realen Szenarien gut funktionieren wird. Es ist auch nicht schnell. Sie sollten es als eine "Skizze" betrachten, die zeigt, wie man einige nützliche Informationen extrahiert.
Das Bild, das ich oben gepostet habe, ist der Screenshot der pointcloud Daten. Es bedeutet wörtlich, dass die Verarbeitung nicht auf diesem Bild, sondern auf den Tiefendaten erfolgen sollte. aber danke, es scheint gut, wenn es ein 2D-Bild ist. ist es nicht? –
- 1. Programmierung des Pepper Roboters ohne "Choreography" Software?
- 2. C# RotateTransform - Probleme beim Ändern des Mittelpunkts
- 3. Aktivieren des Hochwasserschutzes für die korrekte Berechnung des Hotness-Scores
- 4. Berechnen des Mittelpunkts eines gedrehten Rechtecks in Javascript
- 5. Berechnung des jährlichen Wachstums
- 6. Python: Berechnung des Zeitfortschritts
- 7. Berechnung des Volumens für die Kugel in C++
- 8. Berechnung des Durchschnitts in distriubtion
- 9. Berechnung des Barwerts
- 10. Zeichnen eines JLabel mit X, Y-Koordinate des Mittelpunkts
- 11. Abrufen der XY-Koordinaten des Mittelpunkts aus der Auswahl
- 12. Berechnung des Durchschnittsbild
- 13. Berechnung des JSONPath
- 14. Berechnung des tatsächlichen Durchschnittswerts
- 15. Berechnung des entsprechenden Einfügewerts für Legenden automatisch
- 16. Berechnung des Durchschnitts für jeden Schüler
- 17. Berechnung des neuen Werts des geänderten Eingangs
- 18. PostgreSQL Berechnung Durchschnitt und Standardabweichung für die Stunde des Tages
- 19. Fehler beim Senden des App-Speichers für Sprache/Lokalisierung
- 20. Berechnung des Mindestabstandes zwischen Koordinatenpunkten
- 21. Berechnung des Fiedler-Vektors in Python
- 22. Größenklassen für die Lokalisierung
- 23. Funktion zur Berechnung des Alters
- 24. Berechnung des Durchsatzes für Udp-Verbindung in ns3
- 25. Berechnung des Kurswertes in einem Quad-Copter.
- 26. Berechnung des Hamming-Gewichts in O (1)
- 27. Wert des Objekts = Berechnung in models.py
- 28. Verwendung des Formelergebnisses in einer anderen Berechnung
- 29. Berechnung des hebräischen Datums in Python
- 30. Kompilierzeit Berechnung des nächsten Elements in enum?
Sie versuchen, das Zentrum des Rechtecks zu finden? –
tatsächlich dachte ich nicht über das Finden der Mitte des Rechtecks könnte auch somhow das Problem lösen. Das heißt, wenn es darum geht, die Ecken zu finden und das Zentrum zu berechnen, das natürlich wenige Schritte hat. Wie Sie erwähnten, könnte das Finden des Zentrums eine bessere Lösung sein. Das Zentrum finden und den Offset hinzufügen. Sie schlagen Ihnen die Möglichkeit vor, es direkt in PCL zu berechnen? –
Haben Sie dort Tiefendaten? Ich sehe keine der Innenflächen des Containers ... (Ich verstehe, dass es 3D-Daten sind, aber kann Ihr Sensor nur die Vorderseite des Wagens auflösen?) –