AlphaBot: Messdatenverarbeitung mit MATLAB: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 32: | Zeile 32: | ||
# Wurde auf <code>magic numbers</code> verzichtet? | # Wurde auf <code>magic numbers</code> verzichtet? | ||
# Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]] eingehalten? | # Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]] eingehalten? | ||
--> | |||
== Vorbereitung == | == Vorbereitung == | ||
Fürhren Sie als Vorbereitung den [https://www.mathworks.com/learn/tutorials/matlab-onramp.html MATLAB<sup>®</sup> Onramp Kurs] durch. | Fürhren Sie als Vorbereitung den [https://www.mathworks.com/learn/tutorials/matlab-onramp.html MATLAB<sup>®</sup> Onramp Kurs] durch. | ||
Zeile 40: | Zeile 40: | ||
== Versuchsdurchführung == | == Versuchsdurchführung == | ||
=== Aufgabe 2.1 | === Aufgabe 2.1: Gleitendes Mittelwertfilter === | ||
Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO. | Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO. | ||
# Schreiben Sie die Funktion <code>GleitendesMittelwertFilter | # Schreiben Sie die Funktion <code>GleitendesMittelwertFilter.m</code>, welches die Eingangswerte zyklisch filtert. Hier bei wird der Mittelwert über die letzten k Messwerte gebildet. | ||
# Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen. | # Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen mit Ihrem Framework <code>zeigeZyklischUltraschallMessung.m</code> und <code>UltraschallMessung.mat</code> Aus den Aufgaben 1.3 und 1.4. | ||
# Visualisieren Sie Messwerte und Filterergebnis | # Visualisieren Sie Messwerte und Filterergebnis in einem Plot mit Achsenbeschriftung und Legende. | ||
# Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen. | # Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen. | ||
# Wählen Sie k anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider. | # Wählen Sie k anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider. | ||
'''Arbeitsergebnisse''' in SVN: <code>testeGleitendesMittelwert. | '''Arbeitsergebnisse''' in SVN: <code>testeGleitendesMittelwert.m</code> | ||
'''Hinweis:''' | '''Hinweis:''' | ||
Zeile 87: | Zeile 64: | ||
</div> | </div> | ||
=== Aufgabe | === Aufgabe 2.2: Rekursives Tiefpassfilter === | ||
Ein rekursives Filter kann Messwerte in Echtzeit während der Laufzeit filtern. Nutzen Sie ein Tiefpassfilter, um die Messwerte zu filtern. | Ein rekursives Filter kann Messwerte in Echtzeit während der Laufzeit filtern. Nutzen Sie ein Tiefpassfilter, um die Messwerte zu filtern. | ||
# Schreiben Sie die Funktion <code>TiefpassFilter | # Schreiben Sie die Funktion <code>TiefpassFilter.m</code>, welches die Eingangswerte zyklisch filtert. Hierbei wird der Tiefpass berechnet. | ||
# Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen. | # Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen mit Ihrem Framework <code>zeigeZyklischUltraschallMessung.m</code> und <code>UltraschallMessung.mat</code> Aus den Aufgaben 1.3 und 1.4. | ||
# Visualisieren Sie Messwerte und Filterergebnis | # Visualisieren Sie Messwerte und Filterergebnis in einem Plot mit Achsenbeschriftung und Legende. | ||
# Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen. | # Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen. | ||
# Wählen Sie <math>\alpha</math> anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider. | # Wählen Sie <math>\alpha</math> anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider. | ||
'''Arbeitsergebnisse''' in SVN: <code>testeTiefpassFilter. | '''Arbeitsergebnisse''' in SVN: <code>testeTiefpassFilter.m</code> | ||
'''Hinweis:''' | '''Hinweis:''' | ||
Zeile 105: | Zeile 82: | ||
</div> | </div> | ||
=== Aufgabe | === Aufgabe 2.3: Filtervergleich === | ||
# Vergleichen Sie die Ergebnisse dies Tiefpasses mit denen des gleitenden Mittelwertfilters. | |||
# Zeigen Sie das ungefilterte und die gefilterten Signal in MATLAB<sup>®</sup> in einem Plot vergleichend an. | |||
# Beschriften Sie die Achsen und nutzen Sie eine Legende. | |||
* | # Beantworten Sie die nachfolgenden Fragen | ||
* | ## Wurde das Signalrauschen geglättet? | ||
* | ## Ist das gefilterte Signal verzögert? | ||
## Welchen Einfluss haben die Filterparameter? | |||
* | ## Wie verhalten sich die gefilterten Signal bei Ausreißern? | ||
=== Aufgabe 2.4: 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 | '''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | ||
== Tutorials == | == Tutorials == | ||
Zeile 130: | Zeile 114: | ||
== Literatur == | == Literatur == | ||
# | |||
# Brühlmann, T.: ''Arduino Praxiseinstieg''. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=125816&query_desc=kw%2Cwrdl%3A%20arduino HSHL-Bib], [https://learning.oreilly.com/library/view/arduino-praxiseinstieg/9783747500569/ O'Reilly-URL] | # Brühlmann, T.: ''Arduino Praxiseinstieg''. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=125816&query_desc=kw%2Cwrdl%3A%20arduino HSHL-Bib], [https://learning.oreilly.com/library/view/arduino-praxiseinstieg/9783747500569/ O'Reilly-URL] | ||
# Brühlmann, T.: ''Sensoren im Einsatz mit Arduino''. Frechen: mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=130719&query_desc=kw%2Cwrdl%3A%20Br%C3%BChlmann HSHL-Bib], [https://learning.oreilly.com/library/view/sensoren-im-einsatz/9783958451520/?ar O'Reilly] | # Brühlmann, T.: ''Sensoren im Einsatz mit Arduino''. Frechen: mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=130719&query_desc=kw%2Cwrdl%3A%20Br%C3%BChlmann HSHL-Bib], [https://learning.oreilly.com/library/view/sensoren-im-einsatz/9783958451520/?ar O'Reilly] |
Version vom 20. März 2023, 12:56 Uhr
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester
Aufgabenstatus: In Bearbeitung
Inhalt
- Einarbeitung in MATLAB®
- Statische und dynamische Messung mit dem Ultraschallsensor
- Programmierung und Anwendung eines gleitenden Mittelwertfilters
Lernziele
Nach Durchführung dieser Lektion
- können Sie Debug-Daten speichern und via MATLAB® visualisieren.
- können Sie direkt MATLAB® als seriellen Monitor nutzen.
- können Sie ein Signal differenzieren und kennen die Gefahren dieser Berechnung.
- kennen Sie die Funktion und Kennwerte des Ultraschall-Sensors.
- können Sie Entfernungen mit dem Ultraschall-Sensor messen.
- können Sie Software mit einem PAP planen.
Vorbereitung
Fürhren Sie als Vorbereitung den MATLAB® Onramp Kurs durch.
Arbeitsergebnis in SVN: Kurszertifikat
Versuchsdurchführung
Aufgabe 2.1: Gleitendes Mittelwertfilter
Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO.
- Schreiben Sie die Funktion
GleitendesMittelwertFilter.m
, welches die Eingangswerte zyklisch filtert. Hier bei wird der Mittelwert über die letzten k Messwerte gebildet.
- Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen mit Ihrem Framework
zeigeZyklischUltraschallMessung.m
und UltraschallMessung.mat
Aus den Aufgaben 1.3 und 1.4.
- Visualisieren Sie Messwerte und Filterergebnis in einem Plot mit Achsenbeschriftung und Legende.
- Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen.
- Wählen Sie k anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider.
Arbeitsergebnisse in SVN: testeGleitendesMittelwert.m
Hinweis:
- Nutzen Sie das FIFO aus Aufgabe 6.4.
- Die Formel für das gleitende Mittelwertfilter lautet: für k Messwerte
Eine Einführung zu rekursiven Filtern finden Sie in folgendem Video.
- Gleitendes Mittelwertfilter: 19 m 52 s
- Tiefpassfilter: 29 m
Aufgabe 2.2: Rekursives Tiefpassfilter
Ein rekursives Filter kann Messwerte in Echtzeit während der Laufzeit filtern. Nutzen Sie ein Tiefpassfilter, um die Messwerte zu filtern.
- Schreiben Sie die Funktion
TiefpassFilter.m
, welches die Eingangswerte zyklisch filtert. Hierbei wird der Tiefpass berechnet.
- Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen mit Ihrem Framework
zeigeZyklischUltraschallMessung.m
und UltraschallMessung.mat
Aus den Aufgaben 1.3 und 1.4.
- Visualisieren Sie Messwerte und Filterergebnis in einem Plot mit Achsenbeschriftung und Legende.
- Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen.
- Wählen Sie anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider.
Arbeitsergebnisse in SVN: testeTiefpassFilter.m
Hinweis:
- Die Formel für das Tiefpassfilter lautet: für den aktuellen Messwert .
- ist hierbei ein Filterparameter .
Aufgabe 2.3: Filtervergleich
- Vergleichen Sie die Ergebnisse dies Tiefpasses mit denen des gleitenden Mittelwertfilters.
- Zeigen Sie das ungefilterte und die gefilterten Signal in MATLAB® in einem Plot vergleichend an.
- Beschriften Sie die Achsen und nutzen Sie eine Legende.
- Beantworten Sie die nachfolgenden Fragen
- Wurde das Signalrauschen geglättet?
- Ist das gefilterte Signal verzögert?
- Welchen Einfluss haben die Filterparameter?
- Wie verhalten sich die gefilterten Signal bei Ausreißern?
Aufgabe 2.4: 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
- Brühlmann, T.: Arduino Praxiseinstieg. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: HSHL-Bib, O'Reilly-URL
- Brühlmann, T.: Sensoren im Einsatz mit Arduino. Frechen: mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: HSHL-Bib, O'Reilly
- Snieders, R.: ARDUINO lernen. Nordhorn: 8. Auflage 2022. URL: https://funduino.de/vorwort
- Schneider, U.: Programmierrichtlinie für für die Erstellung von Software in C. Lippstadt: 1. Auflage 2022. PDF-Dokument (212 kb)
→ zurück zum Hauptartikel: Informatik Praktikum 2