AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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 ==
== 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].
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].
Zeile 20: Zeile 26:
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>


== Versuchsdurchführung ==
== Versuchsdurchführung ==
In diesem Termin lassen wir den AlphaBot autonom einparken.
In diesem Termin lassen wir den AlphaBot autonom einparken.
=== Aufgabe 5.1: Lichtschranke ===
=== 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&thinsp;°) 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 ==

Aktuelle Version vom 22. Mai 2023, 13:39 Uhr

Abb. 1: Schritte eines Einparkvorgangs

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:

  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

Demos

Literatur


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