Sensor integratie voor zelfbouw drone

Reserveer de 4e editie van 'Dronefotografie'

duck

New Member
Lid geworden
17 dec 2020
Berichten
2
Waarderingsscore
0
Punten
1
Leeftijd
33
Locatie
Nederland
Goedemiddag,

Ik zit er naar te kijken om zelf een drone te bouwen als hobby project. In plaats van een kant en klaar pakket zoals MultiWii te gebruiken voor sensor integratie lijkt mij het leukste om dit zelf te doen. Met enige programmeerkennis en een oude Android telefoon met een gyroscoop en accelerometer ben ik te werk gegaan om te kijken hoe ver ik hiermee kom.
Ik ben nu zo ver dat ik aan de hand van de gyroscoop de absolute rotatie kan bepalen (niet super nauwkeurig) en aan de hand van de accelerometer kan bepalen welke van de vier hoeken (waar de propellers gaan zitten - quadcopter) naar beneden hangt om de spanning naar deze propeller omhoog te schalen tot het apparaat weer recht vliegt.

Nu is mijn vraag aan jullie experts wat er nog meer bij komt kijken qua sensor integratie. Kan ik de meetwaarden van de gyroscoop en accelerometer vergelijken om het resultaat extra nauwkeurig te maken? Wat is uberhaupt de functie van de gyroscoop als ik de absolute rotatie ook kan bereken uit de meetwaarden van de accelerometer? Zijn er nog andere sensoren die worden gebruikt om de drone stabiel te houden? Ben ik beter af door simpelweg MultiWii te gebruiken?

Met vriendelijke groet.
 
Een andere onontbeerlijke sensor is de barometer om de hoogte "vast te houden", maar dat had je vast zelf ook al gevonden.
Qua sensoren kun je het verder zo gek maken als je zelf wilt, maar ik zou beginnen met wat je nu al noemt: (verandering van) positie ten opzichte van wat de controller als gewenste situatie uitstuurt.
Heb je eenmaal een vliegende drone, dan kun je na PID optimalisatie ook nog een GPS toevoegen. Gebruik je een Arduino based bordje als platform dan gaat dat al gauw de rekecapaciteit van de processor te boven en zul je een tweede Arduino voor de GPS data verwerking moeten gebruiken en dan via I2C o.i.d. laten communiceren met de "hoofd-Arduino"
Als je het dan nog steeds leuk vindt kun je met ultrasoon de laatste meter van je daling nauwkeuriger maken (zo'n barometer is ook maar een botte bijl als het op centimeters begint aan te komen) en als je ècht helemaal los wilt gaan zou je optische sensoren en eventueel zelfs beeldherkenning kunnen toepassen. Dan hebben we het gebied van C++ programmeren in de Arduino IDE allang achter ons gelaten, natuurlijk. Maar als je dat allemaal als hobby kunt, dan werk je bij de verkeerde baas. Dan had je bij DJI moeten werken en gewoon met echte prototypes mogen spelen ;)

Overigens: In mijn voorstelrondje heb ik indertijd aangegeven hoe ik via zelfbouw hier terecht gekomen ben
Hier het prille begin:
En hier het vervolg:
(Voor een beeld over mijn beperkte kennis op dit gebied)
 
Ah, dankjewel!

Ik denk dat ik het beste in babystapjes kan werken omdat er bij het geheel natuurlijk best veel verschillende dingen komen kijken. Een luchtdruk sensor om de hoogte te bepalen lijkt mij een goede tweede stap nadat het apparaat zichzelf in de lucht weet te houden.

Waar ik nu tegen aan loop is dat ik niet weet waarvoor de gyroscoop wordt gebruikt. Als ik de absolute (3-dimensionale) rotatie van de drone kan bepalen met een accelerometer, en de absolute horizontale orientatie d.m.v. een geomagnetisch veld sensor, wat is dan het nut van de gyroscoop? Ik heb het gevoel dat ik iets cruciaals over het hoofd zie :rolleyes:.
 
Klopt (dat je iets over het hoofd ziet ;))
Een accelerometer meet alleen lineaire versnellingen, en gyroscoop meet rotatievesnellingen - ieder om 3 assen. Ze zijn beide nodig om een stabiele vlucht te kunnen verkrijgen. De gyroscoop misschien nog wel meer dan de accelerometer. De acc. wordt voornamelijk gebruikt om de richting van de zwaartekrachtsversnelling te meten. Door een verschilberekening met de eerste meting bij opstarten te doen kun je grofweg bepalen of het toestel zich bovensteboven bevindt. Met name als de hoekafwijking van de gewenste "perfect level attitude" maar gering afwijkt, komt de ruis op het signaal door trillingen sterker door dan de feitelijke afwijking. Zo erg, dat het er niet meer uit te filteren is. Dus juist voor die situatie ben je afhankelijk van je gyroscoop die je vertelt hoe snel je om welke as draait. draai je om de X-as, dan moeten de voorste en achterste paar motoren daarop reageren; draai je om de Y-as, dan zijn het juist de linkse en rechtse motor paren. En draai je om de Z-as, dan wordt de ractie daarop verdeeld over de twee "diagonaal paren", als dat een woord is.

Uit de versnellingsopnemer's signalen zou je ook kunnen opmaken of je een versnelling (en daarmee, geïntegreerd naar de tijd, een snelheid en, die weer geïntegreerd naar de tijd, een positie) in de verticale richting hebt (dus een hoogteverandering. Maar waarom zou je een "stoffig" signaal twee keer integreren, als je de gewenste grootheid (hoogte) ook rechtstreeks kunt meten met een barometer? Vandaar dus die barometer. Die hoeft niet per se zo dicht mogelijk bij het zwaartepunt gemonteerd te zitten. De gyro zeker wel en de acc het liefst ook in de buurt.
Overigens: 1mbar=27ft=8.23m hoogteverschil. Ook die sensor begint dus met een referentiewaarde te meten bij het aanzetten van de drone op de home position, in vlakke toestand.

Ik kan je van harte het project van Joop Brokking aanraden: http://www.brokking.net/
Daar vind je eigenlijk alles wat er aan codeer-uitdaging is wel terug; en dat is meer dan je waarschijnlijk vooraf denkt.
 
  • Leuk
Waarderingen: wdejager