Fuzzy regulácia výšky

Desktop_003Jednou z úloh v rámci súťaže Eueropen Robotics Challange bolo navrhnúť výškový regulátor pre model hexakoptéry. V rámci úlohy sme dostali k dispozícii pripravený model hexakoptéry v simulačnom prostredí Gazebo. Úlohou bolo napísať ROS nód, ktorý udrží hexakoptéru vo výške 1 meter nad zemou. Nód mal k dispozícii simulované dáta z jednotlivých senzorov. Konkrétne polohu z vizuálnej odometrie, translačné zrýchlenia a rotačné rýchlosti z IMU jednotky. Naspäť do simulácie boli zasielané príkazy ohľadom ťahu motorov, priečnom a pozdĺžnom náklone trupu hexakoptéry a rýchlosť rotácie kolo zvislej osi.

Túto úlohu sme pojali ako výzvu vyskúšať aplikovať metódy umelej inteligencie, konkrétne využiť Fuzzy logiku. Hlavnou myšlienkou Fuzzy riadenia je popísať systém slovne, pojmami a vetami na základe skúseností pilota alebo nazbieraných experimentálnych dát.

Štruktúru regulátora sme navrhli tak aby postačovalo vyhodnocovanie polohy iba na základe dát z vizuálnej odometrie hexakoptéry. Výsledný regulátor vyhodnotí na vstupe rozdiel medzi želanými a aktuálnymi hodnotami pozície v osiach X, Y, Z a vygeneruje jednotlivé akčné zásahy, ktoré sú aplikované na simulačný model.

model_schema_opr

Pre návrh fuzzy regulátora výšky hexakoptéry bol použitý štandarný Mamdaniho typ regulátora, pričom fuzzyfikácia premenných a návrh pravidiel vychádzala z analýzy experimentálne nameraných dát a skúseností pilota – experta. Pre zjednodušenie boli zvolené jednotkové univerzá trojuholníkových funkcií príslušností, t.j. každá reálna hodnota premennej je upravená na rozsah jednotkového univerza pomocou príslušných váhových zosilnení. Hlavný problém regulácie výšky hexakoptéry (ťahu motorov) je, že jeho vrtule nedokážu generovať záporný ťah. Ak chceme kvadrokoptéru zastaviť v určitej výške, musíme brzdiť ešte pred dosiahnutím tejto výšky, pričom samotné brzdenie je možné iba redukciou ťahu motorov, poprípade ich zastavením. Samotné riadenie výšky je teda balansovaním medzi ťahovou silou motorov a gravitačnou silou. Uvedené skutočnosti boli zohľadnené pri návrhu tabuľky pravidiel fuzzy regulátora.

Samotná aplikácia fuzzy regulátora bola realizovaná pomocou jazyka C++ a knižnice FuzzyLite. Výsledná real-time simulácia je na priloženom videu, kde bola počas letu menená žiadaná výška (0, 1 a 2 metre nad zemou).  Narozdiel od neregulovaného modelu, regulátor drží hexakoptéru v danej výške a na súradniciach X, Y [0,0].

Ján Bačík