AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Kategorie:Arduino Kategorie:AlphaBot thumb|rigth|450px|Abb. 1: Dieser Artikel ist in Bearbeitung '''Autor:''' Prof. Dr.-Ing. Schneider<br> '''Modul:''' Praxismodul I<br> '''Lehrveranstaltung:''' Mechatronik, Informatik Praktikum 2, 2. Semester<br> == Inhalt == * == Lernziele== Nach Durchführung dieser Lektion können Sie * == Versuchsdurchführung == === Aufgabe 5.1: Lichtschran…“) |
|||
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Arduino]] | [[Kategorie:Arduino]] | ||
[[Kategorie:AlphaBot]] | [[Kategorie:AlphaBot]] | ||
[[Datei: | [[ Datei:EPA Algo.jpg|thumb|rigth|450px|Abb. 1: Schritte eines Einparkvorgangs]] | ||
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br> | '''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br> | ||
'''Modul:''' Praxismodul I<br> | '''Modul:''' Praxismodul I<br> | ||
Zeile 10: | Zeile 10: | ||
== Lernziele== | == Lernziele== | ||
Nach Durchführung dieser Lektion können Sie | Nach Durchführung dieser Lektion können Sie | ||
* | * mit yED eine Zustandsmaschine planen. | ||
* eine Zustandsmaschine programmieren. | |||
* funktional programmieren und Funktionen zu einem großen Projekt zusammenf¨ugen. | |||
* Quelltext debuggen und optimieren. | |||
* Messdaten speichern und via MATLAB<sup>®</sup> auswerten und visualisieren. | |||
* autonom einen AlphaBot einparken. | |||
== Vorbereitung/Hausaufgabe == | |||
In diesem Praktikumstermin soll Ihr AlphaBot autonom einparken. Erstellen Sie als Vorbereitung ein [https://de.wikipedia.org/wiki/Endlicher_Automat Zustandsdiagramm] für die Funktion <code>Parken()</code> mit [https://www.yworks.com/products/yed yEd]. | |||
Planen Sie eine Zustandsmaschine, die zwischen den Zuständen | |||
* Zustand 1: Parklücke suchen, | |||
* Zustand 2: Rechtseinschlag (rückwärts), | |||
* Zustand 3: Linkseinschlag (rückwärts) und | |||
* Zustand 4: Geradeaus (Korrekturzug) | |||
unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen? | |||
Legen Sie das Programm als Funktionsrümpfe an. | |||
Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml | |||
'''Arbeitsergebnisse:''' <code>AutonomesParken.pap, AutonomesParken.ino</code> | |||
== Versuchsdurchführung == | == Versuchsdurchführung == | ||
=== Aufgabe | In diesem Termin lassen wir den AlphaBot autonom einparken. | ||
=== Aufgabe 10.1: Parken === | |||
Schreiben Sie das Programm <code>AutonomesParken.ino</code>. Folgende Funktionsanforderungen sollten erfüllt werden: | |||
# Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann. | |||
## Zustand: Parklücke suchen, | |||
## Zustand: Rechtseinschlag, | |||
## Zustand: Linkseinschlag und | |||
## Zustand: Geradeaus (Korrekturzug) | |||
# Fahren Sie konstant ohne Unterbrechung zügig rückwärts. | |||
# Verwenden Sie Ihr Programm <code>sucheParkluecke.ino</code> im Zustand 1. | |||
# Programmieren Sie Zustand 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie rückwärts bis das Fahrzeug 40° zur Lücke steht. | |||
# Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug gerade (0 °) in der Lücke steht. | |||
# Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der Parklücke stehen. | |||
# Schalten Sie alle Motoren aus. | |||
'''Anforderungen:''' | |||
* Realisieren Sie die Zustandsmaschine mit der Mehrfachverzweigung <code>switch..case</code>. | |||
* Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie). | |||
* Nutzen Sie den Ultraschallsensor um Mittig in der Parklücke zu stehen. | |||
'''Arbeitsergebnisse:''' <code>AutonomesParken.ino</code> | |||
=== Aufgabe 10.2: Nachhaltige Doku === | |||
* 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 [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie für C]] und die [[Medium:Programmierrichtlinien_für_Matlab.pdf|Programmierrichtlinien für MATLAB<sup>®</sup>]] 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: <code>SVN Log</code> | |||
== Tutorials == | == Tutorials == | ||
Zeile 22: | Zeile 71: | ||
---- | ---- | ||
→ Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2023|1]] [[AlphaBot:_Messdatenverarbeitung_mit_MATLAB|2]] [[AlphaBot:_MATLAB_als_serieller_Monitor|3]] [[AlphaBot: Servo ansteuern|4]] [[AlphaBot: AlphaBot:_Motoren_und_Inkrementalgeber|5]]<br> | → Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2023|1]] [[AlphaBot:_Messdatenverarbeitung_mit_MATLAB|2]] [[AlphaBot:_MATLAB_als_serieller_Monitor|3]] [[AlphaBot: Servo ansteuern|4]] [[AlphaBot: AlphaBot:_Motoren_und_Inkrementalgeber|5]] [[AlphaBot: Programmier-Challenge I SoSe23|6]] [[AlphaBot:_Gesteuerte_Fahrt|7]] [[AlphaBot: Geregelte Fahrt mit Linienverfolger|8]] [[AlphaBot: Parklücke suchen|9]] [[AlphaBot: Autonomes Einparken|10]] [[AlphaBot: Programmier-Challenge II SoSe23|11]]<br> | ||
→ zurück zum Hauptartikel: [[AlphaBot_SoSe23|Informatik Praktikum 2]] | → zurück zum Hauptartikel: [[AlphaBot_SoSe23|Informatik Praktikum 2]] |
Aktuelle Version vom 22. Mai 2023, 13:39 Uhr
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester
Inhalt
Lernziele
Nach Durchführung dieser Lektion können Sie
- mit yED eine Zustandsmaschine planen.
- eine Zustandsmaschine programmieren.
- funktional programmieren und Funktionen zu einem großen Projekt zusammenf¨ugen.
- Quelltext debuggen und optimieren.
- Messdaten speichern und via MATLAB® auswerten und visualisieren.
- autonom einen AlphaBot einparken.
Vorbereitung/Hausaufgabe
In diesem Praktikumstermin soll Ihr AlphaBot autonom einparken. Erstellen Sie als Vorbereitung ein Zustandsdiagramm für die Funktion Parken()
mit yEd.
Planen Sie eine Zustandsmaschine, die zwischen den Zuständen
- Zustand 1: Parklücke suchen,
- Zustand 2: Rechtseinschlag (rückwärts),
- Zustand 3: Linkseinschlag (rückwärts) und
- Zustand 4: Geradeaus (Korrekturzug)
unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen?
Legen Sie das Programm als Funktionsrümpfe an.
Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml
Arbeitsergebnisse: AutonomesParken.pap, AutonomesParken.ino
Versuchsdurchführung
In diesem Termin lassen wir den AlphaBot autonom einparken.
Aufgabe 10.1: Parken
Schreiben Sie das Programm AutonomesParken.ino
. Folgende Funktionsanforderungen sollten erfüllt werden:
- Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann.
- Zustand: Parklücke suchen,
- Zustand: Rechtseinschlag,
- Zustand: Linkseinschlag und
- Zustand: Geradeaus (Korrekturzug)
- Fahren Sie konstant ohne Unterbrechung zügig rückwärts.
- Verwenden Sie Ihr Programm
sucheParkluecke.ino
im Zustand 1. - Programmieren Sie Zustand 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie rückwärts bis das Fahrzeug 40° zur Lücke steht.
- Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug gerade (0 °) in der Lücke steht.
- Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der Parklücke stehen.
- Schalten Sie alle Motoren aus.
Anforderungen:
- Realisieren Sie die Zustandsmaschine mit der Mehrfachverzweigung
switch..case
. - Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie).
- Nutzen Sie den Ultraschallsensor um Mittig in der Parklücke zu stehen.
Arbeitsergebnisse: AutonomesParken.ino
Aufgabe 10.2: 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
Demos
Literatur
→ Termine 1 2 3 4 5 6 7 8 9 10 11
→ zurück zum Hauptartikel: Informatik Praktikum 2