Alles auf Anfang

hraaig

New member
Hallo zusammen,


Ich habe mir den Ardumower vor etwa nem Jahr zugelegt.
Leider hatte er bislang mehr gegraben als gemäht (Weder Ultraschallsensoren noch die Perimeterschleife haben funktioniert)
Von daher hoffe ich auf eure Hilfe, dass der Mäher bis ende des Jahres wenigstens einen Grashalm schneidet, ohne von der Mauer zu fallen oder an einem Baum hängen bleibt.

Also alles auf Anfang :)
Auf den Arduino Due habe ich die Azurit 1.0a9 geladen, vorher in der Mower.h / Mower.cpp alle xxxUSE auf 0 (außer odometryUse und buttonUse) gesetzt und auch nur Batterie sowie die beiden Antriebsmotoren angeschlossen.
-edit-
bluetoothUSE musste ich auf 1 setzen, da wenn ich das auf 0 setze, bleibt die Console hängen und reagiert nicht mehr.

In der Anleitung steht auf http://wiki.ardumower.de/index.php?title=Azurit_Firmware_(Deutsch)#Erster_Testlauf der Satz

"Falls der Roboter für mindestens eine Minute nicht im Zustand 'FORW' verbleibt, löst höchstwahrscheinlich ein Sensor aus und die Einstellungen für diesen Sensor (Empfindlichkeit) müssen korrigiert werden."

Ich lass meinen Mower also laufen und jedesmal in Zeile(?) 79 springt er vom Status FORW in REV, dann ROLL dann wieder in FORW.
Ist das so gewünscht?

t 76 L21167 m1 FORW rpm 24 24 set 25 25 sen 3 4 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc100 Ardumower
t 77 L21166 m1 FORW rpm 24 24 set 25 25 sen 3 3 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc100 Ardumower
t 78 L21168 m1 FORW rpm 24 24 set 25 25 sen 4 3 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc100 Ardumower
t 79 L21168 m1 FORW rpm 24 24 set 25 25 sen 3 4 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc100 Ardumower
t 0 L21167 m1 REV rpm 24 24 set -20 -20 sen 3 4 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc 7 Ardumower
t 0 L21167 m1 REV rpm 0 0 set -20 -20 sen 1 1 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc 90 Ardumower
t 1 L23844 m1 REV rpm 0 0 set -20 -20 sen 0 0 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc100 Ardumower
t 2 L26389 m1 REV rpm 0 0 set -20 -20 sen 0 0 0 bum 0 0 dro 0 0 son 0 0 0 yaw 0 pit 0 rol 0 bat 28.5 chg 0.1 0.0 imu 0 adc100 Ardumower


wenn ja, scheint zumindest die Grundfunktion gegeben zu sein.
Als nächsten Schritt würde ich dann gerne entweder die Perimeterschleife oder die Ultraschallsensoren testen.
Was schlagt ihr vor und wie soll ich vorgehen?

Danke

Gruß
Carsten
 
hi,
zum Thema Ultraschallsensor musst du in de mover cpp die punkte abändern :

sonarTriggerBelow = 20;
sonarSlowBelow = 4;

da scheint in der Grundeinstellung ein Zahlendreher drin zu sein.

Perimeter ist ein ding für sich da arbeite ich jetzt auch noch drann :)

vg
thorsten
 
Hi Thorsten,

Da ich anfänger bin, lass ich mich gerne belehren, aber in der robot.cpp steht doch in


Code:
void Robot::checkSonar()"{
...
 if (sonarDistCenter < 11 || sonarDistCenter > 100) sonarDistCenter = NO_ECHO; // Objekt ist zu nah am Sensor Wert ist unbrauchbar
...


somit wäre deine sonarSlowBelow = 4 falsch oder? alle Werte unter 11 und über 100 werden doch ignoriert.

weiterhin verstehe ich den Code so, dass z.B. bei sonarSlowBelow = 30 und sonarTriggerBelow = 20 der Ardumower bei 30cm abstand zum Hindernis mit halber Geschwindigkeit weiter im STATE_FORW bleibt, und unter 20cm Abstand zum Hindernis die Richtung ändert. Demnach muss sonarTriggerBelow immer kleiner sein als sonarSlowBelow.

Aber wie gesagt, wenn ich falsch liege, bitte korrigieren :)

Das mit dem
Ich lass meinen Mower also laufen und jedesmal in Zeile(?) 79 springt er vom Status FORW in REV, dann ROLL dann wieder in FORW.
Ist das so gewünscht?
ist iO ?
 
Hi,

ich muss mich noch genauso reinfuchsen :)

da ich das Projekt im winter begonnen hatte habe ich Sonar als erstes in betrieb genommen und nur Probleme damit gehabt...
Durch einen Zufall hatte ich die werte dann vertauscht und siehe da es funktioniert.

du kannst ja Sonar in inbetriebnehmen und schauen ob es funktioniert.... wenn nicht tausche die werte und Versuchs erneut...

Lass mich auf jeden Fall dein ergebniss wissen :)

VG
Thorsten
 
Hi, also bei den Trockenübungen hat alles soweit funktioniert.
Der Vollständigkeit halber vorweg:

Code:
sonarUse                   = 1;          // use ultra sonic sensor? (WARNING: robot will slow down, if enabled but not connected!)
sonarLeftUse               = 0;
sonarRightUse              = 0;
sonarCenterUse             = 1;
sonarTriggerBelow          = 12;       // ultrasonic sensor trigger distance (0=off)
sonarSlowBelow             = 16;


Mower aufgebockt, sonarCenter nebendran mit Maßband un ner Kiste als Hindernis.
Mit dem Seriellen Monitor gehe ich mit v so lange durch die Anzeige, bis die mir die Sensor Values angezeigt werden.
Kiste steht bei 20 cm -> Mower fährt vorwärts,
Kiste steht bei 15 cm -> Mower wird nach kurzer Zeit kurz langsamer, geht aber nach kurzer Zeit wieder in "volle Fahrt" über.
Kiste steht bei 11 und 12 cm -> Mower fährt kurz rückwärts, dreht und beginnt wieder mit Vorwärtsbewegung.
Kiste steht unter 11 cm -> Mower fährt mit voller Geschwindigkeit weiter vorwärts.

das Beschriebene Verhalten bestätigt meine Aussage vom vorherigen Post.
Warum der Mower aber bei 15 cm plötzlich wieder schneller wird, verstehe ich noch nicht. Hast du eine Idee? Blick durch den Code noch nicht durch, auch weil C++ nicht wirklich meine stärke ist :)

Morgen schließe ich noch Sonar links und rechts an und teste auf gleiche Weise erst einzeln, dann mit den 3 Sensoren.
Was ich aber aus dem Versuch bis jetzt schließe, im realen Betrieb muss sonarSlowBelow so nah an sonarTriggerBelow gesetzt werden, dass er nicht wieder volle fahrt aufnimmt, und damit das Hindernis unter 11 cm Entfernung kommt, jedoch weit genug, dass er die kurze Gedenkzeit einhält um langsamer zu werden.

Beim schreiben kam mir folgender Gedanke:
Ich werd auch mal testen, was passiert, wenn sonarSlowBelow unter sonarTriggerBelow gesetzt ist.
Das könnte es auch bei dir sein... der Mower wird nicht erst langsamer, sondern dreht direkt.
könnte im realen Betrieb also auch gut funktionieren.. aber warum wurde dann sonarSlowBelow mit reinprogrammiert?!

Gruß
Carsten
 
Hi,

ok, dann werde ich sobald ich die imu am laufen habe mich nochmal mit Sonar beschäftigen,
Da das Gras momentan sehr hoch ist teste ich grade ohne Sonar da die perimeterschleife wichtiger ist ;)
aber leider auch sehr komplex....

vg
Thorsten
 
hi,

da jetzt alles läuft bis Sonar und GPS, konnte ich dein Problem reproduzieren, hast du den Fehler gefunden ? zur zeit reagiert mein mower gar nicht mehr auf Sonar...


vg
Thorsten
 
Oben