nur langsame Geschwindigkeit bei Aktivierung von Sonar

spranz

Active member
Ich habe das Problem, dass mein Mower nur noch mit einer sehr langsamen Geschwindigkeit fährt sobald ich in der App das Mähen mit Sonar aktiviere.
Ich hatte mal einen Kurzschluss auf dem PCB 1.4.
Ich habe heute um alles Auszuschließen einen neuen M4 verbaut, sowie die neuste Sunray aufgespielt.
In der Konsole funktioniert der Sensortest tadellos.
Trotzdem bleibt mein Problem. Ich kann bei aktiviertem Sonar die Geschwindigkeit generell nicht über den Schieber regeln.
Wenn ich das sonar in der app deaktiviere beschleunigt er sofort wieder.

Wenn ich bei aktiviertem Sonar einen Sensor auslöse, umfährt er korrekt das Hindernis und in der Statistik taucht der Trigger auch auf.

Hier ein Auzug aus meinem Code:

#define SONAR_ENABLE true
//#define SONAR_ENABLE false
#define SONAR_TRIGGER_OBSTACLES true // should sonar be used to trigger obstacles? if not, mower will only slow down
#define SONAR_LEFT_OBSTACLE_CM 20 // stop mowing operation below this distance (cm)
#define SONAR_CENTER_OBSTACLE_CM 20 // stop mowing operation below this distance (cm)
#define SONAR_RIGHT_OBSTACLE_CM 20 // stop mowing operation below this distance (cm)

Habe heute mein IMU auch mal zum Test ausgebaut, daran lag es aber auch nicht. Hat noch jemand eine Idee oder hat ähnliches Verhalten?
 
Ich hatte mal das Phänomen das ein Sonarsensor defekt war.
In der Konsole wurde alles richtig angezeigt und hat funktioniert.
Auf dem Rasen gab es ein ständiges Beschleunigen und Abbremsen (Bumper löst bei mir die Hindernissumfahrung aus) . Sonarsensor im Ausschlussverfahren getauscht und das Problem war erledigt.
Hatte ich dir aber auch schon mal geschrieben ...
Und wenn du mit Bumper fährst solltest du fogendes auf "false" setzen:
#define SONAR_TRIGGER_OBSTACLES true

Auch schon geschrieben ...
Vielleicht mal in der sonar.ccp die Auslöseimpulse etwas hochsetzen, vlt. mal auf 12 oder 15:

RunningMedian< unsigned int , 9 > sonarLeftMeasurements;
RunningMedian< unsigned int , 9 > sonarRightMeasurements;
RunningMedian< unsigned int , 9 > sonarCenterMeasurements;

Ansonsten mal probieren mit nur einem Sensor zu fahren und zu schauen was passiert. Dann mal den Sensor wechseln ... wieder schauen ...
 
hallo, danke nochmal für die Tipps ;-)
Ich habe zwecks der besseren Übersicht ein neues Thema gestartet. Im Moment fließen viele Probleme in nur einen Thread. Was es später für andere User unübersichtlich macht.

Ich habe alles getestet, leider ohne Besserung. In der sonar.ccp habe ich die Werte von 9 (Standard) auf 4 und einmal auf 20 genommen. Alles ohne eine Verbesserung festzustellen.

Die Sensoren habe ich auch schon mehrfach getauscht. Habe 5 neue bestellt. -Aber sie scheinen laut Konsole ja auch korrekt zu funktionieren. Auch beim Mähen lösen sie den Trigger aus, und der Mäher umfährt daraufhin das Hindernis.

Gibt es sonst noch irgendwelche "Optionen" die so ein Phänomen hervorrufen können? (Linear Speedramp, GPS motion detection, GPS Speed detection, etc..?)
Bei machen "Optionen" im Sunray weiß ich ehrlich gesagt nicht was es genau für Auswirkungen hat, bzw. ob ich es benötige.

Ich wollte eigentlich gern mit Sonar als Triggersensor fahren, da bei mir der Robi sporadisch beim Auslösen des Bumpers mit dem Heck hängen bleibt.
Durch das Sonar könnte ich den Trigger schon früher auslösen und die Drehung einleiten.
 
ja, es gibt noch die Option GPS_MOTION_DETECTION, die eine Hindernisumfahrung auslöst, einstellbar in der config.h Allerdings löst GPS_MOTION_DETECTION keine Schleichfahrt aus.
FLOAT löst noch Schleichfahrt aus und vor den Perimeterpunkten wird der Mover langsamer, das wars eigentlich.

Was sagt denn der Sonar Trigger in der App unter Statisik?
Wenn du in der sonar.ccp den Wert auf 20 erhöht hast und trotzdem noch ausgelöst wird ist das schon komisch, bei 20 dauert es ziemlich lange bis zum triggern.

Dann sollte man wohl doch mal ein Multimeter in die Hand nehmen und auf dem PCB nachmessen.
Was ist wenn keiner der Sonarsensoren steckt? Wie verhält sich der Mover dann?
 
Das Merkwürdige ist ja, dass bei der langsamen Fahrt der Trigger in der Statistik nicht ausgelöst wird. Wenn ich die Hand vor den Sensor halte, löst der Trigger korrekt aus, der Zähler zählt einen hoch und der Robi umfährt das Hindernis.
GPS hat permanent fix und es ist kein Ende eines Waypoints.

Die Signale scheinen also alle korrekt anzukommen, deshalb kann ich mir nicht vorstellen, dass noch etwas an dem PCB defekt ist.
Der M4 ist gewechselt, und die 6 Spannungswandler sind auch schon neu und durchgemessen.
Und wie gesagt, der Trigger kommt ja korrekt an.

Deshalb dachte ich mir es kann eigentlich nur noch an der Software liegen...

Ich werde mal wie du geschrieben hast testen was passiert, wenn alle drei Sensoren abgezogen sind...
 
So, ich habe gerade nochmal etwas getestet...
Habe den Bumper deaktiviert, nicht das man nicht sonar und Bumper parallel fahren darf. (hat leider nicht geholfen)

Ohne Sensoren Fahrt der Mover mit normaler Geschwindigkeit bei aktiviertem Sonar. Sobald ich einen Sensor aufs Board stecke fährt er wieder langsam.

Hab auch nochmal alle drei Sensoren in der Konsole getestet...:

sonar (enabled,left,center,right,triggered): 1 3 70 70 1
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 6 70 1
sonar (enabled,left,center,right,triggered): 1 70 5 70 1
sonar (enabled,left,center,right,triggered): 1 70 24 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 11 1
sonar (enabled,left,center,right,triggered): 1 70 70 2 1
sonar (enabled,left,center,right,triggered): 1 70 70 3 1
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0
sonar (enabled,left,center,right,triggered): 1 70 70 70 0

Das ist doch so auch korrekt denke ich.

Wo ist denn die Geschwindigkeit für den Sonartrigger in Sunray zu finden, ich würde die ja gern mal erhöhen, um zu schauen, ob es daran liegt.
Oder hat noch jemand eine Idee was ich falsch mache? -Ich steh echt auf dem Schlauch...will mir jetzt auch nicht extra ein neues PCB bestellen wenn der Fehler vielleicht doch woanders liegt.
 
Das Log in der Konsole sieht gut aus, genau so soll es sein.
Mich bitte nicht falsch verstehen ... Trigger und Echo auch nicht vertauscht?
Kommen 5V an?

Ansonsten ist das alles schon sehr merkwürdig.
An der Software liegt es definitiv nicht sonst hätte ja viele das Problem.
 
Ich habe nochmal alles überprüft.
Trigger und Echo sind laut Platine korrekt verkabelt. 5V liegen auch korrekt an.
Da ich die HC-SR04 Module bei Amazon bestellt hatte, habe ich mal testweise Echo und Trigger gedreht. (nicht das die Chinesen da was verdreht haben)
Jetzt ist zwar die Geschwindigkeit normal, aber es wird natürlich kein Trigger mehr ausgelöst...

Oh man....Es kann doch eigentlich nicht das Main PCB sein... 😩
 
Ich habe versucht aus dem code herauszufinden, wo die Geschwindigkeit beim Auslösen des Sonars herabgesetzt wird.
-Leider konnte ich die Stelle nicht finden....-kann mir da jemand auf die Sprünge helfen?:unsure:

Da die Hindernisumfahrung mittels sonar ja zu funktionieren scheint. Würde ich ihn einfach nicht die Geschwindigkeit reduzieren lassen. Vielleicht kann ich damit ja dann schon leben...
 
So, ich habe es nun doch noch gefunden...in der Robot.cpp

if (sonar.nearObstacle()) linear = 0.1; // slow down near obstacles

die Bedingung habe ich nun auskommentiert. Jetzt drosselt er nicht mehr die Geschwindigkeit, bei Sonar Trigger löst er trotzdem das Hindernisumfahren aus.
Sehr sehr merkwürdig...aber so kann ich damit erstmal leben.

Ich kann mir nicht vorstellen, dass mein Problem nach dem PCB Wechsel behoben sein könnte.
Höchstens, dass es irgendwie doch an den Sensoren liegt. -Vielleicht bestell ich mir nochml drei neue direkt bei Markus...
 
Also bei mir trifft das Sonar am Schreibtisch nach ca 35-40cm auf den "Boden" und misst meine Tastatur an.
Nur bei einer glatten Grundfläche prallt der Ultraschall ab und sucht ein entfernteres Ziel.

Wenn ich mir jetzt statt meiner Tastatur Gras (oder sogar Löwenzahn) denke
dann kann das Sonar eigentlich auch unter Normalbedingungen dauernd nearObstacle()
(das ist in Sunray auf 30cm eingestellt: https://github.com/Ardumower/Sunray/blob/master/sunray/sonar.cpp#L170) auslösen.

Wenn das Gras etwas höher ist oder ein Löwenzahn steht löst es bei mir sogar unter 10cm aus, daher muss ich es meistens abschalten, ausser das Gras ist schon sehr kurz.

Abhilfe: Ev. eine Blende, die das Sonar nach unten abschirmt. Das kann man mit einem Briefkuvert oder Lineal unter den Sonarsensoren ausprobieren. Oder die Sensoren etwas nach oben richten.

Q. What distance above the floor should the sonar be mounted?
A. If you can mount the SRF04/8 12in/300mm above the floor, that should be OK. If you mount them lower, you may need to point them upwards slightly to avoid reflections from the carpet pile or ridges in a concrete floor.
 
Zuletzt bearbeitet:
Bei mir wird der Trigger ja korrekt erkannt, nur sunray verarbeitet es irgendwie nicht korrekt.
Ich habe übrigens am Wochenende die neuste Version aufgespielt, trotzdem mit dem selben Fehlerbild.
Nach der Saison werde ich mal die neuen Sensoren von Markus einbauen.-Mal schauen ob es tatsächlich daran lag.
Wobei es von der Logik auch nicht sein kann...
 
Vielleicht sollte man einen elipsenartigen Aufbau auf die Ultraschallsensoren setzen, damit der Abstrahlwinkel vorgegeben ist.
 
Bei mir wird der Trigger ja korrekt erkannt, nur sunray verarbeitet es irgendwie nicht korrekt.
Du kannst mal in der sonar.cpp folgende Werte auf 6 oder sogar auf 3 setzen:
Code:
RunningMedian< unsigned  int , 9 > sonarLeftMeasurements;
RunningMedian< unsigned  int , 9 > sonarRightMeasurements;
RunningMedian< unsigned  int , 9 > sonarCenterMeasurements;
 
Vielleicht sollte man einen elipsenartigen Aufbau auf die Ultraschallsensoren setzen, damit der Abstrahlwinkel vorgegeben ist.
Ich glaube man sollte einen rechteckigen Balken/Lineal mit 2-3cm Breite unter die Sensoren montieren. Dadurch wird der Singalkegel nach oben abgelenkt und trifft nicht vorzeitig auf den Boden. Die Sensoren sind etwas zu tief angebracht.
 
Bei mir wird der Trigger ja korrekt erkannt, nur sunray verarbeitet es irgendwie nicht korrekt.
Ich habe übrigens am Wochenende die neuste Version aufgespielt, trotzdem mit dem selben Fehlerbild.
Nach der Saison werde ich mal die neuen Sensoren von Markus einbauen.-Mal schauen ob es tatsächlich daran lag.
Wobei es von der Logik auch nicht sein kann...
Es gibt 2 Trigger: einen bei 30cm, den du auskommentiert hast und einen in config.h mit default 10 cm.
Setze doch einmal nearZone = 15; und probiere das?
und versuche die Sensoren möglichst stark gegen den Himmel zu richten, nicht nach unten. 10-20° würden helfen.
 
Zuletzt bearbeitet:
Ich glaube man sollte einen rechteckigen Balken/Lineal mit 2-3cm Breite unter die Sensoren montieren. Dadurch wird der Singalkegel nach oben abgelenkt und trifft nicht vorzeitig auf den Boden. Die Sensoren sind etwas zu tief angebracht.
Habe heute auch schon darüber nachgedacht, ob die Sensoren nicht zu weit unten sitzen, eventuell leitet der Dibound Dekel das Signal auch noch nach unten. Beim Worx sitzen die ganz oben. Beim Automower auch oben.
 
Haben die nicht nur einen Abstrahlwinkel von 15 Grad? Da sollte das Gehäuse keinen Einfluss auf das Signal haben.
Ich vermute eher Störungen auf dem Bus oder EMV-Störungen. Bei mir ist im Stillstand alles gut, wenn ich fahre, löst der Trigger aus.
 
Also, ich habe heute noch etwas getestet, den "runningmedian" habe ich testweise auf 3 gesetzt, keine Besserung.
Den "nearZone" in der sonar.cpp habe ich von original 30 einmal auf 40 und einmal auf 15 genommen. Auch hier keine Veränderung des Verhaltens.
Sobald ich das Sonar in der App aktiviere, fährt der mower nur noch langsam.

Ich überlege einen neuen Halter zu drucken. Sowas wie hier nur leicht abgeändert mit drei Sensormodulen. Dann wäre man auch etwas weiter vom Dibond Deckel entfernt.

https://www.thingiverse.com/thing:3225014
 
Oben