Entwicklung autonomer mobiler Systeme im Sommersemester 2025
(EN google-translate)
(PL google-translate)
|
83_AV
05_esp32AV
67_Echtzeitsysteme
72_COACH2
73_COACH3
74_EmbSyst
50_Simulationstechnik
62_Regelungssysteme
79_Deep_Learning
78_Processing
77_Android
#1 Di 25.03.2025
|
Ein Beispiel mit ChatGPT (21.03.2023 https://chat.openai.com/chat):
FRAGE:
Schreibe eine Klasse "Matrix" in Java/Processing, die die folgende Schnittstelle iMatrix
implementiert und mit show() die gespeicherte zweidimensionale Integer-Matrix im Grafik-Fenster anzeigt.
Dieses zweidimensionale Integer-Array wird bei Erzeugen eines Objektes dem Konstruktor übergeben
und eine Referenz der Matrix soll im Objekt als private Attribut gespeichert werden.
Die Darstellung soll die Zahlen in den Zeilen und Spalten der Matrix in einem rechteckigen Schema darstellen.
Die Matrix soll zudem so angezeigt werden, dass Einer, Zehner usw. untereinander in Flucht dargestellt werden.
Hier ist die Schnittstelle:
public interface iMatrix
{
public abstract void show();
}
ANTWORT:
Hier ist eine mögliche Implementierung der Klasse "Matrix" in Java/Processing,
die die Schnittstelle iMatrix implementiert und eine zweidimensionale
Integer-Matrix im Grafik-Fenster anzeigt:
public class Matrix implements iMatrix {
private int[][] matrix;
private PApplet parent;
public Matrix(PApplet parent, int[][] matrix) {
this.parent = parent;
this.matrix = matrix;
}
public void show() {
int numRows = matrix.length;
int numCols = matrix[0].length;
int cellSize = 40;
int startX = 50;
int startY = 50;
parent.textSize(20);
parent.noStroke();
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < numCols; j++) {
int value = matrix[i][j];
int x = startX + j * cellSize;
int y = startY + i * cellSize;
parent.fill(255);
parent.rect(x, y, cellSize, cellSize);
parent.fill(0);
parent.text(value, x + cellSize/2, y + cellSize/2);
}
}
}
}
Die Klasse nimmt im Konstruktor eine Referenz auf das Processing-Objekt
parent sowie ein zweidimensionales Integer-Array matrix als Argumente.
Die Matrix wird als private Attribut matrix gespeichert.
Die Methode show() zeichnet die Matrix im Grafik-Fenster. Die Größe der
Zellen wird auf cellSize festgelegt, der Abstand zum linken und oberen
Rand auf startX und startY. Die Methode iteriert über die Zeilen und
Spalten der Matrix und zeichnet für jede Zelle ein weißes Rechteck mit
schwarzer Zahl in der Mitte.
Die Zahlen werden mit der Processing-Methode text() in der Mitte der
Zelle platziert und mit der Methode textSize() auf 20 Pixel gesetzt.
Die Methode noStroke() sorgt dafür, dass keine Umrandung der Zellen gezeichnet wird.
Um die Klasse zu nutzen, kann ein Objekt von Matrix mit einer Matrix-Referenz
erstellt und die show-Methode aufgerufen werden:
int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
Matrix matrixObj = new Matrix(this, matrix);
matrixObj.show();
Code 0-1: Frage an ChatGPT und dessen Antwort.
Ohne Anspruch auf Vollständigkeit zergliedert sich die Lehrveranstaltung in folgende Einzelthemen:
|
Ergänzend sollen auch aktuelle Forschungsergebnisse angeschaut werden. Dies erfolgt seminaristisch.
FTS
Autonomes Fahren Level 1 bis 5
Warum ist autonomes Fahren noch nicht so weit?
Miteinander zu kombinierende Teilsysteme
Autonomes Fahren und Sicherheit
Schaut man sich das zweite Video an, so wird einem sofort klar, dass es hier auch um Sicherheit gehen soll. So hat Schweden sich das Ziel gesetzt, keine Verkehrstoten mehr zu haben und die Firma Volvo, dass es keine Unfälle mehr mit Autos dieser Marke geben soll.
Autonomes Fahren und Ethik
Gehen Sie in Zweiergruppen die Szenarien durch.
Diskutieren Sie anschließend im Plenum Ihre Erfahrungen.
Feedback
Was sind Ihre Erwartungen an diesen Kurs?
Agentensysteme und Schwarmintelligenz
83_AV/02_Architekturen
Schwarmintelligenz programmieren
|
|
import java.util.Random;
//Random zufall = new Random(System.currentTimeMillis());
Random z = new Random(0);
int[][] m = new int[60][60];
public boolean istGeerntet(int i, int k, int[][] m)
{
if(m[i-1][k]==1 && m[i+1][k]==1
&& m[i][k+1]==1 && m[i][k-1]==1)
return true;
else
return false;
}
public boolean mussStehen(int i, int k, int[][] m)
{
if(i>0 && m[i-1][k]==2) return true;
if(i<m.length-1 && m[i+1][k]==2) return true;
if(k>0 && m[i][k-1]==2) return true;
if(k<m.length-1 && m[i][k+1]==2) return true;
return false;
}
public void schritt(int[][] m)
{
for(int ii=0;ii<m.length*m.length;ii++)
{
int i = z.nextInt(m.length);
int k = z.nextInt(m.length);
if(m[i][k]==2)
{
if(istGeerntet(i,k,m))
m[i][k]=0;
}
else if(m[i][k]==1)
{
if(!mussStehen(i, k, m))
{
if(z.nextBoolean())
{
if(z.nextBoolean())
{
if(i+1<m.length-1 && m[i+1][k]==0)
{
m[i][k]=0;
m[i+1][k]=1;
}
}
else
{
if(i-1>=0 && m[i-1][k]==0)
{
m[i][k]=0;
m[i-1][k]=1;
}
}
}
else
{
if(z.nextBoolean())
{
if(k+1<m.length-1 && m[i][k+1]==0)
{
m[i][k]=0;
m[i][k+1]=1;
}
}
else
{
if(k-1>=0 && m[i][k-1]==0)
{
m[i][k]=0;
m[i][k-1]=1;
}
}
}
}
}
}
}
public void setup()
{
for(int i=0;i<300;i++)
m[z.nextInt(m.length)][z.nextInt(m.length)]=1;
for(int i=0;i<100;i++)
m[z.nextInt((m.length)/3)*3+1][z.nextInt((m.length)/3)*3+1]=2;
size(600,600);
frameRate(30);
}
public void draw()
{
schritt(m);
for(int i=0;i<m.length;i++)
{
for(int k=0;k<m[i].length;k++)
{
float x = (float)k*width/(float)m.length;
float y = (float)i*width/(float)m.length;
if(m[i][k]==0)
fill(0);
else if(m[i][k]==1)
fill(255,0,0);
else
fill(0,255,0);
rect(x,y,width/(float)m.length,width/(float)m.length);
}
}
}
Code 0-2: "Fresser" -- einfaches Beispiel für Schwarmverhalten als Stand-Alone-Simulation mit Processing.
Bild 0-1: Szene aus "Fresser".
Schwarm Schritt für Schritt
|
SCHWARM001.zip
SCHWARM002.zip
SCHWARM003.zip
SCHWARM004.zip
#2 Di 01.04.2025
Die weitere Unterrichtsgestaltung erfolgt zweigleisig:
|
Entsprechend setzt sich die Prüfungsleistung aus der Präsentation eines Themas zusammen und der praktischen Umsetzung eines Einzelthemas mit den Schwarmvehikeln.
|
Themen heute:
|
1. Vorstellung möglicher seminaristischer Themen mit der Möglichkeit in die Literatur Einsicht zu nehmen
Es können Themen sowohl aus dem Komplex Autonomes Fahren, als auch Schwarmverhalten gewählt werden.
Themenkomplex Autonomes Fahren
| Nr. | Thema | Literaturbeispiel |
|---|---|---|
| 1 | Modellbildung zur Validierung von Fahrassistenzsystemen | Prinz, A., Sensormodellierung für die virtuelle Absicherung von Fahrassistenzsystemen, Shaker, Düren 2022. |
| 2 | Fahrstrategien beim automatisierten Fahren | Flormann, M. E. M., Kooperative Fahrstrategien für automatisierte Fahrzeuge im Mischverkehr, Shaker, Düren 2022. |
| 3 | Internet und Fahrdienste | Rosenblat, A. UBERLAND How Algorithms are rewriting the rules of work, University of California Press, Oakland 2018. |
| 4 | Automatisiertes Unterbinden von gefährdendem Fahrverhalten | Intelligent Prosecution of Dangerous Driving, pp. 111-146. In: Zhang, X., Khan, M.M., Principles of Intelligent Automobiles, Springer, Shanghai 2019. |
| 5 | GPS basierte automatisierte Routenplanung | Intelligent Vahicle Navigation and Traffic System, pp. 175-210. In: Zhang, X., Khan, M.M., Principles of Intelligent Automobiles, Springer, Shanghai 2019. |
| 6 | Agenten basierte Verkehrsmanagement Systeme | Agent-based Traffic Management Systems, pp. 107-150. In: Görmer-Redding, J., Autonomous Vehicle Groups in Urban Traffic, Cuvillier, Göttingen 2018. |
| 7 | Bahnplanung beim automatisierten Einparken | Sedighihafshejani, S., Dynamic Motion Planning for Autonomous Vehicles in Valet Parking Applications, Dissertation Universität Siegen 2021. |
| 8 | Modellierung und Optimierung von Konvoifahrt | https://www.researchgate.net/publication/358185747_Autonomous_Convoying_A_Survey_on_Current_Research_and_Development |
| 9 | Sensor-Fusion | https://www.researchgate.net/publication/349498440_Sensor_and_Sensor_Fusion_Technology_in_Autonomous_Vehicles_A_Review |
| 10 | Agenten basierte Simulation von autonomem Fahren | https://www.researchgate.net/publication/340905479_Agent-Based_Simulation_of_Autonomous_Vehicles_A_Systematic_Literature_Review |
| 11 | Juristische Implikationen bei fahrerlosen mobilen Systemen | https://www.researchgate.net/publication/386345054_Self-Driving_Cars_Legal_Challenges_and_Criminal_Law_Implications |
Tabelle 0-1: Themenkomplex Autonomes Fahren
Themenkomplex Schwarmverhalten
| Nr. | Thema | Literaturbeispiel |
|---|---|---|
| 1 | Biologische Grundlagen der Schwarmintelligenz | Beekman, M. et.al., Biological Foundation of Swarm Intelligence, pp. 3-42. In: Blum, C., Merkle, D., Swarm Intelligence, Springer, Heidelberg 2008. |
| 2 | Evolution, Selbstorganisation und Schwarm-Robotik | Trianni, V. et.al., Evolution, Self-organization and Swarm Robotics, pp. 163-192. In: Blum, C., Merkle, D., Swarm Intelligence, Springer, Heidelberg 2008. |
| 3 | Wie können Roboterschwärme aufgebaut werden? | Schmickl, T., How to Engineer Robotic Organisms and Swarms? - Bio-Inspiration, Bio-Mimicry, and Artificial Evolution in Embodied Self-Organized Systems, pp. 25-51. In: Bio-Inspired Self Organizing Robotic Systems, Springer, Heidelberg 2011. |
| 4 | Was können wir über das kollektive Verhalten von Tieren durch Aufbau von Roboterschwärmen lernen? | From Ants to Robots and back: How Robotics Can Contribute to the Study of Collective Animal Behavior, pp. 105-120. In: Bio-Inspired Self Organizing Robotic Systems, Springer, Heidelberg 2011. |
| 5 | Schwarmroboter mit einem Freiheitsgrad | Kriesel D.M.M. et. al., Beanbag Robotics: Robotics Swarms with 1-DoF Units, pp.267-274. In: Ant Colony optimization and Swarm Intelligence 6th International Conference, ANTS 2008, Springer, Heidelberg 2008. |
| 6 | Formation eines Schwarms | Pinciroli, C. et. al., Lattice Formation in Space for a Swarm of Pico Satellites, pp.347-354. In: Ant Colony optimization and Swarm Intelligence 6th International Conference, ANTS 2008, Springer, Heidelberg 2008. |
| 7 | Fahrbahnplanung mittels Ameisen-Methode | https://www.researchgate.net/publication/224177889_An_Ant_System_algorithm_for_automated_trajectory_planning |
| 8 | Kooperative Navigation in Roboterschwärmen | https://www.researchgate.net/publication/260247563_Cooperative_navigation_in_robotic_swarms |
| 9 | Selbstorganisierte Bildung von Formen bei Schwärmen | https://www.researchgate.net/publication/374489701_A_self-organized_shape_formation_in_swarm_robots |
| 10 | Grundlagen der Schwarmintelligenz-Forschung | https://www.researchgate.net/publication/264457775_Swarm_Intelligence_Concepts_Models_and_Applications |
| 11 | Schwarmintelligenz als Optimierungsmethode | https://www.researchgate.net/publication/227068137_Swarm_Intelligence_in_Optimization |
Tabelle 0-2: Themenkomplex Schwarmverhalten
2. Vorstellung des Grundkonzepts der Schwarmvehikel
Konzept und Plan des Schwarmvehikels, siehe: 05_esp32AV/30_esp32swarm
3. Aufbau des Fahrgestells für zwölf Schwarmvehikel
#3 Di 08.04.2025
Themen
|
1. Wahl der Themen und Termine für die Einzelpräsentationen (erster Prüfungsteil)
2. Einführung in die Objektorientierte Programmierung mit Java/Processing
|
3. Umgang mit der Software des Schwarmvehikels für die Testfahrt
Siehe Software hier: 05_esp32AV/30_esp32swarm/06_Testfahrt
4. Bau und Test des Schwarmvehikels (Fortsetzung)
05_esp32AV/30_esp32swarm
#4 Di 15.04.2025
Themen
|
1. Weiteres Vorgehen mit Schwarmvehikeln
BITTE UNTERSTÜTZEN SIE SICH GEGENSEITIG!
|
AKTUELLE SOFTWARE FÜR ESP UND ARDUINO -- 05_esp32AV/30_esp32swarm/06_Testfahrt
1.1 Vom Nicht-Agentensystem über einen Reflex-Agenten hin zum selbst lernenden, Modell-basierten Agentensystem
Architekturen zur Entwicklung autonomer mobiler Systeme (und ein wenig Geschichte) -- 83_AV/02_Architekturen
|
|
1.1 Hotspot einrichten und verbinden
|
ANLEITUNG ZUM EINRICHTEN EINES HOTSPOTS AUF DEM LAPTOP
|
Bild 0-2: ...Wählen Sie die Option "Funknetzwerk" und drücken dann "Erstellen".
Bild 0-3: Konfigurieren Sie den Tab "Funknetzwerk" wie hier zu sehen. ACHTUNG: IHR Hotspot hat einen anderen Namen! -- bei Gerät steht etwas anderes zur Wahl.
Bild 0-4: Wählen Sie beim Tab "Sicherheit" "WPA" und als Passwort 12345678, gehen Sie danach auf Speichern.
|
Wählen Sie "Mit verborgenem Funknetzwerk verbinden" und da dann Ihren Hotspot.
|
1.2 Fernsteuern über Nummern-Tasten
|
05_esp32AV/30_esp32swarm/06_Testfahrt
ACHTUNG in Arduino IDE: Wählen Sie unter Werkzeuge, Board, Boardverwalter bei esp32 by Espressiv Systems die Version 2.09 aus.
ACHTUNG in Arduino IDE: Wählen Sie unbedingt unter Werkzeuge, Board: "ESP32C3 Dev Module"
ACHTUNG in Arduino IDE: Wählen Sie unter Werkzeuge USB CSC on boot "Enabled" aus, damit das Verbinden über den seriellen Monitor verfolgt werden kann.
1.3 Sensoren testen und kalibrieren
|
void receive( byte[] data, String ip, int port )
{
String message = new String( data );
println( "receive: \""+message+"\" from "+ip+" on port "+port );
...
Code 0-3: UDP-Callback-Methode receive(), insbesondere print-Befehl, der in der Konsole die Roh-Nachricht anzeigt.
|
//Board: ESP32 SUPER MINI //Auswählen in ISE: ESP32C3 Dev Module //USB CDC ON BOOT DISABLED //Meldet sich aber als ESP32S3 #include <WiFi.h> #include "AsyncUDP.h" //Hier Kalibrieren: #define BAHN_MIN 992.0 #define BAHN_MAX 2895.0 #define ENTF_MIN 54.0 #define ENTF_MAX 2895.0 #define NORMAL_SPEED_LEFT 200 //100...255 #define NORMAL_SPEED_RIGHT 200 //100...255 #define SPEED_OFFSET_LEFT 10; #define SPEED_OFFSET_RIGHT 10;
Code 0-4: Erste Zeilen des Arduino-Projekts ESP32C3_SUPER_MINI_ARDUINO_OOP_304 (gehört in den Arduino-Ordner /home/fhbstud/Arduino/ !!!)
Passen Sie die Werte unterhalb "//Hier Kalibrieren:" an Ihre konkreten Gegebenheiten an, das betrifft:
|
Das Arduino Projekt ESP32C3_SUPER_MINI_ARDUINO_OOP_304 wird im Ordner /home/fhbstud/Arduino/ entpackt!
Das Processing-Projekt ESP32C3_SUPER_MINI_PROCESSING_OOP_304 wird im Ordner /home/fhbstud/sketchbook/ entpackt!
1.4 Stoppen und umdrehen bei Hindernissen
|
1.5 Linienverfolgen
|
Auf Basis der Punkte 1.1 bis 1.5 können dann Schwarmthemen praktisch angegangen werden h4 2. VORTRAG 1: Grundlagen der Schwarmintelligenzforschung
|
Bewertungskritewrien:
|
|
3. VORTRAG 2: Schwarmintelligenz in der Optimierung
4. Fortsetzung des Aufbaus der Schwarmvehikel
#5 Di 28.04.2025
NOTBREMSE
|
Option 2 folgend, wären hier die Themen für heute:
Themen
|
1. Ant Colony Optimization -- Eine Ergänzung zum Thema Schwarmintelligenz
Zu 1., ...
...siehe 2. Schwarmintelligenz hier: 12_Technikphilosophie/03_Sichtweisen.
2. Projektvorschläge: Vorstellung typischer Schwarmintelligenz-Aufgaben und einiger autonomer Fahrmanöver
Bei allen Projekten gilt:
|
| Nr. | Bezeichnung | Beschreibung | Eignung H/S |
|---|---|---|---|
| 1. | Spurhalten | Linienverfolgung mit den Schwarmvehikeln | H |
| 2. | Einparken | Automatisierte Manöver zur Positionierung in eine Lücke | H |
| 3. | Ausweichen | Die Mitglieder eines größeren Schwarms verlassen einen abgesteckten Bereich nicht und weichen einander aus | H (S als gemeinsame Fingerübung) |
| 4. | Dispersion (Rasterung) | Die Mitglieder eines größeren Schwarms ordnen sich ohne globale Ortung in einem Raster an | S (ev. H) |
| 5. | Aggregation | Die Mitglieder eines größeren Schwarms finden sich zu kleineren Gruppen zusammen | S (ev. H) |
| 6. | Aggregation | Die Mitglieder eines größeren Schwarms finden sich zu kleineren Gruppen zusammen | S (ev. H) |
| 7. | Kollektive Wahrnehmung | Ein Schwarm erkundet gemeinsam den Anteil an hellen und dunklen Kacheln am Boden* | S (ev. H) |
| 8..100 | Eigene Ideen | Überlegen Sie sich und recherchieren Sie selber Ideen zu Aufgaben, die von einem Schwarm erledigt werden könnten | S u. H |
Tabelle 0-3: Schwarmintelligenz-Aufgaben und einige autonome Fahrmanöver.
|
HAUSAUFGABE: Collective Perception of Environmental Features in a Robot Swarm BIS 05.05. LESEN.
Schwarmvehikel001.zip -- Projektstand 001 für Schwarmsimulation: Visualisierung und Fortbewegung
Schwarmvehikel002.zip -- Projektstand 002 für Schwarmsimulation: Kollisionen der Fahrzeuge untereinander erfassen
Schwarmvehikel003.zip -- Projektstand 003 für Schwarmsimulation: Kollisionen führen zum Fahrzeugstopp
Schwarmvehikel003b.zip -- wie 003, aber Test einer "schrägen" Kollision.
Schwarmvehikel004.zip -- auch Wandkollisionen berücksichtigt.
#5 Di 06.05.2025
Themen
|
1. Theorie und Implementierung des Entfernungssensors in der Simulation
Schwarmvehikel005_Entfernungssensor.zip
2. ÜBUNG Kollisionsfreies Fahren: Gemeinsame Entwicklung und Umsetzung einer Strategie
|
3. Diskussion des Artikels "Collective Perception of Environmental Features in a Robot Swarm"
Im weiteren Verlauf: Wie kann der Bodensensor in der Simulation umgesetzt werden?
4. Fortsetzung der Projektarbeiten (Hardware oder Simulation)
#6 Di 13.05.2025
Themen
|
Schwarmvehikel007.zip -- Blockade des Antriebs wird erfasst und verarbeitet.
Bild 0-5: Screenshot zu Processing-Projekt Schwarmvehikel007: Blockade des Antriebs eines der Vehikel wird mit einem roten B angezeigt.
#7 Di 20.05.2025
|
Themen
|
#8 Di 27.05.2025
Themen
|
1. HARDWARE-UNTERSTÜTZUNG: Drei mögliche Versagensursachen bei der Linienverfolgung und entsprechende Ansätze diese zu beheben
1. Geometrische Position des Bodensensors
|
2. Totzeit
|
long T = System.currentTimeMillis(); //Absolute Systemzeit in Millisekunden
long Tdiff = 1000; //Differenz zwischen den Aktualisierungen der Sensorwerte
void receive(...)
{
long Tneu = System.currentTimeMillis();
Tdiff = Tneu - T;
T = Tneu;
//....
}
Code 0-5: Code-Snippet für Java/Processing zur quantitativen Erfassung der Totzeit in Millisekunden.
3. Ein bloßer P-Regler ist ungeeignet für die Regelung bei der Linienverfolgung
|
"Linienverfolgung mit P-Regler": https://youtu.be/qLYiJC4uyPc
"PI-Regler": https://youtu.be/YS-1RRLGtgQ
eI = eI + e*dt; eD = (e - e_alt)/dt;
Code 0-6: Code-Snippet für Java/Processing zur Bildung von I- und D-Anteil der Regelabweichung.
2. SOFTWARE-UNTERSTÜTZUNG: Ansatz zur Implementierung des Bodensensors in der Schwarmsimulation
Vorüberlegungen
|
Umsetzung
|
3. Präsentation zu Thema AUTO #5: GPS basierte automatisierte Routenplanung
4. Präsentation zu Thema AUTO #7: Bahnplanung beim automatisierten Einparken
#9 Di 03.06.2025
BITTE BEACHTEN: Haupttermin für Präsentationen zu Schwarm- simulation, oder -hardware: TERMIN: 01.07. / Ausweich: 24.06.
Themen
|
#10 Di 10.06.2025
Termin findet online statt. Bitte entnehmen Sie den BBB-Link der Moodle-Mail.
|
Themen
|
3. Sprechstunde zu den praktischen Projekten
|
|
VORTRAG ENTFÄLLT! Es geht gleich mit den Besprechungen los.
Schwarmvehikel007.zip -- Aktueller Ausgangspunkt für die Simulation.
Mögliche Fragen als Ausgangspunkt für eine Diskussion
... allgemein: Wie kann ich die Arbeit in der Gruppe organisieren?
dazu Hinweise zu agiler Softwareentwicklung: 67_Echtzeitsysteme/13_Fuzzy/05_Softwareentwicklung/01_AgileSoftwareentwicklung
... die Simulation betreffend
|
... die Hardware betreffend
|
#11 Di 17.06.2025
Themen
|
#12 Di 24.06.2025
Themen
|
#13 Di 01.06.2025
Themen
|