Sheep Sheep

Hallo Zusammen,

ich benutze nicht mehr den "nested"- ISR_NOBLOCK Interrupt... macht zuviel Probleme, denke da müsste man die timeMicros wohl Auswerten um eine konstante Geschwindigkeit auf einem PID regler zu bekommen?
Die Steps können ja beim "nested"- ISR_NOBLOCK verzögert und dann gehäuft auftauchen was einen PID Regler dann schnell ins Schlingern bringen kann.
Oder hab ich da einen Denkfehler?
timeMicros wahr wohl mal dafür gedacht?

"nested"- ISR_NOBLOCK ist eigentlich eine gute Idee, aber einfacher ist wohl die ISR auf ein minimum zu beschränken. und dann "realtime" laufen zu lassen.

Aktuell läuft dieser code auf Sheep Sheep ohne Probleme.

Gruess

Chris
 
Chris schrieb:
Die dunkle Jahreszeit kommt... nicht für Sheep Sheep :cheer:

Wow, das muss taghell sein!
Habe mir heute ein paar W5W Standlichter mit COB LED's bestellt, ursprünglich wollte ich meinen FPV Racer mit den LED's ausstatten.
LED-Strips habe ich am Mower wieder entfernt, geklebt war hier nicht beständig...
Schön sah dass nachts schon aus xD

Idee meinerseits dazu... LED's mit WS28xx Chip verwenden um div. Zustände anzuzeigen
(Messer läuft, nächste Richtungsänderung, Spannungen, Debugging, Scheinwerfer) Leider braucht man hierfür einen (*)SPI ...
 
Zuletzt bearbeitet von einem Moderator:
Ein Hallo and die Schäfergemeinde.

Es gibt Neuigkeiten vom SheepSheep.
Anfang Saison hatte mein Schaf erste Alterserscheinungen. Zuerst hatte das Ladereleais Kontaktprobleme (die Kontakte hatten geschlossen 1-2 Ohm Widerstand), ein neues Relais und Kontaktspray haben geholfen.
Danach ging es weiter mit hohen Werten in der Leistung aller Motoren. Auch hier waren wieder Kontaktprobleme die Ursache. Diesmal die Stiftkontakte zum Arduino. Wiederum hat eine neue Sockelverlängerung und Kontaktspray Wunder geholfen.
Zuletzt gabs dann Probleme mit der RTC. Datum und Zeit gehen immer wieder verloren und neuerdings gibts die bekannten RTC DATA ERRO und RTC COMM ERROR.

Ein guter Grund mal die neueste Firmware zu testen. Davor war SheepSheep immer noch mit meiner abgeänderten Azurit 1.05a unterwegs.
Die aktuelle Firmware ist definitv um ein vielfaches besser geworden! Übersichtlicher und stabiler. Vielen Dank an die fleissigen Programmierer.
Ich hab das zum Anlass genommen noch etwas an der aktuellen Firmware weiter zu experimentieren und habe das im auf Github hochgeladen.

Falls jemand testen will: https://github.com/Holoratte/ardumower/tree/SheepSheep/code/ardumower . SheepSheep hat die letzten 2 Akkuladungen ohne Fehler bei 27rpm gearbeitet.

Die Nachfolgenden Themen handeln dann von den Anpassungen im code.

Gruess
Chris
 
RunningMedian fürs Sonar integriert in robot.h+cpp:
Sonar RunningMedian

image.png


dazu war dann noch die Ausgabe der loopsPerSec in der Pfod.cpp sehr hilfreich:
image-1.png


sobald aber die IMU zugeschaltet wird, fällt die loopsPerSec aber auf 30-50 zusammen. Was ist hier eigentlich der minimale Wert für einen zuverlässigen Betrieb?
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2380/image.png/
 
Zuletzt bearbeitet von einem Moderator:
Das RTC-Modul konnte ich aber mit dem Firmware'update nicht mehr wiederbeleben. Hat da jemand Erfahrung? Kann man die Batterie wechseln?
 
Ich bin leider kein Spezialist, aber im englischen Bereich hat der User alda in seinem Thread "Alex´s Ardumower" beschrieben wie er das Rtc Modul gefixt hat.
Vielleicht hilfts.

Die Batterie kann man auf jeden Fall tauschen.

Außerdem, danke für deinen Fork. Werde ich dieses Wochenende mal probieren.
 
Holoratte schrieb:
danach gabs das Spiral-update aus diesem Fork und diesem Thema im WikiWiki.

Ich lasse die Spirale abwechslungsweise links und rechts herum drehen.
Spiral
und Spiral rollDir


Hi, hab heute mal deine Version geflasht und wollte Spiralen mähen...
Hat bei mir leider nicht funktioniert.
Könntest du mal bisschen erläutern, wie du den Mode nutzt?
Hab mir den Code mal kurz angeschaut, bei Geradeausfahrt greift der Timer und er sollte Spiralen mähen.
Ich habe z.Zt keine Odometrie. Ist die notwendig?
Die RollDir konnte ich heute nicht im Fork finden.
Ich könnte mir vorstellen, Spiros als Pattern zu nutzen...
Gruß Stephan
 
Zuletzt bearbeitet von einem Moderator:
Hallo Stephan,
die Spirale wird nur gefahren wenn der Mähermotor viel Leistung braucht und im Branch SheepSheep. Einzustellen in der Pfod unter settings-motor Mow- motorMowPowerThreshold und in settings-motor- motorSpiralStartTimeMin die Wartezeit zwischen 2 Spiralen.settings-motor-MotorSpiralFactor kann zum tunen der Spirale genutzt werden. Der Link zu den rollDir - Änderungen funktioniert nicht, ist aber auch in meinem SheepSheep branch. Neuer link Spiral rolldir .
Ich fürchte aber das geht ohne ODO nicht.

Es gibt seit heute noch eine Neue Perimeter tracking Routine die bei mir super smooth läuft. Guckst Du hier und hier
Dafür braucht es keine ODO.

Grüess

Chris
 
Hallo Chris,
Ich habe gestern deine Änderungen im Code ausprobiert und deine Software aufgespielt. Das mit der Spiralfahrt geht wirklich gut.
Eine Frage noch zu den Einstellungen.
Bei den Einstellungen Spiralfaktor 1 - 40000 bedeutet kleiner Wert weitere Abstände in der Spirale und höheren Wert mehr Überlappungen?
Auch ein Schalter für generelle Aktivierung oder Deaktivierung der Spirale würde ich klasse finden.

Festgestellt habe ich auch, das bei eingeschaltetem IMU bei mir sich der Mower aufhängt und ich ihn nur durch komplett aus und wieder einschalten hin bekomme.

Hier im Video gut zu sehen.
[video width=425 height=344 type=youtube]0DF03zXBws0[/video]


Hier mit ausgeschaltetem IMU
[video width=425 height=344 type=youtube]tla6tv9JhjI[/video]

Auch der zufällige Richtungswechsel der Spirale funktioniert bestens.

Gruß Stephan
 
freut mich, daß der spiralfahrt Code gut läuft :) die Erweiterung mit der zweiten Spiralrichtung habe ich auch in meinen Fork übernommen, vielen Dank!

Da ich auch ein paar andere Sachen außer der Spiralfahrt angepasst habe, existiert jetzt ein Branch in dem gegenüber dem offiziellen 1.07 Azurit nur die Spiralfahrt dazugekommen ist:
https://github.com/ainagtur/ardumower/tree/Spiral

@helldriver

die Formel für die Spirale ist Innenradgeschwindigkeit = Maximalgeschwindigkeit * 1 / (1+d/(k*stateTime)). Eigentlich sind da zwei Konstanten: d für den Abstand zwischen den beiden Rädern und die Zeitkonstante k. Um es erstmal einfach zu halten und möglichst wenig neue Variablen zu machen habe ich beide Konstanten zu motorSpiralFactor zusammengefasst. Je größer dieser motorSpiralFactor ist, desto langsamer (flacher) ist der Geschwindigkeitszuwachs des innenrades.

Da dieser Geschwindigkeitszuwachs über die Zeit geregelt wird, ändert sich die Überlappung in Abhängigkeit von der eingestellten Maximalgeschwindigkeit: je langsamer die Maximalgeschwindigkeit, desto höher muss der motorSpiralFactor eingestellt werden um die gleiche Überlappung zu erreichen.

Ich hatte mit der Geschwindigkeit von 30 rpm und motorSpiralFactor 30000 ms ein schönes Spiralmuster, daher habe ich das als default Wert eingetragen.

Auf einen Schalter für generelle Aktivierung/Deaktivierung habe ich auch erstmal verzichtet um keine zusätzlichen Variablen zu haben. Zum testen kann man die Spiralfahrt ja ausschalten indem man motorSpiralStartTimeMin >= motorForwTimeMax setzt. Vor der finalen Implementierung (die hoffentlich irgendwann so weit sein wird, daß sie in den offiziellen Azurit aufgenommen werden kann) würde ich es als ein neues mowPattern definieren. Dann kann man es so gezielt ein oder ausschalten.

@stm Zu der Frage ob die Odometrie notwendig ist: eigentlich nicht, da der Geschweindigkeitszuwachs des Innenrades nur über die gefahrene Zeit geregelt wird. Man müsste jedoch den Code so weit anpassen, daß statt motorLeft(Right)SpeedRpmSet direkt setMotorPWM geregelt wird.
 
Hallo Stefan,

die Imu frisst viel CPU Zeit, ist mir auch aufgefallen. Zusammen mit der gesteigerten Sonar- Frequenz ist das zuviel für den Mega.
Schau Dir mal in der Pfod unter Plots- SensorCounter-LooPS an. Das das ist der LoopPerSec counter. Der gibt an wieviele durchläufe der Code pro Sekunde macht. Der fällt bei mir von 1000- 3000 auf unter 100 zusammen wenn die IMU rechnet. (Obwohl der Pfod Plot der LooPS wohl auch nicht förderlich ist. Wird nicht geplottet zeigt die USB-Schnitstelle wesentlich höhere Werte an. Noch nicht ganz verstanden...)
Den SpiralFactor hab ich noch nicht weiter verändert bei mir. Ich glaube aber der legt die Steilheit der Spirale fest. Den code habe ich aus diesem thread http://www.ardumower.de/index.php/de/forum/software/1231-archimedische-spirale-fahren von übernommen un die zufällige Drehrichtung Spiralfahrt hinzugefügt.
Läuft das jetzt ohne ODO?
Gruess

Chris
 
Vielen Dank für eure Infos.
@Chris,
wo hast du denn bei dir die Spule für den Perimeterempfänger montiert?
Bei mir sitzt der z.Z. unter dem Mäher in einem gedruckten Gehäuse fast unter der Mähscheibe.
Somit bekomme ich bei weitem nicht an dein ruhiges Abfahren der Schleife heran. Das pendelt zeitweise so stark das er die Schleife verliert und sich festfährt.
Gruß
Stephan
 
kurzer Nachtrag zur Frage ob für die Spiralfahrt Odometrie notwendig ist:
Es läuft auch ohne Odometrie, da bei ausgeschalteter Odometrie die RPM Parameter auf entsprechende PWM Werte umgerechnet werden.
 
Sheep Sheep hat noch eine Softwareänderung erhalten:
- Bumper high speed reaction
-Eine Verhaltensänderung bei festgeklemtem Bumper: falls der Bumper nach der Rückwärtsfahrt immer noch gedrückt ist, gibts einen "Robot stuck error". Somit fährt sie nicht mehr rückwärts ins Blumenbeet. Wichtig für den Familienfrieden.


Gruess
Chris
 
Ich hab am Wochenende mit der Software weiter Probiert, was bei mir nicht funktioniert ist der Odometrietest.
Wenn diesen im menü der Konsole auswähle fährt er nur vorwärts ohne irgendwelche Werte anzuzeigen ?
Funktioniert das bei dir ?
 
Oben