Ich mache SLAM mit einem vierrädrigen Differentialantriebsroboter (Zweiradantrieb), der durch einen Flur fährt. Der Flur ist nicht überall flach. Und der Roboter dreht sich, indem er sich an Ort und Stelle dreht und dann in die resultierende Richtung fährt. Der SLAM-Algorithmus muss nicht online ausgeführt werden.
Der Roboter nimmt Messungen von einer IMU / Gyro-Messung mit Riemen nach unten vor (ax,ay,az,wx,wy,wz)
, wobei ax
sich die Beschleunigung in x-Richtung und wx
die Winkelbeschleunigung um die x-Achse bezieht . Der LIDAR scannt den Flur mit einem 270-Grad-Bogen und misst Bereiche und Winkel. Soweit ich weiß, weist der Flurweg jedoch keine erkennbaren Merkmale auf, es sei denn, er biegt ab
Ich muss den besten Weg finden, um die vom Encoder gemessene vorgeschlagene Aktion mit IMU- und LIDAR-Daten zu verschmelzen. Für mich ist es sinnvoll, das Gieren von IMU mit Encoderdaten zu verschmelzen, um ein besseres Gefühl für die Überschrift zu erhalten. Aber wie sollte ich LIDAR-Daten einbeziehen?
Was ist im Wesentlichen das geeignete Messmodell und wie sollte ich Rauschen in das Bewegungsmodell integrieren ? Neben dem Hinzufügen von Gaußschem Rauschen (0,σ)
?
Nachtrag
Das ist etwas orthogonal zur Frage, aber genauso verwirrend für mich. Derzeit verwende ich einen Partikelfilter für SLAM, und ich bin ein wenig verwirrt darüber, ob die Unsicherheit der Winkelbeschleunigung in den Partikeln selbst dargestellt werden soll. Ich sehe zwei Möglichkeiten:
Ein separater Navigationsfilter, der EKF (oder irgendetwas wirklich) verwendet, um zuerst einen Vektor der "besten Schätzung" der Winkelbeschleunigungsmatrix zu finden, und dann diese Matrix als absolute Wahrheit für den Partikelfilter zu verwenden. Damit ist eine Drift in den Partikeln nicht auf eine Unsicherheit der Winkelbeschleunigung zurückzuführen.
Integrieren Sie die Unsicherheit selbst in die Partikeldrift. Diese Option erscheint sinnvoller, aber ich bin mir nicht sicher, wie dies grundsätzlich geschehen soll.
quelle
Antworten:
Da Sie einen 2D-Sensor haben, den Sie nicht kontrolliert drehen können, können Sie nur SLAM in einer 2D-Ebene ausführen.
Am besten verwenden Sie die IMU zur Lagebestimmung (nur Rollen und Neigen, da Sie keinen Kompass haben) und korrigieren jeden leicht gedrehten 2D-Laserscan entsprechend. Wenn Ihre IMU Ihnen noch keine Einstellungsschätzung zur Verfügung stellt, würde ich Einstellungsschätzungen unter Verwendung eines nichtlinearen Komplementärfilters berechnen, da nur eine einzige Konstante eingestellt werden muss.
Obwohl es theoretisch möglich ist, Partikelfilter für SLAM mit Laserscans zu verwenden (siehe Gmapping), ist der aktuelle Stand der Technik graphbasierter SLAM, dh Optimierung der kleinsten Quadrate des SLAM-Graphen oder in Ihrem Fall Pose-Graph-Optimierung. Schauen Sie sich karto in ROS als beispielhafte Open Source-Implementierung an.
quelle