Tutorial · Mittelstufe · 25 Min.
Querfehler: Messen, wie gut du folgst
Die Zahl, die sagt, ob ein Pfadfolger arbeitet, wie man sie ehrlich misst und warum Stanley Ecken weit außen umfährt, wo Pure Pursuit innen schneidet.
Eine Zahl, mit Vorzeichen
Querfehler ist der senkrechte Abstand vom Roboter zum Pfad, mit Vorzeichen. Positiv links der Fahrtrichtung, negativ rechts. Das ist die ganze Definition – und die einzige ehrliche Anzeigetafel, die ein Pfadfolger hat.
Das Vorzeichen zählt mehr, als es aussieht. Eine vorzeichenlose Entfernung sagt: Der Roboter liegt 20 cm daneben; eine vorzeichenbehaftete sagt, welche Seite – was jeder Regler braucht und was einen Fehlerplot lesbar macht: Eine Verzerrung zeigt sich als Offset, eine Schwingung als Sinus, eine Ecke als Spitze in bekannter Richtung.
Messen, ohne sich zu betrügen
Drei Fallen, in der Reihenfolge, in die Leute tappen.
Nicht gegen die Schätzung messen. Glaubt der Roboter, auf dem Pfad zu sein, ist sein selbst gemeldeter Fehler konstruktionsbedingt null. Querfehler muss gegen Ground Truth gewertet werden – Maßband, Totalstation, Motion-Capture-Rig oder in Simulation die wahre Pose, die das Modell integriert. Im Pfadfolgesimulator sieht der Regler einen eventuell verrauschten Fix und der Fehler wird immer aus der Wahrheit gerechnet – der einzige Grund, warum sich die GPS-Strafe als Zahl zeigt.
Das Vorzeichen aus dem Pfadframe nehmen, nicht aus einem Kreuzprodukttest. Die naheliegende Implementierung prüft, auf welcher Seite des aktuellen Segments der Roboter liegt. Dieses Vorzeichen kippt unstetig, wenn die Projektion einen Wegpunkt kreuzt – und bei jeder Aktorverzögerung plappert der Befehl vollskalig, während sich die Räder kaum bewegen: was exakt wie ein defekter Regler aussieht. Stattdessen auf den Pfad projizieren und die Querkomponente im pfadequaten Frame nehmen:
float h = pathHeadingAt(s); // tangent direction there
float e = -(x - px) * sinf(h) + (y - py) * cosf(h); // + is left of travel
In der Nähe suchen, wo man war, nicht überall. Eine globale Nächstpunktsuche auf einem Pfad, der sich zurückbiegt, trifft fröhlich ein Segment, das man vor einer Minute befuhr. Die letzte Bogenlänge behalten und ein Fenster darum suchen – wenige Meter zurück, genug vorwärts, um die Vorausschau abzudecken.
Eine vierte Falle ist subtiler und kostete mich einen funktionierenden Regler: An einer Ecke projizieren beide Nachbarsegmente auf denselben Scheitel in derselben Entfernung. Das ankommende behalten, und Kursfehler wie Querversatz sind beide etwa null – ein Regler, der auf diesen zwei Größen lenkt, segelt also in vollem Vertrauen geradeaus vom Pfad. Die Bindung zugunsten des abgehenden Segments auflösen.
RMS, schlimmster Fall, und wo der Fehler wohnt
Drei Zahlen angeben – denn jede versteckt, was die anderen zeigen.
- RMS-Fehler ist der ehrliche Mittelwert. Danach stimmt man ab.
- Schlimmster Fall entscheidet, ob der Roboter durch den Korridor passt. 0,12 m RMS mit 0,50 m Spitze sind eine andere Maschine als 0,12 m RMS mit 0,15 m Spitze.
- Fehler gegen Strecke entlang des Pfads zeigt wo. Das ist der Plot, der sagt, ob man ein Abstimmungs- oder ein Geometrieproblem hat.
Darum zeichnet der Simulator das dritte. Eine kurze Vorausschau erzeugt Zittern entlang des ganzen Pfads; eine lange ist auf Geraden sauber und spitzt nur an Ecken. Die RMS können identisch sein.
Zwei Regler, zwei Fehlerformen
Pure Pursuit zielt auf einen Punkt voraus und fährt den Bogen. Stanley – der Regler, der die DARPA Grand Challenge 2005 gewann – referenziert die Vorderachse und lenkt auf zwei addierten Termen:
δ = θ_e + atan(k · e / v)
Der erste Term richtet den Roboter an der Pfadrichtung aus. Der zweite verwandelt Querfehler in einen Lenkwinkel – und Teilen durch Geschwindigkeit lässt dieselbe Verstärkung bei 1 m/s wie bei 10 arbeiten.
Gemessen über denselben Kurs bei 2 m/s:
| RMS | Schlimmst | Gefahrene Pfadlänge | Lenkaufwand | |
|---|---|---|---|---|
| Pure Pursuit | 0,12 m | 0,50 m | 0,8 % kurz | 4,3 rad |
| Stanley | 0,17 m | 0,87 m | 2,2 % lang | 18,5 rad |
Das Vorzeichen der dritten Spalte ist die ganze Geschichte. Pure Pursuit nimmt die Innenlinie und kommt früher an; Stanley weigert sich, den Pfad zu verlassen, schießt über die Ecke hinaus und kommt zurück – und fährt weiter als der Pfad, den man ihm gab.
Lenkaufwand ist die Zahl, die Leute vergessen. Vierfache Aktorbewegung ist vierfacher Verschleiß am Servo, vierfacher Strom, und am Differenzialantrieb vierfaches Radwalken. Stanley ist nicht gratis.
Wählen
Pure Pursuit, wenn der Pfad ein Vorschlag ist. Kehrfahrten, Wegpunktmissionen, alles draußen, wo ein halber Meter Eckenschnitt niemandes Problem ist. Es hat einen geometrischen Drehknopf, degradiert graceful, und umfasst etwa zwölf Zeilen.
Stanley, wenn der Pfad eine Zwangsbedingung ist. Eine Spur, eine Feldreihe, ein Korridor mit Wänden. Es hält die Linie und schneidet nicht – zum Preis von Lenkaufwand und einer Verstärkung, die wirklich Abstimmung braucht: Die Vorausschau ist Geometrie und überträgt sich zwischen Robotern; k ist eine Regelverstärkung und tut es nicht.
Keiner, allein, bei niedriger Geschwindigkeit. Beide teilen durch oder skalieren mit Geschwindigkeit. Unter grob 0,3 m/s fährt ein Differenzialroboter besser, indem er sich auf der Stelle zur Peilung dreht und dann fährt – was kein Regler ausdrückt.
Wenn es schiefgeht
| Symptom | Meist |
|---|---|
| Gemeldeter Fehler immer nahe null | Gegen die Schätzung statt Ground Truth gemessen |
| Der Befehl plappert an jedem Wegpunkt | Vorzeichen aus Kreuzprodukttest, der am Scheitel kippt |
| Fährt nach einer Ecke selbstbewusst vom Pfad | Scheitelbindung zugunsten des ankommenden Segments aufgelöst – die lautlose |
| Fehler springt auf riesigen Wert und erholt sich | Globale Nächstpunktsuche traf ein fernes Segment |
| RMS sieht gut aus, der Roboter streift eine Wand | Auch den schlimmsten Fall angeben; RMS versteckt einzelne Spitzen |
| Stanley schwingt auf Geraden | k zu hoch für Geschwindigkeit und Verzögerung; es ist eine Verstärkung, keine Geometrie |
| Beide Folger wandern gemeinsam | Das Problem liegt davor – die Positionsschätzung, nicht die Lenkung |
Beide über denselben Kurs im Pfadfolgesimulator fahren lassen, dann dem Lernpfad Pfadfolge von Odometrie bis zu einem Roboter folgen, der allein eine Mission fährt.
Den Graphen erkunden
Teil dieser Bauprojekte
Projekte und Lernpfade, die dieses Tutorial enthalten.
Weiterführende Literatur