You are currently viewing Der Fugenkratz-Roboter

Der Fugenkratz-Roboter

  • Beitrags-Autor:
  • Beitrags-Kategorie:IT

Wie bekommt man die Fugen auf dem Gehweg sauber? Mit einem Fugenkratzer? Zu viel Arbeit. Mit Chemikalien? Ganz schlecht für die Umwelt. Natürlich mit einem Roboter! 😉

So ähnlich ist die Idee von Fugi (Rufname) dem Fugenkratz-Roboter entstanden. Also einen alten Raspberry Pi aus der Schublade geholt, einige Schrittmotoren und ein Kameramodul bestellt und auf gehts. Meine erste Idee war es, einen halbwegs fertigen Bausatz zu kaufen. Es gibt einige fertige Bausätze für Fahrzeuge, Hunde und sogar Spinnen im Internet. Aber irgendwie passte das alles nicht. Was also tun? Es musste ein 3D Drucker her!

3D Drucker

Viel zu lange bin ich ohne 3D Drucker ausgekommen und zufällig gab es gerade tolle Angebote von Anycubic bei denen ich mir einen Anycubic i3 Mega S für unter 150 € geschossen habe. Das soll keine Werbung sein, ich verdiene daran auch nichts und ich weiß auch nicht ob es ein super 3D Drucker ist, da ich gerade erst in diesem Gebiet anfange. Was ich weiß, er tut, was er soll und das bisher ohne Probleme. Wie es sich wohl für einen Anfänger im 3D Druck gehört gleich erst mal Youtube Videos für die Inbetriebnahme des 3D Druckers geschaut. Das ist Pflichtprogramm, um zumindest einmal zu sehen, wie das s. g. Leveling funktioniert. Das ist sehr, sehr wichtig, damit der Druck gelingt. Danach auf zu Tinkercad, ein sehr einfaches 3D Modellierungstool. Sehr einfach zu erlernen, aber auch hier empfiehlt es sich, einige Youtube-Videos zu schauen, bevor man los legt, um die vielen hilfreichen Funktionen dort kennenzulernen. Das s. g. Slicing, also das 3D Modell für den 3D Druck vorzubereiten, mache ich mit Ultimaker Cura. So wie ich das gelesen habe, ein typisches Anfängersetup, dass wunderbar funktioniert. Bei Tinkercad kann man nach den Motoren etc. suchen, um z. B. direkt fertige Schablonen für Motorhalterungen zu bekommen. Sehr praktisch. Also schnell Fugi in Tinkercad entworfen und gedruckt. Und da braucht man Geduld. So schön der 3D Druck ist, so langsam ist er auch. Ich habe mehrere Tage gebraucht, bis ich alle Teile für Fugi gedruckt hatte.

Die Software

Screenshot von der Fugi Weboberfläche

Tja, was habe ich programmiert? Hier bin ich wohl stark vom Standard abgewichen. Viele der Roboter im Internet sind wohl in python programmiert. Da hatte ich aber keine Lust zu. Ich habe mich für den absoluten Overkill entschieden und eine Java Webapplikation mit SpringBoot erstellt. Zum einen kenne ich mich da besser aus und zum anderen ist es superleicht für mich, dort eine kleine Webapplikation mit einzubauen, mit der ich den Roboter steuern kann. Im Frontend wurde react mit Material UI verwendet, da ich mir Material UI sowieso mal näher anschauen wollte. Zur Ansteuerung der Kamera wurde picam (uk.co.caprica:picam) verwendet und der Raspberry PI GPIO Port wurde mit pi4j angesprochen (com.pi4j:pi4j-core) angesprochen. Das ging auch alles recht problemlos, nur die Installation der nativen Bibliotheken war etwas nervig, damit man diese teilweise auf dem Pi kompilieren musste und das einfach unendlich lange dauert.

Die Fugenerkennung

Die Fugenerkennung wurde relativ einfach gemacht. Auf der Weboberfläche habe ich einen Farbpicker, einmal für Dreck (also Fugen und Gestrüpp) und einmal für Steine. Ich klicke in der Weboberfläche auf einige Beispiele der jeweiligen Farbe und Fugi lernt daraus, wie er Steine und Dreck auseinanderhalten kann. Dazu benutze ich einfach eine Art nearest Neighbor Algorithmus, um die ähnlichste Farbe zu finden (Fuge oder Stein), dessen Ergebnisse ich Cache, da dieses Verfahren ohne Cache doch recht aufwändig ist. Als Distanzmaß im HSL Farbraum benutze ich die Wurzel aus (H zum Quadrat + S + L), um eine höhere Abhängigkeit zum Farbwert zu haben. Das funktioniert auch sehr gut, aber je nach Lichtverhältnissen muss man Fugi neu trainieren, da sich die Farbwerte doch manchmal schon stark je nach Licht unterscheiden. Vielleicht liegt das auch an meiner sehr billigen Kamera. 😉 Die kleine USB Lampe vor Fugi reicht da leider nicht aus, um die Lichtverhältnisse stabil zu halten. Sie ist doch ein wenig schwächer als die Sonne. Vielleicht sollte ich Fugi nur nachts betreiben, damit die Farbwerte konstant bleiben. Das muss ich noch mal ausprobieren.

Fazit

Fugi ist etwas schwach und auch etwas leicht, so hat er gegen größeres Unkraut keine Chance. Da fehlt ihm einfach die Power. Ich würde die Fugenkratz-Leistung mal auf dem Niveau eines zweijährigen Kindes einstufen. 😉 Aber, und das ist ein großes Aber: Es macht sehr viel Spaß, einen Fugenkratzroboter zu bauen und zu programmieren, und man kann sich manchmal echt totlachen, auf was für lustige Ideen er kommt oder wenn er einen erbitterten Kampf gegen Riesenunkraut führt. Ich hoffe, das gibt euch ein bisschen Inspiration für eure eigenen Robotikideen. Auf jeden Fall kann man eine Menge lernen, von der Bilderkennung über die Motoransteuerung bis hin zur künstlichen Intelligenz.

Liebe Grüße und bis zum nächsten Monat,

Carsten Elfers