AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(20 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
[[Kategorie:AlphaBot]]
[[Kategorie:AlphaBot]]
[[ Datei:EPA Algo.jpg|thumb|rigth|450px|Abb. 1:  Schritte eines Einparkvorgangs]]
[[ Datei:EPA Algo.jpg|thumb|rigth|450px|Abb. 1:  Schritte eines Einparkvorgangs]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
{|class="wikitable"
'''Modul:''' Praxismodul I<br>
|-
'''Lehrveranstaltung:''' Mechatronik, Informatik Praktikum 2, 2. Semester<br>
| '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
|-
| '''Modul:''' || Praxismodul II
|-
| '''Lehrveranstaltung:''' || Mechatronik, Informatik Praktikum 2, 2. Semester
|}
 
= Inhalt =


== Inhalt ==
*
== Lernziele==
== Lernziele==
Nach Durchf¨uhrung dieser Lektion k¨onnen Sie
Nach Durchführung dieser Lektion können Sie
* mit yED eine Zustandsmaschine planen.
* eine Zustandsmaschine programmieren.
* eine Zustandsmaschine programmieren.
* funktional programmieren und Funktionen zu einem großen Projekt zusammenf¨ugen.
* funktional programmieren und Funktionen zu einem großen Projekt zusammenfügen.
* Quelltext debuggen und optimieren.
* Quelltext debuggen und optimieren.
* Messdaten speichern und via MATLAB<sup>®</sup> auswerten und visualisieren.
* Messdaten speichern und via MATLAB<sup>®</sup> auswerten und visualisieren.
Zeile 25: Zeile 31:
unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen?
unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen?


Legen Sie das programm als Funktionsrümpfe an.
Legen Sie das Programm als Funktionsrümpfe an.


Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml
Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml


'''Arbeitsergebnisse:''' <code>AEP.pap, AEP.ino</code>
'''Arbeitsergebnisse:''' <code>AutonomesParken.pap, AutonomesParken.ino</code>
 
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung Hausaufgabe&thinsp;</strong>
|-
| [[Datei:Zustandsdiagramm AEP Inf2P.jpg|500px]]
|}


== Versuchsdurchführung ==
= Versuchsdurchführung =
In diesem Termin lassen wir den AlphaBot autonom einparken.
In diesem Termin lassen wir den AlphaBot autonom einparken.
=== Aufgabe 10.1: Parken ===
== Aufgabe 10.1: Parken ==
Schreiben Sie das Programm <code>AutonomesParken.ino</code>. Folgende Funktionsanforderungen sollten erfüllt werden:
Schreiben Sie das Programm <code>AutonomesParken.ino</code>. Folgende Funktionsanforderungen sollten erfüllt werden:
# Erstellen Sie eine Zustandsmaschine, die zwischen den 4 Zuständen
# Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann.
## Zustand 1: Parkl¨ucke suchen,
## Zustand: Parklücke suchen,
## Zustand 2: Rechtseinschlag,
## Zustand: Rechtseinschlag,
## Zustand 3: Linkseinschlag und
## Zustand: Linkseinschlag und
## Zustand 4: Geradeaus (Korrekturzug)
## Zustand: Geradeaus (Korrekturzug)
unterscheiden kann.
# Fahren Sie konstant ohne Unterbrechung zügig rückwärts.
# Fahren Sie konstant ohne Unterbrechung z¨ugig r¨uckw¨arts.
# Verwenden Sie Ihr Programm <code>sucheParkluecke.ino</code> im Zustand 1.
# 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 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie
# Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug gerade (0&thinsp;°) in der Lücke steht.
r¨uckw¨arts bis das Fahrzeug 40° zur L¨ucke steht.
# Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der Parklücke stehen.
# Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug
gerade (0 °) in der L¨ucke steht.
# Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorw¨arts, bis Sie mittig in der
Parkl¨ucke stehen.
# Schalten Sie alle Motoren aus.
# Schalten Sie alle Motoren aus.


=== Aufgabe 10.2: Nachhaltige Doku ===
'''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.
* 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 57: Zeile 73:
* Versehen Sie jedes Programm mit einem Header ([[Header Beispiel für MATLAB]], [[Header Beispiel für C]]).
* Versehen Sie jedes Programm mit einem Header ([[Header Beispiel für MATLAB]], [[Header Beispiel für C]]).
* Kommentiere Sie den Quelltext umfangreich.
* Kommentiere Sie den Quelltext umfangreich.
'''Hinweise:'''
* Es empfiehlt sich die Zustandsmaschine mit den Befehlen <code>switch..case</code> zu realisieren.
* Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie).
* Nutzen Sie den Ultraschallsensor um Mittig in der Parkl¨ucke zu stehen.
'''Arbeitsergebnisse:''' <code>AutonomesParken.ino</code>


'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>
= Tutorials =
* [https://de.wikipedia.org/wiki/Endlicher_Automat Wikipedia: Zustandsdiagramm]
* [https://de.mathworks.com/discovery/state-diagram.html Zustandsdiagramme mit MATLAB<sup>®</sup>]


== Tutorials ==
== Demos ==


== Literatur ==


----
----
→ 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>
→ 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: [[AlphaBot_SoSe23|Informatik Praktikum 2]]
→ zurück zum Hauptartikel: [[AlphaBot_SoSe25|Informatik Praktikum 2]]

Aktuelle Version vom 10. Juni 2025, 13:37 Uhr

Abb. 1: Schritte eines Einparkvorgangs
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul II
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ügen.
  • 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:

  1. Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann.
    1. Zustand: Parklücke suchen,
    2. Zustand: Rechtseinschlag,
    3. Zustand: Linkseinschlag und
    4. Zustand: Geradeaus (Korrekturzug)
  2. Fahren Sie konstant ohne Unterbrechung zügig rückwärts.
  3. Verwenden Sie Ihr Programm sucheParkluecke.ino im Zustand 1.
  4. Programmieren Sie Zustand 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie rückwärts bis das Fahrzeug 40° zur Lücke steht.
  5. Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug gerade (0 °) in der Lücke steht.
  6. Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der Parklücke stehen.
  7. 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

Arbeitsergebnis in SVN: SVN Log

Tutorials



→ Termine 1 2 3 4 5 6 7 8 9 10
→ zurück zum Hauptartikel: Informatik Praktikum 2