Stap 5: sensoren. Extra
Als een bonus leg ik de sensor die ik gebruikt en hoe ik gebruikte het om een goed resultaat te verkrijgen. Aan de ene kant, een fusie tussen de gyroscoop en de accelerometer sensor is zeer nuttig om te controleren de horizontaliteit van de quadcopter, en anderzijds, de hoogte van de quadcopter is ook een goede gegevens te verkrijgen, en wordt gemeten met behulp van de druksensor en de temperatuursensor.
Sensor fusion
Teneinde de horizontaliteit van het apparaat, gebruiken we twee hoeken, pitch en roll. Deze twee hoeken worden gemeten met behulp van twee sensoren: versnellingsmeter en gyroscoop. Beide hebben hun voor- en nadelen. De versnellingsmeter kunt meten de kracht van de zwaartekracht, en met die informatie kunnen we de hoek van het apparaat. Het probleem van de versnellingsmeter is dat het ook de rest van de krachten die het apparaat wordt onderworpen aan, dus het maakt een heleboel fouten en lawaai kan meten. De gyroscoop meet de hoeksnelheid, dus als we deze gegevens integreren we kunnen krijgen hoeveel de hoek wordt verplaatst. Het probleem van deze maatregel is niet perfect en de integratie heeft een afwijking. Dat betekent dat in een korte tijd de maatregel zeer goed is, maar voor langere overspanningen de maatregel hoek veel van de echte hoek afwijken zal.
Het combineren van beide sensoren kan het oplossen van deze problemen. Dat is genaamd sensor fusion, en er zijn een heleboel methoden te combineren. In dit project heb ik twee van hen geprobeerd: de Kalman-Filter en de aanvullende filter.
- De Kalman-filter is een algoritme zeer uitgebreid in Robotica, en biedt een goed resultaat met lage computationele kosten. Er is van een Arduino library die deze methode implementeert, maar als u wilt meer informatie over deze methode of uitvoering ervan zelf kijken naar Deze pagina.
- De aanvullende filter is een combinatie van twee of meer filters die de gegevens uit verschillende bronnen verbinden en krijgt een schatting van de werkelijke waarde. Het kunnen implementeren in slechts één regel code. Bezoek Deze paginavoor meer informatie.
hoek = A * (hoek + gyro * dt) + (1 - A) * accel;
waar A is normaal komt overeen met 0,98.
Eerst ik probeerde een Kalman-filter te gebruiken, maar ik heb niet het verkrijgen van goede resultaten. De hoek werd berekend met een beetje vertraging en het beïnvloed het besturingselement. De Kalman filter heeft drie variabelen die u kunt wijzigen op basis van de parameters van uw sensoren, en door dit te doen kunt u betere resultaten. Ik heb geprobeerd om de waarden te wijzigen, maar ik kreeg niet betere resultaten, dus heb ik besloten om het complementaire filter. Het is er gebeurd met veel gemakkelijker en had een lagere kosten van de computationele. De aanvullende filter werkte boete voor me.
Hoogte van de zeespiegel
Om de positie van onze quadcopter moeten we weten de hoogte bepalen. Dit kan worden gemeten door de combinatie van een druksensor en een temperatuursensor. Het kan worden verkregen slechts de gegevens van de druk, met behulp van de volgende vergelijking:
H = 44330 (1 - (Pressure_measured / 101325) ^ (1 / 5.25588))
Ik kreeg de vorm van de vergelijking het gegevensblad van de sensor ik gebruikte (BMP085) deze vergelijking is gebaseerd op de Barometrische formule met behulp van de gegevens van de standaard atmosfeer, dat betekent dat is niet waar in ieder geval, maar voor niet-nauwkeurige toepassingen volstaat. Voor meer precieze toepassingen moeten we gebruik van temperatuur en druk, met behulp van de volgende formule:
H = (((101325 / P) ^ (1 / 5.257) - 1) * (T + 273.15)) / 0.0065
Ik ben niet zeker als deze formule klopt, maar het lijkt te werken. Er is een pagina waar u kunt berekenen van de hoogte van de druk op zeeniveau en de druk en temperatuur op het punt dat u wilt berekenen van de hoogte.
Opmerking: In deze twee formules de hoogte berekend ten opzichte van de zeespiegel, dus als je wilt de hoogte ten opzichte van de grond krijgen je moet meten eerst de hoogte op het niveau van de grond en het aftrekken van de volgende maatregelen.