kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Entwicklung eines Saugroboters

(EN google-translate)

(PL google-translate)

Im Sommersemester 2024 in den ersten drei Lehrveranstaltungen behandelte Themen

  1. Beispiele für autonome mobile Systeme
  2. Beispiele für seminaristische Beiträge
  3. Fahrassistenzsysteme
  4. Fahererlose Transportsysteme (FTS)
  5. Moral Machine
  6. Agentensysteme
  7. NASREM
  8. Einführung in Processing
  • Verweise zu den jeweiligen Themen:

1. Beispiele für autonome mobile Systeme

Autonome elektrische Ponykutsche -- 83_AV/personenkutschfahrt.ogg
Realmodell esp32AV -- 05_esp32AV
Lenkregelung für esp32AV -- https://youtu.be/qLYiJC4uyPc
Schwarmvehikel TURTLE -- 83_AV/03_Umsetzung/05_TURTLE
Zwei TURTLE fahren und laden -- https://youtu.be/60fEn0f_MnM
Die autonomen Schildkröten des Grey Walter (1951) -- https://youtu.be/lLULRlmXkKo
Schaltkreis der Schildkröten -- http://davidbuckley.net/DB/HistoryMakers/GreyWalter/Circuits/HowWork.htm

2. Beispiele für seminaristische Beiträge

Bildverarbeitung
Justina_GPS
Justina Kamera

3. Fahrassistenzsysteme

Spurhalteassistent, Beispiel -- https://youtu.be/aGack0NPKPY
Abstandshalteassistent, Beispiel -- https://youtu.be/9SdorVb3adE

4. Fahererlose Transportsysteme (FTS)

SAVANT, Beispiel, insbesondere virtuelle Streckenplanung -- https://youtu.be/UnQZIA3-SZc

5. Moral Machine

https://www.moralmachine.net/hl/de

6. Agentensysteme

83_AV/02_Architekturen

7. NASREM

83_AV/02_Architekturen

8. Einführung in Processing

78_Processing
92_Soundinstallation/03_material/11_Snippets
1 Entwicklung eines Saugroboters LV 09.04.2024
  • Es wird ein überschaubares Konzept zu einem Saugroboter umgesetzt.
  • Die Begrenzung der Komplexität des Grundkonzepts ermöglicht es dafür eine Vielzahl wichtiger Aspekte des autonomen Fahrens zu behandeln.
  • Die Entwicklung soll in folgenden Schritten erfolgen:
  1. Entwurf des Grundsystems
  2. Animation des Grundsystems
  3. Einführen von Begrenzungen und Hindernissen
  4. Modellierung einfacher Sensoren (Bumper)
  5. Einführen eines neuronalen Netzes zur Steuerung des Fahrzeuges
  6. Entwicklung einer Optimierungsumgebung
  7. Aufwändige 3D-Visualisierung mittels VRML
  8. Validierung der gefundenen Ergebnisse mittels eines real aufgebauten Funktionsmusters
  • Eine wichtige Fähigkeit ist, die Pixelfarbe an einer bestimmten Stelle zu erkennen.
  • Folgender Sketch zeigt auf, wie das umgesetzt werden kann:
public void setup()
{
     size(640,480);
}
int[] pix = new int[640*480];
int RR=0,GG=0,BB=0;
public void draw()
{  
    background(0,255,0);
    fill(255,0,0);
    noStroke();
    rect(0,height/2,width,height/2);

    fill(0,0,255);
    rect(width/2,0,width/2,height);
        
    fill(0);
    textSize(20);
    text(RR+" "+GG+" "+BB,100,100);

    loadPixels();
    if(pixels!=null)
    {
        for(int i=0;i<pix.length;i++)
           pix[i] = pixels[i];
    }    

}

public void mouseClicked()
{
   if(pix!=null && pix.length>0)
   {
     int p = pix[(int)mouseY*640+(int)mouseX];
     RR = (((p>>16)%256)& 0xFF);
     GG = (((p>>8)%256)& 0xFF);
     BB = ((p%256)& 0xFF);
   }  
}

Code 0-1: Pixeltest -- Es werden die Rot-Grün- und Blau-Anteile des angeklickten Pixels angezeigt.

Übung
  • Ein kreisförmiger "Saugroboter" soll mit den Pfeiltasten gesteuert werden.
  • Es soll links drehen, rechts drehen, vorwärts fahren und rückwärts fahren umgesetzt werden.
Entwurf zum Saugroboter (Tafelbild vom 09.04.2024)

Bild 0-1: Entwurf zum Saugroboter (Tafelbild vom 09.04.2024)

Saugroboter001.zip -- Version 001, Roboter visualisieren.
Saugroboter001Vorsatz.zip -- studentische Version zur Darstellung der Roboterrichtung
Saugroboter002.zip -- Roboterrichtung unter Verwendung von Koordinatentransformationen berechnet.
Übung
Saugroboter003.zip
  • Bei Saugroboter003 kann mit Pfeiltasten die Richtung geändert werden.
  • Ergänzen Sie das Programm so, dass bei Pfeil-hoch das Fahrzeug in die eingestellte Richtung fährt.
2 Entwicklung eines Saugroboters LV 17.04.2024 / 24.04.2024
  • Themen:
  1. Planung der Seminarthemen
  2. Konsolidierung des bisherigen Stands der Simulationsumgebung
  3. Koordinatentransformationen
  4. Modellierung von Hindernissen
  5. Neuronale Netze
  6. Evolutionäre Algorithmen

1. Planung der Seminarthemen

  • Eine Sammlung Artikeln befindet sich auf Moodle.
  • Jede/r Kursteilnehmer*In sollte sich einen Artikel und einen Ausweich-Artikel bis kommende Woche auswählen.
  • Am 24.04. wird abgestimmt, wer welchen Artikel übernimmt und wann die jeweilige Präsentation stattfinden kann.
  • Es sollten dann folgende Aufgaben bearbeitet werden:
  1. Übersetzung des Artikels ins Deutsche mit Hilfe von deepL.
  2. Vorbereitung einer zwanzig minütigen Präsentation mit anschließenden Fragen.

In der Präsentation sollten Stellungnahmen dazu enthalten sein:

  • ...was für den Kurs an dem Artikel besonders interessant sein könnte,
  • eine Einschätzung der Qualität des Artikels bzgl. Relevanz und Tiefe der Ausarbeitung,
  • im Idealfall Ableitung eines eigenen Themas für die eigene Hausarbeit.

2. Konsolidierung des bisherigen Stands der Simulationsumgebung

Saugroboter004.zip -- Basisversion: Saugroboter lässt sich über die Pfeiltasten steuern.

3. Koordinatentransformationen

54_Kinetik/03_Kinematik
siehe auch: 54_Kinetik/03_Kinematik/01_Koordinatentransformation
54_Kinetik/03_Kinematik/02_Schwerpunktlage
54_Kinetik/03_Kinematik/03_VorRuecktransformation

4. Modellierung von Hindernissen

Grundidee / grundlegende Überlegungen:

  • Das Überprüfen von Kollisionen darf nicht Pixel-basiert in draw erfolgen, sonst kann das Simulationstempo nicht in den Optimierungsprozessen genügend gesteigert werden.
  • Die rechteckige Ebene der "Welt" (man denke sich den Boden eines rechteckigen Zimmers) wird gleichmäßig in Quadrate eingeteilt
  • Über einen Editor können durch Klicks Quadrate zu Hindernissen gemacht werden.
  • Eine Liste mit den Nummern der geklickten Quadrate wird bei jedem Klick in einer Datei aktualisiert.
  • In einer gewissen Auflösung (360/16==22,5Grad) wird für jeden Randpunkt des Saugroboters geprüft, ob er in einem der als Hindernis markierten Quadrate liegt.
  • Als erste Stufe der Umsetzung soll sich die Farbe des Roboters bei Kollisionen ändern.
// 1m == 100Pixel
int kantepix = 20; //Jedes Quadrat ist 20cm gross.
ArrayList<int[]> merker = new ArrayList<int[]>();
public void setup()
{
     frameRate(40);
     size(640,480);
     textAlign(CENTER);     
}

public void draw()
{
    background(255);
    stroke(0);
    int zaehler=0;
    for(int i=0;i<(int)height;i+=kantepix)
    {
         for(int k=0;k<(int)width;k+=kantepix)
         {
             noFill();
             rect(k,i,kantepix,kantepix);
             fill(0);
             text(""+zaehler,k+kantepix/2,i+kantepix/2);
             zaehler++;
         }
    }    
    fill(255,0,0);
    noStroke();
    for(int i=0;i<merker.size();i++)
    {
         int nummer = merker.get(i)[0];
         
         int xx = kantepix*(nummer%((int)width/kantepix));
         int yy = kantepix*(nummer/((int)width/kantepix));
         
         rect(xx,yy,kantepix,kantepix);
    }
}

public void mouseClicked()
{
     int nummer = ((int)mouseY/kantepix)*((int)width/kantepix) + (int)mouseX/kantepix;
     merker.add(new int[] {nummer});
     
}

public void keyPressed()
{
    if(key==' ')
    {
         String[] s = new String[merker.size()];
         for(int i=0;i<s.length;i++)
         {
              s[i] = ""+merker.get(i)[0];
         }
         saveStrings("hindernisse.txt",s);
    }
}

Code 0-2: Editor.

5. Neuronale Netze

67_Echtzeitsysteme/08_NeuronaleNetze

6. Evolutionäre Algorithmen

50_Simulationstechnik/07_Genalgorithmus