PCB Quadrotor (borstlösa) (13 / 20 steg)
Steg 13: Återkopplad reglering
1. störningar som vind och icke-idealities som skillnader i motorer och propellrar orsaka verkliga dynamiken vara bullrig och rörlig. Direkta kommando kartläggning tar inte hänsyn till dessa, och vårt sinne, ögon och händer kanske inte tillräckligt snabbt för att reagera på dessa i realtid, särskilt på en liten quadrotor.
2. vi vill quadrotor till har en viss grad av "autonomi". Särskilt, skulle det vara trevligt om quadrotor kunde själv-nivå, återvänder till nästan horisontellt när vi kommandot noll pitch, rulla och yaw. Vi befallande quadrotor att rotera med direkt mappning, men det kommer inte att veta för att återvända till horisontella när vi är klara.
Det är där feedback kontroll kommer in. Trots dess komplexa matematiska notationer är begreppet feedback kontroll enkel. Tänk dig tvätta händerna i ett handfat som du aldrig har använt innan. Du ange kran vredet till vissa mellanposition. Om vattnet är för kallt, slår du. Om vattnet är för varmt, slå dig ner. Hur mycket du vända den upp eller ner beror på hur varmt eller kallt det är jämfört med dina önskemål. Om vattnet börjar kalla, men sedan snabbt värmer upp, du kan preemptively Vrid vredet tillbaka ner till hindra den från överskridande och bränna dina händer. Alla dessa begrepp är matematiskt formaliserad i reglerteknik.
Återkopplad reglering på en Quadrotor:
En gemensam struktur för feedback kontroll kallas PID (proportionell-Integral-derivat) kontroll. Den sak att styras är i detta fall vinkeln (pitch, rulle eller gir vinkel) quadrotor. Detta motsvarar temperaturen på vattnet i handfatet. Med ingen indatakommandon försöker vi kontrollera vinkeln för att vara noll. Dock kan vi också kommandot en noll vinkel att göra quadrotor flytta. De kommandon som vi skickar till motorerna är baserade på fel mellan den vinkel som vi vill och vi har faktiskt, mätt som IMU.
- Proportionella (P): kommandot är proportionell mot hur mycket vinkelfel som vi har. Det bidrar till återgå quadrotor till noll vinkel, eller skjuta den till vilken vinkel du kommandot.
-Integral (I): Kommandot är proportionell mot den ackumulerade fel över tiden. Det kan hjälpa till att bekämpa störningar som vind eller asymmetriska motor prestanda. Jag använder inte detta på min quad, även om jag lämnade platshållare koden för det i det Arduino projektet.
- Derivat (D): kommandot är proportionell mot graden av förändring av fel *. Det motstår motion och det håller vinkeln från överskridande målet.
Mass-våren-spjället analogi:
Effekterna av PD kontroll (ingen integrerad term) på en quadrotor liknar att lägga till en virtuell våren och virtuella spjäll (stötdämpare) till quadrotor, som är massan. Se den första bilden för en grafisk presentation av detta. Våren styvheten är som en konstant, Kp, "proportionell gain". Den dämpning som anges av en annan konstant, Kd, "härledda gain". Önskad vinkel, θr, definierar den vinkel vid vilken fjädrarna jämnt sträcks. Tänk dig fästa fjädrarna på en lös bräda, och roterande plankan för att kommandot quadrotor att gå till en viss vinkel.
-Ökar Kp skjuter quadrotor mot referens vinkeln snabbare, men kan också resultera i mer överskridande och svängning.
-Öka Kd saktar ner andelen rotation av quadrotor, men kan också fukten ut svängningar.
Observera att vinster kan ökas till en punkt där denna modell går sönder. Om Kp, Kd, eller båda är för höga, börjar registeransvarige utvidga buller, vilket leder till svängningar och instabilitet. Dessa svängningar tenderar att vara på en snabbare frekvens än svängningarna som skulle ses från en hög Kp:Kd förhållandet. Om du ser snabba svängningar, är det bästa att göra Sänk både vinster.
Tuning vinster tar praxis och erfarenheter, och beror på din exakta bildrutan och flygande preferens. En riktigt bra guide till PID tuning för multirotors, med video exempel som visar olika typer av svängningar, kan hittas här. Förhoppningsvis kommer hjälper våren/spjäll analogin dig att tänka på vinsterna som intuitivt.
* Egentligen, i praktiken är det ibland lättare att använda den uppmätta klassa av rotation direkt, istället för att försöka mäta graden av förändring av felet. Felet bara finns i programvara och computing derivatan av det kan vara högljudd. Praktiskt sett med den uppmätta klassa av rotation direkt från gyrot fungerar alldeles utmärkt. Mappa det in massa-våren-spjället analogi, är dämparna anslutna till jord (noll vinkel) i stället för till plankan. I den här konfigurationen de motstå alla rotation, även befallde rotation.
Pitch, rulle och Yaw styrenheter:
Quadrotor faktiskt har tre oberoende feedback styrenheter, en vardera för pitch, rulla och yaw. Gasspjället är direkt mappade till alla fyra motorer med någon feedback kontroll i denna quadrotor. Med höjd-sensor, kunde en fjärde feedback controller läggas.
Pitch och rulla styrenheter är PD styrenheter som stämmer exakt med den första bilden. I den mån quadrotor är symmetrisk, bör pitch och rulle vinster vara samma. Utgångarna från proportionellt och de härledda vinsterna summeras ihop och skickas till motorerna genom kommandot matris i föregående steg. Den andra bilden visar de pitch och rulle PD registeransvariga i block diagram form. Variablerna är:
Kp - proportionell vinst
Kd - derivat vinst
Θr - referens/kommandot vinkel
Θ - mätt vinkel från IMU
Ω - uppmätta klassa av Rotation från IMU.
y - kommandot utdata.
Yaw styrenheten baseras endast på takt, så det inte stämmer exakt med bilderna. Felet är bara skillnaden mellan de befallde girningshastighet och den uppmätta girningshastighet från IMU. Magnetometer i IMU kunde användas att mäta absolut gir vinkel för att genomföra en fullständig PD controller, men jag har inte provat detta ännu.