PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Quadrocopter Accelerometer



wrock
14.01.2016, 07:31
edit: ok, vergesst das Unterhalb, habs hinbekommen.

Nicht desto trotz komm ich nicht auf das Ergebnis auf was ich möchte/sollte.


Ich verwende einen Gyrosensor und einen Beschleunigungssensor und einen Kalmannfilter und die beiden Sensorwerte zu fusionieren.
Das Problem dabei, bei Stillstand, (also derQuadcopter ist am Boden) bekomm ich nach dem filter Abweichungen vom Soll wert.
Überseh ich da Logisch was, oder sit vielleicht meine Implementierung falsch?
http://www.pic-upload.de/view-29424699/acceleration_motoroff.png.html


//////////////////////////////////////////
Hallo Leute,

bin geraden an einem Quadrocopter am bauen und habe(glaub ich) Probleme mit dem Accelerometer.

Flugverhalten mit Throttle/Gas allein(ohne Manuellem ausgleichen per Fernbedienung):

https://www.youtube.com/watch?v=PcBt2Aoleok

Und zwar bin ich mir ziemlich Sicher das der Accelerometer in diesem Fall Probleme macht.
Also Sensor verwende ich einen LSD303D: https://www.pololu.com/file/0J703/LSM303D.pdf


Nun zur Eigentlichen Frage: Kalibrierung des Accelerometers.


Inwiefern ist der Accelerometer vom Magnetometer Abhängig?(aktuell nicht implementiert)
Wie sieht der Vorgang des Kalibrierens aus? AKtuell stelle ich den Quaddrocopter waagerecht hin, messe die aktuellen Werte mehrere Male und nehme den Durchschnittswert-->erhalte daraus den 0 Punkt in alle 3 Achsen....Ist das so Richtig?



int nrOfMeas = 50;
for(int i = 0; i < nrOfMeas; ++i) {
if(!getRawAccData(data)) {
return false;
}
res = res + data;
}
res[0] = res[0] / nrOfMeas; //x
res[1] = res[1] / nrOfMeas;//y
res[2] = res[2] / nrOfMeas;//z
std::cout << res << std::endl;

mAccOffsetX = res[0];
mAccOffsetY = res[1];
mAccOffsetZ = res[2] - (1/LA_So_FS6g*1000); //1G Acc in Z direction

Messwerte: Horizontal gestellt, dann vertikal und dann zurück

31129

lg :)