Raindancer Chassis

roland

Active member
Für die weitere Umsetzung meiner Software von Nucleo auf das Ardumoer PCB benötige ich nun ein Chassis. Dieses möchte ich in diesem Thread dokumentieren.
Mein Ziel ist es ja, ein Chassis zu haben, das auch bei Regen mähen kann. Da ich mein Gras ca. 7- 8cm hoch mähe, war die Form des Originalchassis für mich ungünstig, da der Mähteller zu dicht am Boden ist. Dort hat sich dann Gras um den Mähteller gesammelt und den Widerstand beim drehen erhöht.
Daher habe ich nun den Mähteller nun so montiert, dass dieser nach oben hin frei ist und sich das Gras nicht mehr absetzen kann. Leider habe ich nun die großen Räder nicht mehr vorne, so dass ich nicht über meine Geoboarder fahren kann. Weiterhin kommt durch den Mähmotor nun mehr Gewicht auf die Lenkräder. Wird sich wohl erst nächstes Jahr zeigen wie sich das auf dem Rasen verhält. Die Spulen werden mit 50cm RG174 kabel an die Verstärker angeschlossen, welche sich dann im großem Gehäuse beim PCB1.3 befinden. Ich verwende dicke 24V Relay Spulen mit 1H Induktivität. Diese haben ein stärkeres Empfangssignal.
Die Spulen sitzen nun ziemlich weit von den Antriebsmotoren entfernt.
Das PCB ist hinten an einer Klappe montiert. Damit erreiche ich eine bessere serviceability.
Das wars erstmal für heute.


[attachment=4271]DSC00528.JPG[/attachment]
 
Nach über 4 Monaten habe ich nun mein neues Chassis einigermaßen fertig. Das Chassis habe ich verkürzt und es ist damit kompakter. Die Mähscheibe reicht leicht über die Vorderräder hinaus. Leider ist damit der Mähmoter nun zu nah an den Spulen, so dass ich diesen mit MU-Metall umwickeln musste.
Die Abdeckung habe ich an drei Punkten aufgehängt und die Umsetzung von Werner gewählt, da diese einfacher anzubringen war. https://www.ardumower.de/index.php/de/forum/sensoren/1510-bewegliche-gehaeusebefestigung Aktuell verwende ich den Druckwellenschlauch als Bumper. Für die Bewegung des Chassis habe ich noch keine Sensoren.
Bin hier noch unschlüssig, wie ich dies realisiere.

Ich bin auch noch unschlüssig, ob ich wieder Sonarsensoren verwende. Bisher habe ich meine Hindernisse auf dem Rasen nicht mit Draht abgesteckt, so dass der Roboter dort immer gegengefahren ist und daher musste vorher die Geschwindigkeit reduziert werden. Nun bin ich am überlegen, die Hindernisse mit Draht abzugrenzen und eine Inselerkennung zu programmieren so, dass die Bumper nur für den Worst Case gedacht sind.

Da ich meinen bisherigen Nucleomower mit STM Nucleo Boards sowie original Chassis betrieben habe und nun das PCB 1.3 mit eigenem Chassis verwende, musste ich die halbe Software überarbeiten. Und dies ist leider noch lange nicht fertig.

Ich habe die Software nun so umgeschrieben, dass ich auf dem Perimeter drehe. Da entfällt das zurücksetzen solange der Mower nicht ungefähr im rechten Winkel zum Perimeter über das Kabel gefahren ist. Da muss ich nochmal den gesamten Behaviour Tree überarbeiten bzw. kontrollieren.

Weiterhin habe ich in dieser Software nun die Perimetererkennung mit der FFT umgesetzt. Der PID für die Geschwindigkeitssteuerung wurde mit einem PDFF Regler ersetzt. Für die Position Control verwende ich nun den Simple Trajecton Planer vom linuxcnc Projekt. Damit erhoffe ich mir, durch die sehr smoothen Bewegnungen, die Antriebsmotoren und Getriebe zu schonen.

Ich hoffe nur, das das alles so im Feld auch funktioniert, wie ich es geplant habe. Das wird sich dann in zwei Monaten rausstellen.

IMG_0925.JPG

IMG_0926.JPG

IMG_0923.JPG

IMG_0927.JPG

IMG_0921.JPG

IMG_0924.JPG

IMG_0922.JPG

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2936/IMG_0925.JPG/
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

kannst du mal die Maße des Chassis nennen? Auf den ersten Blick wirkt es viel länger. Aber du hast das weit rausragende Stützrad durch die zwei kleinen Rollen vorne ersetzt. Das könnte den Längenzuwachs relativieren.

Gruß
Patrick
 
Ohne Druckwellenschlauch und ohne Ladekontakte oben habe ich folgende Abmessungen:
L: 54cm
B: 41cm
H: 28cm

Ich habe die Front des Elektronikgehäuse weiter zu den Motoren gesetzt. Dadurch wird der Innenraum kleiner als beim Originalchassis. Diese Maßnahme hat mir 7cm Verkürzung im Gegensatz zum ersten Entwurf gebracht. Die Aluprofile zum Vorderrad habe ich um ca. 1cm gekürzt. D.h. der Unterbau ist 8cm kürzer im Gegensatz zu meinem ersten Entwurf.
 
Die Maße klingen gut. Mir gefällt die kompakte Bauweise. Auch wenn ich dieses Jahr erst mal mein Chassis fertig baue, plane ich schon an der nächsten Version mit beweglichem Chassis.
Ich habe hier noch eine anderen interessante Idee gefunden (http://valify.se/). Sieht zwar etwas ungewöhnlich aus, letztlich erkenne ich zu deinem gewisse Gemeinsamkeiten, die ich übernehmen werde.

Beide Entwürfe haben die Motoren und die Elektornik im hinteren Bereich. Vorne sind nur noch Stützräder. Der Mähmotor hängt in eine Art Mittelgang. Ohne Haube finde ich deinen Entwurf nicht gelungen. Die Messer sind nicht abgedeckt. Das ist für mich ein absolutes KO kriterium. Mit der Haube sieht die Welt aber ganz anders aus. Da kann jeder nach seinem Gusto und Möglichkeiten gestalten. Wenn die Haube bis unter die Messer geht, ist das eine sichere Lösung, die auch bei kommerziellen zu finden ist.

Bei den kommerziellen mit beweglicher Haube ist es meist über einen Hall-Sensor gelöst. Beim Automower z.B. ist der vordere Pin eine Art Joystick. die Aufhänging kann sich in X und Y frei bewegen. Der ist beweglich auf dem Chassis aufgelegt und ragt über einen kleinen Ausleger ins Gehäuse rein. Unten sitzt ein Magnet, am Chassis selbst mehrere Hall Sensoren. Bewegt sich das Chassis, bewegt sich der Magnet im Gehäuse in die entgegengesetzte Richtung. Die Abweichung kann man messen und über einen Schwellwert den Bumper auslösen.

Wenn ich mir die Bilder so anschaue, könntest du den Mähmotor noch einige Zentimeter nach hinten, weg von den Spulen verlagern.
 
Wenn ich mir die Bilder so anschaue, könntest du den Mähmotor noch einige Zentimeter nach hinten, weg von den Spulen verlagern.

Ich habe die Messer extra so weit vorne. Im Garten habe ich eine ca 2-4cm hohe Geoboarder, die den Rasen vom Beet trennt. Mit dem Originalchassis konnte ich einfach auf diese Boarder rauffahren da die großen Räder vorne sind. Das geht nun nicht mehr. Daher versuche ich das Messer so dicht wie möglich nach vorne zu bringen.

Das Chassis von valify.se sieht auch sehr interessant aus. Hier ein Industrieprodukt das so ähnlich aussieht. https://www.ambrogiorobot.com/de/modelle/view/4.0-elite
Das Problem ist, das Gehäuse vernünftig und stabil zu Formen. Das ist als Privatperson eine ziemliche Herausforderung da die technischen Mittel doch sehr begrenzt sind.
 
So, bin nun auch etwas weitergekommen. Habe mich entschieden, die Sonarsenoren doch zu verbauen. Wäre zu schade, diese nicht zu nutzen. Als Bumper für das Chassis habe nun einen Hallsenor verwendet. Diesen in Heißkleber eingeschlossen und auf das das vordere Chassis geklebt. Leider musste ich die Verkleidung vorne aufschneiden, um die Halterung richtig anzubringen und den Magneten zu justieren. Jetzt muss ich noch die paar Löcher verkleiden und Gehäuse ist fertig. Kann dann weiter meine Software optimieren. Mal sehen, wann es das erste mal raus geht. Vermutlich Anfang April.

DSC_0495.JPG

DSC_0496.JPG

DSC_0497_2018-03-03.JPG

DSC_0498.JPG

DSC_0499_2018-03-03.JPG

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2936/DSC_0496.JPG/
 
Zuletzt bearbeitet von einem Moderator:
Respekt!

Das sieht nach richtig viel Arbeit aus.
Und zusätzlich ist auf Github noch eine eigene Software.
Wie funktioniert bei dieser die Kommunikation? Nur über die vielen Befehle über den Serialport?

Gk
 
Für die Kommunikation untertütze ich aktuell den Programming Port zum PC oder Bluetooth.
Auf meinem Android Handy habe ich Arduino Central installiert. Hier kann man dann die Befehle direkt eingeben oder Buttons konfigurieren.
Auf dem PC verwende ich ein Terminalprogram für debugging und SerialPlot um Perimeterdaten anzusehen oder den Geschwindigkeitsregler zu tunen.
Die Software schaltet automatisch die Ausgabe auf den Kanal um, von dem sie Daten empfängt.

Ich habe dieses Userinterface gewählt, da es relative einfach zu erweiteren und abzuändern ist. Ich muss da dann auch keine zusätzlich Software schreiben und diese dann bei Änderungen pflegen.

Letztendlich benötigt man im Betrieb nur folgende Befehle:
A //automatic control over actuators => Beginnt Mähbetrieb innerhalb der Schleife
M //manual control over actuators => Automatischen Betrieb (Behaviourtree) ausgeschaltet. Sewrvices laufen
area,12 //drive 12m at perimeter and begin mowing => Mäher steht in Ladestation (aktuell durchfahrend) oder auf Perimeter
gohome //drive to docking station. Call again to deactivate => Wenn im Mähbetrieb beendet er das Mähen und fährt zur Ladestation

Im Fehlerfall stopt der Mäher, geht in Manual mode und es sind folgende Befehle notwendig
error //show errormessage => Es wird das Verhalten des Behaviourtrees mit 5000 Zeichen geloggt. So kann man im Fehlerfall sehen, welche Nodes durchlaufen wurden.
reset //reset error and motor faults

Alle anderen Befehle sind für das Debugging und Testen.

In der Config.h muss man die Roboterparameter ändern und ggf. die Services deaktivieren, die man nicht benötigt.
Ich habe z.B, einen Arduino Nano, der an UserSwitch beim PCB1.3 angeschlossen ist.
Hier müssen denn

#define CONF_DISABLE_RANGE_SERVICE true
#define CONF_DISABLE_BUMPERDUINO_SERVICE true

gesetzt werden, da nur ich diese verwende.

Der Mähmotor ist aktuell auch disabled mit:
#define CONF_DISABLE_MOW_MOTOR true // Disables the mow motor

Weiterhin verwende ich aktuell nur den Bumper Rechts. Wenn das geändert werden soll, muss in bumperSensor.cpp diBumperL==LOW/HIGH einkommentiert werden.

Die Software beruht aktuell darauf, dass die Antriebsräder hinten sind und zwei Spulen verwendet werden. Der Mower dreht direkt auf dem Draht und dreht dann einen Zufallswinkel (5° bis 80°) vom Draht weg. Das bedeutet, das Originalchassis müsste andersrum fahren als ursprünglich vorgesehen und die beiden Spulen müssten irgendwo in der Nähe vom Hinterrad angebracht werden.

Zur Zeit verfolge ich ein Minimalkonzept:
Sensorer: Bumper/Perimeter/Encoder/Motorstrom sowie Range/Bumperduino (auf eigenen Nano umgesetzt)
Fahrverhalten: Chaos

Falls jemand Interesse hat kann ich da gerne noch weitere Infos geben oder ihn unterstützen.
 
Aktuell habe ich meinen Code so verändert, dass ich direkt über dem Perimeter Draht drehe.
Da ich eine Ladestation habe, die ich durchfahre, kann es nun passieren, dass der Robbi in die Ladestation fährt und dann
in der Ladestation bounced. Das war bei meinem Nucleomower nicht das Problem, da ich vor dem Drehen immer zurückgefahren bin.
Daher teste ich gerade eine Undo Funktion. Ich speichere die letzten 10 Fahrtrichtungen in der History ab. Dann kann ich reverse History sagen und der Robbi
fährt den gefahrenen Weg rückwärts zurück. Ich hoffe mit dieser Undofunktion dann sauber aus der Ladestation herauszukommen.

RobbiBouncedInLadestation.JPG

https://youtu.be/CM-AdHBbvng Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2936/RobbiBouncedInLadestation.JPG/
 
Zuletzt bearbeitet von einem Moderator:
Hi.
Very smooth movement.
Did you test into grass ? (If you use Odometry the result is maybe different).
How did you manage the Accel,Brake and Odo (PID or other way?)
Thanks.
 
Hi Benrard,

until now, I didn't testet outside. Normaly I wanted to bring the robot outside eastern. But the weather is not good in North Germany.
For each wheel I have two services running.
First the closed loop service, which runs every 33ms and controlls the speed of a wheel. I uses here a PDFF controller. If kfr is 1 then this is a PI controler.
Second the position control service. Here I drive the wheel a distance in cm. This service runs ervery 100ms and uses the closed loop control service.
For the position control I uses a simple single axis trajectory planner from the linuxcnc project. https://github.com/LinuxCNC/linuxcnc/blob/master/src/emc/motion/simple_tp.c#start-of- All movements of the robot are done by using the position control.
Only the perimeter following routine ist using the closed loop control direct. Here I set the tuninig parameters of the PDFF controller not so agressive.
 
Hi Roland.
I use a different way for speed and position but last year i work a lot on it and the result was not the same on floor and on grass.

For a correct position
 
Habe gestern die ersten Tests durchgeführt. Da muss ich noch etwas nacharbeiten.

a) Es muss mehr Gewicht auf die Vorderräder. Der Maulwurf hat meinem Rasen ganz schön zugesetzt. Für diesen Fall scheint der Radabstand etwas zu gering zu sein.
b) Möglicherweise Geschwindigkeit etwas verringern - aber nur ungern.
c) Ladestation schaltet Perimetersignal bei öffnen des Laderelays nicht frei. Scheinbar zieht das PCB1.3 mehr Strom, so dass CHG_CURRENT_MIN im Sender angepasst werden muss.
d) Umbau der Ladestation
e) ggf. Rasen glätten
h) Software optimieren/erweitern
https://youtu.be/ZqPmPUiwdR8
https://youtu.be/Y3wxURV0qtw
 
Hi Roland.
I am always surprise when you put a video
The result is Perfect and the motor movement are very smooth.
Into the first video at 1'56 the mower is stuck and escape, How did you do that?
Congratulation.
 
Hi Bernard,

thanks for the appreciation.
The mower stucks while running backwards and then rotating. After rotating finished, it drives forward again and for my luck it drives forward. Unfortunately no magic.
My lawn is too uneven in this area because the mole digged a lot of tunnels in the earth.
 
Folgende Änderungen habe ich nun vorgenommen, damit der Robbi etwas ruhiger auf dem Rasen liegt:

a) Radstand um 5cm verlängert. Von der Seite sieht das nun auch etwas proportionaler aus.
b) 500g Gewicht auf die Vorderachse montiert. Später könnte ich die Batterie dann von Hinten nach Vorne verlagern.
c) Geschwindigkeit von 90% auf 85% verringert. Das ist nun die gleiche Geschwindigkeit, wie sie die original Ardumower Software verwendet. Ca. 1230m/s
d) Rasen vertikutiert. Hat aber nichts gebracht. Der Rasen ist immer noch so uneben.

Hiermit kann ich erstmal gut testen und ggf. später noch optimieren. Aber erstmal muss der Rasen wieder wachsen. Ich mähe ja ca. 7cm hoch. Daher habe ich eine doppelte Ladung Dünger rauf gebracht :woohoo:

https://www.youtube.com/watch?v=-70TcnB3yb8
 
Habe noch etwas Statistik in den Robbi programmiert.
Nachdem er heute gelaufen ist, habe ich folgende Werte erhalten:

Mähzeit: 113min
Gefahrener Weg incl Drehungen: 1763m
Anzahl Rotationen: 250

Gibt es ähnliche Werte in der Azurit Software zum vergleichen. Wie lange ist bei euch die Mähzeit?
 
Nach 2 Wochen Test ein kleiner Zwischenbericht:

Der Mower hat bisher 32h gemäht und ist 31km gefahren. Dabei hat er 4427 Rotationen durchgeführt.

Wenn ich den Robbi morgens bei feuchtem Gras habe laufen lassen, gab es immer Probleme mit der Erkennung des Perimetersiganals. Die hinteren Motoren, die über 30cm von den Sensoren entfernt sind störten die Spulen. Bei trockenem Rasen habe ich das nicht bemerkt. Mein Nucleomower hatte nie das Problem obwohl da die Spulen nur 18cm von den Motoren entfernt waren. Habe die Motoren dann entstört, hat aber nichts gebracht. Die Motoren sind an Alu Winkeln befestigt, die Kontakt mit dem Rasen haben. Ggf. streut das Störungen in den Rasen die über die Feuchtigkeit weiter zu den Spulen getragen werden? Die haben sich im Nassen Gras befunden. Hat da jemand Erfahrung sammeln können?
Interessanterweise habe ich den Robbi auf den Tisch gestellt und der Fehler war immer noch vorhanden. Erst als die Sonne ca. 1h den Robbi trocknete, wurde der Fehler geringer.
Daher habe ich die Spulen nun höher gesetzt, so dass diese nicht mehr mit dem nassen Gras in Berührung kommen und die Perimetererkennung etwas toleranter programmiert. Nun funktioniert es. Aber immer noch nicht so zufriedenstellend wie mein bisheriger Nucleomower. Vorher hatte ich 24Ohm Widerstand in der Schleife, nun muss ich einen 12Ohm Widerstand verwenden.

Es kommt hinzu, dass die Spulen nun etwas dichter an den Mähmotor gekommen sind. Ich habe festgestellt, das bei einer PWM von 20khz die Störungen erheblich runtergehen. Meine verwendete 1H Spule ist scheinbar zu träge für diese Frequenz.

Als weitere Maßnahme werde ich nun noch die Verstärker direkt an die Spule löten und nicht mehr mit RG174 Kabel arbeiten.
Wenn ich das Chassis fertig habe, werde ich vermutlich meinen alten Erkennungs-Algorithmus wiederverwenden. Der ist dem aktuellen scheinbar überlegen.

Weiterhin habe ich nun provisorisch einen Bodenschutz angebaut um zu verhindern, das das Gras an die Spulen geschleudert wird.

DSC_0516.JPG

DSC_0519.JPG

DSC_0518.JPG

DSC_0512.JPG

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2936/DSC_0516.JPG/
 
Zuletzt bearbeitet von einem Moderator:
Oben