PID-afstemming omvat P, I en D-winsten om de quad te helpen RC-commando's te volgen.
Elke keer dat er een fout is, zou P de quad "pushen" om de fout te verminderen. Dus hoe komt Feed Forward om te spelen?
PID-afstemming omvat P, I en D-winsten om de quad te helpen RC-commando's te volgen.
Elke keer dat er een fout is, zou P de quad "pushen" om de fout te verminderen. Dus hoe komt Feed Forward om te spelen?
De manier waarop de PID-controller werkt, is wanneer de werkelijke rotatiesnelheid van de quadrocopter niet gelijk is aan het instelpunt , of de gewenste rotatiesnelheid (die u instelt door de stokjes te bewegen), stuurt deze een signaal naar de motoren om te compenseren en de snelheid dichter bij het instelpunt te brengen.
Dit signaal is een som van vier termen : de P, I, D en FF. Omdat het een som is, kun je ze zien als elk afzonderlijk de quad in een bepaalde richting duwen, waarbij sommige termen optellen en andere elkaar tegenwerken.
De P-term is het verschil tussen het instelpunt en de werkelijke snelheid , vermenigvuldigd met de P versterking . Dus de hoeveelheid kracht die wordt uitgeoefend door de P-term is recht evenredig met dat verschil. Je kunt het zien als een veer die de quad probeert terug te bewegen wanneer deze uit positie wordt gestoten. Hoe verder hij wordt bewogen (groter verschil tussen instelpunt en werkelijke snelheid) en hoe stijver de veer (grotere P-versterking), hoe sterker hij zal trekken.
De reden waarom de FF-term nodig is, is omdat het signaal dat de uitgangen van de PID-controller beïnvloeden de acceleratie , niet de snelheid rechtstreeks. Dit betekent dat de quad niet meteen op snelheid komt, maar het duurt even, afhankelijk van hoe hard hij zichzelf pusht. Dus als je een manoeuvre scherp wilt beginnen, wil je dat de quad veel kracht in die richting uitoefent om op gang te komen en dan de rotatie met een kleinere kracht volhoudt.
De PID-regelaar is echter bedoeld om te stabiliseren. Het maakt geen onderscheid tussen het stoten van de stick en het uit positie stoten van de quad door een obstakel of windvlaag. Dus als je de stick beweegt, "stabiliseert" hij zichzelf op de nieuwe snelheid alsof je de stick helemaal niet bewoog en in plaats daarvan ergens tegenaan stootte. U kunt het verplaatsen van de stok zien als het verplaatsen van het andere uiteinde van de veer waaraan de quad is bevestigd. Het maakt de veer niet uit welk uiteinde werd verplaatst, alleen dat de lengte ervan veranderde. Dit betekent dat de PID-controller niet zoveel kracht zal uitoefenen om de rotatie te starten als mogelijk zou kunnen, wat betekent dat het enigszins traag is om te versnellen wanneer u de stick beweegt, en, nog belangrijker, langzamer om te vertragen wanneer u de stick beweegt. blijf terug naar het midden (en kan zelfs doorschieten).
Je kunt de reactie sneller maken door de P-versterking te verhogen, maar tot op zekere hoogte, aangezien hogere P-winsten leiden tot oscillaties, wanneer de bewegingen van de quad leiden tot grote P-termen die op hun beurt grotere bewegingen veroorzaken, enzovoort.
Dus in plaats daarvan werd de FF-term toegevoegd. De FF-term houdt helemaal geen rekening met de huidige rotatiesnelheid, dus het draagt niet bij aan de stabiliserende werking van de PID-lus en kan dus geen oscillaties veroorzaken. Het enige waar het naar kijkt, zijn de stokken. De kracht die wordt uitgeoefend door de FF-term is evenredig met de snelheid waarmee u uw stick beweegt (vermenigvuldigd met de FF-winst). Dus als je bijvoorbeeld een worp start en de stick naar rechts stoot, zal de FF-term de snelle stickbeweging detecteren en een uitbarsting van kracht geven om de quad aan de gang te krijgen. Als je dan klaar bent met rollen en je stick weer in het midden plaatst, zal de FF-term de tegenovergestelde snelle stickbeweging detecteren en een overeenkomstige kracht uitoefenen, waardoor de PID-controller de rotatie van de quad sneller stopt en doorschieten wordt voorkomen.
Feedforward : ik geef je een gesloten doos en je verwacht dat deze zwaar zal zijn, jezelf in voorbereiding. Uw controle over de doos is snel en nauwkeurig.
Feedforward-fout : ik geef u een doos en deze is veel zwaarder dan je had verwacht. Uw controle over de box is slordig totdat u opnieuw kalibreert en erachter komt hoeveel hij weegt.
Geen feedforward : wanneer uw ogen gesloten zijn en u weet is dat ik je iets ga overhandigen. Het kan een heliumballon zijn, het kan een vaatwasser zijn. Je weet niet of je armen omhoog of omlaag worden getrokken, en dus reageer je traag.
In in het geval van een drone die aan het rollen is, laat een feedforward-term je anticiperen dat je enige rolcontrole nodig hebt, zelfs als je nog niet precies weet hoeveel . Met populaire vluchtcontrollers kunt u dus een bepaalde hoeveelheid feedforward toevoegen om sneller op invoer te reageren.
Feedforward werkt erg goed in de juiste hoeveelheden. In een systeem als een drone, waar het constant in beweging is en er geen echte langetermijnstabiliteit is, kan feedforward de reactietijd echt versnellen en de nauwkeurigheid verbeteren. De duivel zit echter in de details, aangezien elke combinatie van casco, motoren, propellers en atmosferische omstandigheden een andere optimale feedforward zal hebben.
Als gevolg hiervan zijn er talloze manieren om feedforward te implementeren, en daarom is er geen algemeen advies voor hoe u het goed kunt afstemmen. Een andere poster is gelinkt aan https://github.com/betaflight/betaflight/wiki/Feed-Forward-2.0, en ik beschouw dat als een goede bron over pathologieën die kunnen worden ervaren met Beta Flight. Andere FC's hebben hun eigen pathologieën, u zult moeten experimenteren.
Dit is in de basis een controlevraag. In de wereld van klassieke bedieningselementen [*] was de PID koning. Het blijkt dat simpele dingen weigeren te sterven, en tot grote ergernis van controlerende onderzoekers wereldwijd is de PID nog steeds koning. Schrijf erop dat het gemakkelijk te begrijpen en af te stemmen is voor veel systemen, zelfs als het niet erg goed is.
Hier is een diagram van een Rol PID zonder Feedforward .
Feedforward heeft al die onderdelen, behalve dat het toevoegt een nieuw element, dat is de voorspelde besturing op basis van de verwachte rol. Hier is een diagram van een Roll PID met Feedforward .
Merk op dat er een nieuw pad naar de controle is, dat volledig onafhankelijk is van de fout. Daarom heet het feedforward . Dit pad houdt eenvoudigweg rekening met het gewenste resultaat en past blindelings een daarop gebaseerde controle-input toe.
[*] Het tijdperk van moderne controles begon in 1958 met de publicatie van Pontryagins revolutionaire theorie over optimalisatie, gevolgd door R. Kalman's nu alomtegenwoordige schattingsfilter. Lees http://www.uta.edu/utari/acs/history.htm voor een volledige geschiedenis.
Ik ben verre van een expert op dit gebied ... maar er is een goed artikel hier op Github dat het goed uitlegt.
In wezen is feedforward een factor wat de respons van de stick vergroot - een beetje zoals P, behalve dat FF de drone niet laat wiebelen op hoge niveaus. Ik citeer:
FeedForward (FF) is een drijfveer die het reactievermogen van de stick vergroot. Het is evenredig met de momentane afgeleide of 'veranderingssnelheid' van de stickbeweging. Hoe sneller de stokken bewegen, hoe meer FeedForward we krijgen. FeedForward helpt P de quad in bochten te rijden. In tegenstelling tot P kan FeedForward geen oscillatie veroorzaken, ongeacht hoeveel FF wordt toegevoegd.
Met FeedForward krijgen we een betere stickresponsiviteit zonder P zo hoog te duwen dat we wiebelen veroorzaken. Het vermindert ook de vertragingstijd tussen invoer en respons. Minder vertraging betekent minder fouten en minder opwinding / doorschieten. Het is geweldig voor racen, LOS en radicaal freestyle vliegen. Het is niet geweldig voor filmische HD.
Ik hoop dat het helpt!