BaupfadEinsteigerEin Wochenende

Hindernisvermeidung bauen: Tasten, Scannen, Lenken

Ein Roboter, der selbstständig umherfährt – Hindernisse erkennt, nach Lücken scannt und zum freien Raum lenkt, aus verstandenen und simulierten Bauteilen gebaut.

Technisches Schema: Hindernisvermeidung bauen: Tasten, Scannen, LenkenCLEARANCE FIELD

Ein Hindernisvermeidungs-Roboter ist der natürliche nächste Aufbau nach einem Linienfolger. Ein Linienfolger folgt – er fährt einer Linie nach, die jemand für ihn gezeichnet hat. Dieser Roboter entscheidet: ohne Strecke und ohne Karte tastet er den Raum um sich ab und wählt, wohin er fährt. Dieser eine Unterschied – auf die Welt reagieren statt ihr folgen – ist der erste echte Geschmack von Autonomie, und er ist noch einfach genug, um ihn vollständig zu verstehen.

Der Kern ist eine kurze, sich wiederholende Schleife: tasten–scannen–entscheiden–drehen. Der HC-SR04-Ultraschallsensor tastet vorwärts und schätzt per Echolaufzeit die Distanz; ist etwas näher als eine Sicherheitsschwelle, stoppt der Roboter, schwenkt den Sensor auf einem SG90-Servo links und rechts und dreht zur offensten Peilung. Diese Schwelle ist nicht willkürlich – sie ist eine Sicherheitsdistanz aus aktueller Geschwindigkeit, Tast-Entscheidungs-Stell-Latenz, Bremsweg (der mit dem Quadrat der Geschwindigkeit wächst), Roboterradius und Marge, alle sichtbar als Anhaltewegkurve im Simulator.

Du fügst Bauteile hinzu, die ein mobiler Roboter braucht, und lernst, was jedes tut: einen Arduino Uno für gutmütige 5-V-Logik, den Ultraschallsensor und seine Blindzone (der Mindestbereich, unter dem er nichts melden kann), den Servo, der dem Strahl einen zweiten Blickwinkel gibt, die L298N-H-Brücke, die Motorstrom schaltet, den Logikpins nicht liefern können, zwei TT-Getriebemotoren, deren Getriebe Drehzahl gegen nutzbares Drehmoment tauscht, ein 2WD-Chassis mit Stützrad für Differenziallenkung und einen Akkupack, der Motor und Logik auf getrennten Schienen versorgen muss. Der Technikbaum führt dich außerdem durch zwei Lernpfade – Motorregelung und reaktive Navigation –, sodass dieselben PWM-, Odometrie- und Filterideen aus dem Linienfolger hier im Navigationskontext wiederkehren.

Dann – bevor du etwas ausgibst oder eine Fehlverdrahtung riskierst – stimme das Ausweichverhalten im Browser-Simulator ab, bis es sauber durch vollgestellten Raum navigiert. Der Arbeitsraum dort ist zweidimensional von oben mit instantanen, rauschfreien Strahlen; ein echter Ultraschallstrahl spreizt etwa 15°, wird vom eigenen Roboterkörper blockiert und von weichen oder schrägen Flächen gestört – also filterst du Messwerte, fügst einen Medianfilter und eine kurze Beruhigungsverzögerung nach der Servobewegung hinzu, bevor du einer Distanz auf Hardware vertraust. Eine sichere Stoppdistanz und eine Freiraum-Regel in der Simulation zu finden, nimmt dem Roboter den größten Teil des Ratens ab, bevor er sich je bewegt.

Erst dann verdrahtest du den echten Roboter – Trigger und Echo an die richtige Spannung, Servosignal an einen PWM-fähigen Pin, Motor-PWM und -Richtung an den Treiber, Motorakku nur an den VM-Pin des Treibers, jede Masse gemeinsam verbunden – und lässt ihn über einen Boden mit Kisten oder Stühlen fahren. Dieselben Tast- und Filterlektionen führen direkt in das Micromouse-Labyrinth mit Wänden, falls du später Kartierung willst, oder in die ROS-2-Navigation, falls du einen Raspberry Pi hinzufügst.

Folge dem Technikbaum unten von oben nach unten. Jeder Knoten öffnet sich, sobald seine Voraussetzungen erfüllt sind, und dein Fortschritt wird auf diesem Gerät gespeichert, sodass du den Roboter über ein Wochenende bauen kannst, ohne den Faden zu verlieren.

Stückliste

Bauteil Menge Ca. Kosten Hinweise
Arduino Uno 1 $5–8 5-V-Logik hilft hier wirklich – das Echo des HC-SR04 hat 5 V
HC-SR04 1 $2 Ein VL53L0X ist ein guter zweiter Sensor, kein Ersatz
SG90-Servo 1 $2 Für den Scankopf. MG90S, wenn er stundenlang laufen soll
L298N 1 $2–4 Oder ein TB6612FNG, der weit weniger vom Akku verschwendet
TT-Getriebemotor 2 $4
2WD-Chassis 1 $6–10
Akkupack 1 $6 6×AA NiMH oder 2×18650
Anfahrschalter 2 $1 Dazu nehmen. Siehe unten

Gesamt: ca. $30–40.

Die zwei Anfahrschalter sind die besten vierzig Cent am Roboter, und sie sind das Bauteil, das die meisten Aufbauten weglassen. Jeder Distanzsensor hat Flächen, die er nicht sieht – ein Sonar ist blind für Vorhänge und für Wände in steilem Winkel –, und ein Roboter ohne Berührungssensorik schiebt einen Vorhang, bis etwas nachgibt. Zwei Schalter hinter einem umlaufenden Stoßfänger machen aus „weicht meist aus“ ein „bleibt nie an etwas Unsichtbarem hängen“.

Wie alles verbunden wird

Von Nach Hinweis
HC-SR04 VCC, GND 5 V, GND ~15 mA, mit Spitze während eines Pings
HC-SR04 Trig D9 Beliebiger digitaler Pin
HC-SR04 Echo D10 5-V-Ausgang – ok am Uno, braucht einen Teiler am 3,3-V-Board
Servosignal D6 Die Servo-Bibliothek nutzt Timer 1, der auch D9/D10-PWM treibt
Servostrom Separate 5 V, gemeinsame Masse 650 mA blockiert – nicht der 5-V-Pin des Arduino
Treiber ENA, ENB D5, D3 PWM-fähige Pins. Enable-Jumper des L298N entfernen
Treiber IN1–IN4 D8, D7, D4, D2
Anfahrschalter D11, D12, INPUT_PULLUP COM an Masse, NO an den Pin
Akku + Treiber VM / +12V Niemals der Arduino
Alle Massen Ein Punkt Arduino, Treiber, Servoversorgung, Akku-Minus

Beachte den Timer-Konflikt: Die Servo-Bibliothek übernimmt Timer 1, der auf einem Uno PWM auf Pins 9 und 10 treibt. Lege Motor-PWM auf 3, 5, 6 oder 11 und den Servo auf einen beliebigen Pin, und das Problem entsteht nie. Lege ein Motor-Enable auf Pin 9, und seine Drehzahlsteuerung hört lautlos auf zu funktionieren, sobald du einen Servo anhängst.

Die Stoppdistanz, berechnet statt geraten

Die Stoppschwelle ist die wichtigste Zahl in diesem Projekt, und sie ist nicht willkürlich. Sie ist die Summe aus vier Distanzen:

stop_distance = (v x t_latency) + (v^2 / (2 x a_brake)) + robot_radius + margin
Term Woher er kommt Typisch
Tast- und Entscheidungslatenz Ping (bis 25 ms), Servo-Beruhigung, Schleifenperiode 60–100 ms
Bremsweg Geschwindigkeit zum Quadrat durch doppelte Verzögerung Wächst schnell
Roboterradius Vorderkante des Chassis bis Drehmitte 80–100 mm
Marge Weil der Sensorkegel 15° breit ist und über Weiches lügt 50 mm

Durchgerechnet für einen Roboter mit 0,3 m/s bei 80 ms Latenz und 1,0 m/s² Bremsverzögerung:

= (0.3 x 0.08) + (0.09 / 2.0) + 0.09 + 0.05
= 0.024 + 0.045 + 0.09 + 0.05 = 0.21 m

Also etwa 21 cm. Nun die Geschwindigkeit auf 0,6 m/s verdoppelt:

= 0.048 + 0.18 + 0.09 + 0.05 = 0.37 m

Die Schwelle hat sich nicht verdoppelt – sie ist um 76 % gewachsen, weil der Bremsterm mit dem Quadrat der Geschwindigkeit geht. Deshalb fährt ein Roboter, der im Schritttempo verlässlich ausweicht, bei höherem Tempo gegen Dinge – und warum die Lösung eine geschwindigkeitsabhängige Schwelle ist statt einer großen festen Zahl, die den Roboter überall ängstlich macht.

Baue ihn in Meilensteinen

Nr. Meilenstein Der Test Bestanden, wenn
1 Motoren fahren Vorwärts, rückwärts, Drehung beide Richtungen, aufgebockt Alle sechs Zustände gehen; du kennst das Totband jedes Rads
2 Distanz liest Auf Wand in 30 cm zielen und eine Minute ausgeben Stabil auf ein, zwei Zentimeter, keine Nullen
3 Timeout geht Auf freie Luft und an die Decke zielen Die Schleife hält ihre Rate – kein Echo darf den Roboter einfrieren
4 Medianfilter Wiederholt Hand durch den Strahl winken Wilde Einzelmesswerte verschwinden; echte Annäherung zählt weiter
5 Servo schwenkt −60°, 0°, +60° befehlen und Distanz pro Winkel ausgeben Wiederholbar von Schwenk zu Schwenk, mit Beruhigungsverzögerung vor jedem Ping
6 Beruhigungsverzögerung bewiesen Verzögerung absichtlich entfernen Messwerte verschmieren über Winkel – jetzt kennst du diesen Fehler
7 Stoppschwelle Auf Wand zufahren und stoppen lassen Stoppt mit deiner berechneten Marge, nicht per Zufall
8 Drehentscheidung Vor Ecke mit einer offenen Seite stellen Dreht zur offenen Seite, nicht zufällig
9 Hysterese An der Schwelle balancieren lassen Entscheidet sich, statt zu stottern
10 Anfahr-Recovery Gegen ein Kissen fahren lassen Sonar übersieht es, Schalter fängt es, Roboter setzt zurück und dreht
11 Freie Fahrt Fünf Minuten im vollgestellten Raum Überlebt; wo er hängen bleibt, kannst du den Zustand benennen

Meilenstein 10 trennt eine Demo von einem Roboter. Ein Kissen schluckt den Ultraschallpuls vollständig – der Sensor meldet freien Raum, und der Roboter fährt mit voller Geschwindigkeit hinein. Ohne Anfahrschalter schiebt er dann, bis die Motoren blockieren.

Fehlersuche

Symptom Wahrscheinliche Ursache Lösung
Roboter friert in zufälligen Abständen ein pulseIn ohne Timeout 25000-µs-Timeout übergeben; „kein Echo“ explizit behandeln
Notstopps im leeren Raum Timeout als 0 cm gewertet Timeout heißt fern, nicht nah. Sentinel zurückgeben
Fährt in Vorhänge und Kissen Schall absorbiert – Physik, kein Bug Anfahrschalter hinzufügen
Fährt schräg in Wände Ping reflektiert am Empfänger vorbei Gleiche Lösung; außerdem mehr Winkel scannen
Dreht selbstbewusst in eine Wand Ausgelesen, bevor der Servo stand 100–200 ms nach Winkelbefehl warten, dann tasten
Stottert an Hindernissen Eine Schwelle, keine Hysterese Bei 20 cm stoppen, erst ab 30 cm weiterfahren
Servo zittert, Board setzt zurück Servostrom durch den Arduino Eigene 5-V-Versorgung für den Servo, gemeinsame Masse
Motordrehzahlsteuerung tot Servo-Bibliothek hat Timer 1 (Pins 9, 10) Motor-PWM auf 3, 5, 6 oder 11 legen
Sitzt für immer in einer Ecke Kein Gedächtnis – reaktiver Navigation inhärent Zufallskomponente und Feststeck-Erkennung mit Befreiung
Weicht langsam gut aus, fährt schnell dagegen Feste Schwelle, quadratischer Bremsterm Schwelle geschwindigkeitsabhängig machen
Wilde Messwerte bei zwei Robotern Sie hören gegenseitig ihre Chirps Ping-Timing versetzen

Wie es weitergeht

Wandfolgen hinzufügen. Ein Roboter, der auf einer Seite festen Wandabstand hält, durchquert einen Raum deterministisch statt umherzuwandern – und es ist das erste Verhalten, das wie ein Plan aussieht. Kleine Codeänderung, großes konzeptionelles Plus.

Zweiten Sensortyp hinzufügen. Ein VL53L0X versagt auf fast genau den entgegengesetzten Flächen wie das Sonar – dunkel-matt und spiegelnd gegen weich und schräg. Zusammen decken sie weit mehr vom Raum ab als jeder allein.

Die Grenze akzeptieren und weiterziehen. Ein reaktiver Roboter kann nirgendwohin geschickt werden, kann nicht versprechen, dass er den Boden abgedeckt hat, und kann in einem hufeisenförmigen Raum ewig kreisen. Das sind Eigenschaften ohne Karte, keine Bugs. Wenn sie zu zählen beginnen, fügt die Micromouse Kartierung und Planung hinzu, und der Abdeckungsroboter geht die „War ich überall?“- Frage direkt an.

Projekt-Roadmap

Der Baupfad

Folge dem Technikbaum von den Bauteilen bis zum funktionierenden Roboter. Jeder Knoten wird freigeschaltet, sobald seine Voraussetzungen erledigt sind, und dein Fortschritt wird auf diesem Gerät gespeichert.

0 / 18 erledigt

100%
Lernpfad

Grundlagen der Roboterelektronik

Lernpfad

Pfad öffnen
Bau

Roboter verdrahten

45 Min.

Bau

Aufbauen und fahren lassen

60 Min.

Ziel

Hindernisvermeidungs-Roboter fertig

Du hast es gebaut

Bauteile

Tutorials in diesem Pfad

Üben, bevor du verdrahtest

Im Live-Simulator abstimmen

Der Baupfad führt durch ein Browser-Labor. Bring das Verhalten hier in Ordnung und übertrage deine Einstellungen dann auf den echten Roboter.

Häufig gestellte Fragen

Wie funktioniert ein Hindernisvermeidungs-Roboter?

Er fährt vorwärts, während ein Ultraschallsensor die Distanz voraus überwacht. Ist etwas näher als eine gesetzte Schwelle, stoppt der Roboter, schwenkt den Sensor auf einem Servo links und rechts, misst die Distanz in jede Richtung und dreht dorthin, wo es am offensten ist – dann fährt er weiter. Das Ganze ist eine kurze Tasten-Scannen-Entscheiden-Drehen-Schleife, die mehrmals pro Sekunde läuft.

Welcher Sensor ist der beste für einen Hindernisvermeidungs-Roboter?

Der HC-SR04-Ultraschallsensor ist der Standard: billig, einfach zu verdrahten und bis wenige Meter verlässlich. Ein Time-of-Flight-Sensor liefert eine engere, schnellere, präzisere Messung, falls nötig – doch für einen ersten Ausweicher ist Ultraschall das richtige Verhältnis aus Kosten und Einfachheit.

Muss ich Bauteile kaufen, bevor ich mit diesem Projekt beginne?

Nein. Sensorik und Ausweichlogik laufen im Browser-Simulator, sodass du das Verhalten verstehen und abstimmen kannst, bevor du etwas kaufst. Nur die letzten Bauschritte – Verdrahtung und Montage – brauchen den echten Arduino, HC-SR04, Servo, Treiber, Motoren, Chassis und Akku.

Warum funktioniert mein Hindernisvermeidungs-Roboter nicht?

Die drei üblichen Verdächtigen sind eine verrauschte oder blockierte Ultraschallmessung (Medianfilter hinzufügen und Sensor freihalten), das Auslesen des Sensors, bevor der Servo fertig verfahren ist (kurze Beruhigungsverzögerung hinzufügen), und Motoren direkt am Arduino statt über den Treiber (was einbricht und das Board zurücksetzt).

Worin unterscheidet er sich von einem Linienfolger?

Ein Linienfolger folgt einer für ihn ausgelegten Strecke; ein Hindernisvermeidungs-Roboter hat keine Strecke und muss selbst entscheiden, wohin er fährt. Er fügt einen Scan-Sensor und eine echte Entscheidungsschleife hinzu – was ihn zum natürlichen zweiten Roboter nach einem Linienfolger macht.