AlphaBot: Geregelte Fahrt mit Linienverfolger: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| (12 dazwischenliegende Versionen von 2 Benutzern 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]] | [[Datei:Tracker-sensor.jpg|thumb|rigth|350px|Abb. 2: AlphaBot Linienverfolger]] | ||
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | {|class="wikitable" | ||
'''Modul:''' Praxismodul | |- | ||
'''Lehrveranstaltung:''' Mechatronik, Informatik Praktikum 2, 2. Semester | | '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | ||
|- | |||
| '''Modul:''' || Praxismodul II | |||
|- | |||
| '''Lehrveranstaltung:''' || Mechatronik, Informatik Praktikum 2, 2. Semester | |||
|} | |||
== Inhalt == | == Inhalt == | ||
| Zeile 40: | Zeile 44: | ||
|- | |- | ||
| | | | ||
<syntaxhighlight lang="c" style="background-color: #EFF1C1; font-size: | <syntaxhighlight lang="c" style="background-color: #EFF1C1; font-size:small"> | ||
void KalibriereLinienVerfolger() { | void KalibriereLinienVerfolger() { | ||
Serial.println("Kalibrierung startet für 10s..."); | Serial.println("Kalibrierung startet für 10s..."); | ||
| Zeile 82: | Zeile 86: | ||
== Versuchsdurchführung == | == Versuchsdurchführung == | ||
=== Aufgabe | === Aufgabe 7.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 94: | Zeile 98: | ||
|- | |- | ||
|} | |} | ||
---- | |||
=== Aufgabe | === Aufgabe 7.2: 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]] | ||
| Zeile 105: | Zeile 109: | ||
# In welchem Bereich bewegt sich der Istwert? | # In welchem Bereich bewegt sich der Istwert? | ||
# Setzen Sie die Motorsteuerung mit dem Befehl <code>MotorRun(L,R)</code> um, wobei gilt <math>L,R \in [-250; 250]</math>. | # Setzen Sie die Motorsteuerung mit dem Befehl <code>MotorRun(L,R)</code> um, wobei gilt <math>L,R \in [-250; 250]</math>. | ||
# Experimentieren Sie, welche Parameter | # Experimentieren Sie, welche Parameter <code>Kp, Kd</code> die besten Ergebnisse liefern. | ||
# Dokumentieren Sie Ihre Ergebnisse systematisch tabellarisch. | # Dokumentieren Sie Ihre Ergebnisse systematisch tabellarisch. | ||
| Zeile 135: | Zeile 139: | ||
| 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. | ||
|- | |- | ||
| Lassen Sie einen Motor mit konstanter Leistung (z. B. 80) fahren und verändern sie relativ dazu (z. B. <math> 80 \pm 20</math>). | | Lassen Sie einen Motor (R) mit konstanter Leistung (z. B. 80) fahren und verändern sie relativ dazu den anderen Motor (z. B. <math>L= 80 \pm 20</math>). | ||
|- | |- | ||
| Legen Sie den Regler für eine sanfte Geradenfahrt aus.<br> | | Legen Sie den Regler für eine sanfte Geradenfahrt aus.<br> | ||
# Legen Sie mit <code>Kd = 0</code> zuerst <code>Kp</code> aus. | # Legen Sie mit <code>Kd = 0</code> zuerst <code>Kp</code> aus. | ||
# Gehen Sie wissenschaftlich vor. Schreiben Sie alle Beobachtungen in eine Tabelle. Sind Sie zufrieden, ändern Sie den <code>Kp</code>-Wert nicht mehr (z. B. <code>Kp = 0. | # Gehen Sie wissenschaftlich vor. Schreiben Sie alle Beobachtungen in eine Tabelle. Sind Sie zufrieden, ändern Sie den <code>Kp</code>-Wert nicht mehr (z. B. <code>Kp = -0.01</code>). | ||
# Variieren Sie nun <code>Kd</code>, um die Schwingung des P-Reglers zu dämpfen. Bei mir ist <code>Kd = 0.5* Kp</code>. | # Variieren Sie nun <code>Kd</code>, um die Schwingung des P-Reglers zu dämpfen. Bei mir ist <code>Kd = 0.5* Kp</code>. | ||
# Manche Gruppen haben mit einem reinen P-Regler bereits zufriedenstellende Ergebnisse erziehlt. | # Manche Gruppen haben mit einem reinen P-Regler bereits zufriedenstellende Ergebnisse erziehlt. | ||
| Zeile 145: | Zeile 149: | ||
|} | |} | ||
=== Aufgabe | === Aufgabe 7.3: 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 159: | Zeile 163: | ||
'''Arbeitsergebnisse:''' <code>PDReglerUltraschall.pap, PDReglerUltraschall.ino, zeigeRoboterpose.m</code> | '''Arbeitsergebnisse:''' <code>PDReglerUltraschall.pap, PDReglerUltraschall.ino, zeigeRoboterpose.m</code> | ||
=== Aufgabe | === Aufgabe 7.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 173: | Zeile 177: | ||
* [https://www.youtube.com/watch?v=quqxyny5kBU Loviscach, J.: P- und PI-Regler; Einstellung nach Ziegler-Nichols] | * [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://www.youtube.com/watch?v=l26IGS2RlM0 Studyfix: Regelkreis] | ||
* [https://spacehal.github.io/docs/category/linienfolger RuleTheBots: Linienverfolger] | |||
== Demos == | == Demos == | ||
| Zeile 180: | Zeile 185: | ||
*<code>E08b_Infrared_Line_Tracking_PD</code> | *<code>E08b_Infrared_Line_Tracking_PD</code> | ||
---- | ---- | ||
→ Termine [[ | → Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2025|1]] [[AlphaBot:_Hardware_Support_Package_für_MATLAB|2]] [[AlphaBot: Servo_mit_MATLAB_ansteuern|3]] [[AlphaBot:_Motoren_und_Inkrementalgeber|4]] [[AlphaBot: Programmier-Challenge I SoSe25|5]] [[AlphaBot:_Gesteuerte_Geradeausfahrt|6]] [[AlphaBot: Geregelte Fahrt mit Linienverfolger|7]] [[AlphaBot: Parklücke suchen|8]] [[AlphaBot: Autonomes Einparken|9]] [[AlphaBot: Programmier-Challenge II SoSe25|10]]<br> | ||
→ zurück zum Hauptartikel: [[ | → zurück zum Hauptartikel: [[AlphaBot_SoSe25|Informatik Praktikum 2]] | ||
Aktuelle Version vom 5. Juni 2025, 07:54 Uhr


| Autor: | Prof. Dr.-Ing. Schneider |
| Modul: | Praxismodul II |
| Lehrveranstaltung: | Mechatronik, Informatik Praktikum 2, 2. Semester |
Inhalt
- Inbetriebnahme des Linienverfolgungssensors
- Kalibrierung des Linienverfolgungssensors
- 2-Punkt-Regler
- 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/Hausaufgabe
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
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?
Versuchsdurchführung
Aufgabe 7.1: 2-Punkt-Regler
Programmieren Sie einen 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.
Arbeitsergebnissse: ZweiPunktRegler.pap, ZweiPunktRegler.ino
| Tipp 1 |
Abb. 3: PAP des 2-Punkt-Reglers im void loop() |
Aufgabe 7.2: 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 7.3: 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.
- Zeichnen Sie die Roboterpose (x,y,ψ) in MATLAB®.
Arbeitsergebnisse: PDReglerUltraschall.pap, PDReglerUltraschall.ino, zeigeRoboterpose.m
Aufgabe 7.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
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
→ Termine 1 2 3 4 5 6 7 8 9 10
→ zurück zum Hauptartikel: Informatik Praktikum 2

