doc | ||
ESP32 | ||
lib | ||
models | ||
pics | ||
pyqt_project | ||
vids | ||
.gitignore | ||
compose.yml | ||
environment.yaml | ||
readme.md | ||
readme.pdf | ||
workflow.py |
CPS Geislinger PackPal
Dieses Repository enthält die Software und Dokumentation für den CPS Geislinger PackPal, ein System, das Mitarbeiter beim Einpacken von Aufträgen unterstützt. Es kombiniert eine Waage und eine Kamera, um Bauteile automatisch zu erkennen, die Stückzahl zu prüfen und den Verpackungsprozess effizienter zu gestalten.
Inhaltsverzeichnis
- Ordnerstruktur
- Systemanforderungen
- Funktionsumfang
- Installation
- Anwendung
- Fehlerbehebung
- Übersicht Datenaufnahme und Training
- Kontakt
Ordnerstruktur
Die Dateien und Ordner sind wie folgt strukturiert:
workflow.py
: Hauptprogramm zur Steuerung des Systems.readme.md
: Diese Anleitung.environment.yaml
: Conda-Umgebungskonfigurationsdatei.compose.yml
: Docker Compose Datei für lokale Tests mit MariaDB..gitignore
: Einstellungen für Git, um unnötige Dateien auszuschließen.doc/
: Zusätzliche Dokumentation.ESP32/
: Firmwaredateien für den ESP32-Hilfscontroller.lib/
: Lokale Python-Bibliotheken.models/
: Machine Learning-Modelle für die Bauteilerkennung.pyqt_project/
: Projektdateien für die Benutzeroberfläche (erstellt mit Qt Designer).
Systemanforderungen
- Betriebssystem: Kubuntu 24.04 oder kompatibel.
- Python-Version: Python 3.10 oder höher.
- Abhängigkeiten:
- Conda oder Miniforge zur Verwaltung von Python-Bibliotheken.
- Docker und Docker Compose (optional für lokale Tests mit MariaDB).
- Hardware:
- Mitgelieferte Waage mit USB-/serieller Verbindung.
- Mitgelieferte Kamera für die Bauteilerkennung.
- Mitgelieferte 2x ESP32-Mikrocontroller als Hilfsgeräte.
Funktionsumfang
Der CPS Geislinger PackPal bietet eine Vielzahl an Funktionen, um den Verpackungsprozess effizient zu unterstützen.
Lichtsteuerung
- Flexible Steuerung:
- LEDs und Scheinwerfer können unabhängig voneinander per Software gesteuert werden, um optimale Arbeitsbedingungen zu schaffen.
Datenerfassung
- Integrierte Geräteansteuerung:
- Waage und Kamera werden über den mitgelieferten Mini-PC angesteuert und ausgelesen, sodass die Datenerfassung nahtlos in den Workflow integriert ist.
Vortrainierte Modelle
- Effiziente Bauteilerkennung:
- Das System enthält vortrainierte Modelle, die mit knapp 5.000 annotierten Datenframes erstellt wurden.
- Modelloptionen:
- Standardmäßig wird YOLOv8n (kleinste Modellvariante) verwendet, um die begrenzte Rechenleistung des Mini-PCs zu berücksichtigen.
- Zusätzlich werden vortrainierte YOLOv8m- und YOLOv10n-Modelle bereitgestellt, um erweiterte Tests durchzuführen oder zukünftige Hardware-Upgrades zu berücksichtigen.
Vollständig vorinstallierter Mini-PC
- Leistungsstarker Mini-PC:
- Prozessor: 12th Gen Intel Prozessor, optimiert für Effizienz.
- Betriebssystem: Ubuntu 24.04 ist vorinstalliert und einsatzbereit.
- Grafik: Keine dedizierte Grafikkarte, um Energieverbrauch und Kosten zu minimieren, bei gleichzeitiger Eignung für die enthaltenen leichten Modelle.
Softwareumgebung
-
Umsetzung in Python:
Die gesamte Softwareumgebung wurde in Python entwickelt, um eine einfache Erweiterbarkeit, Wartung und Integration mit modernen Machine-Learning-Frameworks zu gewährleisten. -
Quellcode verfügbar:
Der komplette Quellcode ist in diesem Repository enthalten und modular aufgebaut, sodass spezifische Funktionen leicht angepasst oder erweitert werden können. -
Vorteile der Python-Umgebung:
- Breite Unterstützung durch Bibliotheken wie OpenCV, PyTorch, und PyQt.
- Leichte Integration von Machine-Learning-Modellen und Hardwaresteuerung.
- Hohe Lesbarkeit und einfache Anpassung durch gut dokumentierten Code.
Installation
Falls das System nicht vorinstalliert ist, folgen Sie diesen Schritten:
1. Conda-Umgebung erstellen
Installieren Sie die Conda-Abhängigkeiten, indem Sie die environment.yaml
Datei nutzen:
conda env create -n geislinger -f environment.yaml
2. Conda-Umgebung aktivieren
Setzen Sie die erstellte Umgebung als Standardumgebung, indem Sie in der Datei ~/.bashrc folgendes hinzufügen:
conda activate geislinger
Alternativ können Sie die Umgebung vor jedem Programmstart manuell aktivieren:
conda activate geislinger
3. Optional: MariaDB-Testumgebung starten
Falls Sie die Datenbank lokal testen möchten, starten Sie Docker Compose im Projektordner:
docker-compose up -d
4. Software für USB Relay Board installieren
https://github.com/scheiber-sa/sainsmartUsbRelay
Anwendung
Programmstart
Starten Sie das Hauptprogramm aus dem Projektordner mit:
python3 workflow.py
Die Benutzeroberfläche wird gestartet und alle Geräte (Waage, Kamera, ESP32) werden automatisch initialisiert.
Arbeitsablauf
Der CPS Geislinger PackPal unterstützt den Verpackungsprozess mit einer intuitiven Benutzeroberfläche. Es stehen zwei Arbeitsmodi zur Verfügung: statisch und dynamisch, die über die Checkbox "static workflow" ausgewählt werden können.
-
Statischer Workflow:
Der Benutzer wählt die Positionsnummer (Artikel) manuell aus, und die Waage addiert die Gewichte der eingelegten Bauteile, bis die gewünschte Stückzahl erreicht ist. -
Dynamischer Workflow (Standardmodus):
Die Kamera und die Waage arbeiten zusammen, um das eingelegte Bauteil automatisch zu erkennen und die korrekte Positionsnummer auszuwählen. Die Waage überwacht die eingelegten Teile, bis die erforderliche Stückzahl erreicht ist.
Schritt-für-Schritt-Anleitung
-
Auftrag laden
- Geben Sie die Auftragsnummer in das Feld "Auftragsnummer" ein.
- Klicken Sie auf "load Auftrag", um die Auftragsdaten zu laden.
- Die Liste der Bauteile (mit Positionsnummer, Beschreibung, Soll-Menge, Ist-Menge und Lagerort) wird im linken Tabellenbereich angezeigt.
-
Bauteilerkennung
- Manuelle Auswahl (statisch): Wählen Sie die gewünschte Positionsnummer direkt aus der Tabelle. Klicken Sie auf "check Waage", um die Gewichtserfassung zu starten.
- Automatische Erkennung (dynamisch):
- Legen Sie ein Bauteil auf die Waage und klicken Sie auf "check Waage".
- Die automatisch erkannte Positionsnummer wird im Feld "Pos.-Nr." markiert.
-
Bestücken
- Legen Sie die Bauteile auf die Waage, bis die angezeigte Ist-Menge die Soll-Menge erreicht.
- Das System zeigt die aktuelle Stückzahl an.
- Falls die Waage nicht korrekt eingestellt ist, können Sie diese mit "Waage tarieren" neu kalibrieren.
-
Weiterverpacken
- Wiederholen Sie den Vorgang für alle Bauteile im Auftrag.
- Die Benutzeroberfläche führt Sie Schritt für Schritt durch die einzelnen Arbeitsvorgänge. Der aktuelle Arbeitsfortschritt wird in der ToDo-Liste rechts angezeigt.
-
Auftragsabschluss
- Sobald alle Bauteile verpackt sind, zeigt das System an, dass der Auftrag abgeschlossen ist.
- Überprüfen Sie die Daten und schließen Sie den Auftrag ab.
Zusätzliche Funktionen
-
Lichtsteuerung:
Die LEDs und der Scheinwerfer können über die Schaltflächen gesteuert werden:- Turn on light / Turn off light: Hauptbeleuchtung.
- Turn on red/yellow/green LED: Status-LEDs für visuelle Hinweise.
- Blink Yellow LED: Blinkt gelb zur Hervorhebung.
- Turn off all LEDs: Schaltet alle LEDs aus.
-
Kamera-Steuerung:
- Aktivieren oder deaktivieren Sie den Kamera-Workflow über die Checkbox "Camera Workflow".
- Starten und stoppen Sie die Kamera mit den Schaltflächen "Start Camera" und "Stop Camera".
- Wählen Sie ein Modell für die automatische Bauteilerkennung aus der Dropdown-Liste aus (z. B. "best_8n.pt").
-
Automatisches Tarieren:
Aktivieren Sie die Checkbox "automatisches Tarieren", um die Waage automatisch zu kalibrieren, sobald ein Arbeitsablauf gestartet wird.
Hinweise
-
ToDo-Liste:
Die ToDo-Liste in der Benutzeroberfläche bietet eine klare Übersicht über die nächsten Schritte und den aktuellen Status. Befolgen Sie die Anweisungen, um den Workflow effizient abzuschließen. -
Überwachung des Vorgangs:
Verfolgen Sie die Statusanzeigen in der Benutzeroberfläche. Fehler oder Warnungen werden dort direkt angezeigt. -
Stückzahlkontrolle:
Die Waage erkennt automatisch Über- oder Unterfüllungen und zeigt entsprechende Hinweise an. -
Korrektur:
Sollten Fehler auftreten, können Sie jederzeit den aktuellen Artikel neu auswählen oder den Auftrag zurücksetzen.
Fehlerbehebung
-
Geräte werden nicht erkannt: Stellen Sie sicher, dass alle Geräte korrekt verbunden sind und überprüfen Sie die Konfiguration.
-
Waage zeigt falsche Werte: Kalibrieren Sie die Waage erneut gemäß der Dokumentation. Die Waage muss auf Kg eingestellt werden, damit die Daten korrekt übermittelt werden.
-
Fehlerhafte Bauteilerkennung: Stellen Sie sicher, dass die Kamera sauber ist und die Beleuchtung ausreichend ist. Prüfen Sie auch, ob das richtige Modell in models/ geladen wurde.
-
Datenbankfehler: Vergewissern Sie sich, dass die Datenbank MariaDB läuft und die Zugangsdaten korrekt in der Konfiguration hinterlegt sind.
-
Konsolenausgaben kontrollieren: Sollte es Probleme mit der Bauteilerkennung oder Waage geben, überprüfen Sie die Konsolenausgabe des Programms. Diese zeigt hilfreiche Diagnosen an.
Übersicht Datenaufnahme und Training
Die Erstellung eines robusten Datensatzes und die anschließende Modelltrainierung erfolgten nach einem klar strukturierten Ablauf, um eine möglichst hohe Präzision der Bauteilerkennung zu gewährleisten. Dieser Prozess lässt sich in mehrere Schritte unterteilen:
Datenaufnahme
-
Videoaufzeichnung
- Die Videos wurden mit OBS Studio direkt vom Kamerastream aufgenommen.
- Jedes Bauteil wurde einzeln unter standardisierten Bedingungen vermessen und gefilmt.
- Zusätzlich wurden Bauteile in Kombination mit anderen Bauteilen und vor unterschiedlichen Hintergründen aufgenommen, um die Datendiversität zu erhöhen.
-
Bearbeitung und Extraktion
- Die aufgenommenen Videos wurden auf die Plattform Roboflow hochgeladen.
- Einzelne Frames (ca. 500 Frames pro Bauteil) wurden aus den Videos extrahiert. Dabei wurde darauf geachtet, eine repräsentative Stückzahl zu wählen, die typische Variationen wie Winkel, Beleuchtung und Positionen abdeckt.
Annotation und Datensatzvorbereitung
-
Annotation
- Die extrahierten Frames wurden in Roboflow manuell annotiert, d. h., die Bauteile wurden mit präzisen Bounding-Boxen und Labels versehen.
- Für jeden Bauteiltyp wurde eine eigene Klasse definiert.
-
Export und Augmentierung
- Der annotierte Datensatz wurde im YOLOv8-Format exportiert.
- Während des Exports erfolgte eine automatische Datenaugmentierung durch Roboflow:
- Transformationen: Die Bilder wurden gespiegelt, gedreht, beschnitten und auf ein quadratisches 1:1-Bildformat skaliert.
- Ziel der Augmentierung war es, die Robustheit des Modells gegenüber unterschiedlichen Perspektiven und Hintergründen zu erhöhen.
Modelltraining
-
Trainingsumgebung
- Die Trainingsläufe wurden mithilfe der integrierten YOLOv8-Trainingsmethoden durchgeführt (Details siehe Ultralytics Dokumentation).
- Hardware: Eine leistungsstarke Nvidia Tesla P100 Grafikkarte wurde für das Training genutzt.
- Framework: YOLOv8 implementiert in Python mit der Ultralytics-Bibliothek.
-
Trainingsdetails
-
Train/Test-Split:
- Der Datensatz wurde in 80% Trainingsdaten und 20% Testdaten unterteilt.
- Für die Validierung wurden zusätzliche 10% der Trainingsdaten als Validierungsdatensatz verwendet.
-
Hyperparameter:
- Anzahl der Epochen: Variationen mit 50, 100 und 200 Epochen, um die optimale Konvergenz zu ermitteln.
- Mixed Precision Training wurde aktiviert, um die Speichereffizienz auf der GPU zu erhöhen und die Trainingsgeschwindigkeit zu verbessern.
-
-
Trainierte Modelle
- Es wurden mehrere Modelle basierend auf unterschiedlichen YOLOv8-Architekturen erstellt:
- YOLOv8n (Nano): Besonders ressourcensparend, ideal für den Einsatz auf Geräten mit begrenzter Rechenleistung.
- YOLOv8m (Medium): Liefert eine höhere Genauigkeit, benötigt jedoch mehr Rechenleistung.
- YOLOv10n: Als experimenteller Vergleich zur Validierung des Trainingsprozesses.
- Es wurden mehrere Modelle basierend auf unterschiedlichen YOLOv8-Architekturen erstellt:
Ergebnisse und Validierung
-
Modellbewertung
- Die Modelle wurden anhand der Metriken mAP (mean Average Precision), Präzision, und Recall bewertet.
- Cross-Validation wurde durchgeführt, um sicherzustellen, dass die Modelle generalisieren und nicht überangepasst sind.
-
Einfluss von Epochs und Augmentierung
- Eine höhere Anzahl von Epochen führte in vielen Fällen zu einer Verbesserung der Genauigkeit, allerdings war der Effekt nach etwa 100 Epochen minimal.
- Die Datenaugmentierung zeigte signifikanten Einfluss auf die Robustheit der Modelle, insbesondere bei ungewöhnlichen Blickwinkeln und Hintergründen.
Kontakt
Für weitere Unterstützung oder Fragen wenden Sie sich bitte an:
- E-Mail: clemens.fritze@unileoben.ac.at
- Telefon: +43 3842 402 1904
- Dokumentation: Weitere Informationen finden Sie im Ordner doc/.
Dieses Projekt wurde entwickelt, um die Effizienz und Genauigkeit im Verpackungsprozess zu steigern und die Arbeitsbelastung der Mitarbeiter zu reduzieren. Vielen Dank für die Nutzung des CPS Geislinger PackPal!