Motorregelung an und der bot tanzt

Die Elektronik des c't-Bot
Antworten
koerc

Motorregelung an und der bot tanzt

Beitrag von koerc » 10 Feb 2009, 22:49

Hallo bot-Experten ;-)

ich versuche meinen ctbot mit der im stable-zweig vorhandenen Motorregelung zu betreiben. Leider führt er immer einen Tanz auf wenn SPEED_CONTROL_AVAILABLE aktiv ist. Er fährt langsam an, bremst, steht, fährt weiter um dann ruckartig 2-3 rechts Drehungen um ca. 45 Grad zu fahren und so weiter.
Ich habe inzwischen 3 mal das bot_calibrate_pid Verhalten komplett durchlaufen lassen und 3 unterschiedliche Werte kombination erhalten. Alle habe ich (nacheinander) in Code eingetragen und diese samt der .eep Datei auf den Bot geschrieben. Das EEprom Abbild scheint auch anzukommen. Ich hab da mal die Distanzsensorewerte so manipuliert das man das merkt.

Was habe ich vergessen zu tun? Wäre super wenn mir jemand helfen könnte.

Ich habe folgende Werte Kombination erhalten (immer Kp, Ki, Kd)
32, 26,54
102,3,5
52,22,10

schon sehr unterschiedlich,oder?

Danke schonmal
koerc

koerc

Nachtrag

Beitrag von koerc » 11 Feb 2009, 11:54

was ich vergessen haben:

die verhalten habe ich bis auf BEHAVIOUR_REMOTECALL_AVAILABLE alle auskommentiert. Er sollte sich also von Hindernissen und Abgründen nicht beeinflussen lassen.

eax
Friends of Robby
Friends of Robby
Beiträge: 755
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: Motorregelung an und der bot tanzt

Beitrag von eax » 11 Feb 2009, 20:22

Hi,
koerc hat geschrieben:Leider führt er immer einen Tanz auf wenn SPEED_CONTROL_AVAILABLE aktiv ist. Er fährt langsam an, bremst, steht, fährt weiter um dann ruckartig 2-3 rechts Drehungen um ca. 45 Grad zu fahren und so weiter.
dafür gibt es zwei typische Gründe: Entweder sind die Parameter für die Regelung völlig daneben (wenn sie nicht optimal, aber zumindest im passenden Bereich sind, wird die Geschwindigkeit nicht exakt eingehalten, es kommt dann aber nicht so zu extremen Auswirkungen) oder die Daten der Radencoder sind schlecht. Ich würde zuerst mal überprüfen, ob die Radencoder auch wirklich jede Flanke melden, das erspart evtl. viel weiteres Suchen und Probieren.
koerc hat geschrieben:Ich habe inzwischen 3 mal das bot_calibrate_pid Verhalten komplett durchlaufen lassen und 3 unterschiedliche Werte kombination erhalten. Alle habe ich (nacheinander) in Code eingetragen und diese samt der .eep Datei auf den Bot geschrieben. Das EEprom Abbild scheint auch anzukommen. Ich hab da mal die Distanzsensorewerte so manipuliert das man das merkt.
Die Parameter kommen nicht ins EEPROM, sondern aus Performance-Gründen ins Flash. Du brauchst die eep-Datei also dafür nicht erneut übertragen.
koerc hat geschrieben:Ich habe folgende Werte Kombination erhalten (immer Kp, Ki, Kd)
32, 26,54
102,3,5
52,22,10

schon sehr unterschiedlich,oder?
Grundsätzlich findet das Verhalten nicht die optimale Lösung, sondern soll nach guten Werten suchen. Es kann durchaus verschiedene Kombinationen mit dem gleichen Ergebnis geben.
Von den Werten sieht 52,22,10 am besten aus. Der Kd-Anteil wirkt sich recht aggressiv aus, am besten setzt du den zunächst mal auf 0. Wenn es dann ganz gut funktioniert, kannst du Kd langsam erhöhen, um die Geschwindigkeit der Regelung zu verbessern.

Vielleicht hilft das schon mal etwas weiter. Es empfiehlt sich auf jeden Fall ADJUST_PID_PARAMS einzuschalten, um per Fernbedienung die Parameter noch nachjustieren zu können. Eigentlich müsstest du recht schnell merken, dass zu kleine Werte zu einem zu langsamen Verhalten führen und zu große zu unkontrollierten Ausreißern.


Gruß,
Timo

koerc

Beitrag von koerc » 12 Feb 2009, 16:09

Hallo Timo,

danke für den Tipp mit den Radencodern. Der Rechte ist ok aber der Linke liefert tatsächslich nur Blödsinn. Also so ca. 20 anstatt 60 Ticks pro Radumdrehung. Ich habe erstmal nur die Räder per hand gedreht und die Anzeige im Display verfolgt.

Dann werd ich mich wohl wieder ans zerlegen des bots machen .. hoffentlich hilft nachlösen ...

Danke
und Viele Grüße
Constanze

Antworten