AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 9: Zeile 9:
*  
*  
== Lernziele==
== Lernziele==
Nach Durchführung dieser Lektion können Sie
Nach Durchf¨uhrung dieser Lektion k¨onnen Sie
*  
* 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 28: Zeile 33:
== 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 4 Zuständen
## Zustand 1: Parkl¨ucke suchen,
## Zustand 2: Rechtseinschlag,
## Zustand 3: Linkseinschlag und
## Zustand 4: Geradeaus (Korrekturzug)
unterscheiden kann.
# Fahren Sie konstant ohne Unterbrechung z¨ugig r¨uckw¨arts.
# Verwenden Sie Ihr Programm sucheParkluecke.ino im Zustand 1.
# Programmieren Sie Zustand 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie
r¨uckw¨arts bis das Fahrzeug 40° zur L¨ucke steht.
# 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.
 
=== 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.
 
'''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>


== Tutorials ==
== Tutorials ==

Version vom 19. Mai 2023, 15:19 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¨uhrung dieser Lektion k¨onnen Sie

  • 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: AEP.pap, AEP.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 4 Zuständen
    1. Zustand 1: Parkl¨ucke suchen,
    2. Zustand 2: Rechtseinschlag,
    3. Zustand 3: Linkseinschlag und
    4. Zustand 4: Geradeaus (Korrekturzug)

unterscheiden kann.

  1. Fahren Sie konstant ohne Unterbrechung z¨ugig r¨uckw¨arts.
  2. Verwenden Sie Ihr Programm sucheParkluecke.ino im Zustand 1.
  3. Programmieren Sie Zustand 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie

r¨uckw¨arts bis das Fahrzeug 40° zur L¨ucke steht.

  1. Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug

gerade (0 °) in der L¨ucke steht.

  1. Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorw¨arts, bis Sie mittig in der

Parkl¨ucke stehen.

  1. Schalten Sie alle Motoren aus.

Aufgabe 10.2: Nachhaltige Doku

Hinweise:

  • Es empfiehlt sich die Zustandsmaschine mit den Befehlen switch..case 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: AutonomesParken.ino


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