Azurit und IMU

Hallo,
kurze Frage zum IMU in der aktuellen Software.
Wenn ich unter IMU die Kurskorrektur aktiviere, dann verhält sich der Mäher seltsam.
Beispielvideos:
[video width=425 height=344 type=youtube]ZNAn47oAgIE[/video]
Normales Fahrprogramm - Mower trifft auf die Schleife und setzt zurück dreht und fährt weiter.

[video width=425 height=344 type=youtube]U5z5yiqjNys[/video]
Kurskorrektur an - Mäher kommt nicht mehr von der Schleife

[video width=425 height=344 type=youtube]QdVez6JluKc[/video]
Kurskorrektur aus Fahrprogramm Lane - Mäher kommt nicht mehr von der Schleife

Mache ich da was falsch? Oder wird dies in der Version z.Z. nicht funktionieren?

Gruß Stephan
 
Hallo Stephan,

ja das muss so sein, :( Die 180° Drehung am Perimeter ist nicht implementiert.


Du kannst Versuchsweise in robot.cpp setNextState die (stateNew == STATE_PERI_OUT_ROLL) Codezeilen abändern in



Code:
else if (stateNew == STATE_PERI_OUT_ROLL){
      imuDriveHeading = scalePI(imuDriveHeading + PI); // toggle heading 180 degree (IMU)
      if (imuRollDir == LEFT){
        imuRollHeading = scalePI(imuDriveHeading - PI/20);
        imuRollDir = RIGHT;
      } else {
        imuRollHeading = scalePI(imuDriveHeading + PI/20);
        imuRollDir = LEFT;
      }
    stateEndTime = millis() + random(perimeterOutRollTimeMin,perimeterOutRollTimeMax) + motorZeroSettleTime;
      if (dir == RIGHT){
    motorLeftSpeedRpmSet = motorSpeedMaxRpm/1.25;
    motorRightSpeedRpmSet = -motorLeftSpeedRpmSet;           
      } else {
    motorRightSpeedRpmSet = motorSpeedMaxRpm/1.25;
    motorLeftSpeedRpmSet = -motorRightSpeedRpmSet; 
      }


dann dreht er 180° an der Schleife. Hast aber noch immer ein Problem wenn der Mäher irgendwann seitlich an die Schleife kommt.
EDIT: Eventuell müsste mann den Mäher nicht 180° drehen lassen, sonder einen Zufallswinkel wählen. Dann sollte das doch eigentlich funktionieren? Oder nur wenn er nach x Sekunden schon wieder am Perimeter anschlägt eine Zufallsrichtung wählen?

Gruess

Chris
 
Hallo Chris,
danke für deine Antwort und Lösung.
Ich werde es bei Gelegenheit mal in den Code einbauen und dann hier berichten.
Gruß
Stephan
 
Falls möglich, arbeitet bitte mit Github wenn ihr Verbesserungen habt - dann können wir eure Änderungen automatisiert auf den aktuellen Github-Code anwenden.

1. Github herunterladen und installieren https://desktop.github.com/ 2. Github starten und Ardumower "clonen"
3. Nun führt ihr eure Änderungen durch und zum Schluss führt ihr ein "Pull request" durch.
4. Wir erhalten das Pull request und können es dann automatisiert anwenden.
 
Ich hatte heute etwas Zeit zum testen und lasse nun mein Schaf vom IMU gesteuert über der Rasen laufen.
Trifft es auf den Perimeter, wird ein zufälliger Winkel zwischen 90 und 180 Grad gwählt und weitergefahren.
An einem Hinderniss(Bumper oder Sonar) geht die fahrt nach wie vor 180 Grad entgegengesetzt weiter.

War ein wenig mehr Aufwand als ich gedacht hatte
Pullrequest ist gestartet.

Habe gleich noch die StatusLED wieder fit gemacht -> leuchtet wieder wenn das Schaf im Perimeter ist.
Zudem habe ich für die Fehlermeldungen eine neue Ausgabe eingerichtet: In der drivers.h kann nun ausgewählt werden auf welchem Seriellen port die Fehlermeldungen ausgegeben werden.


Gruess

Chris
 
Hallo Chris,
ich habe diene Version mal aufgespielt und die letzten Abende mal getestet.
Soweit läuft es auch gut. Also wenn der IMU steuert und er auf Perimeter trifft dreht er um und fährt nicht wieder direkt auf die Schleife.
Leider bekomme ich aber immer nach kurzer Zeit Odometriefehler. Mahl rechts mal links.
Wenn ich die Odometrie ausschalte, fährt er zwar ohne Störung aber leider nicht mehr halbwegs geradeaus.
Somit habe ich z.Z. IMU wieder aus und Odometrie an.
Gruß
Stephan
 
Hallo Stefan,

das Problem hatte ich auch. Musste die PID-Werte vom IMU massiv zurückschrauben ich glaub das war P=0.6 I=0.3 D= 0 oder 0.1
Dann gabs keine Odo-Fehler mehr.
Aber so ganz optimal ists auch nicht. Mein IMU hat viel zu viel Rausch. Müsste man wohl noch etwas filtern.

Gruess

Chris
 
Hallo Chris,

haben die Änderungen den Dauer-Test bestanden? Ist die Funktionalität nach wie vor optional abschaltbar (falls jemand keine IMU oder Odometrie oder beides nicht hat)? Würdest Du die Funktionalität für alle Benutzer empfehlen? Falls ja, würde ich Dir gerne Zugang zum Ardumower-Github verschaffen, so dass Du diesen Teil in den aktuellen Master-Zweig einpflegen kannst.

Gruss,
Alexander
 
Hallo Alexander,

Grundsätzlich funktionieren die Änderungen für mich gut mit den fälligen PID Optimerungen. Die Funktion wird wie gehabt im IMU-Menue zugeschaltet. Ohne Odo hab ich mein Schaf noch nie grasen lassen.
Ich würde die funktion gerne im Master einpflegen. Ist doch einen Bereicherung, auch wenn das nicht allzu viel bringt wenn die Odometrie korrekt funktioniert.

EDIT: Ohne Odo funktioniert die IMU kontrolle NICHT. Werde den Pullrequest mal beenden und bei Gelegenheit das noch versuchen einzubinden. Ohne Odo bringt der IMU dann wahrscheinlich auch einen echten Vorteil...

Gruess

Chris
 
Oben