kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Entwicklung eines Saugroboters, Lehrveranstaltung am 05.06.2024

(EN google-translate)

(PL google-translate)


Beginn 12:00Uhr


Themen

  1. Überblick zum Hardwarekonzept einer experimentellen Anordnung zur Entwicklung und Darstellung des Fahrverhaltens eines Staubsaugroboters
  2. Aufbau des esp32AV zusätzlich mit PC-USB-Kamera -- Anleitung folgt hier!:

1. Überblick zum Hardwarekonzept einer experimentellen Anordnung zur Entwicklung und Darstellung des Fahrverhaltens eines Staubsaugroboters

Einerseits muss nachfolgende Konzept vom Gesichtspunkt der Zielsetzung beleuchtet werden, andererseits aber auch in Hinblick auf auftretende Hindernisse und Probleme:

  • Als Ursache der stockenden Bildübertragung des avr32AV haben sich elektromagnetische Störstrahlungen auf dem esp32-Board ausgehend vom Pin GPIO0 (Boot-Jumper-Anschluss) entpuppt.
  • Folgende Maßnahmen wurden zur Verringerung dieser Störungen in dem Projekt weiter unten ergriffen:
  1. Leitungen beim GPIO0 kurz halten, um Streuung der Störungen zu vermindern.
  2. 40MHz anstatt 240MHz als Taktfrequenz des Boards einstellen, um die Energiedichte der Streustrahlung zu reduzieren.
  3. Verringerung der Auflösung des zu streamenden Kamerabildes von QVGA (320x240) auf QQVGA (160x120), um die benötigte Bandbreite der W-LAN-Verbindung weiter zu reduzieren.

Die Ursache der stockenden Übertragung wurde zunächst in Internet-Foren recherchiert und dann im Rahmen der lokal gegebenen Möglichkeiten versucht zu verifizieren, indem mit dem Osziloskop versucht wurde an GPIO0 die Stöprstrahlung nachzuweisen.

Forum-Eintrag zum Problem mit GPIO0 -- https://www.reddit.com/r/esp32/comments/r9g5jc/fixing_ymmv_the_poor_frame_rate_on_the_esp32cam/

Im Bereich Software wurde im Processing-Sketch die Kommunikation mit dem Fahrzeug in einer Klasse ESP32AV gekapselt, um die Programmiermöglichkeiten leichter erschließbar zu machen. Nachfolgend ist das UML-Klassendiagramm der Java-Klasse ESP32AV zur Orientierung dargestellt:

UML-Klassendiagramm der Klasse ESP32AV.

Bild 0-1: UML-Klassendiagramm der Klasse ESP32AV.

2. Aufbau des esp32AV zusätzlich mit PC-USB-Kamera -- Anleitung folgt hier!:


Es werden besondere Maßnahmen ergriffen, um die elektromagnetischen Störungen bei den Motoren und bei GPIO0 gering zu halten.


esp32AV bei autonomer Fahrt.

Bild 0-2: esp32AV bei autonomer Fahrt.

https://youtu.be/N0bxvH8GV-A -- esp32AV bei autonomer Fahrt, Video.

1. Mechanik und die Elektromotoren


ACHTUNG: Wenn Spuntrad und Motore richtig angebracht sind, steht das Chassis waagerecht!


Spuntrad mit Abstandshülsen angebracht.

Bild 0-3: Spuntrad mit Abstandshülsen angebracht.

  • Das Spuntrad wird mit Abstandshülsen angebracht.
  • Die Motore befinden sich UNTER dem Chassis.
  • Parallel zu den Motorkontakten werden 47nF-Keramik-Kondensatoren zur ENTSTÖRUNG angelötet.
  • Liegt das Chassis "auf dem Rücken", sind die roten Anschlüsse der Motoren OBEN angelötet.
  • Die Enden der Motorkabel werden verzinnt.
Chassis

Bild 0-4: Chassis "auf dem Rücken": rote Motorkabel OBEN, siehe auch: 47nF Entstörkondensatoren!

Verzinnte Enden der Motorkabel.

Bild 0-5: Verzinnte Enden der Motorkabel.

Akku mit Doppelklebeband vor dem Aufsetzen auf das Chassis.

Bild 0-6: Akku mit Doppelklebeband vor dem Aufsetzen auf das Chassis.

  • Der Akku wird mit einem Stück Doppelklebeband versehen, bevor er auf das Chassis gesetzt wird.
  • Dann erst wird der Akku mit Kabelbinder fixiert. Bitte sehr fest ziehen!
  • Unter den Kabelbinder lassen sich die Verbindungsleitungen führen und später mit schwarzem Isolierklebeband unten halten.
Leitungen und Akku.

Bild 0-7: Leitungen und Akku.

Verkabelung

  • Die Verkabelung folgt nachfolgendem Stromlaufplan:
Gesamter Stromlauf.

Bild 0-8: Gesamter Stromlauf.

Weitere Fotos, zur leichteren Orientierung bei der Verkabelung:

Sicht von oben auf die Verkabelung.

Bild 0-9: Sicht von oben auf die Verkabelung.

Hinterer Bereich.

Bild 0-10: Hinterer Bereich.

Hinterer Bereich, zweite Ansicht.

Bild 0-11: Hinterer Bereich, zweite Ansicht.

  • Verwenden Sie die längsten verfügbaren Steckboard-Kabel.
  • Folgen Sie nach Möglichkeit mit den Kablen dem Farbschema des Stromlaufplanes. Das erleichtert später die Überprüfung.
  • Achten Sie darauf, dass keine Leitungen vor der Kameralinse entlang gehen.
  • Führen Sie die Kabel unter dem Kabelbinder des Akkus entlang.
  • Setzen Sie die Platinen (esp32, USB-Seriell-Umsetzer, Motortreiber) genau an die Stellen, wie das auf den Fotos zu sehen ist. Das erleichter das Abzählen der Pins und die Leitungen sind dann lang genug.
Die Leitungen lassen die Kameralinse frei.

Bild 0-12: Die Leitungen lassen die Kameralinse frei.

Testsoftware aufspielen und Versuch Linienverfolgen starten

Saugbot808_esp32_CameraWebServer10temperatur.zip -- ARDUINO Software für den esp32.
Saugbot002_CaptureJavaRT2022_012regler_MODULAR004_bereinigt.zip -- PROCESSING-Software für den PC.
1. Bereitstellen eines Routers
  • Die vorliegende Anleitung in einem Tab des Webbrowsers öffnen und die ZIP-Files herunterladen BEVOR der PC mit dem Router verbunden wird.
  • Der Router wird per LAN-Kabel mit dem PC verbunden.
  • Prüfen, ob NUR die neue LAN-Verbindung vom PC aktiv ist.
  • ifconfig im Terminal aufrufen, um zu prüfen, ob der PC eine IP vom Router bekommen hat, er also dort angemeldet ist.
2. Anpassen und Übertragen der Software für den esp32

Im Quelltext müssen der Name des W-LAN-Routers und dessen Passwort richtig angepasst werden!:

const char* ssid = "hotspotgk"; //Smartphone Pixel
const char* password = "23571113";

Code 0-1: Diese Zeilen (48/49) sind anzupassen!


In dieser Phase wird die Motortreiberplatine heraus genommen! (ohne die Leitungen zu entfernen)


  • Saugbot808_esp32_CameraWebServer10temperatur in der Arduino-IDE öffnen.
  • esp32 über USB-Mini-Kabel verbinden.
  • Werkeuge -> Board: "AI Thinker ESP32-CAM" auswählen.
  • Werkeuge -> Prüfen, ob in IDE Port angezeigt und ausgewählt ist.
  • Werkeuge -> CPU Frequency AUF 80MHz setzen (statt 240) ENTSTÖRMASSNAHME!!!
Werkeuge -> CPU Frequency AUF 80MHz setzen (statt 240) ENTSTÖRMASSNAHME!!!

Bild 0-13: Werkeuge -> CPU Frequency AUF 80MHz setzen (statt 240) ENTSTÖRMASSNAHME!!!

  • Beim esp32 GPIO0 mit GND verbinden (Boot-Jumper-Leitung)
  • Einmal den Taster auf dem esp32 drücken (ev. Schraubendreher verwenden, um da heran zu kommen)
  • Pfeil "Hochladen" drücken.

Das Programm sollte nun von 1% bis 100% übertragen werden. Das dauert etwas länger!



WICHTIG NACH DEM FLASHEN:


  1. Stromversorgung zwischen Seriell-USB-Umsetzer und esp32 kappen (rote Leitung).
  2. Boot-Jumper-Leitung GANZ ENTFERNEN --- ENTSTÖRMASSNAHME!!!.
  3. Werkzeuge->Serieller Monitor in der IDE öffnen.
  4. Jetzt erst Stromversorgung zwischen Seriell-USB-Umsetzer und esp32 wieder herstellen.

Im seriellen Monitor sollte nun die IP-Adresse zu sehen sein, die der esp32 vom Router erhält:

Ausgabe im seriellen Monitor (Beispiel).

Bild 0-14: Ausgabe im seriellen Monitor (Beispiel).


Die angezeigte IP-Adresse des esp32 wird für den Processing-Software benötigt!



Nachdem die IP bekannt ist, kann ab jetzt das Fahrzeug über den eigenen Akku betriben werden!


3. Inbetriebnahme des Gesamtsystems und Linienverfolgungstest
  1. Verbinden einer externen USB-Kamera mit dem PC und später auf die Fahrstrecke ausrichten.
  2. Öffnen des Processing-Sketches in Processing: Saugbot002_CaptureJavaRT2022_012regler_MODULAR004_bereinigt
  3. Eintragen der IP des esp32 in Zeile 6 und speichern.
  4. Kleben Sie mit Isolierklebeband eine rote Fahrbahn, falls noch nicht geschehen.
  5. Herausnahme der Motortreiberplatine.
  6. USB-Seriell-Umsetzer mit Akku verbinden.
  7. Warten.
  8. Motortreiberplatine wieder einsetzen.
  9. Fahrzeug auf die Fahrbahn setzen.
  10. Starten des Processing-Sketches.
  11. In das sich öffnende Fenster von Processing klicken und mit den Tasten 1 und 0 die Linienverfolgung starten und stoppen.

Wenn sich der PC mit dem Fahrzeug erfolgreich verbindet und auch die externe USB-Kamera funktioniert, dann sollte in Processing folgende Szene zu sehen sein:

Oben links: Streetview des esp32AV, oben rechts: Streetview nach Bildverarbeitung mit eingezeichneten Schwerpunkten für ROT, GRÜN, BLAU und GELB. Unten links: PC-USB-Kamera auch mit Farb-Schwerpunkten.

Bild 0-15: Oben links: Streetview des esp32AV, oben rechts: Streetview nach Bildverarbeitung mit eingezeichneten Schwerpunkten für ROT, GRÜN, BLAU und GELB. Unten links: PC-USB-Kamera auch mit Farb-Schwerpunkten.

++++++++++ ÜBUNG ++++++++++++
  1. Bauen Sie alle gemeinsam ein weiteres Fahrzeug auf, bei dem alle obigen Schritte durchgeführt werden.
  2. Analysieren Sie im Haupttab der Processing-Software, wie der Regelkreis funktioniert.
  3. Entwerfen Sie ein Konzept für eine Hardware-Demo für Fahrexperimente mit einem Saugroboter auf der Grundlage des nun verfügbaren Equipments.
Hinweise zu 3.:
  • Auf den esp32AV soll eine kreisrunde farbige Scheibe befestigt werden, so, dass durch die PC-USB-Kamera der Umriss des "Saugroboters erscheint".
  • Mit Isolierklebeband soll eine geeignete Szene (Raumgrenzen und Hindernisse) in einer Farbe geklebt werden.
  • Erkennen und Reagieren auf "Anstoßen" des Saugroboters erfolgt mit Hilfe der eigenen Kamera.
  • Die Beurteilung der Szene erfolgt aufgrund der Szenensicht durch die PC-USB-Kamera.
  • VERSUCHEN SIE EINEN ALLERERSTEN SCHRITT AUF DEM WEG ZU EINER EXPERIMENTELLEN UMGEBUNG UMZUSETZEN.