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
negativ. Ist er zu klein, wird der Reglerstellwert
positiv.
Der berechnete Reglerstellwert
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...