Montag, 30. Mai 2022

Smarter Mäh-Roboter mit Raspberry-Pi Teil 3

 

Mäh-Roboter mit Raspberry-Pi


Teil 3

Im vorigem Post habe ich einen kurzen Überblick über die Sensoren gegeben die ich in den
Mäh-Roboter einbauen werde. Außerdem konntet ihr das Prinzip der Schaltung erkennen, die zum Einsatz kommen soll. Eigentlich ganz einfach, die Sensoren sind alle über den i2c Bus angeschlossen. Nur die Hall-Sensoren für die Impulserkennung (ich nenne sie gern Tic Tac) der Antriebsräder werden direkt an GPIOs angeschlossen.
Im Moment habe ich 2 Systeme im Einsatz. Ein Test & Evaluierungs Modell. Das Modell hat kleinere Antriebsmotoren und besitzt auch keinen Mähmotor. Das Modell dient allein dazu die Software zu testen und ein wenig Grundlagen Forschung zu betreiben. Diese Modell als auch der große Mäher, basierend auf einem ALKO SOLO System, betreibe ich mit einem Raspberry Pi 3+.

Als ich im Mai 2021  dieses Projekt anging, hatte ich noch die Idee selber eine Software zu schreiben, welche die Motoren steuern soll. Ein wenig opencv für die Bilderkennung und ein wenig "if then else", sollte nicht das Problem sein. Das ist es auch nicht. Aber je intensiver ich mich mit der Recherche beschäftigte, umso mehr wurde mir klar, daß es doch nicht so einfach ist, alles unter einen Hut zu bekommen. Nun schneide ich mir komplexe Dinge immer gedanklich in Scheiben und realisiere immer eins nach dem anderen. 
Auf der anderen Seite ist es auch beruhigend wenn man bei komplexen Projekten ein gewisses Rückfall System hat. So bin ich auf TGD Consulting gestoßen. Hier gibt es ein Projekt in dem ein kpl. Mäher aus dem 3d Drucker kommt.  Die Software von TGD Consulting besteht aus Python Modulen und - ich nenne ihn mal - einen Rebol-Kern. Die Software habe ich für unter 20€ erworben. Sie war sehr einfach zu installieren und soweit ich es beurteilen kann, werden hier vom Entwickler sehr systemnahe Funktionen vom Pi genutzt. Das was Rebol nicht unterstützt hat der Entwickler in Python Scripte ausgelagert. Der Rebol-Kern und die Python Scripte kommunizieren über Datei Inhalte die in der RAM-Disk zur Laufzeit von der Software erstellt / verändert werden.
Beispiel:  Soll der rechte Motor sich drehen, dann wird in eine Datei in der RAM-Disk ein Wert hinein geschrieben. Soll er sich nicht drehen enthält die Datei eine 0, soll er sich mit maximaler Geschwindigkeit drehen, so schreibt der Rebol-Kern 100 in die Datei. Genauso ist es mit den Entfernungssensoren. Misst der linke ToF Sensor eine Entfernung von 150cm, so schreibt das zugehörige Python Script 150 in die "Linke" Entfernungs Datei. Der Rebol-Kern liest den Wert permanent aus und bei Unterschreitung des Mindestwertes wird ein entsprechender Fahrbefehl generiert, der sich dann in den Motordateien (rechts und links) widerspiegelt. Bei Stop stehen in beiden Dateien 0, bei Rückwärts fahren -50, oder -30 je nachdem wie schnell er zurücksetzen soll. Also eigentlich ganz einfach. Die Intelligenz sitzt in dem Rebol-Kern, die Sensorik und die Aktorik wird durch Python Scripts abgebildet.
Ideal für mich, denn wenn ich selber eine Software schreiben möchte, dann habe ich dafür schon die Module für Sensoren und Aktoren.
Richtungs- und Entfernungs-Messung, das sind die ersten Module mit denen ich mich intensiv beschäftigt habe und auch gemeinsam mit dem Entwickler verändern konnte. 
Welche Funktionen in den letzten Monaten in die Software alle zusätzlich implementiert wurden und somit auch anderen PiMowBotIt-SW Nutzern nun zur Verfügung stehen, kann ich adhoc nicht benennen. Manches geht ganz fix, anders bedarf auch intensive Tests. Allein beim Kompass haben wir mehrere Wochen gebraucht, um zur bisherigen Funktion auch eine Gyro und Accelerator Funktion mit dem MPU9250 zu implementieren. Am Ende zählt der Erfolg!
Auch ist es wichtig, dass es ja ein Hobby ist. Das heißt nicht 7x24, denn es gibt auch noch andere schöne Dinge zu tun. Die aktuelle Herausforderung liegt bei mir im Moment, dass ich einen "Adapter" schaffen muss, damit von der implementierten Motorsteuerung die brushless Motortreiber Platinen bestmöglich angesteuert werden. Die Motore haben ein irres Drehmoment, laufen aber mit den Treiberplatinen langsam an. Die PiMowBotIt-SW müsste also die Anlaufzeiten berücksichtigen, oder ich muss die Anlaufzeiten verkürzen. Das ist insofern wichtig weil der Mäher ja auch Bahn für Bahn mähen soll. Also muss er über den Kompass entsprechend gesteuert werden. Und dazu muss die dahinter stehende Regelung sehr flink arbeiten.

Wie ich das gelöst habe ( noch bin ich in der Erprobungsphase) kann ich euch hoffentlich bald beschreiben.

Also dran bleiben !