AlphaBot: Geregelte Fahrt mit Linienverfolger: Unterschied zwischen den Versionen
| (19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
[[Kategorie:AlphaBot]] | [[Kategorie:AlphaBot]] | ||
[[Datei:AlphaBot 550px.gif|thumb|rigth|350px|Abb. 1: Geregelte Fahrt mit Linienverfolger]] | [[Datei:AlphaBot 550px.gif|thumb|rigth|350px|Abb. 1: Geregelte Fahrt mit Linienverfolger]] | ||
[[Datei:Tracker-sensor.jpg|thumb|rigth|350px|Abb. 2: AlphaBot Linienverfolger]] | |||
{|class="wikitable" | |||
|- | |||
| '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | |||
|- | |||
| '''Modul:''' || Praxismodul II | |||
|- | |||
| '''Lektion:''' || 9 | |||
|- | |||
| '''Lehrveranstaltung:''' || Mechatronik, Informatik Praktikum 2, 2. Semester | |||
''' | |} | ||
= Inhalt = | |||
* Inbetriebnahme des Linienverfolgungssensors | * Inbetriebnahme des Linienverfolgungssensors | ||
* Kalibrierung des Linienverfolgungssensors | * Kalibrierung des Linienverfolgungssensors | ||
* PD-Regler | * PD-Regler | ||
* x-y-Plot der Roboterpose | * x-y-Plot der Roboterpose | ||
= Lernziele= | |||
Nach Durchführung dieser Lektion können Sie | Nach Durchführung dieser Lektion können Sie | ||
* geregelt einer Linie folgen. | * geregelt einer Linie folgen. | ||
| Zeile 23: | Zeile 29: | ||
* die Auslegung systematisch dokumentieren | * die Auslegung systematisch dokumentieren | ||
= Vorbereitung = | |||
Bereiten Sie diese Aufgabe für den Praktikumstermin vor. | Bereiten Sie diese Aufgabe für den Praktikumstermin vor. | ||
* Planen Sie jede Aufgabe als PAP. | * Planen Sie jede Aufgabe als PAP. | ||
| Zeile 29: | Zeile 35: | ||
* Nutzen Sie das Tutorial [[AlphaBot_Linienverfolgungsssensor]] zur Einarbeitung. | * Nutzen Sie das Tutorial [[AlphaBot_Linienverfolgungsssensor]] zur Einarbeitung. | ||
* Kalibrieren Sie den Sensor. | * Kalibrieren Sie den Sensor. | ||
* Zeigen Sie die Messwerte im | * Zeigen Sie die Messwerte im seriellen Monitor an. | ||
* Kapseln Sie die Kalibrierung in der Funktion <code>void KalibriereLinienVerfolger()</code>. | * Kapseln Sie die Kalibrierung in der Funktion <code>void KalibriereLinienVerfolger()</code>. | ||
* Beantworten Sie die Lernzielkontrollfragen. | * Beantworten Sie die Lernzielkontrollfragen. | ||
| Zeile 70: | Zeile 76: | ||
|} | |} | ||
= Lernzielkontrollfragen = | |||
* Wie funktioniert der Linienverfolgungssensors technisch? | * Wie funktioniert der Linienverfolgungssensors technisch? | ||
* Arbeitet der Sensor passiv? | * Arbeitet der Sensor passiv? | ||
| Zeile 81: | Zeile 86: | ||
* Welcher Wert dient als Sollwert? | * Welcher Wert dient als Sollwert? | ||
== | == Tutorials == | ||
=== Aufgabe | *[[AlphaBot_Linienverfolgungsssensor]] | ||
* [https://www.youtube.com/watch?v=MSoLigzhbeM info8uniwue: Einführung PID Regler] | |||
* [https://www.youtube.com/watch?v=quqxyny5kBU Loviscach, J.: P- und PI-Regler; Einstellung nach Ziegler-Nichols] | |||
* [https://www.youtube.com/watch?v=l26IGS2RlM0 Studyfix: Regelkreis] | |||
* [https://spacehal.github.io/docs/category/linienfolger RuleTheBots: Linienverfolger] | |||
== Demos == | |||
*<code>E28_IR_Line_Tracking_Sensor_Messung</code> | |||
*<code>E28b_IR_Line_Tracking_Sensor</code> | |||
*<code>E08_Infrared_Line_Tracking</code> | |||
*<code>E08b_Infrared_Line_Tracking_PD</code> | |||
= Versuchsdurchführung = | |||
<!-- | |||
== Aufgabe 9.1: 2-Punkt-Regler == | |||
Programmieren Sie einen [https://de.wikipedia.org/wiki/Zweipunktregler 2-Punkt-Regler], damit der AlphaBot der schwarzen Linien folgt. Der 2-Punkt-Regler fährt beispielsweise nach rechts, wenn er hell sieht und nach links, wenn er Schwarz sieht. So "hangelt" er sich zappelig an der Linie entlang. | Programmieren Sie einen [https://de.wikipedia.org/wiki/Zweipunktregler 2-Punkt-Regler], damit der AlphaBot der schwarzen Linien folgt. Der 2-Punkt-Regler fährt beispielsweise nach rechts, wenn er hell sieht und nach links, wenn er Schwarz sieht. So "hangelt" er sich zappelig an der Linie entlang. | ||
| Zeile 95: | Zeile 114: | ||
|} | |} | ||
---- | ---- | ||
--> | |||
== Aufgabe 9.1: PD-Regler == | |||
[[Datei:Regelkreis PD.png|thumb|rigth|550px|Abb. 4: Regelkreis für den Linienverfolgungs-Algorithmus]] | [[Datei:Regelkreis PD.png|thumb|rigth|550px|Abb. 4: Regelkreis für den Linienverfolgungs-Algorithmus]] | ||
Programmieren Sie einen PD-Regler gemäß Abb. 4, damit der AlphaBot der schwarzen Linien folgt. | # Programmieren Sie einen PD-Regler gemäß Abb. 4, damit der AlphaBot der schwarzen Linien folgt.<br><math> u(t) = K_P \cdot e(t) + K_D \cdot \frac{d}{dt}e(t) </math> | ||
# Planen Sie zuvor das Programm als PAP. | |||
<math> u(t) = K_P \cdot e(t) + K_D \cdot \frac{d}{dt}e(t) </math> | |||
# Wählen Sie den Sollwert als Konstante. | # Wählen Sie den Sollwert als Konstante. | ||
# In welchem Bereich bewegt sich der Istwert? | # In welchem Bereich bewegt sich der Istwert? | ||
| Zeile 131: | Zeile 149: | ||
| <strong>Tipp 3 </strong> | | <strong>Tipp 3 </strong> | ||
|- | |- | ||
| Studieren Sie das Beispiel | | Studieren Sie das Beispiel [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/AlphaBot/ArduinoLibOrdner/AlphaBot/examples/E08b_Infrared_Line_Tracking_PD E08b_Infrared_Line_Tracking_PD]. | ||
|- | |- | ||
| Achten Sie darauf, dass Sie in einer Gleichung dieselben Dateitypen verrechnen. Möchten Sie beispielsweise eine Fließkommazahl berechnen müssen Sie alle Variable mit <code>float()</code> umwandeln. | | Achten Sie darauf, dass Sie in einer Gleichung dieselben Dateitypen verrechnen. Möchten Sie beispielsweise eine Fließkommazahl berechnen müssen Sie alle Variable mit <code>float()</code> umwandeln. | ||
| Zeile 145: | Zeile 163: | ||
|} | |} | ||
== Aufgabe 9.2: Geradeausfahrt mit Linienverfolger == | |||
Nun wollen wir gleichzeitig den Ultraschall und Linienverfolger nutzen. | Nun wollen wir gleichzeitig den Ultraschall und Linienverfolger nutzen. | ||
# Bereiten Sie sich vor, indem Sie die Funktion des Linienverfolgungssensors in der gängigen Fachliteratur (z. B. [[AlphaBot_Linienverfolgungsssensor |AlphaBot - Linienverfolgungssensor]]) recherchieren und erläutern können. | # Bereiten Sie sich vor, indem Sie die Funktion des Linienverfolgungssensors in der gängigen Fachliteratur (z. B. [[AlphaBot_Linienverfolgungsssensor |AlphaBot - Linienverfolgungssensor]]) recherchieren und erläutern können. | ||
| Zeile 155: | Zeile 173: | ||
# Experimentieren Sie, welche Parameter <code>Kp, Kd</code> die besten Ergebnisse liefern. | # Experimentieren Sie, welche Parameter <code>Kp, Kd</code> die besten Ergebnisse liefern. | ||
# Dokumentieren Sie Ihre Ergebnisse systematisch tabellarisch. | # Dokumentieren Sie Ihre Ergebnisse systematisch tabellarisch. | ||
'''Arbeitsergebnisse:''' <code>PDReglerUltraschall.pap, PDReglerUltraschall.ino, zeigeRoboterpose.m</code> | '''Arbeitsergebnisse:''' <code>PDReglerUltraschall.pap, PDReglerUltraschall.ino, zeigeRoboterpose.m</code> | ||
=== Aufgabe | |||
== Aufgabe 9.3: Umgebung als x-y-Plot == | |||
# Senden Sie die Messdaten x und y via Bluetooth an MATLAB<sup>®</sup>. | |||
# Berechnen Sie den Kurswinkel <math>\psi = \frac{\Delta x}{\Delta y}</math>. | |||
# Zeichnen Sie die Roboterpose (x,y,ψ) während der Fahrt in MATLAB<sup>®</sup>. | |||
'''Arbeitsergebnisse:''' <code>zeigeTrajektorie.m</code> | |||
== Aufgabe 9.4: Nachhaltige Doku == | |||
Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | ||
* Halten Sie die Regeln für den [[Software_Versionsverwaltung_mit_SVN|Umgang mit SVN]] ein. | * Halten Sie die Regeln für den [[Software_Versionsverwaltung_mit_SVN|Umgang mit SVN]] ein. | ||
| Zeile 168: | Zeile 194: | ||
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | '''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | ||
= | = [[Datei:Lektionen.jpg|60px]] Ausblick zur nächsten Lektion = | ||
In der nächsten Lektion sucht der AlphaBot, während er geregelt einer schwarzen Linie folgt, mitdem Ultraschallsensor eine freie Parklücke. | |||
---- | ---- | ||
→ Termine [[ | → Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2026|1]] [[AlphaBot:_Messdatenverarbeitung_mit_MATLAB|2]] [[AlphaBot:_Hardware_Support_Package_für_MATLAB|3]] [[AlphaBot: Servo_mit_MATLAB_ansteuern|4]] [[AlphaBot:_Motoren_und_Inkrementalgeber|5]] [[AlphaBot: Programmier-Challenge I SoSe26|6]] [[AlphaBot:_Roboternavigation_SoSe26|7]] [[AlphaBot:_Bluetooth_Datenlogger|8]] [[AlphaBot: Geregelte Fahrt mit Linienverfolger|9]] [[AlphaBot: Parklücke suchen|10]] [[AlphaBot: Autonomes Einparken|11]] [[AlphaBot: Programmier-Challenge II SoSe26|12]]<br> | ||
→ zurück zum Hauptartikel: [[ | → zurück zum Hauptartikel: [[AlphaBot_SoSe26|Informatik Praktikum 2]]<br> | ||
→ Haben Sie Fragen? [[Informatik Praktikum FAQ]] | |||
Aktuelle Version vom 14. Juni 2026, 15:27 Uhr


| Autor: | Prof. Dr.-Ing. Schneider |
| Modul: | Praxismodul II |
| Lektion: | 9 |
| Lehrveranstaltung: | Mechatronik, Informatik Praktikum 2, 2. Semester |
Inhalt
- Inbetriebnahme des Linienverfolgungssensors
- Kalibrierung des Linienverfolgungssensors
- PD-Regler
- x-y-Plot der Roboterpose
Lernziele
Nach Durchführung dieser Lektion können Sie
- geregelt einer Linie folgen.
- den Kurswinkel aus differenzieller Odometrie bestimmen und darstellen.
- die Funktion eines PID-Reglers erläutern.
- einen PD-Regler systematisch auslegen.
- die Auslegung systematisch dokumentieren
Vorbereitung
Bereiten Sie diese Aufgabe für den Praktikumstermin vor.
- Planen Sie jede Aufgabe als PAP.
- Nehmen Sie den Linienverfolger anhand der Beispiel
E28_IR_Line_Tracking_Sensor_MessungundE28b_IR_Line_Tracking_Sensorin Betrieb. - Nutzen Sie das Tutorial AlphaBot_Linienverfolgungsssensor zur Einarbeitung.
- Kalibrieren Sie den Sensor.
- Zeigen Sie die Messwerte im seriellen Monitor an.
- Kapseln Sie die Kalibrierung in der Funktion
void KalibriereLinienVerfolger(). - Beantworten Sie die Lernzielkontrollfragen.
- Ohne umfangreiche Vorbereitung werden Sie nicht zum Praktikum zugelassen.
Arbeitsergebnis: void KalibriereLinienVerfolger()
| Tipp 1 |
void KalibriereLinienVerfolger() {
Serial.println("Kalibrierung startet für 10s...");
for (int i = 0; i < 400; i++) // Die Kalibrierung kann 10s dauern.
{
trs.calibrate(); // Die Sensoren werden 10x gelesen
}
Serial.println("Kalibrierung beendet");
/* Ausgabe der Minimalwerte während der Kalibrierung */
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(trs.calibratedMin[i]);
Serial.print(' ');
}
Serial.println();
/* Ausgabe der Maximalwerte während der Kalibrierung */
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(trs.calibratedMax[i]);
Serial.print(' ');
}
Serial.println();
delay(1000); // 1 Sekunde Pause
}
|
Lernzielkontrollfragen
- Wie funktioniert der Linienverfolgungssensors technisch?
- Arbeitet der Sensor passiv?
- Welche Bauteile kommen in Sender und Empfänger zum Einsatz?
- Welche Wellenlänge hat das ausgesendete Licht? Ist dieses sichtbar?
- Wieso und wie wird der Sensor kalibriert?
- Erläutern Sie wie und wieso ein gewichteter Mittelwert gebildet wird.
- Welchen Messbereich hat das Sensorsystem?
- Welcher Wert dient als Sollwert?
Tutorials
- AlphaBot_Linienverfolgungsssensor
- info8uniwue: Einführung PID Regler
- Loviscach, J.: P- und PI-Regler; Einstellung nach Ziegler-Nichols
- Studyfix: Regelkreis
- RuleTheBots: Linienverfolger
Demos
E28_IR_Line_Tracking_Sensor_MessungE28b_IR_Line_Tracking_SensorE08_Infrared_Line_TrackingE08b_Infrared_Line_Tracking_PD
Versuchsdurchführung
Aufgabe 9.1: PD-Regler

- Programmieren Sie einen PD-Regler gemäß Abb. 4, damit der AlphaBot der schwarzen Linien folgt.
- Planen Sie zuvor das Programm als PAP.
- Wählen Sie den Sollwert als Konstante.
- In welchem Bereich bewegt sich der Istwert?
- Setzen Sie die Motorsteuerung mit dem Befehl
MotorRun(L,R)um, wobei gilt . - Experimentieren Sie, welche Parameter
Kp, Kddie besten Ergebnisse liefern. - Dokumentieren Sie Ihre Ergebnisse systematisch tabellarisch.
Arbeitsergebnisse: PDRegler.pap, PDRegler.ino, PD_Parametervariation.xslx
| Tipp 1 |
| Nützliche Links: |
| Tipp 2 |
Abb. 6: PAP des PID-Reglers im void loop() |
| Tipp 3 |
| Studieren Sie das Beispiel E08b_Infrared_Line_Tracking_PD. |
Achten Sie darauf, dass Sie in einer Gleichung dieselben Dateitypen verrechnen. Möchten Sie beispielsweise eine Fließkommazahl berechnen müssen Sie alle Variable mit float() umwandeln.
|
| Lassen Sie einen Motor (R) mit konstanter Leistung (z. B. 80) fahren und verändern sie relativ dazu den anderen Motor (z. B. ). |
Legen Sie den Regler für eine sanfte Geradenfahrt aus.
|
Aufgabe 9.2: Geradeausfahrt mit Linienverfolger
Nun wollen wir gleichzeitig den Ultraschall und Linienverfolger nutzen.
- Bereiten Sie sich vor, indem Sie die Funktion des Linienverfolgungssensors in der gängigen Fachliteratur (z. B. AlphaBot - Linienverfolgungssensor) recherchieren und erläutern können.
- Nutzen Sie schwarzes Klebeband auf einem hellen Untergrund (z. B. weißes Blatt Papier), um eine gerade Fahrstrecke von 2 m zu markieren.
- Drehen Sie den Ultraschall-Sensor auf 180° (Blick auf die Wand).
- Messen Sie während der Fahrt die gefahrene Strecke (x) mit der Odometrie.
- Messen Sie während der Fahrt den Abstand zur Wand (y) mit dem Ultraschall Sensor.
- Folgen Sie der schwarzen Linie möglichst geradlinig.
- Experimentieren Sie, welche Parameter
Kp, Kddie besten Ergebnisse liefern. - Dokumentieren Sie Ihre Ergebnisse systematisch tabellarisch.
Arbeitsergebnisse: PDReglerUltraschall.pap, PDReglerUltraschall.ino, zeigeRoboterpose.m
Aufgabe 9.3: Umgebung als x-y-Plot
- Senden Sie die Messdaten x und y via Bluetooth an MATLAB®.
- Berechnen Sie den Kurswinkel .
- Zeichnen Sie die Roboterpose (x,y,ψ) während der Fahrt in MATLAB®.
Arbeitsergebnisse: zeigeTrajektorie.m
Aufgabe 9.4: Nachhaltige Doku
Sichern Sie alle Ergebnisse mit beschreibendem Text (message) in SVN.
- Halten Sie die Regeln für den Umgang mit SVN ein.
- Halten Sie die Programmierrichtlinie für C und die Programmierrichtlinien für MATLAB® ein.
- Versehen Sie jedes Programm mit einem Header (Header Beispiel für MATLAB, Header Beispiel für C).
- Kommentiere Sie den Quelltext umfangreich.
Arbeitsergebnis in SVN: SVN Log
Ausblick zur nächsten Lektion
In der nächsten Lektion sucht der AlphaBot, während er geregelt einer schwarzen Linie folgt, mitdem Ultraschallsensor eine freie Parklücke.
→ Termine 1 2 3 4 5 6 7 8 9 10 11 12
→ zurück zum Hauptartikel: Informatik Praktikum 2
→ Haben Sie Fragen? Informatik Praktikum FAQ
