Rubik-Cube-Robot: Würfellösung per KI

Der Rubik-Würfel-Löseroboter von Otvinta

Der Rubik-Cube-Robot ist ein Roboter, der den Rubik-Würfel lösen kann. Eigentlich ist daran erstmal nichts neues. Aber der Roboter hat nur eine Kamera, es werden keine zusätzlichen Modifikationen am Würfel benötigt, wie z.B. Griffe für die (Schritt-)Motoren um den Würfel schneller zu drehen und der Roboter wurde komplett 3D-gedruckt. Außerdem wird hier kein „Speed-Cube“ verwendet, sondern ein gewöhnlicher Würfel. Er wurde Konstruiert und entwickelt von Otvinta.

Die Druckzeit des Roboters war enorm, denn der Drucker druckte insgesamt mehr als 80 Stunden (Drucker: Dremel Idea Builder 3D20/Flashforge Dreamer) und es wurden etwa 1,5 Kilo Filament verbraucht. Das nächste Problem waren die Bauteile: die verwendeten Servos für die Gripper (DS3218) und für die Slider(HS-311). Es war nicht möglich, zu der Zeit diese Motoren bei einem Händler in Deutschland zu bestellen, daher habe ich sie in China beim Hersteller direkt bestellt.
Ich habe einige Bauteile, wie die Stangen, die zur Befestigung der Kamerahalterung und der einzelnen Elemente des Rahmens dienen, zwar in mittlerer Auflösung gedruckt, aber das Gewinde war trotzdem nicht besonders gut und es war aus diesem Grund unmöglich, ohne eine Zange die Halterung zu verschrauben. Wer den Roboter später teilweise nochmal zerlegen möchte, dem empfehle ich alle Bauteile die ein Gewinde haben, in einer hohen Qualitätsstufe zu drucken. Außerdem ist es dazu auch wichtig, die Stangen nicht fest zu verschrauben, denn es ist möglich, dass der Roboter während der Kalibrierungsphase nocheinmal, zumindest teilweise, zerlegt werden muss.

Der Zusammenbau des Rahmens

Dies war aus meiner Sicht neben der Kalibrierung der Motoren ein relativ schwieriger Abschnitt des Projekts. Da mein 3D-Drucker nicht so maßgenau ist (im Vergleich mit anderen 3D-Druckern), dafür aber eine hohe Druckqualität bietet, waren die Gedruckten Bauteile erstmal nicht schlecht. Als ich dann aber Versuchte, die Slider in dem dafür vorgesehenem rahmen zu platzieren, kamen mir erste Zweifel, ob die Motoren diese überhaupt bewegen können. Zur Erinnerung: Die Slider werden von den HS-311 Servos bewegt. Diese könenn „nur“ (in Relation zu den Verwendeten DS3218-Servos) 3,3kg bewegen. Daraufhin habe ich die Slider und Arm-Bauteile mehrmals geschliffen bis ich mit dem Ergebnis zufrieden war. Es ist hier sinnvoll, wenn man zuerst mit einer relativ groben Fräse für den Dremel vorschleift, dann mit Schleifpapier (mittlere und feine Körnung) zusätzlich nochmal von Hand nachschleift. Beim zusammensetzen habe ich Industrieschmiermittel verwendet, welches eine geringere Reibung hat als Schmiermittel, die eher bei Endverbrauchern geläufig sind. Es ist ebenfalls wichtig, nicht zuviel Schmiermittel zu verwenden, weil dieses ebenfalls wieder Platz benötigt.
Mit einem genauerem Drucker ist es aber vermutlich nicht erforderlich, die Bauteile nochmal mit einem so großem Aufwand zu schleifen.

Die Kamerahalterung
Ein Blick auf die umgebaute Webcam

Die Kamerahalterung war eigentlich recht einfach zusammenzubauen. Nachdem diese gedruckt war, musste ich auch fast nichts Nachbearbeiten. Lediglich beim Verschrauben mit den Befestigungen des Rahmens traten einige Probleme auf, weil das Gewinde nicht passte. Unter der Verwendung verschiedener Schmierstoffe und einer Wasserrohrzange ist es mir dann aber gelungen, diese zu verschrauben.
Auch die Dazugehörigen Winkel passten nicht sehr gut auf die Stangen. Diese habe ich letzlich mit roher Gewalt zusammengedrückt, welche nun auch Ohen die dafür vorgesehenen Schrauben die Kamerahalterung in ihrer Vorgesehenen Position halten.

Die Kalibrierung (Gripper)
Bild
Mit zwei Haushaltsgummis habe ich den Rotationsachsenmittelpunkt herausgefunden. Dies ist außerdem beim Kalibrieren der Gripper eine gute Hilfe.

Die einzelnen Motoren des Roboters müssen sich beim drehen exakt gleich bewegen und gleich schnell sein. Damit sie gleich schnell sind, müssen sie immer die gleichen Strecken zurücklegen, wobei die Werte immer Variabel sind, weil jeder Gripper eine andere Startposition hat. Ich habe dazu ein Excel-Sheet angelegt, um die jeweiligen Werte zu berechnen. Um die jeweiligen Drehungen einzustellen, habe ich Haushaltsgummis über die Stangen gespannt, um zu erkennen, wo der Mittelpunkt des Würfels später ist.  Da die Startwerte immer unterschiedlich sind, werde ich dieses Sheet nicht einfügen. Für gleich schnelle Bewegungen zu erhalten, sollte die Differenz zwischen der 0 und 90 Grad Position bei jedem Gripper immer gleich sein.
Die verwendeten Haushaltsgummis waren auch für den des Kalibrierungsvorgangs äußerst nützlich.

Die Kalibrierung(Slider)
Die einzelnen Gripper. Man erkennt einige Frässpuren an ihnen.

Die Slider bewegen den Gripper auf den Würfel zu, damit die Gripper diesen drehen können. Es ist bei diesen daher ebenfalls wichtig, dass sie sich möglichst synchron zu dem Würfel bewegen, ihn dabei aber nicht zu sehr festheben. Ich hatte das Problem, dass der obere Arm des Grippers den Würfel immer so stark festhielt, sodass er im Gripper stecken blieb, wenn sich der untere Gripper oder alle Gripper vom Würfel entfernten. Vergleichbare, nur etwas geringer ausgeprägte Probleme hatte ich auch mit den restlichen Grippern. Um dieses Problem zu lösen, habe ich dem Würfel im Gripper mehr Bewegungsfreiheit gegeben, indem ich ein bisschen Filament weggefräst habe. Problematisch waren hierbei die Ecken, denn diese waren auch die Hauptverursacher des oben genannten Problems. Beim fräsen der Ecken sollte man darauf achten, eine möglichst kleiche, spitz zulaufende Fräse zu verwenden, denn sonst kann man das Abstehende Filament nicht gut entfernen.

Der nach dem Kalibrieren etwas ramponierte Rubik-Würfel
Die Kalibrierung der Kamera

Die Kalibrierung der Kamera war das letze, schwierigste und vor allem Zeitaufwändigste Thema.
Ich habe bei Otvinta gelesen, dass die Kamera ersetzt wurde durch eine andere, die laut Otvinta besser Farben erkennen kann. Ich habe den Umbau noch nicht durchgeführt, werde aber davon hier ebenfalls berichten. Die Kamera kommt mit unterschiedlichen Lichtverhältnissen nicht sehr gut zurecht. In meiner Schule werden Neonröhren zur Beleuchtung eingesetzt, welche unregelmäßig Flackern. Dieses Flackern kann der Roboter bei den Farben Gelb und Orange nur sehr schlecht verarbeiten. Die restlichen Farben sind bei diesen Lampen aber kein Problem.
In meiner Wohnung befinden sich nur LED-Lampen, bei diesen ist es genauso wie bei den Neonröhren.
Die Farberkennung funktioniert eigentlich nur bei natürlichem Licht gut und dieses darf auch nicht von Oben auf die Kamera, sondern in Blickrichtung der Kamera auf den Würfel fallen. Bei dieser Situation funktioniert die Kamera relativ gut.
Es ist am Anfang auch sinnvoll, einen bereits gelösten Würfel für die Kalibrierung zu verwenden, denn dadurch kann die KI bessere Einstellungen für die jeweiligen Werte bieten.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.