Visuelle Kommissionierung mit Künstlicher Intelligenz unter Verwendung von TensorFlow
Einführung
Diese Anwendung nutzt TensorFlow, ein Open-Source-Maschinenlern-Framework von Google, um den Ned2-Roboter zu befähigen, mehrere Objekte in seinem Arbeitsbereich zu erkennen und aufzuheben. Dieses System kombiniert das Vision Set, künstliche Intelligenz, Bildverarbeitung und maschinelles Lernen.
Anforderungen
- Ned2-Roboter
- Jeder Niryo-Greifer
- Das Vision Set und dessen kalibrierter Arbeitsbereich
- Verschiedene Objekte zum Platzieren im Arbeitsbereich
Einrichtung
Hardware
- Kalibrieren Sie den Arbeitsbereich mit NiryoStudio. Der Name des Arbeitsbereichs muss mit dem in der
param.yamldefinierten übereinstimmen (Standard:"tensorflow_workspace"). - Stellen Sie sicher, dass Roboter und Arbeitsbereich fest montiert sind, um während wiederholter Operationen Präzision zu gewährleisten.
Software
- Installieren Sie Python 3.11 auf Ihrem Computer.
- Laden Sie den Projektordner mit dem Anwendungscode herunter.
- Entpacken Sie die Dateien aus der .zip-Datei
- Erstellen Sie eine virtuelle Umgebung und installieren Sie die Abhängigkeiten mit
pip install -r requirements.txt - Öffnen Sie die Datei
param.yamlund konfigurieren Sie folgende Einstellungen entsprechend Ihrer Einrichtung:- robot_ip: Die IP-Adresse des Roboters. (Standard:
10.10.10.10bei Nutzung des Hotspots) - workspace: Der Name Ihres Arbeitsbereichs. (Standard:
"tensorflow_workspace") - drop_pose: Die Position, an der der Roboter Objekte ablegt. Diese sollte über die App-Oberfläche eingestellt werden, nicht manuell in der YAML-Datei.
- observation_pose: Die Position, an der der Roboter alle 4 Landmarken des Arbeitsbereichs sehen kann. Ebenfalls empfohlen, nur über die Benutzeroberfläche einzustellen.
- offset_vacuum: Offset-Wert für das Vision Picking bei Verwendung der Vakuumpumpe. Dieser Wert hängt vom Gewicht des Objekts ab (Standard:
10mm).
- robot_ip: Die IP-Adresse des Roboters. (Standard:
Hinweis: Wenn der Roboter beim Einnehmen der Beobachtungsposition nicht alle vier Landmarken sieht, wechselt er in den Lernmodus. Sie müssen ihn manuell so positionieren, dass er die Landmarken sieht, und die Pose in der App bestätigen.
Übersicht über das Anwendungsmenü

Spielen

Zeigt eine Liste gespeicherter Objekte an. Klicken Sie auf den Namen eines Objekts, um den Roboter aufzufordern, es aufzuheben und an der voreingestellten Ablageposition abzulegen.
Einstellungen

Beschriftung

Dieser Bereich ermöglicht es, neue Objekte zu erstellen oder bestehende mit weiteren Bildern zu ergänzen.
- Name (Auswahl): Wählen Sie ein vorhandenes Objekt aus der Datenbank oder verwenden Sie den Standard
obj_xfür ein neues Objekt. - Name (Texteingabe): Geben Sie einen Namen für das neue Objekt ein oder verwenden Sie den Namen eines bestehenden, um weitere Bilder hinzuzufügen.
- Bild hinzufügen: Erfassen Sie ein Bild des aktuellen Arbeitsbereichs und speichern Sie es im jeweiligen Objektordner unter
/data.
Wichtig: Wenn Sie ein neues Objekt hinzufügen, machen Sie mindestens 20 Fotos aus verschiedenen Winkeln und Beleuchtungsbedingungen. Vermeiden Sie weiße oder stark reflektierende Objekte, da diese die Erkennungsgenauigkeit verringern.
Training

Klicken Sie auf Vollständiges Training, um das Modell mit dem aktuellen Inhalt des data/-Ordners zu trainieren. Die App reagiert während des Trainings nicht (ca. 1–10 Minuten). Nach dem Training wird das neue Modell im Verzeichnis Model gespeichert und die App aktualisiert sich automatisch.
Beobachtungspose
Diese Option erlaubt die Definition der Beobachtungspose. Wenn ausgewählt:
- Der Roboter wechselt in den Lernmodus.
- Ein rotes Quadrat erscheint in der App-Oberfläche.

- Bewegen Sie den Roboter, bis er alle 4 Landmarken sieht (das Quadrat wird grün).

- Drücken Sie eine Taste oder klicken Sie, um die Pose zu speichern. Diese wird bei zukünftigen Sitzungen wiederverwendet.
Ablagepose
Gleicher Ablauf wie bei der Beobachtungspose:
- Der Roboter wechselt in den Lernmodus.
- Bewegen Sie den Roboter an die gewünschte Ablageposition.
- Bestätigen Sie die Pose mit einem Tastendruck oder Mausklick.
Objekte entfernen

Löschen Sie ein Objekt und alle zugehörigen Daten. Die App trainiert das Modell automatisch ohne dieses Objekt neu und aktualisiert die Benutzeroberfläche.
App aktualisieren
Diese Option aktualisiert die GUI, initialisiert Werkzeuge neu und beseitigt Roboter-Kollisionen. Funktional entspricht dies einem Neustart der App.
Beenden
Bringt den Roboter in die Ausgangsposition zurück und schließt die Anwendung.
Erste Schritte
- Starten Sie das Hauptskript:
python robot_gui.py - Zunächst sind keine Modelle oder Bilder verfügbar. Beginnen Sie im Bereich Beschriftung mit der Erstellung von Objekten.
- Machen Sie mindestens 20 Bilder pro Objekt unter verschiedenen Bedingungen.
- Trainieren Sie das Modell mit dem Button Vollständiges Training.
Hinweis: Die App erzeugt automatisch ein kleines Objektlogo für das Spielen-Menü, wenn ein neues Objekt erstellt wird. Sie können das Logo bei Bedarf manuell im Dateisystem ersetzen.
Wie es funktioniert – Ein Blick unter die Haube
1. Bildaufnahme
Funktion: take_workspace_img()
Verwendet die PyNiryo-API, um:
- Ein Bild von der Kamera des Roboters aufzunehmen.
- Das Bild zuzuschneiden und Linsenverzerrungen zu korrigieren.
2. Objektauswahl
Funktion: objs_mask()
Die Anwendung:
- Wandelt das Bild mit
cv2.cvtColor()von RGB zu HLS um. - Wendet
cv2.inRange()an, um potenzielle Objektbereiche basierend auf der Farbe zu isolieren. - Bereinigt die Maske mit
cv2.dilate()undcv2.erode(), um Rauschen zu entfernen.
Das Ergebnis ist ein binäres (schwarz-weiß) Bild, das die Formen der erkennbaren Objekte hervorhebt.
3. Objektextraktion
Funktion: extract_objs()
Schritte:
- Finden von Konturen in der Maske mit
cv2.findContours(). - Berechnung des Schwerpunkts des Objekts mit
get_contour_barycenter(). - Bestimmung des Winkels mit
get_contour_angle(). - Extrahieren und Drehen des Objektbildes mit
cv2.minAreaRect(), um eine einheitliche Ausrichtung zu gewährleisten.
Die Standardisierung der Objektorientierung verbessert die Erkennungsgenauigkeit von TensorFlow.
Damit ist das Tutorial abgeschlossen. Sie sind nun bereit, Ihre eigenen Modelle zum Objektauswahl mit KI und dem Niryo Ned2-Roboter zu erstellen und einzusetzen!

