Inhalte zur Vorlesungswoche #4, Einführung in die Ingenieurwissenschaften im Wintersemester 2024/25
(EN google-translate)
(PL google-translate)
Da noch die Lötarbeiten der nächsten beiden Gruppen ausstehen, wird noch einmal der Bau an den Staubsaugrobotern ausgesetzt.
Statt dessen lernen Sie ganz im Sinne der Intention dieser Lehrveranstaltung "Einführung in das Ingenieurwesen" zwei neuartige Sichtweisen auf die Technik kennen:
- ...eine sozio-kulturelle am Beispiel der Bootsbaukunst der Bewohner der Polynesischen Inseln,
- ...eine systemtheoretische am Beispiel der Arbeiten des Begründers der Kybernetik, Norbert Wiener.
|
Schließlich werden wir aber im zweiten Teil noch einmal auf das Simulationsprogramm von letzter Woche schauen.
In einer neuen Version dieses Programms wurde die Programmierschnittstelle für die Implementierung
der Fahrstrategie aus dem Gesamtkontext herausgelöst und dadurch deren Handhabung vereinfacht.
Es ist eine wichtige, weit verbreitete Methode in der Technik, Teilsysteme zu modularisieren und
eine einfache Schnittstelle anzubieten, die die Integration in einen größeren Kontext vereinfacht.
Die Komplexität des Teilsystems wird so weit verborgen, wie das möglich ist, um die Handhabung
zu vereinfachen. BEISPIELE:
- Die Bereitstellung einer Spülmaschine mit fest eingestellten Programmen, unter denen gewählt werden kann.
- Die Bereitstellung von Mikrocontrollerboards (besipielsweise Arduino) gemeinsam mit einer Entwicklungsumgebung
- Die Bereitstellung eines App-Stores, der den Prozess des Downloads und der Installation von Programmen vereinfacht.
- Die Bereitstellung von Zahlungsmethoden, die Authentifizierung und Geldtransfer vereinfacht und schnell nutzbar machen.
|
ÜBUNG
- Diskutieren Sie, ob Sie dieses Konzept auch realisiert und prägend für die Technik finden.
- Nennen Sie ggf. weitere Beispiele, wo Ihnen dieses Prinzip auch schon einmal begegnet ist.
|
Themen heute:
- Technik in anderen Kulturen: Die Boote der Polynesier
- Kybernetik am Beispiel des Flugabwehrsystems nach dem Begründer der Kybernetik, Norbert Wiener
- Artikel über Staubsaugroboter
- Saugbot-Simulation mit verbesserter Programmierschnittstelle
|
1 Technik in anderen Kulturen: Die Boote der Polynesier
Beispiel: Bootsbau in Taumako, Dokumentarfilm von Michael Tauchert.
mitropico.com/filter/Reihe-Magische-Welten-ZDF/Polynesien-Nomaden-der-Sudsee
vaka.org -- Taumako Projekt
Navigation mit Te Puke Booten -- Dr. Mimi George
vaka.org/research/navigation
ÜBUNG
- Diskutieren Sie den Unterschied zwischen der Ihnen geläufigen Abendländischen Technik und der Bootsbau- und Navigationskunst der Polynesier.
- Die Polynesischen Inseln wurden von verschiedenen europäischen Ländern bis in die 50er Jahre hinein kolonisiert.
- Überlegen Sie, worin Vor- und Nachteile der verschiedenen Technikarten liegen, wie sie einerseits durch die polynesische Navigations- und Bootsbaukunst repräsentiert wird und andererseits heute durch das abendländische Pendent dazu?
- Leben mit Technik: Betrachten Sie die beiden Arten von Technik im Hinblick auf das Leben im Alltag. Kategorien wie Glück und Zufriedenheit werden im technischen Kontext selten thematisiert, aber letzten Endes sollte doch die Technisierung der Welt dies zum Ziel haben. Also wie steht es damit?
|
2 Kybernetik am Beispiel des Flugabwehrsystems nach dem Begründer der Kybernetik, Norbert Wiener
de.wikipedia.org/wiki/Norbert_Wiener
youtu.be/nnPImWZ1O2s
- Das am Ende des Zweiten Weltkriegs entwickelte Flugabwehrsystem nach Norbert Wiener
|
youtu.be/qkDCmEtYcjU
ÜBUNG
- Machen Sie sich klar, wie das beschriebene Flugabwehrsystem funktioniert und fertigen eine Skizze dazu an.
- Warum ist das neuartige System effizienter, als sein Vorgänger?
- Wo in dem System liegt ein Regelkreis verborgen?
- Viele technische Innovationen sind "Kinder des Krieges" -- sammeln Sie Beispiele, die Ihnen bekannt sind und diskutieren Sie, ob das gut oder schlecht ist.
|
3 Saugbot-Simulation mit verbesserter Programmierschnittstelle
- In dem nachfolgenden Projekt, wurde der Programmteil für die Fahrstrategie herausgelöst und ist nun als Methode in einer eigenen Klasse verfügbar.
- Wichtige Variablen, aufgrund deren die aktuelle Reaktion bestimmt wird, werden der Methode von außen (runde) Klammern übergeben.
- Man muss sich klar machen, dass diese Methode mehrmals pro Sekunde aufgerufen wird und jedesmal festgelegt werden muss, wie der Vortrieb und die Winkelgeschwindigkeit eingestellt werden.
- Erst aus der mehrfachen Ausführung dieser Methode ergibt sich im Ergebnis die sichtbare Umsetzung der Fahrstrategie.
|
- Lassen Sie uns in einem ersten Schritt überlegen, wie hier in die noch leere Fahrstrategiemethode die ursprüngliche Fahrstrategie eingepflegt werden kann.
- Dies gelingt durch Vergleich der alten Version des Projekts mit dieser neuen und man muss die Bedeutung der der Methode von Außen übergebenen Variablen verstehen.
- Zunächst wird die Variante vorgegeben, bei der KEIN Zufallswinkel nach der Kollision eingestellt wird:
|
if(kollision)
{
//ISTWINKEL und KWINKEL sind so aufbereitet, dass beide zwischen 0 und 359 Grad liegen.
int differenz = (int)(ISTWINKEL - KWINKEL);
if(differenz<0) //Dafür sorgen, dass die Differenz im Betrag genommen wird.
differenz = -differenz;
//Solange eine Kollision vorliegt UND die die Fahrtrichtung nicht weit genug
//weg von der Richtung liegt, in der die Kollision vorliegt, soll nur gedreht werden.
// || bedeutet logisches ODER
if(differenz<160 || differenz>200)
{
w=wmax;
v=0.0;
}
//Wenn aber die Kollision vorliegt, aber die Fahrtrichtung ungefähr in entgegengesetzte
//Richtung liegt, dann soll trotzdem vorwärts gefahren werden.
else
{
w=0.0;
v=vmax;
}
}
//Wenn keine Kollision in die eingeschlagene Richtung weiterfahren:
else
{
w=0.0;
v=vmax;
}
//###########################################################################################
Code 0-1: Einfachste Fahrstrategie: Fortsetzung der Fahrt nach der Kollision ungefähr 180 Grad gedreht gegenüber der Richtung, in der die Kollision liegt (kommentierter Quelltext).
Saugroboter011.zip -- Gesamtprojekt mit obiger Fahrstrategie.
ÜBUNG
Beurteilen Sie die Güte der jeweils in den nachfolgenden Aufgaben implementierten Strategien, indem Sie jeweils das Programm immer nach (circa) 60 Sekunden unterbrechen (LEETASTE) und den Sauberkeitsgrad notieren.
Verändern Sie nicht das heruntergeladene Programm, sondern führen Sie alle Veränderungen immer mit einer Kopie des Projekts durch und machen eine weitere Kopie, wenn ein funktionierender Stand erreicht ist, Sie aber noch weiter arbeiten wollen, um nicht bereits Erreichtes u.U. wieder zu verlieren!
Aufgabe 1: Fortsetzen der Fahrt nach Kollision in Zufallsrichtung
- Sorgen Sie nun dafür, dass der Winkel, in dem die Fahrtrichtung fortgesetzt wird nun in einem gewissen Bereich (z.B. +/-20Grad) streut.
- Folgender Befehl kann im Programm verwendet werden, um beispielsweise eine gleichverteilte (Pseudo-)Zufallszahl zwischen -20 und +20 zu generieren:
- Siehe auch den Umgang mit Pseudozufallszahlen oben in der Klasse Fahrstrategie.
|
- int zufallswert = zufall.nextInt(81)-40;
|
Aufgabe 2: Fortsetzen der Fahrt nach Kollision in Zufallsrichtung, aber Aussparung des Bereichs in der Nähe von 180 Grad
Aufgabe 3: Neue eigene Strategie