Vraag:
Wat doet Feed Forward en hoe werkt het?
Klystrom
2020-04-18 16:13:18 UTC
view on stackexchange narkive permalink

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?

Drie antwoorden:
FlashCactus
2020-04-18 18:07:08 UTC
view on stackexchange narkive permalink

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.

Kenn Sebesta
2020-04-18 19:58:17 UTC
view on stackexchange narkive permalink

30.000 voet weergave van feedforward als algemeen concept

  • 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.

Feedforward in drones

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.


Achtergrond

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.

Zonder feedforward

Hier is een diagram van een Rol PID zonder Feedforward .

Feedback example

  1. Je hebt een bepaald rolinstelpunt (dwz gewenste rol)
  2. Je vergelijk het instelpunt met de gemeten rol en krijg de fout
  3. Je vermenigvuldigt die fout door waarden af ​​te stemmen (K_p, K_i en K_d) om een ​​controlereactie te genereren
  4. Je past die controlereactie toe aan het systeem en kijk hoe het systeem reageert
  5. GOTO (1)

Met 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 .

Feedforward example

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.

De afgeleide term in Betaflight wordt niet berekend uit het foutsignaal in het bovenstaande diagram, maar uit het gyro- of terugkoppelingssignaal. Het bovenstaande diagram is in dat opzicht onjuist. Het bovenstaande foutsignaal bevat al de setpointwijziging; in het bovenstaande diagram, en als Feed Forward daadwerkelijk werd geïmplementeerd zoals hierboven, zou de setpointwijziging tweemaal worden toegepast. Dus we doen het niet zo. In vroege versies van Betaflight werd de afgeleide berekend op basis van fouten, maar nu wordt het puur berekend op basis van het gyro- of feedbacksignaal.
Het diagram is niet gerelateerd aan Betaflight. Het is gewoon een overzicht op hoog niveau van wat een generieke FF doet. Er is een grote hoeveelheid werk die de problemen aanpakt die voortvloeien uit het gebruik van een D-term, en volgens u klinkt het alsof vroege versies van Betaflight die klassieke problemen tegenkwamen. Een pluim voor de ontwikkelaars voor het vinden van een meer geoptimaliseerde oplossing.
anonymous2
2020-04-18 17:22:29 UTC
view on stackexchange narkive permalink

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!



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 4.0-licentie waaronder het wordt gedistribueerd.
Loading...