Mini quadkopter építési, repülési, versenyzési tapasztalataim, tippek, tanácsok

Zsolesz FPV

Zsolesz FPV

PID Tuningolás a gyakorlatban

2015. október 09. - ZsoleszFPV

Erről a témáról már többször írtam és említettem, hogy az egész quad témának az egyik legképlékenyebb területe. Sokat olvastam utána, de teljesen nem értettem meg egészen addig, amikor is először végigcsináltam saját magma nulláról a gépem tuningolását. Akkor már sok minden összeállt. Nem mondom, hogy profi vagyok, de talán tudok néhány érthető tanáccsal szolgálni a hasonló gondokkal küzkődőknek.

A PID egy vezérlési logikai mechanizmus, amely bizonyos paraméterek alapján módosítja a visszacsatolási ágakat, ezáltal befolyásolva a vezérlési láncot és lényegében a vezérlő viselkedését (és persze a quadunk repülési tulajdonságát). A Proportinal, Integral és Derivative fogalmak sokaknak (köztük nekem is) nem sokat mondanak néhány elvont matematikai kifejezésen kívül. Lejjebb megpróbálom elmagyarázni, hogy mit is jelentenek ezek.

pid-quadcopter.jpg

forrás: blog.oscarliang.net

Először azonban a PID tuningolásról. A PID-eket hatékonyan csak Rate/Acro/Manual módban tudjuk tuningolni. Aki még nem érzi magát biztosnak ebben a módban, az inkább használja a CleanFlight – egyébként egész jó – alapbeállításait, vagy keressen a neten egy a sajátjához hasonló konfigurációhoz tartozó beállítást és egyelőre használja azt.

Hozzáteszem, nem kell tudni profin Rate módban repülni, elég, ha egy nagyobb területen (réten, placcon) viszonylag kordában tudjuk tartani a gépet. Nem kell kanyarodni, trükközni, elég nagyjából egy helyben tartani, kisebb ide-oda mozgásokat végezni vele.

A CC3D-OpenPilothoz van egy kezdők számára is elég jól használható metódus, arról korábban már írtam. A CleanFlight esetébene is van egy AutoTune névre hallgató kísérleti funkció, de amit olvastam róla, az alapján tényleg csak a nagyon bátrak próbálják ki és ők is csak valami kihalt helyen, saját felelősségre.

 

Mit csinál a P-I-D?

A dolog lényege nem olyan bonyolult. A legfontosabb, hogy a következőket megértsük.

P: azt adja meg, hogy a vezérlő milyen agresszívan próbálja elérni azt a szöget/irányt, amit távirányítóval megadtunk neki.

I: azt adja meg, hogy milyen erősen, szilárdan tartsa a beállított szöget/irányt/állást

D: ellentételezőként működik elsősorban a P-vel szemben. Kicsit úgy, mint bejárati ajtókon a hidraulika, ami nem engedi, hogy az ajtó nagy erővel visszacsapódjon, vagy hirtelen meg lehessen rántani, hanem kicsit ellentart, hogy finom legyen a mozgás.

CleanFlight PID Controllerrek

A CleanFlight Configuratorban a PID beállításoknál több PID Controller, azaz PID vezérlési logika között választhatunk. A legelterjedtebb az 1-es és 2-es PID Controller alkalmazása. Ha fogalmad sincs, hogy most miről beszélek, akkor válaszd ki a PID Controller 1 (Multiwii - Rewrite) beállítást a legördülő menüből.

Ezt a Controllert azért is szereték, mert egy viszonylag széles beállítási tartományban is abszolút repülhető, kezelhető a gép vele. Ráadásul az alapbeállításai is elég jók a legtöbb Mini H Quad számára.

PID tuningolás a gyakorlatban

A tuningolás megkezdése előtt még a Rate értékeket is érdemes megnézni. A RC Rate, azaz a külön állítható Pitch/Roll/Yaw Rate-ek finomhangolása is befolyásolja a repülési élményt és a gép irányíthatóságát. Megint csak azt mondom, ha nem ismerősek ezek a fogalmak, hagyjuk őket alapbeállításon, abból még nem lett baj.

Ha fentieket megértettük, akkor következhet a gyakrolati alkalmazás.

 Valamilyen PID állítási metódust kell választanunk az alábbiak közül:

  • Számítógép csatlakoztatása USB-n, vagy Bluetooth modulon keresztül és konfigurátoron keresztüli állítás. Jól átlátható, de lassú, macerás.
  • A CleanFlight Configurator Adjustments fülében a távvezérlő kapcsolóit felkonfiguráljuk, hogy azokkal tudjuk akár menet közben állítani a PID értékeket. Ez egy elég jó megoldás, a gond csak az, hogy állítgatás közben nem látjuk az aktuális értékeket.
  • MinimOSD-n keresztül az FPV monitoron látva az értékeket a távvezérlő joystickjaival tudjuk az értékekt állítnai. Nekem ez az abszolut kedvencem. A megvalósításról majd később írok még egy bejegyzést.

1. Első lépésben nullázuk le a Roll/Pitch/Yaw I és D értékeket. A P értékeket vegyük relatív alacsonyra (mondjuk 3-3-6 érétkekre) Figyelem, így a quad eléggé vándorolni fog, kenődős lesz a mozgás, szóval folyamatosan korrigálni kell és ezért is kell neki egy méretes terület. Ha nagyon nem bírunk vele, akkor az I értéekekt feljebb vehetjük nulláról, de továbbra is csak egy alacsony értékre.

2. Kezdjük el az egyik (Pitch vagy Roll) P értéket növelni. Repülés közben váltogassuk az irányokat az adott tengely mentén ide-oda. Néha adjunk neki egy gázfröccsöt. Észrevesszük, hogy a gép egyre határozottabban, agresszívebben reagál. Eljön az a pont, amikor az irányváltásoknál, illetve a gázadásoknál elkezd oszcillálni. Ezt először a motorok hangján, majd a gép mozgásán is látjuk. Ezt a pontot keressük. Egyes leírások szerint a hirtelen váltás utáni 2-3 rezgés elfogadható, mások azt mondják, egy kicsit innen vegyük vissza a P-t, kb. 10-20%-nyit, de van aki egyenesen 40-50% korrekciót javasol (attól a ponttól, amikor már folyamatos az oszcilláció). Én a 10-20%-ot egészségesnek tartom, ami egyébként kb. az lesz, mint amikor nagyon hirtelen váltásnál egy-két oszcilláció bejön, de aztán el is tűnik.

Ha az egyik tengellyel megvagyunk, jöhet a másik (Roll vagy Pitch) a feladat ugyanaz.

3. Ha a P értékeket fentiek szerint belőttük, jöhet az I érték. Szintén tengelyenként kezdjük el növelni az I értéket. Érezzük, hogy az adott tengelyen kezd megszűnni a bizonytalanság, a gép egyre stabilabban tartja a beállított szöget. Növeljük, amíg nem tapasztalunk rendellenességet. Mikor túl magas az I? Itt is jelentkezhet oszcilláció de alacsonyabb frekvencián. Valamint egy nagyobb gáz után, ha vissza vesszük mondjuk 30%-ra és engedjük lefelé jönni a gépet, akkor elkezd imbolyogni, beremegni. Ha ezt látjuk menjünk vissza 10-20%-ot és jók vagyunk.

Itt is jöhet a másik tengely és már jók vagyunk.

4. Most jön a D érték. A D érték növelése kompenzálni fogja azt az esetlegesen még meglévő rezgést, amit a P érték beállítása után a hirtelen mozudlatoknál még láthattunk. Ha felhúzzuk a D-t, akkor a quadnak határozottan be kell állnia az irányba és a hirtelen váltás után mindenféle rezgés, hezitálás nélkül azonnnal át kell állnia a másik irányba, ugyanilyen határozottan. A D interakcióban van a P-vel, így előfordulhat, hogy kicsit újra a P-hez is hozzá kell nyúlnunk, hogy a megfelelő egyensúlyt megtaláljuk. Ha a D túl magas, akkor a gép lomha lesz, hezitálva követi az utasításokat, furcsán repül.

5. Ha a Roll és Pitch tengelyek P, I és D beállításavail megvagyunk, akkor a jó hír, hogy már sokkal stabilabban repül a gép, jóval könnyebb lesz a tuningolás folytatása. Most már csak a Yaw tengely van vissza. Itt is a P érték növelésével kezdünk és mindaddig növeljük, amíg nem tapasztaljuk, hogy hirtelen 180, illetve 360 fokos fordulók után a gép megugrik, nem tartja a magasságt, esetleg berezonál. Ha elérjük ezt a pontot, akkor szokás szerint 10-20% vissza és jók vagyunk. Jöhet tehát az I érték. Itt egy javaslat szerint átlós iráníú repülés közben figyeljük, hogy a gép elfordul-e picit a Yaw tengely mentén. Ha igen, azaz nem tartja az irányt, növeljük az I-t, egészen addig, amíg már szépen tartja a Yaw szöget. Végül jühet a D. D-nél nem szoktak nagy értéket megadni a Yaw esetében 2-5 között számokat láttam. Ez is a P értékből esetlegesen még megmaradó kis ugráls kompenzálására kellhet.

Végül, nincs már hátra, mint elkezdeni repülni. A valós repülés közben még kijöhetnek aprób hibák, rezgések, megugrások, túlkompenzációk, amik az értéket finomhangolását igényelhetik, de jó eséllyel ezen beállítások után egy nagyon jól repülhető kis gépünk lesz.

Én azt tapasztaltam, hogy a gyári beállításokhoz képest sokkal szilárdabb lett a gép, sokkal pontosabbak lettek a kormánymozdulatok és jobban megy a repülés.

Az igazi "nagykirályok" a CleanFlight BlackBox funkcióját használva nézegetik a PID értékek grafikonjait és abból igyekeznek kibogozni, hogy mit kellene még hangolni. Ez már egy elég haladó szint, ahova én is csak sokára fogok megérkezni.

Remélem azért segíthettem. Kérdéseket és kommenteket szívesen látok. Jó repkedést!

Használt források:

 http://blog.oscarliang.net/understanding-pid-for-quadcopter-rc-flight/

 http://myfirstdrone.com/tutorials/how-to-tune-a-quadcopter/

 http://blog.oscarliang.net/quadcopter-pid-explained-tuning/

 Tipikus Quad viselkedési formákat demonstráló videó: https://www.youtube.com/watch?v=YNzqTGEl2xQ

A bejegyzés trackback címe:

https://zsoleszfpv.blog.hu/api/trackback/id/tr667878638

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Atis P. 2015.10.10. 12:13:31

Tudnál írni egy pár beállítást? Illetve, hogy az "alacsony" érték mit is jelent pontosan?
Attitude módban felesleges a PID-ekkel játszani?

ZsoleszFPV 2015.10.10. 15:28:55

@Atis P.: Szóval sorban: 1. Hamarosan posztolom majd, mire jutottam a PID-ekkel. Most még nem tökéletes a dolog, de sokkal jobb, mint volt. 2. Az alacsony érték a gyári alapbeállításoknál jóval alacsonyabbat jelent. P esetén mondjuk 2 alatt, I esetén 0.15 alatt, D esetén 5 alatt (yaw-nál D inkább 0, vagy 1). 3. Az Attitude PID-ekkel is érdemes játszani, ha Attitude módban akarsz repülni. Viszont a CelanFlight nem erre van kihegyezve és nem is tudom pontosan, hogy hogy kezeli a paraméterekt. Például a CC3D esetén voltak "Inner" és "Outer" PID-ek. Rat-ben csak az Inner számított, viszont Attitudeban hozzáadódott az Outer is. Szóval, ezt nem tudom. Hiszen az FPV versenyzéshez úgy is Rate/Acro mód kell, szóval az Angle/Attitudenak csak az első egy-két hétbn van jelentősége. Arra meg jók az alapbeállítások.

krisztianfz6 2017.01.31. 18:04:02

Szia!
Tudnál nekem abban segíteni, hogy a naze32-nél mit állítsak, hogy a quadcopter a tengelye körül gyorsabban forogjon, és közben ne màsszon el, tartsa az adott pozíciót?
Nagyon jó az oldalad, sokat segítettél.

ZsoleszFPV 2017.02.01. 12:25:21

@krisztianfz6: Nem a Naze32 a lényeg, hanem, hogy milyen szoftver (firmware) fut rajta? CelanFlight/BetaFlight/BaseFlight? Az igaz mondjuk, hogy a Te kérdésednél a válasz elég hasonló minden esetben.
A másik kérdés, hogy melyik tengelye körül forduljon el gyorsabban? Mert ugye 3 van a drágának. :)
Próbálok erre is univerzális választ adni:
A forgási sebesség a "Rate" értéktől függ. Tengelytől függően van Roll, Pitch és Yaw rate. (Szerintem a Te kérdésed a Yaw-ra vonatkozik). A Rate érték növelésével tudod emelni az adott tengely maximális forgási sebességét.
A sebességet még befolyásolja az Expo. Hiába van ugyanis egy magas Rate, ha erős Expo van és az irányítókart csak kicsit mozgatod el, akkor relatív lassan fog fordulni a gép. (A kar teljes kitérésekor viszont mindig a maxmiális beállított Rate érték érvényesül).

A pozíció tartás a PID -ek közül az I érték kezeli. Tehát amelyik tengelyen úgy érzed, hogy elmozdul, ott emeld némileg az I értéket.

Viszont előtte ellenőrizd le, hogy távirányítódról biztosan pontosan középértéket (1500 us) kap-e a vezérlő! Mert, ha a távod pontatlan és mondjuk 1490-et küld középállásban, akkor csinálhatsz akármit az I-vel, mindenképpen lassan, de biztosan forogni fog, hiszen ezt a parancsot kapja a távirányítótól.

krisztianfz6 2017.02.26. 19:44:39

@ZsoleszFPV: Köszi szépen a választ. Most a full verzió barométerével küzdök. Erre van valami tipped a beàllítàsàt illetően? Ugrál fel-le kb 1 métert is. Gyakorlatilag jobban tartja a magasságot e nélkül.

DOGMAN · http://kutyasagok.blogspot.com 2017.09.05. 11:46:00

Szia!

Több nap próbálkozás után fordulok hozzád:
Építettem (először csak brushed, majd később jönnek a nagyobbak) egy mikroquad-ot.
SPRacing F3 EVO Brushed v2 FC, 8520-as motorok, 55mm-.es QX90 propellerek, 3D nyomtatott kis váz.
A PID hangolással odáig jutottam, hogy minden tengelyen tűrhető, de a folyamatosan lassan fel-le oszcillál a gép. Angle módban nagyjából helyben is marad, viszont nincs olyan gázkar állapot amivel kb egy magasságon maradna, bármilyen irányban elindulásra, vagy forgásra azonnal elkezd süllyedni, sőt magától is, aztán a padló felett pár centivel felemelkedik, majd újra le míg bele nem verődik a padlóba :)
úgy látom, hogy nem ad gázt magától ha kellene: elinduláskor. Vagy ezt nekem kell folyamatosan kezelni? Van erre beállítás Betaflightban?
Belinkelem a konfigom hátha segít:
docs.google.com/document/d/1q_qi2Ev7SfehK2X2Ogzw6DnMc3MuM7h1vqpGfHqwKSw/edit?usp=sharing

ZsoleszFPV 2017.09.05. 21:36:49

@DOGMAN: Szia! Amit leírsz, az teljesen normális viselkedés, Ha megdöntöd a koptert bármelyik irányba, akkor a motorok felhajtó-erejének egy része az oldal irányba mozgásra fog elmenni, így kevesebb erő marad az emelésre. Ezért a gép elkezd süllyedni. Ezt Neked kell kompenzálni. Ha bármely irányba megdöntöd a gépet, akkor több gázt kell adni. Minél jobban megdöntöd, annál több gázt. Ha pedig visszaáll semleges pozícióba, akkor el kell venni némi gázt. Ezt hívják gáz-menedzsmentnek és ez egy alapvető technika, amit elsőként kell megtanulni mindenkinek. A jó hír, hogy megtanulni könnyű, de a mesterévé vállni nagyon sok gyakorlást igényel. :)

DOGMAN · http://kutyasagok.blogspot.com 2017.09.06. 07:11:14

Közben kinyomoztam: az alt PId-et csak barométer megléte esetén használja. Szóval marad agáz menedzsment. :)
Görbét kell majd csinálnom hozzá a távban, mert kb 1 mm-es mozdulaton múlik jelenleg (lineáris most a gázkimenet a Taranison), hogy földbeveri magát vagy felfele elszáll. Kicsit eltolom oldalra a gázkart valamennyit mozdul és már esik is le. Azt is próbálgattam, hogy "gázfröccsökkel" nagyjából szinten tudom tartani... Köszi az infót.

DOGMAN · http://kutyasagok.blogspot.com 2017.09.07. 10:46:44

Írok még ide, hogy ha másnak is ez a kérdése akkor meglegyen :)
Két változót találtam Betaflightban (3.1.7) ami a magasságot manipulálja:
A p_alt, i_alt, d_alt a barométer alapján vezérli a magasságot, viszont a p_level, i_level, d_level az accelerométer alapján.
Utóbbi alapértelemzett értékei: 0,0,200 tehát nagy semmit csinál, hiszen befolyásolja a pitch, yaw, roll vezérlést is.
Kipróbáltam, emeltema p-n, és az i-n, a d-t pedig lecsökkentettem, most meg nemmondom fejből mennyire, szépen oldalra elinduláskor gázt ad magától, és a fel le liftezés is lelassult, bár még nem az igazi, és mint írtam visszahat a többi PID-re is, de javult sokat.
Azt hiszem a Taranishoz elérhető telemetrián keresztüli lua scriptet fogom most majd módosítani hogy "terepen" is lehessen módosítani ezeket az értékeket is. Mert jelenleg usb kábelen módosítmom próba majd újra...
süti beállítások módosítása