# [Abschlussprojekt] Entwurf und Implementierung eines Linienverfolgungs- und Materialtransport-Robotersystems basierend auf LEGO EV3
## Zusammenfassung
In diesem Projekt wurde ein intelligenter Linienverfolgungs- und Materialtransport-Roboter auf Basis der LEGO MINDSTORMS EV3-Plattform entworfen und implementiert. Um die Herausforderungen der Erkennung mehrerer Kreuzungen auf komplexen Strecken, der dynamischen Linienverfolgung und der Aufnahme bestimmter Objekte zu bewältigen, wurde in der unteren Bewegungsebene ein verbesserter Proportional-Differential (PD)-Regelalgorithmus auf Basis eines diskreten Zeitsystems eingeführt. In Kombination mit einem differentialgetriebenen Bewegungsmodell wurde eine sanfte und adaptive Trajektorienverfolgung des Roboters realisiert. Für die makroskopische Pfadplanung und Aufgabenausführung wurde ein deterministisches Entscheidungsbaummodell auf Basis der Booleschen Logik und eines endlichen Automaten (Finite State Machine, FSM) entwickelt, das typische technische Probleme wie „Sensor-Blindung“, „falsche Kreuzungserkennung“ und „falsch-positive Zielerkennung“ löst. Dieser Aufsatz erläutert detailliert die theoretischen Grundlagen des Regelungssystems, die mathematische Herleitung der Algorithmen, das kooperative Software-Hardware-Design und vergleicht die Leistung verschiedener Regler auf geraden, elliptischen und komplexen 8-förmigen Trajektorien unter Bezugnahme auf die Geschichte der Kybernetik und relevante empirische Studien. Gleichzeitig werden Optimierungsmaßnahmen für die Rechenleistung auf unterer Ebene vorgeschlagen, die auf die physikalischen Eigenschaften eingebetteter Systeme (wie CPU-Hunger, PWM-Regelungsantwort) abzielen$^{[1]}$.
## 1. Einleitung
Im Bereich der mobilen Robotik sind die Linienverfolgung (Line Tracking) und die autonome Navigation die Grundlage für die Durchführung komplexer Aufgaben. Der Kern liegt in der Entwicklung eines zuverlässigen Reglers, der mit dynamischen Umgebungen und Hardwareeinschränkungen umgehen kann. In der frühen Entwicklung der Automatisierungstechnik wurde häufig eine einfache Ein-Aus-Regelung (Bang-Bang- oder ON-OFF-Regelung) eingesetzt. Diese „Schwarz-Weiß“-Regelungslogik führt jedoch oft zu starken Schwingungen der Roboterbewegung, erhöhtem mechanischem Verschleiß und einer hohen Wahrscheinlichkeit der Entgleisung bei hohen Geschwindigkeiten. Da ein zweirädriger Differentialroboter ein typisches nicht-holonomes System (Non-holonomic constraint) darstellt, dessen Quergeschwindigkeit stets Null ist und laterale Abweichungen nur durch die Gierwinkelgeschwindigkeit korrigiert werden können, werden hohe Anforderungen an die Glätte und Genauigkeit der Lenkbefehle gestellt$^{[1]}$.
Um die Robustheit und das dynamische Ansprechverhalten des Systems zu verbessern, wurde in diesem Projekt der in der Industrie weit verbreitete PID (Proportional-Integral-Derivative)-Regelkreisalgorithmus eingeführt$^{[2]}$. Die Geschichte der PID-Regelungstheorie reicht bis in die 1890er Jahre mit dem Entwurf von Drehzahlreglern zurück. Im Jahr 1922 wurde sie erstmals von dem russisch-amerikanischen Ingenieur Nicolas Minorsky bei der Entwicklung eines automatischen Schiffssteuerungssystems für die US-Marine einer strengen mathematischen theoretischen Analyse unterzogen$^{[2]}$. Minorsky beobachtete die Handlungen von Steuerleuten und stellte fest, dass eine gute Regelung nicht nur den aktuellen Fehler, sondern auch den akkumulierten Fehler der Vergangenheit und den Trend der Fehleränderung berücksichtigen muss$^{[2]}$. Darauf aufbauend wurde in dieser Studie der traditionelle PID-Regler unter Verwendung der Multi-Photosensor-Fusionstechnologie des LEGO EV3 diskretisiert und dimensional reduziert, um eine adaptive Verfolgung der Führungslinie zu erreichen. Relevante empirische Studien zeigen, dass der Einsatz eines PID-Reglers auf einem LEGO EV3-Roboter hochfrequente Schwingungen des Fahrgestells effektiv unterdrücken und die Effizienz und Stabilität der Linienverfolgung auf komplexen Strecken verbessern kann$^{[1]}$.
LEGO MINDSTORMS EV3 ist das dritte Robotik-Kit von LEGO. Der programmierbare Kernstein ist mit einem TI Sitara AM1808-Prozessor auf ARM9-Architektur mit einer Taktfrequenz von 300 MHz ausgestattet und läuft unter einem leichtgewichtigen Linux-Betriebssystem$^{[3]}$. EV3 unterstützt eine Vielzahl von Sensoren (Farbsensor, Ultraschallsensor, Gyroskop usw.) und Servomotoren und kann über die grafische Programmierumgebung LabVIEW oder höhere Programmiersprachen wie MicroPython programmiert werden$^{[3]}$. Diese Hardwareeigenschaften bilden die Grundlage für die Implementierung von Regelalgorithmen.
## 2. Kernalgorithmus der unteren Ebene: Differentialkinematik und verbesserte PD-Regelung
Der Kern der Linienverfolgung besteht darin, durch die Rückmeldung des Lichtstroms der Farbsensoren in Echtzeit den Fehler der Abweichung des Fahrzeugs von der Führungslinie zu berechnen und diesen in eine dynamische Drehzahldifferenz der linken und rechten Antriebsräder umzuwandeln, wodurch ein Korrekturmoment erzeugt wird. In diesem Projekt wurde eine Hardwareanordnung mit zwei Farbsensoren verwendet, die die Linie überspannen, und ein digitaler PD-Regler wurde an die Abtasteigenschaften des eingebetteten Mikroprozessors angepasst.
### 2.1 Kinematisches Modell des differentialgetriebenen Roboters
Vor der Entwicklung des Regelalgorithmus müssen die kinematischen Eigenschaften des Roboterfahrgestells geklärt werden, die als physikalische Grundlage für die Ausgabe der Stellgrößen dienen. Die Lineargeschwindigkeiten des linken und rechten Antriebsrads seien $V_L$ bzw. $V_R$, der Abstand zwischen den beiden Radmitten (Radstand) sei $d$ und der Radius der Antriebsräder sei $r$. Gemäß dem nicht-holonemen Bewegungsmodell eines Radmobilen Roboters (Wheeled Mobile Robot) können die gesamte Lineargeschwindigkeit $V$ des Roboterschwerpunkts und die Gierwinkelgeschwindigkeit $\omega$ durch die folgenden Gleichungen abgeleitet werden$^{[2]}$:
$$V(t) = \frac{V_R(t) + V_L(t)}{2}$$
$$\omega(t) = \frac{V_L(t) - V_R(t)}{d}$$
Aus diesem mathematischen Modell ist ersichtlich, dass durch Anlegen gleich großer, aber entgegengesetzt gerichteter Differenzialausgleichswerte an das linke und rechte Rad (d. h. Änderung der relativen Größe von $V_L$ und $V_R$) die Gierwinkelgeschwindigkeit $\omega$ des Roboters linear gesteuert werden kann. Diese Differenzialkompensation ist das erforderliche Lenkmoment des Systems und bildet die dynamische Grundlage für die Korrektur der Roboterhaltung.
### 2.2 Mathematische Herleitung des diskreten PID-Regelalgorithmus
Die klassische PID-Regelgleichung im kontinuierlichen Zeitbereich zielt darauf ab, die Stellgröße durch Proportional-, Integral- und Differentialoperationen des Fehlers zu berechnen. Ihre Standardformel lautet$^{[2]}$:
$$u(t) = K_p e(t) + K_i \int_{0}^{t} e(\tau) d\tau + K_d \frac{de(t)}{dt}$$
Dabei sind $K_p, K_i, K_d$ der Proportionalverstärkung, der Integralverstärkung bzw. der Differentialverstärkung, und $e(t)$ ist der Fehler zwischen dem Sollwert und dem Rückmeldungswert des Systems$^{[2]}$.
Der Hauptprozessor des EV3 (ARM9) ist jedoch ein digitales eingebettetes System, das auf diskreter Zeitabtastung basiert und keine kontinuierlichen Differential- und Integraloperationen direkt verarbeiten kann. Daher müssen wir die obige kontinuierliche Gleichung mit der Methode der finiten Differenzen diskretisieren. Angenommen, die konstante Abtastperiode des Mikroprozessors sei $\Delta t$ und der Fehler der $k$-ten Abtastung sei $E(k)$. Nach dem Prinzip der rückwärtigen finiten Differenzen kann die Ableitung erster Ordnung durch die Differenzengleichung $\frac{E(k) - E(k-1)}{\Delta t}$ und das Integral durch die diskrete Summe $\sum_{j=0}^{k} E(j) \Delta t$ angenähert werden. Daraus ergibt sich die positionsbezogene digitale PID-Gleichung$^{[2]}$:
$$U(k) = K_p E(k) + K_i \sum_{j=0}^{k} E(j) \Delta t + K_d \frac{E(k) - E(k-1)}{\Delta t}$$
Bei der Linienverfolgung mit symmetrischen Doppelphotosensoren ändert sich die Krümmung der Führungslinie relativ schnell. Wenn der Integralterm $I$ beibehalten wird, akkumuliert der Integrator bei großen Änderungen des Sollwerts (z. B. bei Kurven mit großer Krümmung) einen übermäßigen Fehler. Dies kann dazu führen, dass die Stellgröße durch die oberen und unteren Grenzen abgeschnitten wird, was als „Integral Windup“ (Integratorsättigung) bezeichnet wird. Dies äußert sich darin, dass die Systemausgabe an der Sättigungsgrenze verharrt und selbst bei einem Vorzeichenwechsel des Fehlers nicht rechtzeitig reagieren kann, was letztendlich zu einem Überschwingen des Fahrzeugs oder einem Verlassen der Strecke führt. Daher wurde in diesem Projekt das traditionelle Modell durch Dimensionsreduktion optimiert, der Integralterm weggelassen und die konstante Abtastperiode $\Delta t$ implizit in die Koeffizienten integriert, um den diskreten digitalen PD-Regler zu erhalten$^{[2]}$:
$$U(k) = K_p \cdot E(k) + K_d \cdot [E(k) - E(k-1)]$$
### 2.3 Systemebenen-Abbildung und Parameteranalyse des Lenkausgleichsalgorithmus
Im tatsächlichen Softwarecode des Projekts wird die folgende Lenkausgleichsgleichung (Turn) durch verschachtelte mathematische Module auf höherer Ebene implementiert:
$$Turn = (a-b) \times 0.8 + ((a-b)-c) \times 0.6$$
Diese Gleichung steht in einer Korrespondenzbeziehung zu dem oben abgeleiteten diskreten digitalen PD-Regler. Zunächst zur Erfassung des Fehlersignals: $a$ repräsentiert den digitalen Wert der reflektierten Lichtintensität des linken Sensors, $b$ den des rechten Sensors. Basierend auf dem Prinzip der diffusen Reflexion ist das aktuelle Fehlersignal $E(k) = a - b$. Wenn das Fahrzeug zentriert ist, befinden sich die linken und rechten Sensoren an der Grenze zwischen Schwarz und Weiß, die Lichtabsorption ist ähnlich, sodass $a-b \approx 0$ ist. Weicht das Fahrzeug nach rechts ab, gelangt der linke Sensor in den weißen, stark reflektierenden Bereich und der rechte Sensor in den schwarzen, schwach reflektierenden Bereich, wodurch ein positives Fehlersignal entsteht.
Zweitens entspricht $(a-b) \times 0.8$ in der Gleichung dem Proportionalterm (Proportional Term). Die Proportionalregelung berücksichtigt nur den aktuellen Fehler und erzeugt ein Rückstellmoment, das proportional zur aktuellen Abweichung ist. Die Proportionalverstärkung $K_p = 0.8$ bestimmt die Stärke der Reaktion des Systems auf Störungen: Je größer die Abweichung, desto stärker das ausgegebene Korrekturmoment.
Schließlich bildet $((a-b)-c) \times 0.6$ den Differentialterm (Derivative Term) ab, wobei $c$ den im Register gespeicherten historischen Fehler des vorherigen Zyklus $E(k-1)$ darstellt. Der Differentialterm wirkt wie ein Dämpfer des Systems. Er berechnet die erste Ableitung des Fehlers, um zukünftige Trends vorherzusagen. Wenn sich das Fahrzeug unter der Wirkung der Proportionalregelung der Mittellinie nähert, ist der aktuelle Positionsfehler $E(k)$ zwar noch größer als 0, aber seine Änderungsrate $\Delta E(k)$ ist bereits negativ geworden. Zu diesem Zeitpunkt erzeugt der Differentialterm vorzeitig ein entgegengesetztes Bremsmoment, das die Gesamtstellgröße reduziert und so das Überschwingen (Overshoot) und die Schwingung des unterdämpften Systems unterdrückt. $K_d = 0.6$ ist der nach der Systemabstimmung ermittelte Differentialdämpfungskoeffizient. Es ist zu beachten, dass ein idealer Differenzierer empfindlich auf hochfrequentes Rauschen reagiert. Da die Abtastfrequenz dieses Systems jedoch relativ hoch ist und die Fehlerquelle nur aus der Differenz der beiden Lichtstromwerte besteht, wurde auf die zusätzliche Implementierung eines Tiefpassfilters verzichtet.
### 2.4 Nichtlineares Modell der dynamisch adaptiven Basisgeschwindigkeit (Base Speed)
Herkömmliche Linienverfolgungsroboter verwenden meist eine konstante Basisgeschwindigkeit. Auf einer kombinierten Strecke mit Geraden und Kurven muss die Basisgeschwindigkeit jedoch dynamisch an die Pfadkrümmung angepasst werden. In diesem Projekt wurde ein adaptives Geschwindigkeitsrückkopplungs-Regelmodell auf Basis des absoluten Fehlers eingeführt:
$$BaseSpeed = 100 - |a-b| \times 0.6$$
Diese Gleichung stellt eine nichtlineare negative Rückkopplungs-Abbildungsfunktion $f(|e|)$ dar. Die Konstante $100$ ist das maximal zulässige PWM-Tastverhältnis des Fahrgestellmotors bei der aktuellen Versorgungsspannung. Im stationären Zustand auf einer Geraden ist das Fahrzeug zentriert, der Positionsfehler ist klein ($|a-b| \approx 0$), die Basisgeschwindigkeit liegt nahe der Obergrenze von $100$, was ein schnelles Vorwärtsfahren auf der Geraden ermöglicht. In einer Kurve nimmt der absolute Fehler zu, und das System senkt die Basisgeschwindigkeit automatisch durch die negative Rückkopplung, wodurch die für die Kurvenfahrt erforderliche Zentripetalkraft und das Risiko des Schleuderns verringert werden.
### 2.5 Mathematische Gesamtdarstellung des vollständigen Regelgesetzes und Python-Simulationsverifikation
Durch die Kombination der beiden obigen Kernformeln ergibt sich das vollständige diskrete PD-Regelgesetz dieses Projekts:
$$\begin{aligned}
BaseSpeed(k) &= 100 - |E(k)| \times 0.6 \\
Turn(k) &= E(k) \times 0.8 + [E(k) - E(k-1)] \times 0.6 \\
LeftPWM(k) &= BaseSpeed(k) - Turn(k) \\
RightPWM(k) &= BaseSpeed(k) + Turn(k)
\end{aligned}$$
Dabei ist $E(k) = a(k) - b(k)$ das Fehlersignal des aktuellen Abtastzyklus und $E(k-1)$ der historische Fehler des vorherigen Zyklus. Die PWM-Befehle für das linke und rechte Rad werden durch die lineare Kombination der Basisgeschwindigkeit und des Lenkausgleichs erhalten. Wenn $Turn > 0$ ist, wird das linke Rad verlangsamt und das rechte Rad beschleunigt, was eine Linkskurve bewirkt; umgekehrt wird eine Rechtskurve eingeleitet.
Zur Verifikation des Konvergenzverhaltens dieses Regelgesetzes wurde ein diskretes Zeitsimulationssystem auf Basis von Python entwickelt. Dieses Simulationssystem modelliert die folgenden physikalischen Elemente:
1. **Kreisförmiges Sensorerkennungsmodell**: Der Erkennungsbereich jedes Farbsensors wird als kreisförmige Fläche mit einem Durchmesser von 1,5 cm modelliert. Durch numerische Integration wird die Überlappungsfläche dieser kreisförmigen Fläche mit der schwarzen Führungslinie (Breite 2,0 cm) berechnet, um die reflektierte Lichtintensität präzise zu ermitteln$^{[1]}$.
2. **Differentialgetriebene Kinematik**: Basierend auf den geometrischen Standardparametern der EV3-Räder (Radstand 12,0 cm, Radradius 2,8 cm) werden die PWM-Befehle in Vorwärtsgeschwindigkeit und Gierwinkelgeschwindigkeit umgesetzt.
3. **Nachlaufende Sensoranordnung**: Die Sensorachse befindet sich 10,0 cm vor der Antriebsradachse. Diese „Nachlauf“-Konfiguration führt einen Hebelarmeffekt ein, der eine der Ursachen für das oszillierende dynamische Verhalten ist.
4. **Gaußsches Messrauschen**: Den Sensorwerten wird weißes Gaußsches Rauschen mit einer Standardabweichung von 0,3 überlagert, um optische Störungen in der realen Umgebung zu simulieren.
Die Anfangsbedingungen der Simulation sind: anfänglicher Gierwinkel des Fahrzeugs $+10^\circ$ (nach rechts geneigt), Messwert des linken Sensors $a=10$ (vollständig über der schwarzen Linie), Messwert des rechten Sensors $b=50$ (teilweise über dem Rand der schwarzen Linie). Der Simulationszeitschritt beträgt $\Delta t = 0.1$ s, der anfängliche Gierwinkel $+10^\circ$, die anfänglichen Sensorwerte $a=10, b=50$.
**Abbildung 1: Simulationsergebnisse der diskreten PD-Regelung des EV3-Linienverfolgungsroboters**
Abbildung 1 zeigt die zeitlichen Verläufe von vier Gruppen wichtiger physikalischer Größen:
**Teil (a) — Sensorreflexionsgrad und Fehlersignal**: Die Messwerte des linken Sensors $a(t)$ (rot) und des rechten Sensors $b(t)$ (blau) im Zeitverlauf. Zum Anfangszeitpunkt $a=10$ (vollständig schwarz), $b=50$ (halb schwarz, halb weiß), Fehler $e(t)=a-b=-40$. Mit dem Eingreifen des PD-Reglers konvergiert das Fehlersignal innerhalb von etwa 5 Sekunden schnell gegen Null und schwankt dann leicht um den Nullpunkt. Dieses Konvergenzverhalten bestätigt die stationäre Nachführfähigkeit des PD-Regelgesetzes.
**Teil (b) — PD-Regelsignale**: Die zeitlichen Verläufe der Basisgeschwindigkeit $BaseSpeed(t)$ (grün) und des Lenkausgleichs $Turn(t)$ (rot). Der anfänglich große Fehler führt zu einer Reduzierung der Basisgeschwindigkeit auf $100 - 40 \times 0.6 = 76$, während der Lenkausgleich einen großen negativen Wert erzeugt ($Turn \approx -40 \times 0.8 + (-40-0) \times 0.6 = -56$), was das rechte Rad beschleunigt und das linke Rad verlangsamt, wodurch ein linksdrehendes Korrekturmoment entsteht. Mit der Konvergenz des Fehlers steigt die Basisgeschwindigkeit wieder auf nahezu 100 an, der Lenkausgleich geht gegen Null, und das System geht in den stationären Geradeausfahrt-Modus über.
**Teil (c) — Roboterpose und Schwingungskonvergenz**: Die zeitlichen Verläufe des Gierwinkels $\theta(t)$ (orange), des lateralen Versatzes $y(t)$ (violett) und der Gierwinkelgeschwindigkeit $\omega(t)$ (blau). Dies ist der Kernbereich zur Verifikation der Dämpfungseigenschaften des PD-Reglers. Der anfängliche Gierwinkel von $+10^\circ$ zeigt unter der PD-Regelung das typische Antwortverhalten eines unterdämpften Systems zweiter Ordnung – nach etwa 2-3 abklingenden Schwingungen konvergiert er gegen Null. Der laterale Versatz $y(t)$ zeigt ebenfalls ein schwingendes Konvergenzverhalten und stabilisiert sich schließlich nahe der Mitte der Führungslinie. Die Amplitude der Gierwinkelgeschwindigkeit $\omega(t)$ nimmt mit der Zeit ab, was darauf hindeutet, dass die kinetische Energie des Systems durch den Differentialdämpfungsterm effektiv dissipiert wird.
**Teil (d) — Vergrößerte Ansicht der Gierwinkelschwingung (erste 10 Sekunden)**: Dieser Teil zeigt den Gierwinkel zu jedem diskreten Abtastzeitpunkt in Form eines Streudiagramms und veranschaulicht deutlich den schrittweisen Korrekturprozess des PD-Reglers in jedem Zeitschritt. Diese „schrittweise“ Korrekturtrajektorie ist ein typisches Merkmal von diskreten Zeitregelungssystemen – der Regler berechnet in jedem Abtastzyklus basierend auf dem aktuellen Fehler einen neuen PWM-Befehl und treibt die Fahrzeughaltung schrittweise in Richtung des Ziels.
**Teil (e) — Draufsicht-Trajektorie**: Die Bewegungstrajektorie der Radachse in der zweidimensionalen Ebene. Das halbtransparente schwarze Band repräsentiert die Führungslinie mit einer Breite von 2,0 cm. Die Trajektorienkurve zeigt, dass der Roboter nach dem Start vom grünen Quadrat über einen S-förmigen Pfad schnell auf die Führungslinie einschwenkt und dann entlang der Geraden stabil bis zum Ziel (rotes Quadrat) fährt. Die Glätte der Trajektorie spiegelt die Nachführgenauigkeit des PD-Reglers wider.
## 3. Makroskopische Pfadplanung: Endlicher Automat und Entscheidungsbaumalgorithmus
In der Theorie des maschinellen Lernens und der Entscheidungsanalyse ist ein Entscheidungsbaum (Decision Tree) ein spezielles baumartiges Vorhersagemodell, das die Abbildung zwischen Objektattributen und Objektwerten darstellt. Es erstellt die optimale Planung zur Erreichung eines Ziels durch die Berechnung bedingter Wahrscheinlichkeiten oder die Festlegung von Entscheidungsregeln$^{[4]}$. Auf der Grundlage der grundlegenden Trajektorienkontinuität, die durch den PD-Algorithmus auf der unteren Ebene gewährleistet wird, muss der Roboter über die Fähigkeit verfügen, komplexe Labyrinthtopologien und spezifische Interaktionsaufgaben auf einer höheren logischen Ebene zu bewältigen. In diesem Projekt wurde unter Verwendung von verschachtelten Verzweigungen (Nested Switches) ein deterministischer Entscheidungsbaum auf Basis von Zustandsübergängen aufgebaut, der die Strenge und Robustheit der Logik sicherstellt.
Um die Strategien im Zusammenhang mit der Materialhandhabung im Experiment zu präzisieren, wurden in der Initialisierungsphase des Programms einfache Randomisierungs- und Zählvariablen eingeführt: Insgesamt werden zwei Behälter platziert, deren Positionen aus vier Kandidatenpositionen mit den Nummern 1, 2, 3, 4 ausgewählt werden; bei der Initialisierung wird jeweils zufällig einer aus der Menge {1,2} und einer aus der Menge {3,4} ausgewählt, um die Positionen der beiden zu greifenden Behälter zu bestimmen (um ein festes Muster zu vermeiden, bei dem sich beide Behälter auf derselben Seite befinden). Während der Programmausführung wird die boolesche Variable `HasBarrel` verwendet, um anzuzeigen, ob aktuell ein Behälter gehalten wird; die ganzzahlige Variable `BarrelNum` (anfänglich 0) zeichnet die Anzahl der gegriffenen Behälter auf, wobei `BarrelNum += 1` nach jedem Greifen eines Behälters ausgeführt wird; die ganzzahlige Variable `CheckNum` (anfänglich 0) zeichnet die Anzahl der passierten roten Kontrollpunkte auf, wobei `CheckNum += 1` nach jedem Passieren eines Kontrollpunkts ausgeführt wird und die Zeit für diesen Kontrollpunkt in der entsprechenden Zeile auf dem Bildschirm ausgegeben wird.
### 3.1 Boolescher endlicher Automat und Schutz vor Sensor-Blindung
Bei der automatischen Materialtransportaufgabe ist der Roboter auf den Ultraschallsensor angewiesen, um den Zielbehälter zu erkennen und den Greifvorgang auszuführen. Nach Abschluss des Greifvorgangs verbleibt das Material in der Regel vor dem Sensor, was dazu führen kann, dass der Ultraschall-Entfernungswert weiterhin die Auslösebedingung erfüllt und somit das Problem der „Sensor-Blindung“ durch wiederholtes Greifen verursacht wird. Um dieses Problem zu lösen und die experimentelle Anforderung der Zwei-Behälter-Strategie zu erfüllen, wurden in diesem Projekt die folgenden Variablen in den endlichen Automaten eingeführt: die boolesche Variable `HasBarrel` (zeigt an, ob aktuell ein Behälter gehalten wird), die ganzzahlige Zählung `BarrelNum` (zeichnet die Anzahl der bereits gegriffenen Behälter auf, anfänglich 0) und die ganzzahlige Zählung `CheckNum` (zeichnet die Anzahl der passierten roten Kontrollpunkte auf, anfänglich 0).
Die Auslösebedingung für den Greifvorgang basiert weiterhin hauptsächlich auf der Ultraschallentfernung:
$$Trigger = (d_{ultrasonic} < 15) \land \neg HasBarrel$$ Wenn der Greifvorgang ausgeführt und der Erfolg bestätigt wird, werden `HasBarrel = True` und `BarrelNum += 1` ausgeführt. Gemäß der im Team vereinbarten Ablagestrategie: Der erste gegriffene Behälter (`BarrelNum == 1`) soll am ersten danach angetroffenen roten Kontrollpunkt abgelegt werden; der zweite gegriffene Behälter (`BarrelNum == 2`) soll bis zum Ziel getragen und dort abgesetzt werden. Daher lautet die Bedingung für das Ablegen des Behälters beim Erreichen eines Kontrollpunkts `HasBarrel == True && BarrelNum == 1`; wenn `HasBarrel == True` aber `BarrelNum != 1` ist, wird nur eine Kehrtwende oder die entsprechende Kreuzungsaktion ausgeführt, ohne den Behälter abzulegen. Nach dem Ablegen des Behälters muss `HasBarrel` auf False zurückgesetzt werden. ### 3.2 Kreuzungsentscheidungsalgorithmus auf Basis eines endlichen Automaten Wenn die linken und rechten Sensoren eine reflektierte Lichtintensität unterhalb des Schwellenwerts (< 15) erkennen, geht das System davon aus, dass ein Kreuzungsbereich erreicht sein könnte. Das System führt zunächst eine Sondenprüfung durch: Bei Auslösung durch den rechten Sensor fährt der Motor mit einer Leistung von 30 für 0,55 Sekunden vorwärts, um die Position anzupassen, führt dann mit einer Leistung von 30/-30 für 0,3 Sekunden eine Rechtskurve aus und behält diese Differenzialgeschwindigkeit bei, bis der mittlere Sensor die schwarze Linie erkennt (reflektierte Lichtintensität < 15). Schließlich wird der Motor gestoppt und 0,02 Sekunden zur Stabilisierung gewartet. Bei Auslösung durch den linken Sensor fährt der Motor zunächst mit einer Leistung von 30 für 0,5 Sekunden vorwärts, führt dann mit einer Leistung von -30/30 für 0,3 Sekunden eine Linkskurve aus und behält diese Differenzialgeschwindigkeit bei, bis der mittlere Sensor die schwarze Linie erkennt. Wenn weder der linke noch der rechte Sensor ausgelöst haben, aber der mittlere Sensor die schwarze Linie erkennt, wird die Standard-PID-Geradeausfahrt-Logik ausgeführt. Wenn der mittlere Sensor eine rote Markierung erkennt, wird eine 180-Grad-Kehrtwende ausgeführt. ### 3.2.1 Endgültige Kreuzungsentscheidungs- und Materialablage-Logik der Gruppe (Implementierungserläuterung) Dieser Abschnitt erläutert die spezifischen Implementierungsdetails des endgültigen Programms dieser Gruppe, um Unstimmigkeiten zwischen der allgemeineren Beschreibung des Entscheidungsbaums im Text und dem endgültigen Code zu vermeiden. Die wichtigsten Punkte sind wie folgt (maßgeblich ist die Code-Implementierung): 1. In der Initialisierungsphase werden aus vier Kandidatenpositionen (Nummern 1, 2, 3, 4) zufällig zwei Behälterpositionen ausgewählt: Jeweils einer wird zufällig aus der Menge {1,2} und einer aus der Menge {3,4} ausgewählt, um die Positionen der beiden zu greifenden Behälter zu bestimmen. 2. Verwendete Variablen: boolesch `HasBarrel` (ob ein Behälter gehalten wird), ganzzahlig `BarrelNum` (Zählung der gegriffenen Behälter, anfänglich 0), ganzzahlig `CheckNum` (Zählung der Kontrollpunkte, anfänglich 0). Bei erfolgreichem Greifen werden `HasBarrel = True; BarrelNum += 1` ausgeführt. 3. Ablagestrategie: Der erste gegriffene Behälter (`BarrelNum == 1`) wird am ersten angetroffenen roten Kontrollpunkt abgelegt; der zweite gegriffene Behälter (`BarrelNum == 2`) wird bis zum Ziel getragen und dort abgesetzt. Daher lautet die Bedingung für das Auslösen der Behälterablage beim Erreichen eines Kontrollpunkts `HasBarrel == True && BarrelNum == 1`. Nach dem Ablegen wird `HasBarrel` auf `False` zurückgesetzt. 4. Die Labyrinthbegehungsstrategie folgt der Rechtshandregel: Wenn möglich rechts abbiegen, wenn nicht möglich geradeaus fahren, wenn nicht möglich links abbiegen. Da die parallel angeordneten Sensoren nur die linke und rechte Seite sowie die Farbe/Reflexion unter dem Fahrzeug erfassen können, wird im Programmablauf nach Priorität entschieden: - Wenn der mittlere Sensor Grün erkennt: Dies wird als Ziel gewertet, die Hauptschleife wird verlassen und das Zielprogramm wird ausgeführt. - Wenn der mittlere Sensor Rot erkennt: Dies wird als Kontrollpunkt gewertet, es wird `CheckNum += 1` ausgeführt und die Zeit für diesen Kontrollpunkt in der entsprechenden Zeile auf dem Bildschirm ausgegeben; wenn `HasBarrel == True && BarrelNum == 1` erfüllt ist, wird der Behälter abgelegt und eine Kehrtwende ausgeführt; andernfalls wird nur eine Kehrtwende ausgeführt. - Andernfalls, wenn die reflektierte Lichtintensität des rechten Sensors kleiner als 15 ist (Erkennung der schwarzen Linie), wird direkt die Rechtskurven-Logik ausgeführt. - Andernfalls, wenn der linke Sensor die schwarze Linie erkennt, wird zunächst ein kleiner Schritt vorwärts gemacht und der mittlere Sensor erneut ausgelesen: Wenn der mittlere Sensor nach dem Vorwärtsschritt die schwarze Linie erkennt, wird geradeaus gefahren; wenn nicht, wird links abgebogen. - Wenn keiner der obigen Fälle zutrifft, wird die PD-Linienverfolgungslogik als Fallback ausgeführt. 5. Die PD-Linienverfolgungs-Parameter sind im Code wie folgt implementiert: $$BaseSpeed = 100 - |a-b| * 0.6$$ $$Turn = (a-b) * 0.8 + ((a-b) - c) * 0.6$$ Dabei sind `a`, `b` die Messwerte des linken und rechten Sensors und `c` das Fehlerregister des vorherigen Zyklus. Dieser Unterabschnitt ist die Implementierungserläuterung des endgültigen Programms. Die anderen Beschreibungen des Entscheidungsbaums und der Sondenzeitsteuerung im Text dienen als allgemeine Referenz; das tatsächliche Verhalten richtet sich nach der in diesem Abschnitt beschriebenen Logik. ### 3.3 Zielerkennung: Sensor-Entkopplung und Software-Entprellung In früheren Testversionen verwendeten die Zielerkennungslogik (Erkennung des schwarzen Zielbereichs) und die Kreuzungserkennungslogik (Erkennung der schwarzen Linie) dasselbe Reflexionsgrad-Graustufenmerkmal, was aufgrund von schwellwertbedingten Drift durch Umgebungslicht zu Fehlinterpretationen führen konnte. Um dieses Problem zu lösen, wurde das Zielmarkierungselement als grüner Aufkleber festgelegt, der vom mittleren dritten Sensor im Farbmodus (Color Mode) erkannt wird. Dadurch wurde eine Trennung von Navigation und Zielerkennung auf Sensorebene erreicht. Gleichzeitig wurde eine Timer-Einschränkung hinzugefügt, um Fehlinterpretationen durch die grüne Markierung im Startbereich zu verhindern: $$Condition_{End} = (\text{Color}_{Mid} == 3) \land (\text{Timer}_{Total} > 10s)$$
Nach bestandener Farberkennung wurde eine Software-Entprellungsverzögerung (Software Debounce) von 0,1 Sekunden eingefügt, um sicherzustellen, dass ein stabiles grünes Signal erfasst wird, bevor der Zielstopp ausgelöst wird.
Bei Erreichen des Ziels werden auf dem Bildschirm nacheinander die Zeiten für jeden Kontrollpunkt, die Gesamtzeit und die Anzahl der besuchten Kontrollpunkte angezeigt; in der Code-Implementierung wird `CheckNum` verwendet, um die Ausgabezeile zu bestimmen, und die entsprechende Zeit wird beim Passieren des Kontrollpunkts sofort geschrieben.
Abbildung 2 zeigt einen Screenshot des vollständigen Programm-Codes, der in der grafischen LEGO EV3-Programmierumgebung implementiert wurde. Das Programm realisiert die oben beschriebene Logik des endlichen Automaten und des Entscheidungsbaums. Die Programmquelldatei ist main.ev3.
**Abbildung 2: EV3-Programmquellcode (grafisch).** Das Programm implementiert die Pfadplanung und Materialtransport-Steuerungslogik auf Basis eines endlichen Automaten, bestehend aus drei Phasen: Initialisierung, Hauptschleife (Kreuzungsentscheidung, Greifen/Ablegen, Zielerkennung) und Abschluss.
## 4. Eigenschaften des eingebetteten Systems auf unterer Ebene und Rechenleistungsoptimierung
Die Firmware des LEGO EV3-Hauptsteuerungssystems läuft auf einem leichtgewichtigen Linux-Betriebssystem. Die grafische Oberfläche ist im Wesentlichen eine gekapselte Anbindung an die Hardware-Abstraktionsschicht (HAL)$^{[3]}$. In einem geschlossenen Regelkreis, der eine Echtzeit-Reaktion im Millisekundenbereich erfordert, kann eine ungeeignete Codestruktur zu systemweiten Ressourcenproblemen führen. Dieses Programm wurde auf Software-Engineering-Ebene entsprechend optimiert.
### 4.1 CPU-Hunger-Prävention (CPU Starvation Avoidance)
In der Hauptschleife (While Loop) kann eine hohe Befehlsausführungsfrequenz ohne Eingriff die meisten Taktzyklen des ARM-Prozessors belegen, was dazu führt, dass der für die I/O-Kommunikation zuständige Polling-Daemon auf niedriger Ebene ausgesetzt wird – ein Phänomen, das als „CPU-Hunger“ bezeichnet wird. Die direkte Folge ist, dass die Sensor-Datenregister nicht rechtzeitig aktualisiert werden können und der PID-Regler veraltete Daten ausliest, was zu abnormaler Motorsteuerung führt. Daher wurde am Ende der Hauptschleife ein Wartemodul (Yield/Delay) von 0,01 Sekunden eingefügt, das aktiv den Zeitscheiben-Planer (Time Slice) des Prozessors freigibt, sodass die I/O-Prozesse auf niedriger Ebene die Sensorregister normal aktualisieren können.
### 4.2 PWM-Ausgabemodus-Optimierung (Coast vs. Brake)
Wenn das Motoransteuerungsmodul in den Modus „Für bestimmte Zeit einschalten“ versetzt wird, löst der Hardware-Treiber auf niedriger Ebene beim Erreichen des Zeitlimits eine elektrische Bremse aus (Kurzschluss der Motorwicklungen). Häufiges Bremsen führt zu hochfrequenten Vibrationen des Fahrzeugs. Es ist zu beachten, dass in der Implementierung unserer Gruppe nicht der Dauer-Ein-Modus (On) verwendet wurde, da dieser dazu führt, dass die Hauptsteuerung während der Motoransteuerung nicht rechtzeitig zur Hauptschleife zurückkehren kann, um andere Logiken zu verarbeiten (wie Sensorablesung, Zustandsaktualisierung und Entscheidungsfindung), was das Risiko einer Blockierung und eines Systemabsturzes birgt. Um einen Ausgleich zwischen kontinuierlicher Ausgabe und Planbarkeit zu schaffen, wurde eine kurzzeitige Schritt-für-Schritt-Ansteuerungsstrategie gewählt: Die PD-Linienverfolgung arbeitet mit einem Zyklus von 0,1 Sekunden, wobei der Motor jedes Mal nur für 0,1 Sekunden angesteuert wird (kleiner Schritt vorwärts), bevor zur Hauptschleife zurückgekehrt wird, um Sensordaten zu lesen und logische Entscheidungen zu treffen. Diese Methode vermeidet sowohl die durch häufiges zeitgesteuertes Bremsen verursachten Vibrationen als auch das Risiko einer Hauptschleifenblockierung (die eine rechtzeitige Verarbeitung von Sensor- und Zustandsänderungen verhindern würde), das mit dem Dauer-Ein-Modus verbunden ist.
### 4.3 Prozessverwaltung und Abschaltablauf (Process Management)
In einer Programmarchitektur, die häufig Audiodateien zur Statusrückmeldung aufruft, kann ein nicht ordnungsgemäßes physisches erzwungenes Ausschalten zu Anomalien im Audio-Daemon auf niedriger Ebene führen. Das System führt nach dem Zielerkennungszweig einen standardisierten Abschaltablauf ein, der durch Aufrufen des Stoppmoduls sicherstellt, dass die Sensor- und Motoranschlüsse sicher stromlos geschaltet werden und die Hintergrund-Threads ordnungsgemäß beendet werden, um die Stabilität des Systems im mehrfachen Durchlaufbetrieb zu gewährleisten.
## 5. Experimentelle Ergebnisse und Systemleistungsanalyse
### 5.1 Versuchsumgebung und Streckenmerkmale
Die Teststrecke dieses Projekts besteht aus langen geraden Abschnitten, rechtwinkligen Kurven (Right-angle Turns), T-förmigen Kreuzungen und kreuzförmigen Labyrinthkreuzungen. Rechtwinklige Kurven entsprechen in der Trajektoriengleichung einem unstetigen Sprungsignal, für das keine Ableitung existiert. Auf einem solchen Gelände mit Sprungsignalen kann ein rein linearer PD-Regler die gesamte Strecke nicht eigenständig abdecken; es ist eine kooperative Verarbeitung mit dem digitalen PD-Regler auf der unteren Ebene und dem Entscheidungsbaum auf Basis des endlichen Automaten erforderlich.
Abbildung 3 zeigt eine Rasterkarte, die basierend auf dem Streckenlayout erstellt wurde. Die schwarzen Bereiche sind die Führungswege, die weißen Bereiche sind Leerflächen. Der Startpunkt befindet sich im unteren rechten Bereich, der Zielpunkt im oberen linken Bereich. Die Strecke umfasst verschiedene Fahrbahnzustände wie lange Geraden, rechtwinklige Kurven, T-förmige Kreuzungen und kreuzförmige Kreuzungen.
**Abbildung 3: Rasterkarte der Teststrecke.**
### 5.2 Analyse des dynamischen Verhaltens auf Geraden und des stationären Fehlers
Bei den Tests zur Verfolgung einer geraden Trajektorie zeigte der Roboter mit dem ON-OFF-Schaltregler ein deutliches periodisches Schwingungsverhalten. Der Schaltregler passt die Richtung nur basierend auf dem binären Sensorergebnis nach links oder rechts an, was zu einem wiederholten Pendeln des Fahrzeugs auf beiden Seiten der Führungslinie und einer geringen durchschnittlichen Vortriebsgeschwindigkeit führt.
Nach dem Einsatz des diskreten PD-Reglers verringerte sich die Schwingungsamplitude des Fahrzeugs erheblich. Der Differentialkompensationsterm (Derivative Term) erzeugt basierend auf der Fehleränderungsrate vorzeitig ein entgegengesetztes Dämpfungsmoment und unterdrückt so das Überschwingen. Gemäß dem in Gleichung (2.5) dargestellten Regelgesetz wird die Basisgeschwindigkeit adaptiv an den absoluten Fehler angepasst: Im stationären Zustand auf einer Geraden ist $|a-b| \approx 0$, die Basisgeschwindigkeit liegt nahe der Obergrenze von 100; bei Auftreten einer Abweichung wird die Basisgeschwindigkeit automatisch reduziert, um die für die Kurvenfahrt erforderliche Zentripetalkraft zu verringern. Unter Bezugnahme auf vergleichende Messungen in der relevanten Literatur unter ähnlichen Hardwarebedingungen führt die Einführung des PD-Regelmechanismus zu einer Steigerung der durchschnittlichen Vortriebsgeschwindigkeit auf geraden Abschnitten um etwa 36%$^{[1]}$.
### 5.3 Entscheidungsbaumsteuerung und Ausführungseffizienz bei rechtwinkligen Kurven
Bei Tests mit $90^\circ$-rechtwinkligen Kurven zeigten der ON-OFF-Regler oder der reine PID-Regler aufgrund ihrer Unfähigkeit, mit der sprunghaften Änderung des Reflexionsgrades umzugehen, eine Nachführverzögerung oder ein Verlassen der Strecke. Dieses System verwendet den Entscheidungsbaum des endlichen Automaten zur Verarbeitung solcher Kreuzungen. Der spezifische Ausführungsablauf ist wie folgt:
Wenn die linken und rechten Sensoren eine reflektierte Lichtintensität unterhalb des Schwellenwerts (< 15) erkennen, geht das System davon aus, dass ein Kreuzungsbereich erreicht sein könnte. Das System führt zunächst eine Sondenprüfung durch: Bei Auslösung durch den rechten Sensor fährt der Motor mit einer Leistung von 30 für 0,55 Sekunden vorwärts, führt dann mit einer Leistung von 30/-30 für 0,3 Sekunden eine Rechtskurve aus und behält diese Differenzialgeschwindigkeit bei, bis der mittlere Sensor die schwarze Linie erkennt (reflektierte Lichtintensität < 15). Schließlich wird der Motor gestoppt und 0,02 Sekunden zur Stabilisierung gewartet. Bei Auslösung durch den linken Sensor fährt der Motor zunächst mit einer Leistung von 30 für 0,5 Sekunden vorwärts, führt dann mit einer Leistung von -30/30 für 0,3 Sekunden eine Linkskurve aus und behält diese Differenzialgeschwindigkeit bei, bis der mittlere Sensor die schwarze Linie erkennt. Wenn weder der linke noch der rechte Sensor ausgelöst haben, aber der mittlere Sensor die schwarze Linie erkennt, wird die Standard-PID-Geradeausfahrt-Logik ausgeführt. Nach Abschluss der Kurve wird die Kontrolle an den PD-Regler zurückgegeben, der die gerade Linienverfolgung fortsetzt. Dieser Ablauf realisiert durch die Zustandsübergänge des endlichen Automaten eine deterministische Steuerung der rechtwinkligen Kurven. ### 5.4 Gesamte Abschlussrate und Systemrobustheit In den integrierten Tests mit der Materialtransportaufgabe zeigte das System die folgenden Eigenschaften: 1. **CPU-Hunger-Prävention**: Ein Wartemodul von 0,01 Sekunden am Ende der Hauptschleife gibt aktiv den Prozessor-Zeitscheiben-Planer frei, sodass die I/O-Prozesse auf niedriger Ebene die Sensorregister normal aktualisieren können, wodurch das Problem des Einfrierens von Sensordaten aufgrund exklusiver CPU-Ressourcennutzung vermieden wird. 2. **Schutz vor Sensor-Blindung**: Durch die globale boolesche Zustandsvariable `HasBarrel` wird ein endlicher Automat aufgebaut. Die Auslösebedingung des Ultraschallsensors für den Greifvorgang lautet `(distance < 15cm) AND (NOT HasBarrel)`. Nach Abschluss des Greifvorgangs wird der Zustand umgeschaltet. Selbst wenn das Material den Ultraschallsensor später verdeckt, wird das System die Greifsequenz nicht wiederholen, sondern in die normale Linienverfolgungslogik übergehen. 3. **Zielerkennung**: Der mittlere Farbsensor im Farbmodus erkennt den grünen Aufkleber als Zielmarkierung. In Kombination mit einer Software-Entprellung von 0,1 Sekunden und einer Timer-Einschränkung (Timer > 10s) wird eine Unterscheidung von der grünen Markierung am Start und eine zuverlässige Zielerkennung erreicht.
4. **Motorsteuerungsoptimierung**: Um einen Ausgleich zwischen kontinuierlicher Linienverfolgung und Ereignisreaktion zu schaffen, verwendet unsere Gruppe eine kurzzeitige Schritt-für-Schritt-Ansteuerungsstrategie: Die PD-Linienverfolgung arbeitet mit einem Basiszyklus von 0,1 Sekunden, wobei dem Motor jedes Mal nur für 0,1 Sekunden ein Steuerbefehl erteilt wird (kleiner Schritt vorwärts), bevor zur Hauptschleife zurückgekehrt wird, um Sensordaten zu lesen und logische Entscheidungen zu treffen. Dieses Schema vermeidet das Risiko einer Hauptschleifenblockierung (die eine rechtzeitige Verarbeitung von Sensor- und Zustandsänderungen verhindern würde), das mit dem Dauer-Ein-Modus (On) verbunden ist, und reduziert gleichzeitig die durch häufiges zeitgesteuertes Bremsen verursachten mechanischen Vibrationen.
In mehreren Testdurchläufen konnte das System in den meisten Fällen die gesamte Streckenverfolgung und die Materialtransportaufgabe erfolgreich abschließen. Während des Betriebs traten jedoch weiterhin Probleme wie Sensor-Blindung und Fehlerkennungen des Farbsensors auf. Insgesamt werden diese Probleme hauptsächlich durch die Hardwareeigenschaften der Sensoren oder Umgebungsänderungen (wie Lichtverhältnisse) verursacht; die Softwarelogik wurde nach mehreren Validierungsrunden als robust und wiederherstellbar befunden und konnte die vorgegebenen Aufgaben in den meisten Tests erfolgreich erledigen.
Zur Verifikation der vollständigen Betriebseffizienz des Systems auf der tatsächlichen Strecke wurden auf der in Abbildung 3 dargestellten Strecke Tests in beiden Richtungen (Vorwärts- und Rückwärtsrichtung) durchgeführt. Die Strecke umfasst insgesamt 6 rote Aufkleber-Kontrollpunkte (die eine 180-Grad-Kehrtwende und Behälterablage auslösen), wobei in jeder Richtung 3 dieser Kontrollpunkte passiert werden.
#### 5.5.1 Testergebnisse der Vorwärtsrichtung
Der Roboter startet vom Startpunkt, fährt entlang des Führungswegs in Vorwärtsrichtung, passiert nacheinander 3 rote Kontrollpunkte, führt die entsprechenden Kehrtwende- und Behälterablage-Operationen aus und erreicht schließlich das Ziel.
Die Gesamtlaufzeit beträgt **54,92 Sekunden**, es werden **3** Kontrollpunkte passiert. Die Zeiten für das Passieren der einzelnen Kontrollpunkte betragen: **18,43 Sekunden, 29,13 Sekunden, 41,81 Sekunden**.
#### 5.5.2 Testergebnisse der Rückwärtsrichtung
Der Roboter startet vom Zielbereich, fährt entlang des Führungswegs in Rückwärtsrichtung, passiert nacheinander die anderen 3 roten Kontrollpunkte, führt die entsprechenden Kehrtwende- und Behälterablage-Operationen aus und erreicht schließlich den Startbereich.
Die Gesamtlaufzeit beträgt **51,34 Sekunden**, es werden **3** Kontrollpunkte passiert. Die Zeiten für das Passieren der einzelnen Kontrollpunkte betragen: **3,066 Sekunden, 24,54 Sekunden, 39,42 Sekunden**.
#### 5.5.3 Versuchsvideos
Die folgenden Videos dokumentieren den vollständigen Betriebsablauf in Vorwärts- und Rückwärtsrichtung.
**Video des Vorwärtsdurchlaufs:**
https://www.youtube.com/watch?v=aTVxu1YXmjs
**Video 1: Aufzeichnung des Vorwärtsdurchlaufs auf der gesamten Strecke**
**Video des Rückwärtsdurchlaufs:**
https://www.youtube.com/watch?v=Uk0Ih7O7AaE
**Video 2: Aufzeichnung des Rückwärtsdurchlaufs auf der gesamten Strecke**
#### 5.5.4 Roboter-Hardware-Design
Das Hardware-Design des in diesem System verwendeten LEGO EV3-Roboters ist in Abbildung 4 dargestellt. Der Roboter verwendet ein zweirädriges Differentialantriebsfahrgestell. An der Vorderseite sind zwei Reflexionslichtsensoren für die Linienverfolgung angebracht, in der Mitte ein Farbsensor für die Zielerkennung und die Erkennung roter Markierungen, und an der Vorderseite ein Ultraschallsensor für die Materialabstandsmessung.
**Abbildung 4: Hardwareplattform des LEGO EV3-Linienverfolgungs- und Materialtransport-Roboters**
## 6. Fazit
Dieses Projekt kombiniert den diskreten PD-Regelalgorithmus, die Boolesche Logik und den endlichen Automaten, um ein autonomes Linienverfolgungs- und Materialtransportsystem auf Basis der LEGO EV3-Plattform zu entwickeln. In der unteren Bewegungsebene wurde durch den diskreten PD-Regler eine adaptive Trajektorienverfolgung der Führungslinie realisiert; in der makroskopischen Pfadplanung wurde durch den endlichen Automaten eine deterministische Steuerung von Aufgaben wie der Erkennung mehrerer Kreuzungen, dem Greifen und Ablegen von Materialien und der Zielerkennung erreicht. Gleichzeitig wurden Optimierungen auf unterer Ebene für Probleme eingebetteter Systeme wie CPU-Hunger und Motorbremsvibrationen durchgeführt. Die experimentellen Ergebnisse zeigen, dass das System eine Strecke mit rechtwinkligen Kurven, T-förmigen Kreuzungen und Materialtransportaufgaben stabil bewältigen kann, und bieten eine Referenz für die fortgeschrittene Entwicklung auf der LEGO EV3-Plattform.
## Literaturverzeichnis
[1] A. Stephan, N. Karthick Pugalum Perumal, M. Shivram Kumar, C. Akash, L. Varatharajan and M. Sivapalanirajan, "Performance Analysis of LEGO Mindstorm EV3 Robot with PID Controller for Trajectory Tracking Application," 2023 7th International Conference on Intelligent Computing and Control Systems (ICICCS), Madurai, India, 2023, pp. 1782-1787, doi: 10.1109/ICICCS56967.2023.10142757.
[2] Wikipedia contributors. (2026, May 25). PID controller. In Wikipedia, The Free Encyclopedia. Retrieved 05:44, May 27, 2026, from https://en.wikipedia.org/w/index.php?title=PID_controller&oldid=1356013976
[3] Wikipedia contributors. (2026, May 18). Lego Mindstorms EV3. In Wikipedia, The Free Encyclopedia. Retrieved 05:45, May 27, 2026, from https://en.wikipedia.org/w/index.php?title=Lego_Mindstorms_EV3&oldid=1354810351
[4] Wikipedia contributors. (2026, April 14). Decision tree. In Wikipedia, The Free Encyclopedia. Retrieved 05:49, May 27, 2026, from https://en.wikipedia.org/w/index.php?title=Decision_tree&oldid=1348906127
[5] Wikipedia contributors. (2026, May 24). Finite-state machine. In Wikipedia, The Free Encyclopedia. Retrieved 05:50, May 27, 2026, from https://en.wikipedia.org/w/index.php?title=Finite-state_machine&oldid=1355883596

Comments NOTHING