Zwei Dinge.
Wenn Sie eine Zuordnung vornehmen möchten, benötigen Sie einen vollständigen SLAM-Algorithmus (Simultaneous Localization and Mapping). Siehe: Gleichzeitige Lokalisierung und Zuordnung (SLAM): Teil I Die wesentlichen Algorithmen . In SLAM ist das Schätzen des Roboterzustands nur das halbe Problem. Wie das geht, ist eine größere Frage, als hier beantwortet werden kann.
In Bezug auf die Lokalisierung (Schätzung des Roboterzustands) ist dies keine Aufgabe für einen Kalman-Filter. Der Übergang von
zu ist keine lineare Funktion aufgrund der Winkelbeschleunigungen und Geschwindigkeiten. Daher müssen Sie für diese Aufgabe nichtlineare Schätzer berücksichtigen. Ja, es gibt Standardmethoden dafür. Ja, sie sind in der Literatur verfügbar. Ja, normalerweise werden alle Eingänge in den gleichen Filter gelegt. Position, Geschwindigkeit, Orientierung und Winkelgeschwindigkeit des Roboters werden als Ausgaben verwendet. Und ja, ich werde hier eine kurze Einführung in ihre gemeinsamen Themen geben. Die Haupt-Take-Aways sindx ( t ) = [ x , y, x˙, y˙, θ , θ˙]x ( t + 1 )
- Beziehen Sie die Gyro- und IMU-Voreingenommenheit in Ihren Bundesstaat ein, da sonst Ihre Schätzungen abweichen
- Ein erweiterter Kalman-Filter (EKF) wird häufig für dieses Problem verwendet
- Implementierungen können von Grund auf neu erstellt werden und müssen im Allgemeinen nicht "nachgeschlagen" werden.
- Für die meisten Lokalisierungs- und SLAM-Probleme gibt es Implementierungen. Machen Sie also nicht mehr Arbeit als nötig. Siehe: Roboterbetriebssystem ROS
Erklären Sie nun die EKF im Kontext Ihres Systems. Wir haben eine IMU + Gyro, GPS und Kilometerzähler. Der betreffende Roboter ist wie erwähnt ein Differentialantrieb. Die Filterung Aufgabe ist es, die aktuelle Pose Schätzung des Roboters zu nehmen
, die Steuereingänge , und die Messungen von jedem Sensor, , und produziert die Schätzung bei der nächsten Zeitschritt
. Wir nennen die IMU-Messungen , GPS ist und .x^tutztx^t + 1ichtGtOt
Ich gehe davon aus, dass wir daran interessiert sind, die Roboterhaltung als
. Das Problem mit IMU und Gyros ist Drift. Die Beschleunigungen, die Sie im EKF berücksichtigen müssen, sind instationär. Dies geschieht (normalerweise), indem die Vorspannung in den geschätzten Zustand versetzt wird. Auf diese Weise können Sie die Abweichung bei jedem Zeitschritt direkt abschätzen.
für einen Vektor von Verzerrungen .xt= x , y, x˙, y˙, θ , θ˙xt= x , y, x˙, y˙, θ , θ˙, bb
Ich gehe davon aus:
- Ot = zwei Distanzmessungen, die die Distanz darstellen, die die Laufflächen in einem kleinen haben
- icht = drei Orientierungsmessungen und drei Beschleunigungsmessungen .α , β, θx¨, y¨, z¨
- Gt = die Position des Roboters im globalen Frame,
.Gxt,Gyt
In der Regel ist es schwierig, das Ergebnis der Steuereingaben (gewünschte Geschwindigkeiten für jede Lauffläche) auf die Ausgaben abzubilden (die Änderung der Haltung des Roboters). Anstelle von ist es üblich (siehe Thrun , Odometry Question ), den Kilometerzähler als "Ergebnis" der Kontrolle zu verwenden. Diese Annahme funktioniert gut, wenn Sie sich nicht auf einer nahezu reibungslosen Oberfläche befinden. Wie wir sehen werden, können die IMU und das GPS dabei helfen, Schlupf zu korrigieren.u
Die erste Aufgabe besteht also darin, den nächsten Zustand aus dem aktuellen Zustand vorherzusagen:
. Im Fall eines Differentialantriebsroboters kann diese Vorhersage direkt aus der Literatur (siehe Über die Kinematik mobiler Radroboter oder die präzisere Behandlung in einem modernen Robotiklehrbuch) oder von Grund auf wie hier gezeigt abgeleitet werden: Odometry Question .x^t + 1= f( x^t, ut)
Wir können also jetzt . Dies ist der Ausbreitungs- oder Vorhersageschritt. Sie können einen Roboter durch einfaches Propagieren bedienen. Wenn die Werte vollständig genau sind, haben Sie niemals eine Schätzung die nicht genau Ihrem wahren Zustand entspricht. Das passiert in der Praxis nie.x^t + 1= f( x^t, Ot)Otx^
Dies gibt nur einen vorhergesagten Wert aus der vorherigen Schätzung an und sagt uns nicht, wie sich die Genauigkeit der Schätzung mit der Zeit verschlechtert. Um die Unsicherheit zu propagieren, müssen Sie die EKF-Gleichungen (die die Unsicherheit in geschlossener Form unter Gaußschen Rauschannahmen propagieren), einen Partikelfilter (der einen stichprobenbasierten Ansatz verwendet) * und den UKF (der punktweise verwendet) verwenden Approximation der Unsicherheit) oder eine von vielen anderen Varianten.
Im Fall der EKF gehen wir wie folgt vor. Sei die Kovarianzmatrix des Roboterzustands. Wir linearisieren die Funktion
Verwendung der Taylor-Reihenexpansion, um ein lineares System zu erhalten. Ein lineares System kann mit dem Kalman-Filter leicht gelöst werden. Angenommen, die Kovarianz der Schätzung zum Zeitpunkt ist , und die angenommene Kovarianz des Rauschens in der Kilometerzahl wird als die Matrix
(normalerweise eine diagonale Matrix, wie ). . Im Fall der Funktion erhalten wir die Jacobi undPtftPtUt2 × 2.1 × I2 × 2f
Fx= ∂f∂xFu= ∂f∂u, dann verbreiten die Unsicherheit als,
Pt + 1= Fx∗ Pt∗ FTx+ Fu∗ Ut∗ FTu
Jetzt können wir die Schätzung und die Unsicherheit verbreiten. Beachten Sie, dass die Unsicherheit mit der Zeit monoton zunimmt. Dies wird erwartet. Um dies zu beheben, wird normalerweise der vorhergesagte Zustand mit und aktualisiert. Dies wird als Messschritt des Filterprozesses bezeichnet, da die Sensoren eine indirekte Messung des Roboterzustands liefern.ichtGt
Verwenden Sie zunächst jeden Sensor, um einen Teil des Roboterzustands als Funktion und für GPS, IMU zu schätzen . Bilden Sie das Residuum oder die Innovation, bei der es sich um die Differenz zwischen den vorhergesagten und den gemessenen Werten handelt. Schätzen Sie dann die Genauigkeit für jede Sensorschätzung in Form einer Kovarianzmatrix für alle Sensoren ( in diesem Fall , ). Suchen Sie schließlich die Jakobiner von und aktualisieren Sie die Zustandsschätzung wie folgt:hG( )hich( )RRGRichh
Für jeden Sensor mit Schätzung Zustand ( wikipedias Eintritt Nach )szs
vs= zs- hs( x^t + 1)
Ss= Hs∗ Pt + 1∗ HTs+ Rs
K= Pt + 1∗ HTsS- 1s
x^t + 1= x^t + 1- K∗ v
Pt + 1= ( Ich- K∗ Hs) ∗ Pt + 1
Im Fall von GPS ist die Messung wahrscheinlich nur eine Transformation von Breite und Länge zum lokalen Rahmen des Roboters, sodass der Jacobian nahezu wird. wird in den meisten Fällen direkt vom GPS-Gerät gemeldet.zG= hG( )HGRG
Im Fall der IMU + Gyro ist die Funktion eine Integration von Beschleunigungen und ein additiver Bias-Term. Eine Möglichkeit, mit der IMU umzugehen, besteht darin, die Beschleunigungen numerisch zu integrieren, um eine Positions- und Geschwindigkeitsschätzung zum gewünschten Zeitpunkt zu finden. Wenn Ihre IMU für jede Beschleunigungsschätzung einen kleinen additiven Rauschterm , müssen Sie dieses Rauschen integrieren, um die Genauigkeit der Positionsschätzung zu ermitteln. Dann ist die Kovarianz die Integration aller kleinen additiven Rauschausdrücke . Das Update für die Verzerrung einzubauen ist schwieriger und aus meiner Erfahrung heraus. Da Sie jedoch an planaren Bewegungen interessiert sind, können Sie das Problem wahrscheinlich vereinfachen. Dafür musst du in der Literatur nachsehen.zich= hich( )pichRichpich
Einige außergewöhnliche Referenzen:
Verbesserung der Genauigkeit der EKF-basierten visuellen Inertial-Kilometerzähler
Beobachtbarkeitsbasierte konsistente EKF-Schätzer für die kooperative Lokalisierung mehrerer Roboter
Adaptives zweistufiges EKF für lose gekoppeltes INS-GPS-System mit unbekannter Fehlervorspannung
Dieses Feld ist ausgereift genug, dass Google (Gelehrter) Sie wahrscheinlich eine funktionierende Implementierung finden könnte. Wenn Sie in diesem Bereich viel arbeiten werden, empfehle ich Ihnen, sich ein solides Lehrbuch zuzulegen. Vielleicht so etwas wie Probablistic Robotics von S. Thrun von Google Car. (Ich fand es eine nützliche Referenz für diese Late-Night-Implementierungen).
* Im Robot Operating System (ROS) sind mehrere PF-basierte Schätzer verfügbar
. Diese wurden jedoch für den Innenbereich optimiert. Partikelfilter befassen sich mit den multimodalen PDFs, die sich aus der kartenbasierten Lokalisierung ergeben können (bin ich in der Nähe dieser Tür oder jener Tür). Ich glaube, dass die meisten Outdoor-Implementierungen (insbesondere diejenigen, die zumindest zeitweise GPS verwenden können) den Extended Kalman Filter (EKF) verwenden. Ich habe den erweiterten Kalman-Filter erfolgreich für einen Außenrover mit Differentialantrieb eingesetzt.
Sie können das Problem in den meisten Fällen erheblich vereinfachen:
Die "typische" Lösung für uns ist die Verwendung von Odometrie + IMU, um eine Ego-Bewegungsschätzung zu erhalten, und dann die Verwendung von GPS, um die X-, Y-, Z- und Steuerkursverschiebung zu korrigieren.
Hier ist eine EKF-Implementierung, die wir ausgiebig verwendet haben. Wenn Sie die Ausrichtung der IMU schätzen müssen (dh wenn sie noch keinen integrierten Filter hat), können Sie auch einen dieser beiden Filter verwenden: UKF und EKF .
quelle