WOW!
Hier gibt es echte Fortschritte von Ronco bei der Datenfusion von Baro und ACC!
Ich habe mir natürlich auch die letzte Ronco Version bei speedshare gezogen und konnte natürlich nicht die Finger vom Code lassen. Die Datenfusion von Ronco ist einfach megageil. Keine Ahnung wie die Version fliegen wird, aber es ist definitiv ein Fortschritt.
@upapa: Es kann durchaus sein, dass meine älteren Versionen vorteilhafter erscheinen, aber Ronco/Marbalon's Ansatz hat viel Potential, und sollte unbedingt weiter verfolgt werden.
Meine Änderungen:
1. Bei Initialisierung wird die Bodenhöhe aus 100 verschiedenen Barowerten bestimmt (dauert 3 Sec) und die Höhe auf 0 gesetzt (getGroundAlt() ). D.h. Die Barokurve bezieht sich jetzt auf die Starthöhe. Das ist momentan noch egal, aber wenn eine Failsavelandung oder ein Flugkorridor programmiert werden soll, haben wir das schon mal.
2. getEstimatedAltitude() wird bei jedem Durchlauf ausgeführt. Ein neuer BaroPid wird nur berechnet, wenn es neue Barodaten gibt. Deswegen ist die Timingabfrage aus den alten Versionen überflüssig und entfernt. Bei BMP085 wird der Code alle 30ms ausgeführt.
3. Daher ist Baro_update() unter Sensors verändert, Timingprobleme bei der Sensorabfrage, soweit von mir erkennbar, sind behoben (wie bei meinen anderen Versionen).
4. Ich habe wieder ACCZ = accADC[YAW] verwendet, da mein BMA020 mit "gesmoothten" Werten nichts zu bringen scheint.
5. Da jetzt endlich ein echter PID Kontroller für den Baro vorliegt, ich aber nicht auf eine Abschwächung der berechneten negativen Werte verzichten wollte (war bei meinen Versionen das "I") habe ich unter IMU/getEstimatedAltitude() ein "#define DroppingPercent 20" eingefügt. D.h. wenn eine Abwärtskorrekturbewegung errechnet wird, wird diese nur zu 20% an die Motoren weiter gegeben. Hier kann jeder seine eigenen Werte probieren. 20% ist nur ein Vorschlag.
6. Die ALT Defaultwerte im EEprom sind auf 0 gestellt, damit niemand einen Raketenstart hat und Bruch macht.
Wegen des Wetters bin ich diese Version IN DER WOHNUNG NUR MIT P "geflogen" (P=3), I und D habe ich auf 0 gelassen. Es hat erstaunlich gut funktioniert.
Die config.h ist nicht verändert. Es ist die Version "release_candidate_2_1_r976".
VERSUCH AUF EIGENE GEFAHR! SCHNELLER FINGER AM BARO-AUS-SCHALTER!!!
LG
Rob
P.s.: Ich bin schon sehr gespannt, wie er draussen fliegt!