Was ist die Logik, um einen Partikelfilter für einen Roboter mit Entfernungssensor zu implementieren?


7

Ich versuche, einen Partikelfilter für einen Roboter in Java zu implementieren. Dieser Roboter hat einen Entfernungssensor. Die Welt hat 6 Hindernisse - 3 oben und 3 unten. Ich berechne die Entfernung des Roboters vom Zentrum jedes Hindernisses und führe dann für jedes Partikel die gleiche Aktivität aus. Dann berechne ich die Differenz zwischen dem Roboter und den Partikeln. Die Partikel, für die der Unterschied zum gemessenen Abstand des Roboters gering ist, geben mir eine höhere Wahrscheinlichkeit für das Resampling.

Das Problem bei diesem Ansatz, wie er von meinem Freund erzählt wurde, ist jedoch, dass ich davon ausgehe, dass ich bereits die Orte der Hindernisse kenne, die diesen Prozess unbrauchbar machen. Wie soll ich es eher so angehen, dass ich die Hindernisse nicht kenne? Wie kann der Partikelfilter dann implementiert werden? Wie funktioniert der Partikelfilter, wenn ich den Ort der Hindernisse nicht kenne? Ein Beispiel für einen Prozess wäre eine große Hilfe. Vielen Dank

Screenshot meiner Bewerbung

Antworten:


6

Ihre Frage befasst sich mit drei sehr unterschiedlichen Problemen, die mit komplizierten Algorithmen vom Typ Forschung schwierig sind.

  1. Lokalisierung: Wenn Sie eine bekannte Karte der Umgebung und eine unbekannte Roboterposition haben. Der gebräuchlichste Algorithmus hierfür ist Monte Carlo Localizataion . Dies ist ein Partikelfilter genau so, wie Sie es beschreiben.
  2. Kartierung: Wenn der Roboter in einer unbekannten Umgebung aufwacht und eine Karte erstellen muss. Normalerweise setzen Mapping-Algorithmen voraus, dass Sie den Standort des Roboters kennen, z. B. über GPS oder ähnliches. Ich habe noch nie reines Mapping durchgeführt, daher kenne ich keine Algorithmen, aber ein schneller Google sollte sie finden.
  3. SLAM: Wenn Sie die beiden Probleme, eine unbekannte Umgebung und einen unbekannten Ort, kombinieren, wird das Problem als simultane Lokalisierung und Zuordnung (SLAM) bezeichnet . Das ist sehr schwer. Es gibt gute Algorithmen und gute Softwarepakete, aber alle sind noch experimentell und funktionieren nur für bestimmte Arten von Umgebungen / Sensoren. Ich empfehle dringend, dass Sie ein vorhandenes Paket verwenden, anstatt SLAM selbst zu implementieren, da es Monate dauern kann, bis alle Parameter optimiert sind. Ich habe keine Ahnung, ob es SLAM-Pakete für Java gibt, aber openslam.org hat eine großartige Liste von SLAM-Algorithmen auf dem neuesten Stand der Technik. Persönlich habe ich GMapping ziemlich oft benutzt und ich vertraue darauf, dass mein 25.000-Dollar-Roboter nicht abstürzt. Seien Sie sich bewusst, dass Sie in Forschungsgewässern unterwegs sind.

Tut mir leid, dass ich Ihnen eine so lange Antwort auf eine kurze Frage gegeben habe. Mein Vorschlag wäre anzunehmen, dass Sie die Positionen der Hindernisse kennen und einen einfachen Monte-Carlo-Partikelfilter durchführen .


Müssen Sie die Umgebungskarte für Partikelfilter kennen? Die Verwendung des Partikelfilters auf unbekannten Karten funktioniert also nicht.
MoneyBall

3

Wenn Sie die Position der Hindernisse nicht kennen und Ihren Filter anwenden möchten, sehe ich zwei Lösungen:

    • Führen Sie eine schnelle Zuordnung mit einem einfachen Algorithmus durch, der wie der Belegungsgitteralgorithmus einfach zu implementieren ist (mit diesem lokalisieren Sie die Hindernisse relativ zu Ihrem Roboter).
    • Wenden Sie Ihren Partikelfilter an
    • Bewegen Sie den Roboter
    • Lokalisieren Sie Ihren Roboter mithilfe der Kilometerzähler
    • Korrigieren Sie Odometriefehler, wenn möglich, indem Sie andere Sensormessungen verwenden
  1. Verwenden eines SLAM-Algorithmus zum gleichzeitigen Lokalisieren und Zuordnen von Hindernissen. Die SLAM-Algorithmen sind robuster gegenüber Sensoren und Odometriefehlern als der Occupancy Grid-Algorithmus, jedoch schwieriger zu implementieren und benötigen im Allgemeinen mehr CPU-Verbrauch.

NB: Sie müssen verstehen, dass es keine "optimale" Lösung gibt, da dieses Problem immer noch ein sehr aktiver Forschungsbereich in der Robotik ist. Die beiden Lösungen haben Vor- und Nachteile. Berücksichtigen Sie auch die Geschwindigkeit Ihres Prozessors oder Mikrocontrollers.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.