Entwicklung der Schleifen Sensoren (Signalstärkenauswertung)

Ich bin manchmal Entsetzt ob meiner Blödheit.
Habe 210k gefunden und verbaut.
Jetzt fährt er in die Schleife und folgt dem Draht.
Allerdings nur im ZickZack und sehr ruckartig.
Reagiert aber in den richtigen Richtungen. (wegen Deiner Vermutung zwecks vertauschter Seiten)
Nur das beide Antriebe laufen und die Spur durch Geschwindigkeitsanpassungen korrigieren läuft noch nicht.
Ich werde mal an ein paar Parametern "drehen", falls Du noch Tipps hast zum anpassen, immer her damit.
In 20 Min stell ich ein Video ein, dann kannst Du Dir ein besseres Bild vom verhalten machen.

PS Es sieht so aus, das er zum korrigieren die Motoren mit max. Speed ansteuert.
Übergeht er da die Config Einstellungen?
 
Sieht schon gar nicht so schlecht aus, nüchtern fährt er dann gerade. ;)
[video]http://www.youtube.com/watch?v=mbXdgJVWFoI&feature=youtu.be[/video]
 
naneona schrieb:
Ich bin manchmal Entsetzt ob meiner Blödheit.
Habe 210k gefunden und verbaut.
Jetzt fährt er in die Schleife und folgt dem Draht.
Allerdings nur im ZickZack und sehr ruckartig.
Reagiert aber in den richtigen Richtungen. (wegen Deiner Vermutung zwecks vertauschter Seiten)
Nur das beide Antriebe laufen und die Spur durch Geschwindigkeitsanpassungen korrigieren läuft noch nicht.
Ich werde mal an ein paar Parametern "drehen", falls Du noch Tipps hast zum anpassen, immer her damit.
In 20 Min stell ich ein Video ein, dann kannst Du Dir ein besseres Bild vom verhalten machen.

PS Es sieht so aus, das er zum korrigieren die Motoren mit max. Speed ansteuert.
Übergeht er da die Config Einstellungen?

Sehr gut! Also das mit dem Abfahren der Schleife (STATE_PERI_TRACK) funktioniert so:

Es wird ein Regler eingesetzt - wie bei jedem Regler gibt es eine Sollgröße, eine Istgröße, Regelparameter (P, I, D) und das was der Regler ausgibt (Reglerstellwert), um mit der Istgröße in Richtung Sollgröße zu kommen.

Regleristwert (x) ist: "perimeterLeft-perimeterRight"
Als Reglersollwert (w) wird Null (0) vorgegeben, der Regleristwert soll also möglichst diesen Wert erreichen.

Das heißt der Regler soll also versuchen, Signalstärke "Links" gleich groß wie "Rechts" zu regeln, dann wird der Sollwert Null.

Ist der Istwert (x) zu groß, wird der Reglerstellwert (y) negativ. Ist er zu klein, wird der Reglerstellwert (y) positiv.

Der berechnete Reglerstellwert (y) wird dann auf halbe Motordrehzahl "links" addiert und von halber Motordrehzahl "rechts" subtrahiert:

motorLeftPWM = MAX_MOTOR_SPEED/2 + pidMotor.y;
motorRightPWM = MAX_MOTOR_SPEED/2 - pidMotor.y;

Wie stark nun der Regler regelt, hängt von den Reglerparametern (P, I, D) ab. Da ist etwas probieren angebracht, wenn einem die Regelung zu "hart" erscheint.

Zu den Regelparametern (Bedeutung etc.) gibt es ganze Abhandlungen (möchte das hier nicht alles kopieren) - Einfach mal nach "digitaler Regler" googlen...
 
Zuletzt bearbeitet von einem Moderator:
naneona schrieb:
Sieht schon gar nicht so schlecht aus, nüchtern fährt er dann gerade. ;)

Evtl. fährt er mit folgende Änderung "weicher" :


Code:
pidMotor.Kp = 1.0;  // Verstaerkungsfaktor Regelabweichung 		
    pidMotor.Ki = 2.0; 	// Faktor fuer Integral Regelabweichung	
    pidMotor.Kd = 2.0; // Faktor fuer Ableitung Regelabweichung


Ich werd' das mal weiter ausprobieren/optimieren ...

Nachtrag: hab die Werte nochmal geändert -sollte damit besser laufen
Nachtrag2: Ein weiteres Mal geändert - Jetzt läuft's prima hier!
 
Zuletzt bearbeitet von einem Moderator:
nero76 schrieb:
Nachtrag2: Ein weiteres Mal geändert - Jetzt läuft's prima hier!
Nicht nur bei Dir :woohoo:

[video]http://www.youtube.com/watch?v=fjuQViS2rHM&feature=youtu.be[/video]

Spitzer darf er nicht in die Schleife fahren, sonst fährt er in die falsche Richtung.
 
Zuletzt bearbeitet von einem Moderator:
wenn er richtig weit auspendelt, sieht es ein wenig so aus, wie ein igel beim schnüffeln nach trüffeln... ;-)
vielleicht brauchts eine igel-ähnliche abdeckung?
ansonsten: alles super! auch den kasten bier gefunden!
 
autega schrieb:
@ Alexander

Ist es damit möglich die Signalauswertung vom Mega machen zu lassen ohne groß Performance zu verlieren.
Damit sparen wir wieder Geld und vereinfachen den Hardwareaufwand.

Leider habe ich noch nicht genug Ahnung von dem Thema um mir meine Frage selber zu beantworten.
Der Nano ist sehr gut ausgelastet. Das liegt daran, dass man mit der doppelten Frequenz abtasten muss, d.h. mit 15KHz - Die nächst höhere Frequenz, die der Arduino samplen kann ist 19Khz. Wenn der Sample-Buffer voll ist, läuft die rechenaufwändige FFT. Während dieser Zeit wird nicht gesampelt. Würde beides parallel laufen, schafft der Nano die Sample-Frequenz nicht mehr (bzw. noch so gerade für 2 Kanäle, für 4 reicht's dann nicht mehr...)

Die ArduinoFHT sollten wir definitiv mal ausprobieren (sollte also mit auf die TODO-Liste), also etwas zur "Optimierung". Wenn wir mit der Frequenz auf 200-500 Hz heruntergehen, könnte der Mega das nebenher erledigen. Sonst wohl eher weniger denke ich.
 
Zuletzt bearbeitet von einem Moderator:
Hallo ArduMowers,

bin schon am Einkaufen der Bauteile, doch eine Frage habe ich im Moment.
Habe diesen Thread gelesen, doch wenn ich die Antwort auf meine Frage übersehen habe, dann bitte ich um Entschuldigung.
Wieso braucht man zusätzlich einen Nano um die Schleifensensoren zu lesen, ein mega hätte doch noch freie pins übrig, oder missverstehe ich da was gewaltig ?
Mag auch daran liegen, dass der mega damit zu viel Zeit verlieren würde ?

Vielen Dank

Martin
 
Hallo Martin,

toll dass Du auch den Ardumower bauen willst! :)

Das Samplen (Meßwerte sammeln) und filtern (wie ein Equalizier) und Auswerten mit hoher Frequenz braucht ca. 80% der verfügbaren Rechenleistung eines 16 Mhz Arduinos. Wenn man das den Mega machen lassen würde, hätte man kaum noch Rechenzeit für andere Dinge im Mega. Und: die Zeitpunkte für die Messung und Auswertung müssen exakt sein, d.h. es darf nichts nebenher laufen (was die nächste Messung verzögern würde).
Ähnliches Problem auch beim Kompaß-Algorithmus. Daher haben wir den Weg gewählt für die rechenintensiven Dinge einen extra Nano zu verwenden. Hier diskutieren wir übrings näheres zu Rechenzeit/Mega-Alternativen etc.: http://ardumower.de/index.php/de/forum/software/102-zukuenftige-alternativen-zum-arduino-mega
Gruss,
Alexander
 
Haaa, da wird man schnell geholfen.

Vielen Dank !

dann komme ich nicht um den kauf von zwei nanos rum, den mega hab ich schon länger, da er schon etwas staub angesammelt hat und mein Rodenbach doch nach Intelligenz schreit, habe ich dieses SEHR interessantes Projekt gefunden.

Danke an Alle die das hier möglich tun !!

Viele Bauteile schwimmen schon ab China zu mir :cheer:

Werde aber mit den Spulen Schwierigkeiten bekommen, will nicht unbedingt jetzt das original nehmen, da die spulen auf der hauptplatine drauf sind, und falls ich doch scheitern sollte, dann soll der Rotenbach doch noch arbeiten können. ;)

Problematisch sind natürlich die Spulen, aber die kann ich bei Dir bestellen, richtig ?

Wenn ja, dann würde ich das gerne tun, brauche nur das "wie" :) payPal kein Thema

danke !

Martin

UPDATE: einen Nano, klar
 
Hallo Alexander !

Hab da noch eine Frage zum Mikrofonverstärker...

Auf dem Schaltbild sind die Kondensatoren C1,C2,C3 mit 104 bezeichnet.
Ist damit 100nF gemeint ?

und C5 mit 224 = ? 220nF ?

Wäre nett wenn Du mal nachschauen könntest ?
 
Rainer schrieb:
Hallo Alexander !

Hab da noch eine Frage zum Mikrofonverstärker...

Auf dem Schaltbild sind die Kondensatoren C1,C2,C3 mit 104 bezeichnet.
Ist damit 100nF gemeint ?

und C5 mit 224 = ? 220nF ?

Wäre nett wenn Du mal nachschauen könntest ?

Ich hab mal gerade gemessen, C4 hat ca. 123nF und C5 ca. 213 nF - mein Meßgerät ist wohl nicht sehr genau...
Ich gehe nicht davon aus, dass so krumme Werte wie 104 nF bzw. 224 nF verwendet wurden. D.h. deine Annahme ist wohl korrekt (100nF bzw. 220nF).
Würde sich auch mit der Beschreibung für SMD-Codes decken (es sind ja SMD Kondenstoren auf der Platine von YwRobot).
 
Zuletzt bearbeitet von einem Moderator:
AlexanderG schrieb:
Rainer schrieb:
Hallo Alexander !

Hab da noch eine Frage zum Mikrofonverstärker...

Auf dem Schaltbild sind die Kondensatoren C1,C2,C3 mit 104 bezeichnet.
Ist damit 100nF gemeint ?

und C5 mit 224 = ? 220nF ?

Wäre nett wenn Du mal nachschauen könntest ?

Hallo Rainer,

Hier findest du die Schaltung für den Schleifenverstärker.
http://www.ardumower.de/index.php/d...rator/83-ir-bake-generator-empfaenger-diy#699
Gruß Peter
 
Zuletzt bearbeitet von einem Moderator:
Mal eine Frage am Rand an euch experten:

Wie verhält es sich denn mit der bisherigen funktionierenden Hardware, wenn ihr das alles ändert, ist die weiter zu nutzen, oder muss dann viel abgeändert werden?

Noch kurz was zu den Empfängerspulen:
Hab da heute mal experimentiert mit der Einbaulage. Diese ist ja beim L50 nicht ganz so einfach zu realisieren.
Habe gemerkt, dass wenn man die Spulen nicht waagerecht sondern 45° nach oben anordnet, die Empfindlichkeit steigt.
Ich habe sie nun rechts und links parallel nach vorne und 45° geneigt angeordnet (für L50 Kenner, schräg über dem Radlager). Meine Tests drinnen verliefen sehr erfolgreich. Schleife habe ich unter die Werkbank geklebt und Robby auf Werkbank in den verschiedensten Winkeln hin und her geschoben. Er hat immer alles sauber erkannt. Der Test draußen steht noch aus (Kabel ist noch nicht da).

Wollte das nur mal mitteilen :)

Gruß
Stefan

PS. Bilder gehen grad nicht, Handy spinnt :angry:
 
@Stefan: ich denke das Ziel sollte sein, möglichst viel vorhandenes weiterzuverwenden (falls Hardware geändert würde). Was die Software betrifft, so sollte man erreichen, dass die verwendete Hardware (alt/neu) keine Rolle spielt (man also alle Optionen hat). Ich hoffe, wir schaffen den Spagat.

Über dem Radlager habe ich ja meine Spulen beim L50 auch angebracht. Aber nicht schräg nach oben sondern zur Seite.
Wenn nach oben funktioniert, ist das doch Klasse!

Übrings: möchtest Du die Schleife auch zum Abfahren nutzen (also dass der Roboter diese abfahren kann). Dann sollte man das mit deiner Einbaulage auch mal testen, z.B. über das pfodApp-Menü: Commands->Home (wenn er die Schleife suchen soll) bzw. Commands->Track (wenn er schon auf der Schleife steht).
 
@Alexander
Schleife abfahren würd denke ich nicht so sein, da ich diese weit an den Rand legen will um möglichst keine nachzumähenden Ränder zu haben.

Ich würde lieber eine zweite Schleife oder was auch immer bevorzugen, um den Mäher an/in eine Ladestation zu bekommen.
Da ich aber eh zwei separate Flächen habe, wird es wohl so bleiben, dass ich ihn einsammle, wenn er leer ist. :-(

Hast du die Spulen nochmal verlegt? Auf deinen Bildern sah es so aus, als wären die auf dem Boden vor dem Radlager. Nur meine Spulen passen dort nicht hin.

Hatte sie erst über dem Akku rechts und links, aber der Abstand zum Rasen ist doch recht weit und wenn dann das Kabel noch eingebuddelt ist...
 
@Stefan:

Übefahren: Man kann einstellen, wie weit (Zeit) der Roboter die Schleife überfahren darf. Wenn Du diesen Wert in "aml50.h" auf 100 setzt, darf der Roboter 100ms weiterfahren nachdem er auf die Schleife getroffen ist:
#define MAX_PERIMETER_TIMEOUT 100 // perimeter threshold timeout (ms)

Spulen: Ja, ich habe die von vorm Akku nach oben vorm Radlager verlegt. Die optimale Position muss man je nach Gehäuse ausprobieren...

Ich will meine Ansprüche aber auch nicht zu hoch schrauben - wenn man bedenkt, wie schlecht der Orignal-Ambrogio L50 sich bei uns gemacht hat, wie unzuverlässig die Rasensensoren liefen und wie oft ich ihn aus den Büschen usw. herausholen musste - dagegen, finde ich, ist das jetzt eine relativ robuste Sache geworden...
 
Oben