RoπLawnMow

Heute wieder einen wichtigen Fortschritt erzielt,
Ich schaffe es nun eine Sollgeschwindigkeit vorzugeben und dann durch einen PID Regler die Mortore enstprechend zu regeln.
Das ist m.E. wichtig, da die Akkuspannung zwischen 16 und 20 Volt schwanken kann. Mit einem am LaborNetzgerät habe ich die Antriebsspannung verändert, und die rpm blieb konstant. Folgendes Diagramm zeigt die Werte einer Fahrt mit 2 Radumdrehungen in meinem Zimmer, mehr Platz ist leider nicht. Es sind ca. 150cm Wegstrecke. Hier kann man sehr gut sehen wie die Regelung reagiert. Kurz vor erreichen der Wegstrecke setze ich die rpm auf 15 rpm herunter. Ich muss noch testen ob das im Rasen ein guter Wert ist, oder ob das ggf. zu gering ist.


PID-Controller.png
 
Gestern Abend habe ich noch ein kleines Python Script für einen Spurwechsel gescriptet. Das muss ich noch "schön" machen, mir kam es aber erst einmal auf die Funktion an. Zielsetzung war: Mit vorgegebener rpm einen Spurwechsel zu vollziehen. Die HALL Impulse der Räder habe ich ausgewertet und steuere die ZS-X11H Controller mit einem PID Controller an, der die rpm's als Fehler auswertet. Soll rpm ist 16.
Hier die Videos die ich heute morgen noch schnell vor dem großen Regen in NRW in den Kasten ( auf die Karte) gebracht habe. Meine Erkenntnis: Es ist prima zu sehen wie der roπLawnMow auf schwerem Untergrund (langes und feuchtes Graß) genauso flüssig in der Bewegung ist wie auf glattem Untergrund. In den Diagrammen die ich aus Interesse aus den Daten geneiert habe, kann man auch sehr gut erkennen, wie der Regler andere DutyCycles erzeugt wie auf glattem Untergrund mit geringerer Reibung an den Rädern.
 

Attachments

Na du arbeitest ja so langsam vor.
Mich würde interessieren, wenn man nur den Raspberry nimmt, ob er dann auch in der Lage ist, das Perimeter Signal auszuwerten.
Hast du dich damit schon einmal befasst?
 
Ja, habe ich, aber das scheiterte an einem gescheiten Sender, da kannte ich euer Forum noch nicht. Da der Pi keinen analogen Eingang hat hatten wir folgendes Umgesetzt. Am Ausgang des Empfängers von diesem Kit hatten wir einen Analog Digital Wandler. Der hat dann dem Pi gesagt wie hoch die induzierte Spannung in den Spulen ist. Überstieg die Spannung dann einen gewissen Wert, dann hat er erkannt, dass er an dem Perimeter Draht ist. Die Experimente dazu haben wir aber dann eingestellt, weil
a.) ich ungern mit kleinen analogen Signalen arbeite, b:) ich überhaupt nicht weiß wie professionelle Lösungen arbeiten c:) der PiMowBot sich eigentlich als USP vorgenommen hatte ohne Perimeterdraht sich auf dem Grundstück zu orientieren. Was eigentlich bei gutem Wetter und ordentlichen Lichtverhältnissen ganz gut klappt.
Dennoch wäre es interessant das noch einmal anzugehen. Ich habe heute gerade eine PIN Übersicht erstellt, und der roπLawnMow hat jetzt im Moment nur noch 6 GPIOs frei. Aber sicher kann man ja auch noch mit Boards arbeiten die einem dann zusätzliche GPIOs zur Verfügung stellen.
Im angehängten Video ist an einer Stelle auch der Sender im Bild der die Schleife mit einem 2Khz Signal oder so speißt.
Im Moment läge meine Prio aber erst einmal bei der Implementierung weiterer Intelligenz beim roπLawnMow bevor ich mich an das Thema Perimeter noch einmal begebe.

1699893849544.png
 

Attachments

Oh schön, mit der Pin Übersicht kann ich ja schon mal was anfangen. Für die Perimeter Empfänger, werden noch 2 Pins benötigt.
Wenn du testen willst, sag Bescheid, ich kann dir eine SenderPCB zukommen lassen.
Die kommerziellen Perimeter Sender arbeiten wohl ähnlich, wie der Ardumower Sender.

Wenn man eine durchgängige Rasenfläche hat, mag das funktionieren mit Kamera und Graserkennung. Ich habe aber Wege dazwischen, die nicht alle die gleiche Farbe haben und der Weg zur Ladestation muss ja auch irgendwie gefunden werden.

Bernard kennt sich da aber besser mit aus
 
Oh schön, mit der Pin Übersicht kann ich ja schon mal was anfangen. Für die Perimeter Empfänger, werden noch 2 Pins benötigt.
Wenn du testen willst, sag Bescheid, ich kann dir eine SenderPCB zukommen lassen.
Die kommerziellen Perimeter Sender arbeiten wohl ähnlich, wie der Ardumower Sender.

Wenn man eine durchgängige Rasenfläche hat, mag das funktionieren mit Kamera und Graserkennung. Ich habe aber Wege dazwischen, die nicht alle die gleiche Farbe haben und der Weg zur Ladestation muss ja auch irgendwie gefunden werden.

Bernard kennt sich da aber besser mit aus
And the receiver is the KIT from RobotShop?
I just noticed, the I forgot the Hall Sensor /Speed Impuls of the cutter Motor. It is now GPIO27
@Bernard could you give me a hint where I can find more Information about transmitter an receiver?
 
And the receiver is the KIT from RobotShop?
I just noticed, the I forgot the Hall Sensor /Speed Impuls of the cutter Motor. It is now GPIO27
@Bernard could you give me a hint where I can find more Information about transmitter an receiver?
Here old part wiki from ardumower site:
Solution is complex because we need to know if mower is inside or outside of a closed perimeter and not only detect the wire.
Also you can find some youtube video about the explanation of how it's work here , it's very long (11 video) and complex but it's a very hard work from Roland Deschain.
I can try to explain the ardumower code but again it's very complex,so you can simply use the perimeter library of azuritber or teensyber and adjust according your need.
I don't know if Python is fast enough to read this high frequency signal ???
 
Here old part wiki from ardumower site:
Thanks, yes I know it is very complex. So if the RoπLawnMow is to have a Perimeter function at some time, then I would favorivize an existing / working solution with an Arduino and then process the output of the solution into the Raspberry Pi. But until than there is a lots of other things to do.
 
Heute habe ich mein Interface-Board für den RoπLawnMow fertig gestellt. Es sorgt für die Pegelwandlung zwischen Brushless-Controller und Raspberry Pi. Es hat auch noch zusätzlich eine LED, Taster und einen Beeper on Board. Die LED soll während der "Entwicklungszeit" anzeigen ob der BLE Scanner nach der Fernbedienung sucht und ob er dann mit der Fernbedienung vebunden ist. Mit dem Taster wird die Suche initialisiert. Der Beeper soll mir die Möglichkeit geben aus der Ferne zu erkennen, ob z.B. ein ToF Senors das Stoppen veranlasst hat, oder ob es ein visuelles Ereignis war, was ihn zum Stoppen gebracht hat. Nun muss ich noch die Verbindungsleitungen herstellen und dann kann ich es testen.
Interface.jpg
 
Heute habe ich die Lochraster Platine für den Anschluss des Akkus und der 3 Motoren vorbereitet.
Links das FET Relais, es wird in der jetzigen Ausbauphase den MesserMotor Ein- und Ausschalten. Später ist geplant, dass er auch über PWM gesteuert wird. In der Mitte ein INA 3221. Habe ich noch aus dem PiMowBot Projekt in meiner Bastelkiste. Es soll mir beim roπLawnMow den Strom vom Messermotor, den beiden Antriebsmotoren messen und mir die Akkusspannung messen. Der Ladestrum / Spannung des Akkus wird derzeit im seperaten Akku Ladegerät gemessen. Das wird einfach über Steckverbindungen an die "Laden" Klemme angeschlossen. Ganz rechts der StepDown für den Pi.
Morgen muss ich noch die Lochraster Platine auf der Unterseite verlöten und dann kann ich es in den den roπLawnMow einbauen.


Akku.png
 
Gerade mit der Verdrahtung und Einbau fertig geworden. Ein erster Test mit der Remote Control, und oh Wunder, die Motore drehen in die Richtige Richtung und wenn man nach rechts will fährt er auch nach rechts. Also alles richtig gemacht. Das ist aber nicht immer so.
Auf dem Power-Board mit dem INA Modul fehlt jetzt noch die Verbindung zum I2C-Bus. Das Kabel kann ich in den nächsten Tagen noch verlegen.
Nun muss ich noch ein paar Tests an der PiMowBot SW durchführen und dann geht es mit dem MPU6050 weiter.
Ich werde wieder berichten.
Modules_one.jpgPowerBoard.jpg
 
Heute habe ich die Lochraster Platine für den Anschluss des Akkus und der 3 Motoren vorbereitet.
Links das FET Relais, es wird in der jetzigen Ausbauphase den MesserMotor Ein- und Ausschalten. Später ist geplant, dass er auch über PWM gesteuert wird. In der Mitte ein INA 3221. Habe ich noch aus dem PiMowBot Projekt in meiner Bastelkiste. Es soll mir beim roπLawnMow den Strom vom Messermotor, den beiden Antriebsmotoren messen und mir die Akkusspannung messen. Der Ladestrum / Spannung des Akkus wird derzeit im seperaten Akku Ladegerät gemessen. Das wird einfach über Steckverbindungen an die "Laden" Klemme angeschlossen. Ganz rechts der StepDown für den Pi.
Morgen muss ich noch die Lochraster Platine auf der Unterseite verlöten und dann kann ich es in den den roπLawnMow einbauen.


View attachment 1104
Check the max charge voltage of your battery.
INA3221 is perfect but limited to 26V if i remember.
But certainly no problem because i use them into perimeter sender since 4 years at 29.4V without particular trouble ;)
 
Check the max charge voltage of your battery.
INA3221 is perfect but limited to 26V if i remember.
But certainly no problem because i use them into perimeter sender since 4 years at 29.4V without particular trouble ;)
Yes I know, and thanks for you comment the INA 3221 is perfect, because the Akku has 5 lippos in Serie. So max voltage is around 21 Volt. Should Work. The Alko Mower, my other Pi based Mower has also a 29.4 V Akku. And so i used a different INA. So I found the the 3221 in my stuff Box.
Regards Ulli
 
great achievement Ulli! well done !
BTW: I am working on a Yardforce Amiro 350i chassi with BL-motors (Linix) and do get very helpful and patient support from "my coach Ulli".
Thank you so much Ulli!
I am trying to copy Ulli's efforts and integrate it into my Amiro...
I started based on the PiMowBot-project of TGD-consulting.de (without the 3D-chassi as proposed) - instead I use the Yardforce chassi.
Documentation (mainly in german) can be found here.
 

Attachments

  • Mein_Yardforce_chassi.png
    Mein_Yardforce_chassi.png
    566.5 KB · Views: 14
Hier mein Fortschrittsbericht für den heutigen Tag:
Das INA Modul hängt nun am I2C BUS und ein Python Script scannt die AKKU Spannung alle 2 Sekunden, der Interval kann auch sicher größer sein. Ich erzeuge 2 Dateien, eine Datei die von der PiMowBotIt-SW eingelesen werden könnte, da wird nur die Akkuspannung als Wert geschrieben. Darüberhinaus interssieren mich aber auch die Motoren Ströme des RoπLawnMow. Für eine spätere Analyse schriebe ich diese fortlaufend mit Timestamp in eine Datei. Außerdem benutze ich noch den kleinen Beeper auf meiner Interface Platine als LowVoltage Warner. Wenn die Akkuspannung unter einen definierten Threshold sinkt, dann fängt er an zu piepen. Im angehängten Video seht ihr die Funktion
Audio Spur leider nur in Deutsch.
Den in der nächsten Zeit entstehenden Code werde ich auf Github ablegen. Habe aber 0 Erfahrung damit. Wäre jemand in einer Teams-Session bereit mich einzuweisen, oder kennt jemand ein gutes Tutorial?

Gruß
Ulli
 

Attachments

Den in der nächsten Zeit entstehenden Code werde ich auf Github ablegen. Habe aber 0 Erfahrung damit. Wäre jemand in einer Teams-Session bereit mich einzuweisen, oder kennt jemand ein gutes Tutorial?

Gruß
Ulli
Eigentlich steht hier alles Wichtige drin, ist eigentlich nicht wirklich schwer:
 
Im englischen Sprachraum habe ich schon oft gelesen / gehört: " I am proud to announce ...."
Ja ein wenig stolz bin ich schon. Gestern mal ein wenig mit github gespielt, heute findet ihr hier schon den Code. https://github.com/ullisun/RopiLawnMow/ Der läuft derzeit auf meinem RoπLawnMow. Als nächstes müsste ich noch ein Script erstellen, welches die brushless Motortreiber mit entsprechenden gezielten Fahr-Informationen versorgt. Also eigentlich ein Empfänger für die Fernbedienung. Den ich nutze, der ist Bestandteil der PiMowBotIt-SW und damit lizensiert. So kann ich ihn natürlich hier nicht einfach publizieren. Aber ich kann beschreiben wie ich ihn eingebunden habe. Lizenznehmer der PiMowBotIt-SW könnten damit dann einfach ihren Roboter steuern. Der SoruceCode für den Fernbedienungssender ist ja frei, ich habe darin auf Github verwiesen.
Your Feedback is welcome!
 
Back
Top