Problem mit den ACC Werten???
So! Guten Abend.
bzgl. dem unkontrollierten wegkippen, was ich immer noch habe…..
Ich war am Mittwoch bei einen guten Freund der auf den Gebiet Mikrocontroller echt fit ist. Er hat früher (über 10 Jahre her) auch mal bei Eurocopter entwickelt, unteranderen auch an Stabilisierungssystem…. (Er ist mittlerweile fast begeistert wie gut das mit den kleinen 8bit Atmel läuft, er meinte von Anfang an „da muss ein ARM rein“
Hihi )
Um mein Problem zu simulieren habe ich eine sehr gute Methode gefunden. Es geht ja meiner Meinung um zu hohe Beschleunigungsmesswerte vom acc Sensor und nicht um die Haltekraft von meinen Motoren.
Wenn man den Copter in die Hand nimmt, Vorn zeigt weg und Hinten zeigt auf den Körper und sich um die eigene Achse dreht, kann man recht hohe Fliehkräfte erzeugen.
Bei dieser Aktion (Test) wirkt eigentlich keine Kraft auf die Roll- und Pitch Achse und das Gimbal sollte einfach in der Mitte stehen bleiben.
Ab einer bestimmten (nicht gemessen) Fliehkraft tickt das Gimbal auf einmal voll aus.
Probiert das mal aus, ob das bei euch auch so ist.
Mir ist bewusst, dass ein Copter so nicht fliegt, mir geht es hier um Beschleunigungswerte die im Flug (enge Kurven) und vor allem bei Wind vorkommen können.
Leider ist der Code, vor allem gewisse Berechnungen und Limits nicht Dokumentiert, sodass es ihm, auf die 2 Stunden nicht ganz klar geworden ist wie die Regelung zu 100% funktioniert / berechnet wird, aber wir haben trotzdem etwas herausgefunden.
Wir haben uns bei den „um die Eigene Achse drehen Test“ die Variable
rollAngleACC und
pitchAngleACC über den seriellen Monitor angeschaut. (
orientationRoutines.h)
Diese sind bei langsamen Drehen bei sehr klein (0-3) Messwerten, wenn das Gimbal austikt werden Werte von über 50 angezeigt.
Daraufhin haben wir zum Test die Variable
ACC Werte auf 20 limitiert, also jeder Messwert über 20 ist gleich 20.
Die Aussetzer bei den "Testdrehen" sind zu 100% weg! Ich habe mit so schnell um die eigene Achse gedreht das mir Hundeelend wurde, das Gimbal stand aber sicher genau gerade.
Das Problem an dieser quick and dirty Änderung ist, das es jetzt nicht mehr möglich ist das Gimbal über 20° nach unten zu schwenken. Hierfür werden diese höheren acc Werte wohl wieder benötigt. Das Gimbal dreht sich einfach immer weiter nach unten.
Ich will hier nur aufzeigen, dass es wohl im Flug durch äußere Einwirkungen (Absagen, Windstöße, schnelle Kurven mit hohen Fliehkräften) kurzzeitig zu erhöhten acc Werte kommen kann und dadurch die Gimbal Steuerung aussetzt. Was sich dann in diesen kompletten Wegkippen äußert.
Der Beschleunigungsmesswert ist doch eigentlich in 1. Beziehung dafür da um den Drift des Gyros zu kompensieren und 2. um das Gimbal nach unten neigen zu können. Oder?
Vielleicht könnte man ja bei der Driftberechnung den ACC Wert filtern, oder eben auf einen Wert limitieren, um den Drift zu kompensieren reichen doch eigentlich ganz kleinen Messwerte….
Hier die Codeänderungen in der
orientationRoutines.h
Wir haben das Limit bei den count == 13 eingefügt, das Limit kann man ändern indem man die 20 und -20 in z.B. 30 -30 ändert.
Code:
if(count == 13) { rollAngleACC = (rollAngleACC > 20.0) ? 20.0 : 0.9 * rollAngleACC + 0.1 * ultraFastAtan2(-y_val,-z_val);
rollAngleACC = (rollAngleACC < -20.0) ? -20.0 : 0.9 * rollAngleACC + 0.1 * ultraFastAtan2(-y_val,-z_val);
}
if(count == 14) { pitchAngleACC = (pitchAngleACC > 20.0) ? 20.0 : 0.9 * pitchAngleACC + 0.1 * (-ultraFastAtan2(-x_val,-z_val));
pitchAngleACC = (pitchAngleACC < -20.0) ? -20.0 : 0.9 * pitchAngleACC + 0.1 * (-ultraFastAtan2(-x_val,-z_val));
Das ist wie gesagt nur zum aufzeigen des Problems, das ist keine Lösung!
Ich bin mit diesen Einstellungen, erst 30 und dann mit 20 mit mein Y6 mal ein bisschen schneller geflogen, Standard PIDs MaxPMW auf jeweils 80.
Es funktioniert sau gut!!! (also bezogen auf das Wegkippen)
Was sagen die Softwareentwickler dazu?
Ab 2:09 Min hab ich auf 20 limitiert.
Ab 3:25 Uhr fliege ich ziemlich rasant...
http://www.youtube.com/watch?v=rCWH9aswMiY
Das Video wird gerade noch von Youtube bearbeitet....
Viele Grüße
Martinez