Stap 14: IMU deel 1: sensoren
De versnellingsmeter:
De versnellingsmeter meten niet eigenlijk versnelling. Het meet de kracht per eenheid massa langs elke as. U kunt deze meting gebruiken om te bepalen van de richting van de zwaartekracht, die een kracht naar beneden, oefent zo lang als de quadrotor is niet versnellen.
De Polulu minIMU-9 is een stuk minder gedoe dan de originele analoge sensor omdat het zelf zeroing en een digitale waarde met een bekende schaalfactor rapporteert. De schaalfactor is zelfs een mooie eenvoudige nummer: 1 mg/cijfer met de meest gevoelige bereik. Dat wil zeggen 1/1000th de versnelling als gevolg van zwaartekracht per cijfer. Ik heb deze waarde rechtstreeks vanuit het gegevensblad van de versnellingsmeter. Als u de sensor de X-as wijst direct naar beneden, het moet verslag uitbrengen een waarde van 1000.
Van een versnelling-meting omzetten in een hoek is een heleboel trigonometriefuncties of een linearisatie vereist. Aangezien de quadrotor deel van zijn tijd horizontaal grootste en afwijkt door hooguit 30º in elke richting, ik koos de linearisatie. De eerste afbeelding ziet u hoe linearize over 0 °. De helling van de lijn die raakt aan de sensor output vs. hoek curve op 0 ° is 1000digit/rad. De inverse is wat heet A_GAIN in de code:
A_GAIN = 0,001 rad/cijfer = 0.0573º / cijfers.
Dit is het getal waarmee vermenigvuldigt de waarde van de ruwe versnellingsmeter om een geschatte hoek in graden.
De Gyro:
De gyroscoop is niet daadwerkelijk een gyroscoop; Er zijn geen spinnen vliegwielen binnen de chip. Het heet nauwkeuriger een hoekige rate sensor, en gebruikt een MEMS stemvork structuur aan maatregel tarief van rotatie op basis van Coriolis kracht. Zoals de versnellingsmeter is er één voor elk zwaartepunt.
Aangezien dit een mooie digitale IMU, wordt de waarde gemeld is rechtstreeks in de fysieke eenheden, hoewel de schaalfactor een beetje vreemd is. Het wordt gegeven in het gegevensblad voor de gyro als 8.75mdps /, of 0.00875(º/s)/cijfers. Ik gebruik deze waarde rechtstreeks als G_GAIN in de code.
G_GAIN 0.00875(º/s)/cijfer =.
Dit is het getal waarmee om te vermenigvuldigen de ruwe gyro-waarde om een hoekige tarief in graden per seconde.
Motivatie voor het samenvoegen van sensoren te schatten hoek:
De gyro meet direct hoekige snelheid, zodat de feedback tarief wordt verzorgd door de gyros alleen. In feite moet het mogelijk zijn om te vliegen de quadrotor van tarief feedback alleen, maar het zou een ander besturingselement structuur nodig en zou niet zelf niveau. Als u controle van de goede houding, is hoek feedback ook vereist.
Helaas is de schatting van de versnellingsmeter van de hoek niet perfect. Horizontale versnelling zal verstoren de raming van de hoek, aangezien de versnellingsmeter geen onderscheid kan het verschil maken tussen versneld vooruit en achteruit leunend. De quadrotor niet veel tijd horizontaal versnellen, maar als dat zo is, het kan gemakkelijk trekken grote fracties van 1g, die de hoek schatting aanzienlijk zal verstoren.
De gyro kan ook een schatting van de hoek, produceren door numerieke integratie: als u hoe snel u bent draaien weet, je kunt voorspellen wat hoek u zult op in de volgende stap van de tijd door te vermenigvuldigen met het tarief tegen de tijd dat monster. Deze raming van hoek kan werken voor een korte periode van tijd, maar over de lange duur die het zal drijven weg van de echte hoek. Geen kwestie hoe goed en goed geheugenlijst de gyro is, numerieke integratie zorgt altijd voor de raming van de hoek geproduceerd door de gyro alleen te drijven na verloop van tijd.
Dus, de versnellingsmeter is slecht voor de korte hoek schatting, maar biedt een stabiel op lange termijn gemiddelde gelijk is aan de zwaartekracht vector. De gyro is goed voor de korte hoek ramingen, maar zal drift gedurende lange perioden van tijd. De aanvullende Filter, besproken in de volgende stap, fuseert de sensoren samen soepel op verschillende tijdschema's voor het verkrijgen van een betere raming van de hoek dan beide sensor alleen kon produceren.