Docking ohne Fix ?

kaido

Member
Hallo zusammen,

Nachdem ich meinen Mower endlich zum laufen bekommen habe kommt jetzt eine kleine Frage zum Docking:

An der Stelle wo die Dockingstation geplant ist, ist leider kein GPS fix möglich, 3m davor ist noch alles Okay.
Besteht die Möglichkeit ohne Fix zu docken oder ist es zwingen erforderlich. Bei meinen Versuchen fährt er zwar
ganz genau auf die Ladekontakte zu aber fängt ab dem letzten Meter an nach rechts oder links zu wandern.
Im Forum habe ich bisher noch keine richtige Antwort gefunden.

MfG
Kai
 
Hallo,
das Problem habe ich auch (Sunray 230). Ich baue eine Ladestation mit Rolltor und das Metallprofil des Rolltors scheint das GPS Signal auf den letzten 30-40 cm zu stören und der Mäher biegt undefiniert nach links oder rechts ab und er neigt zum Randalieren. Ohne Ladestation an dem Ort fährt er sauber geradeaus.

Der Wert aus der config.h "#define DOCK_IGNORE_GPS true" hilft nur beim Ausparken.

Ich prüfe jetzt am Start des letzten Dockingschenkels ob "fix" vorhanden ist. Falls nein, wiederhole ich den Dockingvorgang erneut (x mal). Falls Fix am Startpunkt vorhanden ist, dann fahre ich nur mit Odometrie (IMU), und ohne GPS in die Ladestation. Ohne "fix" am Startpunkt versuche ich es erst gar nicht. Das funktioniert jetzt ganz gut. Zusätzlich habe ich Führungsbretter verbaut, die den Mäher "sanft" ins Ziel bringen
IMG_7464.jpg

bool Map::nextDockPoint(bool sim){
if (shouldDock){
....
....

//START: HGS 15.6.22: letzte Strecke zum Dockingpoint ohne GPS nur mit IMU zurücklegen. Dafür muss es gerade in die Ladestation gehen
// 1------ <-- mit GPS
// 2
// | <-- ohne gps, nur IMU
// # | #
// # 3 #
if (DOCK_IN_IGNORE_GPS) { // nur wenn TRUE in config.h
if (!sim && (dockPointsIdx == dockPoints.numPoints-1)) {
useGPSfixForPosEstimation = !DOCK_IN_IGNORE_GPS; // in config.h setzen analog zu DOCK_IGNORE_GPS
useGPSfixForDeltaEstimation = !DOCK_IN_IGNORE_GPS;
CONSOLE.print("HGS: GPS solution: 0:invalid 1:float 2:fixed -->: ");
CONSOLE.println(gps.solution);
if (gps.solution != SOL_FIXED) {
dockCount--;
if (dockCount > 0) {
CONSOLE.println("HGS: Achtung kein 'fix' am letzten Dockingpfad!");
CONSOLE.print("HGS: Wiederhole Docking noch ");
CONSOLE.print(dockCount);
CONSOLE.println(" mal!");
dockPointsIdx=0; // starte nochmal den Docking Modus von vorne
return true;
} else {
CONSOLE.print("HGS: Kein 'fix' beim Docking --> Abbruch!!");
return false;
}
}
}
}
return true;
} else {
// finished docking
CONSOLE.println("HGS: Docking finished");
return false;
}
 
Hallo zusammen,

Nachdem ich meinen Mower endlich zum laufen bekommen habe kommt jetzt eine kleine Frage zum Docking:

An der Stelle wo die Dockingstation geplant ist, ist leider kein GPS fix möglich, 3m davor ist noch alles Okay.
Besteht die Möglichkeit ohne Fix zu docken oder ist es zwingen erforderlich. Bei meinen Versuchen fährt er zwar
ganz genau auf die Ladekontakte zu aber fängt ab dem letzten Meter an nach rechts oder links zu wandern.
Im Forum habe ich bisher noch keine richtige Antwort gefunden.

MfG
Kai
Hallo Kai,
in der config.h gibt es doch die Einstellung für Docking ohne Fix:

// ------ docking --------------------------------------
// is a docking station available?
#define DOCKING_STATION true // use this if docking station available and mower should dock automatically
//#define DOCKING_STATION false // mower will just stop after mowing instead of docking automatically

//#define DOCK_IGNORE_GPS false // use GPS fix in docking station and IMU for GPS float/invalid
#define DOCK_IGNORE_GPS true // ignore GPS fix in docking station and use IMU-only (use this if robot gets false GPS fixes in your docking station)

//#define DOCK_AUTO_START true // robot will automatically continue mowing after docked automatically
#define DOCK_AUTO_START false // robot will not automatically continue mowing after docked automatically

Hast Du diese Option richtig eingestellt?

Gruß Holger

Sorry, habe gerade gesehen, dass sich mein Beitrag mit dem von HGS überschnitten hat. Also wohl auch nicht die Lösung.
 
Die Räder haben zu viel grip, ich habe eine Kunstoffplatte drunter und seitliche Begrenzungen. Dadurch schiebt er sich rein wenn er mal schief kommt.
 
Hallo,
das Problem habe ich auch (Sunray 230). Ich baue eine Ladestation mit Rolltor und das Metallprofil des Rolltors scheint das GPS Signal auf den letzten 30-40 cm zu stören und der Mäher biegt undefiniert nach links oder rechts ab und er neigt zum Randalieren. Ohne Ladestation an dem Ort fährt er sauber geradeaus.

Der Wert aus der config.h "#define DOCK_IGNORE_GPS true" hilft nur beim Ausparken.

Ich prüfe jetzt am Start des letzten Dockingschenkels ob "fix" vorhanden ist. Falls nein, wiederhole ich den Dockingvorgang erneut (x mal). Falls Fix am Startpunkt vorhanden ist, dann fahre ich nur mit Odometrie (IMU), und ohne GPS in die Ladestation. Ohne "fix" am Startpunkt versuche ich es erst gar nicht. Das funktioniert jetzt ganz gut. Zusätzlich habe ich Führungsbretter verbaut, die den Mäher "sanft" ins Ziel bringen
Anhang anzeigen 4816

bool Map::nextDockPoint(bool sim){
if (shouldDock){
....
....

//START: HGS 15.6.22: letzte Strecke zum Dockingpoint ohne GPS nur mit IMU zurücklegen. Dafür muss es gerade in die Ladestation gehen
// 1------ <-- mit GPS
// 2
// | <-- ohne gps, nur IMU
// # | #
// # 3 #
if (DOCK_IN_IGNORE_GPS) { // nur wenn TRUE in config.h
if (!sim && (dockPointsIdx == dockPoints.numPoints-1)) {
useGPSfixForPosEstimation = !DOCK_IN_IGNORE_GPS; // in config.h setzen analog zu DOCK_IGNORE_GPS
useGPSfixForDeltaEstimation = !DOCK_IN_IGNORE_GPS;
CONSOLE.print("HGS: GPS solution: 0:invalid 1:float 2:fixed -->: ");
CONSOLE.println(gps.solution);
if (gps.solution != SOL_FIXED) {
dockCount--;
if (dockCount > 0) {
CONSOLE.println("HGS: Achtung kein 'fix' am letzten Dockingpfad!");
CONSOLE.print("HGS: Wiederhole Docking noch ");
CONSOLE.print(dockCount);
CONSOLE.println(" mal!");
dockPointsIdx=0; // starte nochmal den Docking Modus von vorne
return true;
} else {
CONSOLE.print("HGS: Kein 'fix' beim Docking --> Abbruch!!");
return false;
}
}
}
}
return true;
} else {
// finished docking
CONSOLE.println("HGS: Docking finished");
return false;
}
Hallo HGS,

Klingt interessant, klappt es einwandfrei ? Wenn ja, kann ich das so übernehmen und wo sollte es eingefügt werden ?

Danke
Kai
 
Hallo HGS,

wo genau in der mapp.cpp soll es denn rein? Wenn ich das snipped direkt unter if (shouldDock){ reinkopiere, bekomme ich Kompilierfehler.

Viele Grüße,
Jürgen
 
Hallo,
gilt nur für Sunrway 230:
1. in der config.h folgende Einträge machen:

#define DOCK_IN_IGNORE_GPS true //HGS für den letzten Schenkel beim Docking (nur mit Odometrie auf letzte Schenkel)
#define DOCK_MAX_COUNT 3 //HGS 3 Docking Versuche bei float Solution, wenn dann immer noch kein fix: halte an

2. die map.h, map.cpp aus dem map.zip nehmen

Gruß
hgs
 

Anhänge

  • map.zip
    14,6 KB · Aufrufe: 7
Nein,
ich bin noch auf Sunray 230. Im September habe ich wahrscheinlich Zeit mir das mal anzusehen. Ja, ich habe schon gemerkt da wurde einiges geändert (refactoring). Da muss ich erst mal suchen wie das jetzt funktioniert.
 
Oben