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
quelle
Wenn Sie die Position der Hindernisse nicht kennen und Ihren Filter anwenden möchten, sehe ich zwei Lösungen:
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.
quelle