Inhalte zur Vorlesungswoche #3, Entwicklung fehlertoleranter Software für eingebettete Echtzeitsysteme im Wintersemester 2024/25
(EN google-translate)
(PL google-translate)
Beschäftigung im Falle einer Verspätung wie letzte Woche:
- Arbeiten Sie sich in die Java-basierte Entwicklungsumgebung Processing ein.
|
Nutzen Sie chatGPT, um sich die Programme erklären zu lassen.
Sammeln Sie Fragen zur Programmentwicklung mit Processing.
processing.org
- Gehen Sie dazu die folgenden Beispiele praktisch am PC unter Xubuntu durch:
|
78_Processing/02_Erste_Schritte
- Gehen Sie in Processing die verschiedenen Testbeispiele aus den Libraries durch (z.B. Datei->Beispiele->Basics->Image->LoadDisplayImage).
|
- Gehen Sie diesen Beitrag zu Objektorientierung mit Processing durch und sammeln Fragen dazu:
|
10_Informatik1/05_Softwareentwicklung/03_Objektorientierung
- Versuchen Sie hier die Aufgabe 6.3 und später eventuell auch 6.4 zu lösen:
|
10_Informatik1/01_day_by_day/06_LV_06_05_2024
Themen heute:
- Quiz
- Präsentation und Diskussion zu 1 Units of Mitigation, 2 Correcting Audits, GRUPPE A
- Erstes Brainstorming zu möglichen Anwendungen der sensorischen Erfassung menschlicher Bewegungen
- ÜBUNG
|
1 Quiz
- Erläutern Sie die Begriffe Fault-Error-Failure
- Erläutern Sie den Begriff Mitigation
- Erläutern Sie den Begriff Specification
- Erläutern Sie den Begriff Zeitliche Korrektheit
|
2 Präsentation und Diskussion zu 1 Units of Mitigation, 2 Correcting Audits, GRUPPE A
- Bitte bereiten Sie Folien ggf. als pdf-Dokument vor.
- Nutzen Sie bitte die Möglichkeit die Folien bei Moodle hochzuladen.
- So kann die Präsentation vom Dozenten-PC erfolgen.
|
3 Erstes Brainstorming zu möglichen Anwendungen der sensorischen Erfassung menschlicher Bewegungen
- Jede Gruppe sollte ein eigenes Projektthema im Zusammenhang mit der sensorischen Erfassung menschlicher Bewegungen für sich finden.
- Diese Themen sollten sich möglichst auch darin unterscheiden, welche Sensordaten wie verwendet werden.
- Dies sorgt dafür, dass selbst bei der Verwendung der gleichen Fehlertoleranzpattern in den verschiedenen Gruppen diese typischerweise konkret etwas anders ausfallen werden.
- In einem ersten Brainstorming soll ein Ideenpool gebildet werden.
- Bei den Ideen wird auch vermerkt, von welcher Gruppe die jeweilige Idee vorgestellt wurde. Diese Gruppe erhält dann bevorzugt die Option, das von ihnen genannte Thema als ihr Projekt zu auszuwählen.
|
Gruppe A
VR-Anwendungen: virtuelles Selbst mit richtiger Körperhaltung darstellen
Gruppe B
Bewegungssensor als Ersatz für eine Spielkonsole, einfaches Spiel: Pong
Gruppe C
Medizinische Anwendung: Möglichkeit der Einnahme bestimmter Gelenkwinkelstellungen überprüfen
Boxen: Schlaggeschwindigkeit und Reaktionszeit erfassen
Charakterisierung von Stößen auf ihre Schwere und der Notwendigkeit beispielsweise einen Airbag auszulösen
Gruppe D
Medizinische Anwendung: Vorgabe von Körperhaltungen, Erfassen, ob diese korrekt nachvollzogen werden
(vorgegebenen Bewegungen könnten mit der Zeit schneller und komplexer werden)
Balance-Spiele: Sensor könnte (auch) an dem äußeren Objekt (bsp. Wippe) angebracht sein, um das Ganze zu automatisien und zu kontrollieren
Virtuelle Drums: beispielsweise Sensor im Stick und am Arm, um sowohl Ort des Schlags, als auch die Stärke zu erfassen.
ev. wegen Latenz nur Parameter beeinflussen.
Gruppe E
Erfassung der Kinematik von Menschen, um sie auf animierte Figuren zu mappen
Gruppe F
Müdigkeit erfassen, beispielsweise um die Fahrtauglichkeit zu erfassen
Möglichkeiten ergründen, über Reaktionszeit u.ä. indirekt darauf zu schließen
Gruppe G
Erfassung des Gehens mittels Sensoren, die an den unteren Gliedmaßen angebracht sind
(z.B. Schädlichkeit von Sprüngen)
Code 0-1: Von den verschiedenen Gruppen gefundene mögliche Themen.
4 ÜBUNG
- Ausgangspunkt sollen erneut das Programme-Paar bilden, mit dessen Hilfe die Bewegungsdaten eines Arduino NANO 33 IoT in einem Processing-Sketch verwendet werden können:
|
Sie hier ganz unten 96_Arduino/30_Arduino_33_nano_IoT den Arduino-Sketch WiFi_IMU_Ardu001b und den Processing-Sketch Processing Part: WiFi_IMU_Proc001b.
Aufgabe 1 -- Vorarbeiten / Konsolidierung des letzten technischen Standes
- Bringen Sie die beiden Programme in Kombination zum Laufen.
- Richten Sie dazu einen Hotspot hotspotX ein, wobei X Ihr Gruppen-Buchstabe ist, also beispielsweise hotspotE für Gruppe E.
- Passen Sie den Arduino-Sketch im Tab arduino_secrets.h an, also beispielsweise so:
|
#define SECRET_SSID "hotspotE"
#define SECRET_PASS "12345678"
Code 0-2: Beispielanpassung für Gruppe E im Tab arduino_secrets.h von WiFi_IMU_Ardu001b.
Anleitung zum Erstellen eines Hospots mit dem PC oder Laptop unter Xubuntu: kramann.info/06_Ing/01_Bauplan/04_Hotspot
- Verbinden Sie den PC, bzw. Laptop mit dem eigenen Hotspot durch Anwahl von "mit verborgenem Funknetzwerk verbinden".
- Überprüfen Sie am PC bzw. Laptop die IP-Adresse mit Hilfe eines Terminals, in dem Sie den Befehl ifconfig eingeben.
- Beispiel-Antwort:
|
wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.42.0.1 netmask 255.255.255.0 broadcast 10.42.0.255
inet6 fe80::6e3:ce87:32c4:a600 prefixlen 64 scopeid 0x20<link>
ether 78:2b:46:4d:5c:c9 txqueuelen 1000 (Ethernet)
RX packets 93844 bytes 22004820 (22.0 MB)
RX errors 0 dropped 2385 overruns 0 frame 0
TX packets 177249 bytes 12496120 (12.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Code 0-3: Beispielausgabe nach ifconfig.
- In dem Beispiel ist 10.42.0.1 die IP-Adresse des Laptops und 10.42.0.255 die Broadcastadresse.
- Um nicht immer die IP-Adresse des Arduino in dem Processing-Sketch anpassen zu müssen, soll im Processing-Sketch statt der konkreten Arduino-IP die Broadcast-IP verwendet werden:
|
String ip = "10.42.0.255"; // Broadcastadresse nutzen. So keine Anpassungen nötig.
Code 0-4: Beispielanpassung in Zeile 18 des Processing-Sketches.
- Überprüfen Sie schließlich, ob nach diesen Anpassungen die Bewegungsdaten beim Processing-Sketch ankommen.
|
Aufgabe 2
- Die Armbewegung, die man bei einem Boxstoß ausführt, soll automatisch auf ihre maximale Schnelligkeit hin analysiert werden.
- Aus einer Ruheposition heraus soll ein möglichst schneller Faustschlag nach vorne ausgeführt werden.
- Der Schlag wird in die Luft ausgeführt, ohne etwas zu treffen.
- Die Bewegung gliedert sich somit in zwei Phasen:
|
- Einnehmen der Haltung vor dem Boxstoß.
- Ausführen des Boxstoßes.
|
- Die Processing-Software soll erkennen, wann die Haltung vor dem Boxstoß richtig eingenommen wurde und dann "grünes Licht" geben.
- Dann soll die Maximalgeschwindigkeit während des Stoßes erfasst werden und schließlich im Anwendungsfenster in Meter pro Sekunde angezeigt werden.
|
- Zerlegen Sie die Gesamtaufgabe zunächst in kleine Teilaufgeben, die Sie zunächst einzeln umsetzen.
- Versuchen Sie dann die gesamte Software zu realisieren.
- Insbesondere kann die Erfassung der Einnahme der Startposition getrennt von dem Rest behandelt werden.
- Überlegen Sie sich, wie die Beschleunigungsdaten kalibriert und zeitlich integriert werden müssen.
- Nutzen Sie eine Powerbank zur Stromversorgung des Arduino bei Bewegungserfassung.
|
- Hinweis: Die absoltue Systemzeit in Millisekunden kann in Java/Processing mit folgendem Befehl abgerufen werden:
|
- long T = System.currentTimeMillis();
|
- Für die zeitliche Integration der Beschleunigungsdaten dürfte das von Nutzen sein.
|