Im Rahmen der Vorlesung Lichtsysteme und optische Systeme war das Ziel auf einer Holzplatte eine Murmel im Kreis fahren und einlochen zu lassen. Anstatt wie das sonst bekannte Geschicklichkeitsspiel für Kinder, dieses Mal automatisch mit einem selbst entwickelten System. Als Startpunkt gab es eine Murmelplatte mit zwei Achsen, die Servos, ein Raspberry Pi3+ und eine Raspberry Kamera 2.
Damit die Platte nicht leblos auf dem Tisch herumliegt, war das erste Ziel einen kompletten Aufbau mit allen Halterungen zu konstruieren. Dazu gehören die Beine, Servo-/Achsenhalter, Seitenarme und Kamerahalter. Aus den Konstruktionen der Teilelemente aller Teilnehmenden wurden die besten Ideen zu zwei verschiedene Murmeltier Grundgerüsten zusammengefügt. Die Elemente wurden von den Studierenden mit ihrer eigenen Frässtrategien auf der CNC-Fräse herausgearbeitet.
Parallel dazu wurde im Kurs Bildverarbeitung 3 die Hardware (Pi, Servos, Kamera) und die Murmeldetektion vorbereitet und ausprobiert. Wie Installation der notwendigen Bibliotheken, für die Ansteuerung der Servos und die Bildverarbeitung. Erste Möglichkeiten der Detektion sowie eine mögliche Filterung anhand eines Physikmodells der Murmel.
Um die Teams im zweiten Teil weiter zu motivieren, wurden drei Meilensteine/Herausforderungen angesetzt, um einen Konkurrenzdruck zwischen den Teams zu generieren. Die beiden Teams traten gegeneinander an, um eine Herausforderung schneller zu erfüllen und so die bessere Performance ihres Projekts demonstrieren zu können. Anfangs war es noch Mensch gegen Mensch. Ziel: Wer durch die bessere Ansteuerung der Servos die Kugel schneller in das Loch lenken konnte gewann. Als zweites musste das Murmeltier, dies automatisch tun. Hier wurde eine robuste und schnelle Bildverarbeitung vorausgesetzt, welche die Kugel detektieren kann. Sowie einen abgestimmten PID-Regler damit die Kugel weder von der Platte kugelt, jedoch schnell genug, um zu gewinnen. Die letzte Aufgabe, welche auch der Abschluss der Endpräsentation war, soll die Murmel in einer vorgegebenen Kreisbahn zehn Runden drehen ohne dabei die Begrenzung zu übertreten. Geschwindigkeit war der Schlüssel zum Sieg, also musste alles noch einmal optimiert werden. Servos wurden von analogen zu digitalen gewechselt, ein kleineres ROI (Region of Intrest) gewählt und die PID-Regler nochmal überarbeitet.
Der Studienleiter glaubte nicht an die Machbarkeit, deshalb forderte er das Murmeltier heraus: Mensch gegen Maschine. Durch anfänglichen Betrug mit einem Magneten unter dem Loch und einer Stahlkugel konnte er zwar in Führung gehen, jedoch fiel das Magnet schnell auf und mit dem Ersatz durch eine gleichartige Glas-Murmel konnte er keine weiteren Erfolge mehr verbuchen.
Murmeltierbildverarbeitung 101
Für die Detektion der Murmel auf dem Holztisch haben wir OpenCV verwendet. Erstes Ziel war es einen Livestream von der Kamera zu bekommen, welcher möglichst viele Bilder und fast wichtiger mit möglichst wenig Verzögerung (Latenz) besitzt. Damit die Erkennung auch robust und die Integrationszeit der Kamera klein war, setzen wir für die letzte Herausforderung eine zusätzliche Beleuchtung ein.
Für die Detektion einer Murmel hatten wir zwei einfache Methoden versucht. Einmal die optimierte Hough-Transformation für Kreise um die Kante der Kugel zu detektieren. Sowie die simplere Blob-Analyse, in welcher wir alle Pixel untern einem bestimmten Wert (Threshold) als eine mögliche schwarze Kugel bestimmten. Danach filtern wir alle zusammenhänge Pixel, ob sie anhand ihrer Grösse und Rundheit unsere Kugel sein können. Die Geschwindigkeit der Murmel verursachte bei der Raspberry Kamera eine Bewegungsunschärfe, weshalb die Hough-Transformation wegfiel. Obwohl diese für das ganze Bild schneller war. Damit eine möglichst gute Performance erreicht werden konnte, wurde nur in einem kleinen Bildausschnitt (Region of Intrest ROI) die Murmel gesucht. Der ROI wurde um den letzten bekannten Punkt der Murmel gesetzt.
Zur Bestimmung der PID-Werte wurde ein Entwicklertool erstellt, welche zuliess, dass die Werte im Betrieb angepasst werden konnten. Somit wurden die Werte Schritt für Schritt manuell angepasst bis die Resultate stimmten.
Die analogen Servos die zuerst eingesetzt wurden, besassen bei einem Richtungswechsel eine bis zu 6.5° grosse Hysterese, weshalb diese durch Digitale ersetzt wurden.
Das Murmeltier-Projekt war für alle ein voller Erfolg. Die Teilnehmenden haben ihr im Studium gelerntes Wissen aus den verschiedenen Bereichen anwenden und vertiefen können. Durch den Konkurrenzdruck unter den Teams sind Spannungsgebiete entstanden, welche für die persönliche Entwicklung förderlich waren.
Michael Andres
Michael Andres studiert im sechsten Semester Photonics an der HTW Chur im Vollzeitmodell.