Lern-RoadmapMittelstufe

Pfadfolge für Roboter: Ein Lernpfad

Einem Roboter eine Wegpunktliste übergeben und fahren lassen – und in Metern sagen können, wie gut er war.

Planung und Folge sind verschiedene Probleme, und die meiste Robotikliteratur lehrt nur das erste. A* liefert eine Route; nichts darin sagt den Rädern, was sie tun sollen. Dieser Pfad ist die fehlende Sprosse – alles zwischen einer Wegpunktliste und einem Roboter, der sie wirklich fährt.

Die Stationen der Reihe nach durcharbeiten. Jede ist etwas, das die nächste voraussetzt – wer eine auslässt, baut einen Roboter, der aus einem nicht isolierbaren Grund umherirrt.

Bevor du beginnst

Du brauchst einen Differenzialroboter, den du bereits befehlen kannst – zwei Motoren, einen Treiber und eine Schleife mit stabiler Rate. Der Motorsteuerungspfad deckt das alles ab und dieser hier erwartet ihn zuerst. Regelungstheorie ist nicht nötig; Pure Pursuit ist Geometrie, kein PID.

Was du danach kannst

  • Aus Radencoderzählungen eine Pose machen und sagen, wie weit diese Pose pro gefahrenem Meter auf deinem Boden driftet.
  • Einen Gyro mit einer absoluten Referenz zu einem Kurs fusionieren, der über eine Mission nicht wegwandert.
  • Pure Pursuit aus der Krümmungsformel implementieren – in etwa einem Dutzend Zeilen – und jede davon erklären.
  • Eine Vorausschau aus der gemessenen Regelungsverzögerung deines Roboters wählen statt per Versuch und Irrtum – und nach Geschwindigkeit staffeln.
  • Querfehler gegen Ground Truth messen und RMS, schlimmsten Fall und Lage des Fehlers entlang des Pfads angeben.
  • Sagen, warum derselbe Regler auf einem rohen GPS-Fix vierzehnmal schlechter ist – und das beheben, ohne den Regler anzufassen.

Wo die meisten feststecken

Den Regler abstimmen, wenn die Schätzung das Problem ist. Glaubt der Roboter, auf dem Pfad zu sein, meldet er null Fehler und lenkt selbstbewusst in die Hecke. Gegen etwas Externes messen, bevor man eine Verstärkung anfasst – ein Maßband zählt.

Einer Simulation ohne Verzögerung glauben. Ein perfekt kinematisches Pure Pursuit wird mit schrumpfender Vorausschau besser – ein verzögerungsfreies Modell empfiehlt also genau die eine Einstellung, die auf echter Hardware schwingt. Eine Lenkzeitkonstante und eine Sensorverzögerung in jedes Modell einbauen, gegen das man abstimmt.

Eine globale Nächstpunktsuche. Sie ist die naheliegende Implementierung und versagt lautlos auf jedem Pfad, der sich zurückbiegt – sie trifft ein Segment, das der Roboter vor einer Minute befahren hat. Bogenlänge verfolgen, ein Fenster darum suchen und Fortschritt nie rückwärts laufen lassen.

Eine Eckpunkt-Bindung zugunsten des ankommenden Segments auflösen. Nach einer Ecke projizieren beide Nachbarsegmente auf denselben Punkt in derselben Entfernung. Das falsche behalten, und ein Regler, der nach Kurs und Querfehler lenkt, sieht von beidem etwa null, während er geradeaus vom Kurs fährt. Es ist der leiseste Fehler auf dieser Seite.

Baue es als GPS-Wegpunktrover – der exakt dieser Reihenfolge folgt: drinnen zuerst auf Encodern, draußen danach auf fusioniertem Fix.

Was du brauchst

Was Warum dieser Pfad es braucht Hinweise
Encoder an beiden Rädern Die Poseschätzung, die alles andere verbraucht Hier nicht optional – dieser Pfad handelt davon zu wissen, wo du bist
Ein Gyro oder eine IMU Räder können keine Drehung messen, durch die sie gerutscht sind MPU-6050 reicht
Eine stabile Schleife Schätzer wie Regler integrieren über die Zeit Festes Intervall oder echte vergangene Zeit übergeben
Etwas zum Gegenmessen Ohne Ground Truth lässt sich Spurtreue nicht abstimmen Kreidelinie und Maßband schlagen jede Telemetrie
Ein GPS-Modul (nur Außenhälfte) Die letzten beiden Stationen Drinnen fixt es gar nicht

Warum der Pfad in dieser Reihenfolge läuft

Dieser Pfad ist insofern ungewöhnlich, als die ersten fünf Stationen gar nicht vom Lenken handeln. Sie bauen die Poseschätzung – denn ein Pfadregler auf falscher Pose versagt auf eine Art, die exakt wie ein schlecht abgestimmter Regler aussieht: Der Roboter meldet null Fehler, während er in die Hecke fährt. Erst die Schätzung richtig zu bekommen heißt: Wenn man schließlich eine Verstärkung abstimmt, kann man dem Gemessenen glauben.

Encoder, dann Odometrie, dann Schlupf – in dieser Reihenfolge. Jede korrigiert den Optimismus der vorherigen. Encoder sagen: Das Rad hat sich gedreht; Odometrie macht aus zwei Radbewegungen eine Pose; Schlupf sagt, wie viel dieser Pose Fiktion ist – und konkret, dass systematische Fehler linear mit der Strecke wachsen, zufällige nur mit ihrer Wurzel.

Die IMU kommt vor den Regler, weil der Kurs der Poseteil ist, auf den es einem Pfadfolger am meisten ankommt, und der Teil, in dem Räder am schlechtesten sind. Eine Drehung auf der Stelle schrubbt beide Reifen fast definitionsgemäß – das eine Manöver, das den Kurs am stärksten ändert, misst die Odometrie also am schlechtesten. Ein Komplementärfilter fusioniert die gute Kurzzeitrate eines Gyros mit dem guten Langzeitmittel einer absoluten Referenz – heraus kommt ein Kurs, der nicht wegwandert.

Bewegungsprofile kommen vor Pure Pursuit, weil ein Pfadfolger fortlaufend Geschwindigkeit befiehlt – und ein springender Geschwindigkeitsbefehl erzeugt einen Roboter, der ruckt und rutscht und genau den Odometriefehler wiedereinführt, den man gerade drei Stationen lang gebändigt hat.

Pure Pursuit, dann Labor, dann Querfehler. Der Regler umfasst etwa ein Dutzend Zeilen und seine Geometrie ist leicht; schwer sind Vorausschauwählen und Wissen, ob das Ergebnis gut ist. Das Labor existiert, damit man den Vorausschau-Zielkonflikt geschehen sieht – und die Querfehlerstation, damit aus „er fährt gut“ eine Zahl mit RMS und schlimmstem Fall wird.

GPS zuletzt, und nur zuletzt. Es ändert nichts am Regler und alles an der Schätzung. Es zuletzt zu tun heißt: Wenn die Spurtreue vierzehnmal schlechter wird, weiß man bereits sicher, dass der Regler nicht der Grund ist.

Kontrollpunkte: Woran man merkt, dass eine Stufe sitzt

Stufe Die Prüfung Wie Bestanden aussieht
Encoder Den Roboter 2 m von Hand entlang einer Kreidelinie schieben Zählwerte ergeben 2000 mm innerhalb 2 %, beide Räder
Odometrie Ein 1-m-Quadrat fahren und zum Start zurückkehren Die gemeldete Pose schließt auf wenige Zentimeter, und du kannst den Fehler pro Meter nennen
Schlupf Eine Drehung auf der Stelle machen und Gyrokurs gegen Odometriekurs vergleichen Sie stimmen nicht überein, und du kannst sagen, um wie viel – diese Lücke ist das Schrubben
IMU-Fusion Den Roboter 360° langsam drehen, dann zwei Minuten stillstehen lassen Der Kurs kehrt zum Start zurück und driftet im Stand nicht
Bewegungsprofile Eine springende Drehzahländerung befehlen, dann eine profilierte Die profilierte Bewegung quietscht die Reifen nicht; die springende schon
Pure Pursuit Einer Geraden mit 0,5 m Startversatz folgen Er konvergiert ohne Überschwingen, und du kannst deine Vorausschau in Metern nennen
Vorausschau-Abstimmung Die Vorausschau absichtlich halbieren Es schwingt – jetzt kennst du die Fehlermode und warum ein verzögerungsfreier Simulator sie versteckt
Querfehler Eine Acht fahren und Fehler gegen Ground Truth loggen Du kannst RMS und schlimmsten Fehler angeben und sagen, wo entlang des Pfads das Schlimmste liegt
GPS Zehn Minuten lang einen statischen Fix loggen, ohne sich zu bewegen Du siehst das Wandern in Metern, dem dein Regler sonst hinterherjagen würde

Wo dieser Pfad endet

Dieser Pfad fährt einen gegebenen Pfad. Er erzeugt den Pfad nicht – das ist Planung und Kartierung, und beide zusammen sind der komplette Navigationsstack.

Er lässt außerdem drei Dinge aus. Hindernisvermeidung während der Folge – auf etwas reagieren, das auf einem bereits beschlossenen Pfad auftaucht – braucht einen lokalen Planer unter dem Folger, und das ist ein wirklich schwereres Problem als jede Hälfte allein. Ackermann- und omnidirektionale Lenkung ändern die Geometrie: Pure Pursuit passt sich an einen autoförmigen Roboter gutwillig an, aber der Schritt Krümmung-zu-Raddrehzahl ist hier konkret Differenzialantrieb – für eine Basis, die strafen kann, bei holonomer Antrieb anfangen und beachten, dass ein holonomer Roboter strikt Besseres kann als beide Regler hier, weil er Position korrigieren kann, ohne Kurs auszugeben. Und RTK-GPS, das den Außenfix von Metern auf Zentimeter bringt, ist das, was Pfadfolge draußen wirklich präzise macht – gut zu wissen, dass es existiert, bevor man schließt, Navigation draußen sei eben ungenau.

Lern-Roadmap

Der Pfad

Folge den Knoten der Reihe nach – jeder schaltet den nächsten frei, sobald du ihn erledigt hast. Dein Fortschritt wird auf diesem Gerät gespeichert.

0 / 11 erledigt

100%
Ziel

Eine Mission fahren

Fähigkeit freigeschaltet

Häufige Fragen

Häufig gestellte Fragen

Was ist der Unterschied zwischen Pfadplanung und Pfadfolge?

Planung erzeugt eine Route; Folge lässt die Räder sie fahren. A* übergibt eine Wegpunktliste und sagt überhaupt nichts über Lenkung, Geschwindigkeit oder was zu tun ist, wenn der Roboter einen halben Meter links von dort landet, wo er hinwollte. Pfadfolge ist diese fehlende Hälfte: Aus dem, wo der Roboter zu sein glaubt, und dem, wohin der Pfad führt, entscheiden, was die Räder genau jetzt tun sollen. Die meiste Robotikliteratur lehrt Planung gründlich und Folge kaum – weshalb ein Roboter mit korrektem Plan so oft umherirrt.

Wie wähle ich die Pure-Pursuit-Vorausschau?

Aus der gemessenen Regelungsverzögerung des eigenen Roboters, nicht per Versuch und Irrtum. Die Vorausschau muss so weit voraus liegen, dass der Roboter physisch dorthin kommt, gegeben wie lange seine Lenkung zum Reagieren braucht – zu kurz und er schwingt, zu lang und er schneidet Kurven. Die Zeit zwischen Lenkkkommando und tatsächlichem Drehen messen, mit der Geschwindigkeit multiplizieren und dort anfangen. Dann nach Geschwindigkeit staffeln: Derselbe Roboter braucht bei 1 m/s eine längere Vorausschau als bei 0,2 m/s, weil die Verzögerung mehr Strecke kauft.

Warum funktioniert mein Pfadfolger in der Simulation, schwingt aber am Roboter?

Fast sicher, weil die Simulation keine Verzögerung hat. Ein rein kinematisches Pure-Pursuit-Modell wird mit schrumpfender Vorausschau monoton besser – Abstimmung dagegen empfiehlt also die kürzeste Vorausschau, genau die Einstellung, die auf Hardware schwingt. Jedes Modell, gegen das man abstimmt, muss eine Lenkzeitkonstante und eine Sensorverzögerung enthalten, sonst lehrt es zuverlässig das Gegenteil dessen, was der echte Roboter braucht.

Pure Pursuit oder Stanley – welchen Pfadregler soll ich nehmen?

Pure Pursuit für Differenzialroboter und weiche Pfade; Stanley, wenn Spurtreue an der Vorderachse wichtiger ist als Weichheit. Pure Pursuit lenkt auf einen Punkt voraus auf dem Pfad – nachsichtig und von Natur aus weich, zum Preis geschnittener Kurven. Stanley kombiniert Kursfehler und Querfehler direkt – folgt enger, verträgt aber eine verrauschte Poseschätzung schlechter. Für einen kleinen Innenraumroboter ist Pure Pursuit fast immer die richtige erste Wahl.

Warum ist die Spurtreue meines Roboters draußen mit GPS so viel schlechter?

Weil der Regler in Ordnung und die Poseschätzung es nicht ist. Ein Consumer-GPS-Fix ist auf wenige Meter genau und aktualisiert mit 1–10 Hz, während Rad-Odometrie auf Zentimeter genau ist und so schnell aktualisiert, wie man ausliest. Denselben Regler mit einem Fix füttern, der zwischen Updates zwei Meter springt, und er jagt den Sprüngen hinterher. Die Lösung steckt nicht im Regler – GPS mit Odometrie und einer Kursquelle fusionieren, damit die Pose, die der Regler sieht, glatt ist, und GPS die langsame Drift korrigieren lassen statt die schnelle Schleife treiben.

Warum lenkt mein Roboter direkt nach einer Ecke vom Kurs?

Das ist die Eckpunkt-Bindung – der leiseste Fehler auf dem ganzen Pfad. Kurz nach einer Ecke projizieren beide benachbarten Pfadsegmente auf denselben Punkt in derselben Entfernung, also kann eine naive Nächstpunktsuche das bereits abgefahrene Segment treffen. Ein Regler, der nach Kurs und Querfehler lenkt, sieht dann von beidem etwa null, während er geradeaus vom Kurs fährt – und meldet die ganze Zeit perfekte Spurtreue. Bogenlänge entlang des Pfads verfolgen, nur in einem Fenster um die letzte Position suchen und Fortschritt nie rückwärts laufen lassen.