goara
29.02.2008, 21:19
Hallo
bin gerade an diesem Projekt heir : https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35143&highlight=
Habe 3 Gyroskope und einen 3-Achs acc um die Lage zu bestimmen.
bis jetz habe ich das Signal Tiefpass-gefiltert
Gyro_nick_m = Gyro_nick_m * 5
Gyro_nick_m = Gyro_nick_m + Gyro_nick_neu
Gyro_nick_m = Gyro_nick_m / 6
und das dann zu den Motor-Sollwerten gemischt.
zb wenn der Copter sich nach links dreht addiert er zur linken Sollgeschwindigkeit den errechneten Wert und subtrahiert ihn recht, um das Drehen abzufangen.
Motor_soll_v = Motor_soll_v + Gyro_nick_m
Motor_soll_h = Motor_soll_h - Gyro_nick_m
ist bis jetzt also ein reiner P- regler..
einen D- Anteil dazuzubauen ist ja auch kein Problem, dann habe ich einen PD regler..
Damit die Lageregelung gut funktionier muss es bei straker Schieflage mehr gegensteuern als bei leichter.. desswegen haette ich gerne einen PID regler
mit der bisherigen Regelung ist es noch viel zu wackelig
und hier kommt mein Poblem:
das Signal der Gyros ist ungenau und hat auch einen Temperaturdrift.
wenn ich also die Gyroskope am Anfang kalibrier und dann von der aktuellen Messung immer den Init-wert abziehe geht das manchmal ganz gut.
es kann aber auch vorkommen, das obwohl der copter still steht das Gyro einen leicht abweichenden Wert ausgibt.. wenn man jetz das Integral bildet, also aufsummiert schiesst der Integralwert sehr schnell ins Unendliche..
Ausserdem werden die Werte ja auch digital addiert, das heist wenn man 10 mal hin und her dreht kann auch der Rundungsfehler schon rehct gross sein.
Desswegen wollte ich fragen ob es irgendwelche Algorithmen gibt, die das verhindern können?
könnte man z.b. das Integrieren der Gyroskope nur dann durchführen, wenn der D- Anteil des Acc-sensors ~= 0 ist ?
oder den Initwert immer wieder aus der Mittelung der letzten 100 Messungen neuberechen ??
Gibt da ja auch noch so Kalman-Filter, aber hab nicht wirklich verstanden wie das funktioniert bis jetzt ..
wäre für alle Vorschläge dankbar..
bin gerade an diesem Projekt heir : https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35143&highlight=
Habe 3 Gyroskope und einen 3-Achs acc um die Lage zu bestimmen.
bis jetz habe ich das Signal Tiefpass-gefiltert
Gyro_nick_m = Gyro_nick_m * 5
Gyro_nick_m = Gyro_nick_m + Gyro_nick_neu
Gyro_nick_m = Gyro_nick_m / 6
und das dann zu den Motor-Sollwerten gemischt.
zb wenn der Copter sich nach links dreht addiert er zur linken Sollgeschwindigkeit den errechneten Wert und subtrahiert ihn recht, um das Drehen abzufangen.
Motor_soll_v = Motor_soll_v + Gyro_nick_m
Motor_soll_h = Motor_soll_h - Gyro_nick_m
ist bis jetzt also ein reiner P- regler..
einen D- Anteil dazuzubauen ist ja auch kein Problem, dann habe ich einen PD regler..
Damit die Lageregelung gut funktionier muss es bei straker Schieflage mehr gegensteuern als bei leichter.. desswegen haette ich gerne einen PID regler
mit der bisherigen Regelung ist es noch viel zu wackelig
und hier kommt mein Poblem:
das Signal der Gyros ist ungenau und hat auch einen Temperaturdrift.
wenn ich also die Gyroskope am Anfang kalibrier und dann von der aktuellen Messung immer den Init-wert abziehe geht das manchmal ganz gut.
es kann aber auch vorkommen, das obwohl der copter still steht das Gyro einen leicht abweichenden Wert ausgibt.. wenn man jetz das Integral bildet, also aufsummiert schiesst der Integralwert sehr schnell ins Unendliche..
Ausserdem werden die Werte ja auch digital addiert, das heist wenn man 10 mal hin und her dreht kann auch der Rundungsfehler schon rehct gross sein.
Desswegen wollte ich fragen ob es irgendwelche Algorithmen gibt, die das verhindern können?
könnte man z.b. das Integrieren der Gyroskope nur dann durchführen, wenn der D- Anteil des Acc-sensors ~= 0 ist ?
oder den Initwert immer wieder aus der Mittelung der letzten 100 Messungen neuberechen ??
Gibt da ja auch noch so Kalman-Filter, aber hab nicht wirklich verstanden wie das funktioniert bis jetzt ..
wäre für alle Vorschläge dankbar..