AlphaBot: Programmier-Challenge I SoSe23: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
(26 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Arduino]]
[[Kategorie:Arduino]]
[[Datei:James-harrison-vpOeXr5wmR4-unsplash.jpg|thumb|rigth|350px|Abb. 1: Ampelmodul für Arduino]]
[[Datei:James-harrison-vpOeXr5wmR4-unsplash.jpg|thumb|rigth|350px|Abb. 1: Programmier-Challenge I]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
'''Modul:''' Praxismodul II<br>
'''Modul:''' Praxismodul II<br>
'''Lehrveranstaltung:''' Mechatronik, Informatikpraktikum 2, 2. Semester, Wintersemester<br>
'''Lehrveranstaltung:''' Mechatronik, Informatikpraktikum 2, 2. Semester, Wintersemester<br>
Bearbeitungsdauer: 60&thinsp;Minuten
Bearbeitungsdauer: 60&thinsp;Minuten


== Inhalt ==
== Inhalt ==
Diese Programmier-Challenge dient als Lernzielkontrolle und semesterbegleitende Zwischenprüfung. Im Termin erhalten Sie eine Herausforderung, die Sie in einem festen Zeitrahmen als Team oder Einzelperson lösen. Das Ergebnis dieser Challenge wird in SVN gesichert und anschließend bewertet. Inhaltlich ist die Aufgabe eine Mischung der vorangegangenen Lektionen 1-5. Sie haben Zugriff auf all Ihre Quellen in SVN sowie die AlphaBot-Demos.
Diese Programmier-Challenge dient als Lernzielkontrolle und semesterbegleitende Zwischenprüfung. Im Termin erhalten Sie eine Herausforderung, die Sie in einem festen Zeitrahmen als Team oder Einzelperson lösen. Das Ergebnis dieser Challenge wird in SVN gesichert und anschließend bewertet. Inhaltlich ist die Aufgabe eine Mischung der vorangegangenen Lektionen 1-5. Sie haben Zugriff auf Ihre Quellen in SVN sowie die AlphaBot-Demos.


== Vorbereitung ==
== Vorbereitung ==
Als Vorbereitung könnten Sie sich die Lektionen 1 bis 5 noch einmal ansehen.
* Als Vorbereitung könnten Sie sich die Lektionen 1 bis 5 noch einmal ansehen. Sie werden mit dem AlphaBot über Odometrie von Punkt A nach B navigieren und während dessen mit dem Ultraschallsensor Objekte detektieren.
* Üben Sie das [[Software_Planung|Planen der Software]] mit dem PAP-Designer. Bereiten Sie sich ein Tamplate für die Arduino Programmierung vor.
* Nutzen Sie die Funktionen aus den vorherigen Lektionen. Schreiben Sie nicht alles neu. Wenden Sie das Gelernte an.
 
=== Übungsaufgabe 1: Roboterpose  ===
# Fahren Sie einen Kreis mit 1&thinsp;m Radius.
# Bestimmen Sie die Roboterpose (<math>x, y, \Psi</math> ) anhand der Odometrie.
# Zeichnen Sie die Roboterpose in MATLAB<sup>®</sup>.
 
'''Arbeitsergebnis''' in SVN: <code>Kreisfahrt.ino, zeichneRoboterpose.m</code>
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 1&thinsp;</strong>
|-
| [[Datei:Diff Odometrie.jpg|left|450px|Abb. 5: Kursbestimmung aus differentieller Odometrie]]<br> Abb. 5: Kursbestimmung aus differentieller Odometrie
|-
|Für den Kurswinkel <math>\Psi</math> gilt: <math>\Psi=\frac{s_R-s_L}{l}</math> mit <math>l</math>: Spurweite
|-
|Der AlphaBot hat eine Spurweite <math>l</math> von 14&thinsp;cm.
|-
| Literatur: [https://spacehal.github.io/docs/robotik/odometrie Lokalisierung und Odometrie eines Roboters mit differentiellem Antrieb]
|-
| Die neue Postion des Roboters lässt sich dann als die alte Postion plus der Positionsänderung beschreiben:<br> <math>x'=x+\Delta x</math><br> <math>y'=y+\Delta y</math><br> <math>\Psi'=\Psi+\Delta \Psi</math>
|}
 
=== Übungsaufgabe 2: Roboternavigation ===
Führen Sie die nachfolgenden Roboterbewegungen möglichst exakt aus.
# Fahren Sie 1&thinsp;m geradeaus.
# Fahren Sie einen Kreis mit 1&thinsp;m Durchmesser.
# Fahren Sie 1&thinsp;m rückwärts.
Stehen Sie auf Ihrer Ausgangsposition?
 
'''Arbeitsergebnis''' in SVN: <code>fahreZumStartpunkt.ino</code>
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 1&thinsp;</strong>
|-
| Es ist nahezu unmöglich allein mit Odometrie exakt zu navigieren. Räder haben stets Schlupf.
|-
| Steuern Sie die Räder langsam an.
|-
| Nutzen Sie dieselbe Unterfunktionfunktion <code>fahreStrecke(Kruemmung)</code>, um die Fahrt zu starten. Die Krümmung  berechnet sich aus dem Radius: <math>K=\frac{1}{R}</math>.
|-
| <math>K=0\,\frac{1}{m}</math>: Geradeausfahrt<br><math>K=1\,\frac{1}{m}</math>: Kurvenfahrt mit 1&thinsp;m Radius.
|-
| Das Potentiometer der Multisensorerweiterung lässt sich nutzen, um den Gleichlauf der Motoren einzustellen.
|}
 
=== Übungsaufgabe 3: Hinderniserkennung ===
Ein Hindernis erscheint plötzlich in Ihrem Fahrschlauch. Sie reagieren mit einer Notbremsung, um den Unfall zu vermeiden. Verlässt das Hindernis (z.&thinsp;B. ein Reh) die Fahrbahn, kann die geplante Fahrt weitergehen.
# Nutzen Sie <code>fahreZumStartpunkt.ino</code> aus Übungsaufgabe 2.
# Stoppen Sie, falls weniger als 20&thinsp;cm vor Ihnen ein Hindernise auftaucht/steht (Notbremse).
# Fahren Sie weiter, sobald das Hindernis entfernt wurde.
'''Arbeitsergebnis''' in SVN: <code>Notbremsassistent.ino</code>
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 1&thinsp;</strong>
|-
| Drehen Sie den Ultraschall auf 90&thinsp;° (in Fahrrichtung geradeaus).
|-
| Wird ein Hindernis detektiert wird die Fahrt umgehend '''pausiert'''. Speichern Sie den Zustand.
|-
| Wird ein Hindernis entfernt wird die Fahrt wieder '''weitergeführt'''. Beispiel: Die Fahrstrecke beträgt 1&thinsp;m geradeaus. Zum Zeitpunkt der Notbremsung wurden bereits 50&thinsp;cm gefahren. Ist das Hindernis entfernt, fahren Sie 50&thinsp;cm weiter.
|}
 
== Tutorial ==
* [[Software_Plagiat| Was ist ein Plagiat?]]
* [[Software_Planung| Was ist ein PAP?]]


== FAQ ==
== FAQ ==
* Ist Anwesenheitspflicht? '''Ja.'''
* Ist Anwesenheitspflicht? '''Ja.'''
* Muss ich den Baukasten mitbringen? '''Ja. Es werden pro Gruppe 2 Baukästen benötigt.'''
* Muss ich den Baukasten mitbringen? '''Nein. Die AlphaBots stehen Ihnen im Labor zur Verfügung.'''
* Ist es ein [[Software_Plagiat|Plagiat]], wenn ich Quelltext anderer kopiere und als meine Leistung in einer Prüfung abgebe? '''Ja.'''
* Ist es ein [[Software_Plagiat|Plagiat]], wenn ich Quelltext anderer kopiere und als meine Leistung in einer Prüfung abgebe? '''Ja.'''
* Darf ich für die Lösung eine KI verwenden? '''Nein. Die Prüfungsleistung ist eine Eigenleistung und die Verwendung einer KI wie z.&thinsp;B. <code>chatGPT</code> gilt als Plagiat.


 
== Dokumente ==
* [https://www.c-howto.de c-HowTo (Deutsche Anleitung)]
* [https://homepage.ruhr-uni-bochum.de/patrick.laskowski/pic/skript.pdf Programmieren in C]
* [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinien]]
----
----
→ 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:_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]]

Version vom 4. Mai 2023, 11:34 Uhr

Abb. 1: Programmier-Challenge I

Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul II
Lehrveranstaltung: Mechatronik, Informatikpraktikum 2, 2. Semester, Wintersemester

Bearbeitungsdauer: 60 Minuten

Inhalt

Diese Programmier-Challenge dient als Lernzielkontrolle und semesterbegleitende Zwischenprüfung. Im Termin erhalten Sie eine Herausforderung, die Sie in einem festen Zeitrahmen als Team oder Einzelperson lösen. Das Ergebnis dieser Challenge wird in SVN gesichert und anschließend bewertet. Inhaltlich ist die Aufgabe eine Mischung der vorangegangenen Lektionen 1-5. Sie haben Zugriff auf Ihre Quellen in SVN sowie die AlphaBot-Demos.

Vorbereitung

  • Als Vorbereitung könnten Sie sich die Lektionen 1 bis 5 noch einmal ansehen. Sie werden mit dem AlphaBot über Odometrie von Punkt A nach B navigieren und während dessen mit dem Ultraschallsensor Objekte detektieren.
  • Üben Sie das Planen der Software mit dem PAP-Designer. Bereiten Sie sich ein Tamplate für die Arduino Programmierung vor.
  • Nutzen Sie die Funktionen aus den vorherigen Lektionen. Schreiben Sie nicht alles neu. Wenden Sie das Gelernte an.

Übungsaufgabe 1: Roboterpose

  1. Fahren Sie einen Kreis mit 1 m Radius.
  2. Bestimmen Sie die Roboterpose ( ) anhand der Odometrie.
  3. Zeichnen Sie die Roboterpose in MATLAB®.

Arbeitsergebnis in SVN: Kreisfahrt.ino, zeichneRoboterpose.m

Übungsaufgabe 2: Roboternavigation

Führen Sie die nachfolgenden Roboterbewegungen möglichst exakt aus.

  1. Fahren Sie 1 m geradeaus.
  2. Fahren Sie einen Kreis mit 1 m Durchmesser.
  3. Fahren Sie 1 m rückwärts.

Stehen Sie auf Ihrer Ausgangsposition?

Arbeitsergebnis in SVN: fahreZumStartpunkt.ino

Übungsaufgabe 3: Hinderniserkennung

Ein Hindernis erscheint plötzlich in Ihrem Fahrschlauch. Sie reagieren mit einer Notbremsung, um den Unfall zu vermeiden. Verlässt das Hindernis (z. B. ein Reh) die Fahrbahn, kann die geplante Fahrt weitergehen.

  1. Nutzen Sie fahreZumStartpunkt.ino aus Übungsaufgabe 2.
  2. Stoppen Sie, falls weniger als 20 cm vor Ihnen ein Hindernise auftaucht/steht (Notbremse).
  3. Fahren Sie weiter, sobald das Hindernis entfernt wurde.

Arbeitsergebnis in SVN: Notbremsassistent.ino

Tutorial

FAQ

  • Ist Anwesenheitspflicht? Ja.
  • Muss ich den Baukasten mitbringen? Nein. Die AlphaBots stehen Ihnen im Labor zur Verfügung.
  • Ist es ein Plagiat, wenn ich Quelltext anderer kopiere und als meine Leistung in einer Prüfung abgebe? Ja.
  • Darf ich für die Lösung eine KI verwenden? Nein. Die Prüfungsleistung ist eine Eigenleistung und die Verwendung einer KI wie z. B. chatGPT gilt als Plagiat.

Dokumente


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