Reaktive Navigation: Einem Roboter Hindernisse meiden lehren
Du kannst einen Roboter Hindernisse erkennen und selbstständig entscheiden lassen, wohin er fährt – keine Karte, nur saubere Wahrnehmung und eine Verhaltensschleife.
Reaktive Navigation ist die erste Art, wie die meisten Roboter Fortbewegung lernen: Statt eine Karte zu halten und eine Route zu planen, reagiert der Roboter schlicht auf das, was seine Sensoren genau jetzt melden. Den Raum voraus spüren, entscheiden, bewegen – und viele Male pro Sekunde wiederholen. Es ist billig, robust und reicht, um einen Roboter durch einen vollgestellten Raum wandern zu lassen, ohne etwas zu treffen – das Verhalten hinter jedem Anfänger-Hindernisvermeidungsroboter.
Dieser Pfad baut diese Fähigkeit Schicht für Schicht. Er beginnt damit, aus einem rohen Ultraschallping eine Entfernung zu machen, der man trauen kann, lehrt dann, warum Sensormesswerte springen und wie man sie filtert. Ultraschall wird gegen Laser-Laufzeit verglichen – damit man weiß, welcher Sensor wann lügt –, ein Servoscan lässt den Roboter sehen, wohin es offen ist, das Ganze wird in eine Verhaltens-Zustandsmaschine gewickelt und die komplette Schleife in einem Simulator abgestimmt.
Die Stationen der Reihe nach durcharbeiten – jede schaltet die nächste frei. Wer das Echte bauen will, gelangt über diesen Pfad direkt zum Hindernisvermeidungs-Roboterprojekt.
Bevor du beginnst
Du musst einen Sensor auslesen und zwei Motoren antreiben können – der Motorsteuerungspfad deckt die Antriebshälfte ab. Keine Karte, keine Lokalisierung und kein Planungsalgorithmus kommen hier vor; das ist Absicht – und genau das macht reaktive Navigation zum richtigen ersten Ansatz.
Was du danach kannst
- Aus einem Ultraschallping eine Entfernung machen, nach der man handeln kann – mit Timeout, damit ein fehlendes Echo die Schleife nicht blockiert, und Medianfilter, damit ein einzelner Ausreißer den Roboter nicht herumreißt.
- Sagen, welchem Sensor man für eine gegebene Oberfläche traut – und warum ein Laser-Laufzeitsensor und ein Ultraschallsensor an völlig verschiedenen Materialien versagen.
- Einen Sensor über einen Bogen schwenken und aus den Messwerten die offenste Peilung wählen.
- Verhalten als explizite Zustände statt verschachtelter Bedingungen ausdrücken, damit „was tut der Roboter gerade“ immer eine Antwort hat.
Wo die meisten feststecken
Den Sensor auslesen, bevor das Servo stillsteht. Die Messung gehört zu dem, worauf der Sensor mitten im Schwenk zeigte – der Roboter dreht also selbstbewusst auf eine Wand zu. Nach dem Winkelkommando eine Beruhigungspause einbauen, dann erst pingen.
Kein Timeout auf dem Echo. Kommt nichts zurück – und auf weicher oder angewinkelter Fläche kommt oft nichts –, blockiert ein naives pulseIn die ganze Schleife. Der Roboter scheint zufällig einzufrieren.
Einem einzelnen Messwert trauen. Ultraschallsensoren liefern gelegentliche wilde Werte. Ein einziger falscher 20-cm-Wert im Freiraum reicht für eine Notdrehung. Drei nehmen und den mittleren verwenden.
Angewinkelte und weiche Flächen. Schall reflektiert an einer steil getroffenen Wand weg vom Sensor – eine Wand bei 45° kann sich als Freiraum lesen. Kissen und Vorhänge schlucken den Ping vollständig. Das ist eine physikalische Grenze, kein Fehler – das Verhalten muss sie überleben.
An einer Schwelle schwingen. Mit einer einzigen Stoppentfernung kippt ein Roboter in ihrer Nähe mehrmals pro Sekunde zwischen Fahren und Drehen. Zwei Schwellen verwenden – näher stoppen, weiter draußen fortsetzen –, damit das Verhalten Hysterese hat und sich festlegt.
Was du brauchst
| Was | Warum dieser Pfad es braucht | Hinweise |
|---|---|---|
| Ein HC-SR04 oder VL53L0X | Der Entfernungsinn, auf dem der ganze Pfad aufbaut | ~2 € bzw. ~5 € |
| Ein Hobbyservo | Damit der Sensor woandershin schauen kann als geradeaus | SG90 reicht völlig für einen Sensorkopf |
| Ein oder zwei Hebel-Mikroschalter | Der eine Sensor, der über eine Kollision nie lügt | Billige Versicherung gegen jedes Reichweitenversagen unten |
| Eine fahrbare Roboterbasis | Zwei Motoren und ein Treiber, die du bereits befehlen kannst | Der Motorsteuerungspfad bringt dich dorthin |
| Einen vollgestellten Boden | Die Testumgebung – sie muss eine weiche und eine angewinkelte Fläche enthalten | Ein Kissen und eine offene Tür sind die beiden besten Testhindernisse |
Warum der Pfad in dieser Reihenfolge läuft
Wahrnehmung vor Entscheidung, immer. Fast jedes fehlverhaltende Vermeidungsverhalten handelt korrekt auf einer schlechten Messung. Bis eine Entfernungsmessung vertrauenswürdig ist – Timeout auf fehlendes Echo, Median aus dreien gegen Spitzen –, erzeugt keine Verhaltenslogik einen Roboter, der sich benimmt. In umgekehrter Reihenfolge zu debuggen heißt, die Zustandsmaschine für einen Fehler zu verdächtigen, der im Sensor lebt.
Sensoren vergleichen, bevor man sich auf einen festlegt. Die Vergleichsstation existiert, weil Sonar und Laser an völlig verschiedenen Materialien versagen – und welches richtig ist, hängt ganz vom befahrenen Raum ab. Diese Entscheidung einmal wissentlich zu treffen ist viel billiger, als sie nach einem um den falschen Sensor herum gebauten Chassis zu entdecken.
Filterung vor Scan. Ein Servoschwenk multipliziert die Fehlerrate deines Sensors mit der Zahl der abgetasteten Winkel. Ist ein einzelner Messwert unzuverlässig, liefert ein Neun-Punkt-Schwenk neun Chancen, die falsche Richtung zu wählen – und der Roboter dreht selbstbewusst in eine Wand.
Scan vor Entscheidung. Ein Roboter, der nur geradeaus sehen kann, hat exakt zwei Optionen: stoppen oder blind drehen. Mehrere Peilungen messen zu können macht aus Vermeidung einen Reflex, der zur Wahl wird – und dort beginnt das Verhalten, intelligent auszusehen.
Die Zustandsmaschine vor dem Algorithmus. Der Vermeidungsalgorithmus ist eine Zustandsmaschine; die Struktur getrennt zu lernen heißt: Die letzte Station handelt von Robotik statt vom Entwirren von Kontrollfluss.
Berührungswahrnehmung durchgehend. Der Bumper steht bewusst nicht zuletzt. Jeder Entfernungssensor auf diesem Pfad hat Flächen, die er nicht sieht – ein Roboter ohne Berührungswahrnehmung ist einen Vorhang davon entfernt zu schieben, bis etwas bricht. Es ist die billigste Zuverlässigkeit am ganzen Roboter.
Kontrollpunkte: Woran man merkt, dass eine Stufe sitzt
| Stufe | Die Prüfung | Wie Bestanden aussieht |
|---|---|---|
| Entfernungsmessung | Den Sensor auf eine Wand bei 30 cm richten und eine Minute ausgeben | Stabil innerhalb ein, zwei Zentimetern, keine Nullen, kein Blockieren bei Ziel auf die Decke |
| Timeout | Den Sensor in die freie Luft richten und die Schleifenrate beobachten | Die Schleife hält ihr Intervall – kein Echo darf keinen eingefrorenen Roboter bedeuten |
| Medianfilter | Eine Hand wiederholt durch den Strahl winken | Gelegentliche wilde Werte verschwinden aus der Ausgabe; die echte Annäherung zeigt sich weiter |
| Sensorvergleich | Ein Kissen, eine Wand bei 45° und eine dunkle matte Fläche vermessen | Du kannst vorhersagen, welcher Sensor woran versagt, bevor du misst |
| Servoscan | Schwenken und Entfernung pro Winkel über eine offene Türöffnung ausgeben | Die Türöffnung ist sichtbar das Maximum, und die Messwerte sind Schwenk für Schwenk wiederholbar |
| Beruhigungspause | Deine Beruhigungspause absichtlich entfernen | Die Messwerte verschmieren über Winkel – jetzt weißt du, wie dieser Fehler aussieht |
| Zustandsmaschine | Jeden Schleifendurchlauf den aktuellen Zustand ausgeben | Du kannst immer benennen, was der Roboter tut, und jeder Übergang hat eine sichtbare Ursache |
| Bumper | Langsam drücken und Ereignisse zählen | Ein Druck erzeugt exakt ein Ereignis, nicht die neun eines rohen Schalters |
| Gesamtverhalten | Fünf Minuten in einem vollgestellten Raum laufen lassen | Er überlebt – und wenn er feststeckt, kannst du sagen, in welchem Zustand er war |
Wo dieser Pfad endet
Reaktive Navigation hat eine harte Decke, und man sollte sie schlicht benennen: Ein reaktiver Roboter lässt sich nirgendwohin schicken. Er hat kein Gedächtnis – kann also nicht in die Küche, kann nicht versprechen, den ganzen Boden abgedeckt zu haben, und kann die Ecke nicht meiden, in der er letztes Mal feststeckte. Das sind keine Implementierungslücken – das heißt es, keine Karte zu haben.
Der Pfad lässt außerdem zwei Dinge aus, die man als Nächstes will. Wandfolge ist die natürliche Erweiterung – und das erste Verhalten, das anfängt, wie ein Plan auszusehen, denn ein Roboter, der auf einer Seite festen Wandabstand hält, durchquert einen ganzen Raum deterministisch. Und Abdeckung – eine Fläche wirklich kehren statt durchwandern – ist der Ort, wo fehlendes Gedächtnis endgültig unerträglich wird.
Wenn es so weit ist, ist Planung und Kartierung die Antwort – und dieser Pfad ist das Richtige, vorher getan zu haben: Jeder Kartierungsroboter braucht weiter die hier gebauten Reflexe für den Moment, in dem sich seine Karte als falsch erweist.
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
Häufige Fragen
Häufig gestellte Fragen
Was ist reaktive Navigation in der Robotik?
Navigation ohne Karte und ohne Plan. Der Roboter spürt, was genau jetzt vor ihm ist, entscheidet, was dagegen zu tun ist, bewegt sich – und wiederholt das, oft fünfzigmal pro Sekunde. Er fragt nie, wo er ist, weil er es nie wissen muss. Das macht sie billig, robust und immun gegen die Lokalisierungsfehler, die kartenbasierte Navigation brechen – zum Preis, nichts zu können, was Gedächtnis erfordert: Sie kann zu keinem benannten Ort, kann keine Raumabdeckung garantieren und kann in einer konkaven Ecke unbegrenzt gefangen sein.
Warum fährt mein Hindernisvermeidungsroboter geradeaus gegen Wände?
Fast immer der Sensor statt der Logik, meist eine von drei Ursachen. Ein Ultraschallsensor, der eine Wand im steilen Winkel trifft, reflektiert den Ping weg statt zurück – eine Wand bei 45° liest sich also als Freiraum; das ist Physik, kein Defekt. Weiche Oberflächen wie Vorhänge und Kissen schlucken den Ping vollständig. Und wer den Sensor ausliest, bevor ein Schwenkservo fertig verfahren ist, bekommt die Entfernung dessen, worauf er mitten im Schwenk zeigte. Nach dem Winkelkommando eine Beruhigungspause einbauen – und einen Bumper nachrüsten, damit Berührung immer erkannt wird, auch wenn Entfernungsmessung versagt.
Warum zittert mein Roboter an einem Hindernis vor und zurück?
Eine einzige Stoppschwelle. Schwebt der Roboter in ihrer Nähe, kippen winzige Messungsänderungen die Entscheidung mehrmals pro Sekunde – und er stottert statt sich festzulegen. Zwei Schwellen mit Abstand dazwischen verwenden: bei 20 cm stoppen, erst bei 30 cm weiterfahren. Dieser Abstand ist Hysterese und zwingt das Verhalten zur Festlegung. Dasselbe Muster behebt fast jede schwellengesteuerte Schwingung im Robotercode, nicht nur diese.
Ultraschall oder Laser-Laufzeit zur Hindernisvermeidung?
Sie versagen an Gegensätzlichem – was die Wahl leicht macht, sobald man seine Umgebung kennt. Ultraschall hat einen breiten Kegel – etwa 15° Halbwinkel –, erkennt also ein Tischbein, das er nicht lokalisieren kann, und ist blind für weiche und steil angewinkelte Flächen. Ein VL53L0X-Lasersensor hat einen engen Strahl, lokalisiert also präzise, kann aber ein dünnes Hindernis völlig verfehlen und kämpft mit dunklen, matten und spiegelnden Flächen bei hellem Umgebungslicht. Zum Umherwandern in einem vollgestellten Raum ist der breite Sonarkegel wirklich ein Vorteil. Zum Vermessen der Entfernung zu etwas Bestimmtem gewinnt der Laser.
Brauche ich eine Zustandsmaschine zur Hindernisvermeidung?
Man braucht eine, sobald das Verhalten mehr als zwei Zustände hat – und Hindernisvermeidung erreicht das fast sofort: Fahren, Stoppen, Scannen, Drehen, Zurücksetzen, Erholen. Als verschachtelte Bedingungen geschrieben ist sie innerhalb eines Nachmittags unlesbar – und schlimmer: Man verliert die Antwort auf „was tut der Roboter gerade“, mit der jede Debugsitzung beginnt. Eine explizite Zustandsmaschine macht daraus eine einzige Variable, die man ausgeben kann.
Kann sich ein reaktiver Roboter festfahren?
Ja – und es ist eine Eigenschaft des Ansatzes statt eines behebbaren Fehlers. Ein Roboter ohne Gedächtnis in einer konkaven Ecke oder U-förmigen Sackgasse dreht zur offensten Richtung, fährt – und landet dort, wo er startete, für immer. Die üblichen Milderungen sind eine Zufallskomponente in der Drehwahl und ein Feststeckdetektor, der nach mehreren Fehlversuchen ein größeres Befreiungsmanöver auslöst. Die echte Lösung ist Gedächtnis, also eine Karte – und das ist ein anderer Pfad.