Hlavní navigace

Stavíme kvadrokoptéru: nový začátek

8. 7. 2015
Doba čtení: 5 minut

Sdílet

Postavit si kvadrokoptéru může být výborný způsob, jak se zabavit a získat nové komplexní znalosti ze světa programování a hardwaru. Implementovat si můžete velkou škálu řídicích algoritmů, od samotné základní stabilizace a řízení po analýzu videa z kamery. Potřebujete jen chuť a spoustu času.

Toto je úvodní článek k sérii o realizaci kvadrokoptéry s vlastní implementací logiky letu, který je určen pro středně pokročilé zájemce o techniku a IT. Laičtí čtenáři jistě prominou, že se nejedná o detailní popis stavby kvadrokoptéry, experti zase prominou jeho možnou odbornou nevyspělost. Odborné připomínky prosím případně uveďte v diskuzi pod článkem, jistě budou pro mnohé v budoucnu přínosem.

Jako student informatiky jsem se stavbou kvadrokoptéry zabýval poslední dva roky v rámci své diplomové práce. Výsledkem byla kvadrokoptéra pilotovaná joystickem prostřednictvím WiFi sítě, kde jako řídicí jednotku jsem použil nejprve Raspberry Pi, po nějakém čase jsem přidal i Arduino Uno. Účely tohoto projektu pak byly převážně studijní.

Pokud přemýšlíte, že byste se také pustili do stavby kvadrokoptéry, které implementujete vlastní řídicí algoritmy, měli byste nejprve vědět, že je to časově (a relativně finančně) velice náročná věc, která se bude profesionálním produktům spíše více či méně jen přibližovat (záleží, jakou cestou se dáte). Pokud máte touhu získat nové znalosti z oblasti počítačů a HW, je to projekt přesně pro vás. Chcete-li však kvadrokoptéru především pro samotné létání, vidíte se, jak natáčíte video, děláte akrobatické kousky nebo provádíte špionáž u sousedů, asi by pro vás bylo lepší si pořídit hotové řešení.

Každý ví, jak typická kvadrokoptéra vypadá. V rámu jsou čtyři motory s vrtulemi, jejich otáčky regulují čtyři regulátory, tzv. ESC, vždy jeden pro každý motor. Uprostřed v těžišti je umístěn akumulátor a řídicí jednotka. Detailněji je to popsáno v této nedokončené sérii článků: Stavíme kvadrokoptéru s Raspberry Pi a Arduino Nano.

Redakční poznámka: Původní seriál pravděpodobně nebude nikdy dokončen, autor sám ve stavbě už nepokračuje. Tento nový seriál má tu výhodu, že je už předem kompletně napsaný. Nemusíte se tedy bát, že by po několika dílech skončil.

Pokud jste se někdy zamýšleli nad tím, jak kvadrokoptéra vlastně funguje, asi vás napadlo, že pointa jejího řízení spočívá v nastavování výkonu jednotlivých motorů. Představte si, že kvadrokoptéru řídíte joystickem. Nastavení potenciometru na joysticku definuje výkon všech motorů na nějakou konstantní hodnotu. Naklopení joysticku bude tento výkon mezi motory adekvátně přerozdělovat: je-li páka joysticku ve výchozí poloze, všechny motory mají stejný výkon. Potlačením páky směrem vpřed se přidá výkon na zadní straně kvadrokoptéry a ubere na přední. Kvadrokoptéra tedy začne vyvíjet klopení směrem ke své přední části. (Analogicky pak pro posun páky joysticku do jiných směrů a jejich kombinací.)

Kvadrokoptéra je sama o sobě za letu docela vratká. Motory vibrují a jejich tah není nikdy úplně stejný (už jen kvůli nepřesnostem vrtulí). Pokud byste si zkusili kvadrokoptéru stabilizovat v horizontální poloze manuálně, třeba za použití joysticku, asi byste zjistili, že to není ve vašich silách, neboť by se vám ji nikdy nepodařilo hezky srovnat a její oscilace by byly prostě příliš velké pro použitelné létání. Proto potřebuje každá kvadrokoptéra řídicí jednotku.

Řídicí jednotka se skládá z mikropočítače, který využívá tzv. IMU (Inercial Measurment Unit). IMU je nejčastěji realizován čipem s elektronickým akcelerometrem a gyroskopem a slouží k získání náklonu kvadrokoptéry. Ten je velice důležitý, neboť na jeho základě probíhá její automatická stabilizace regulací výkonu jednotlivých motorů a děje se tak přinejmenším stokrát za sekundu. Regulaci výkonu s takovouto frekvencí a jemností člověk manuálně nezvládne. (Uvažte, že i jen lidský zrak vnímá asi jen 24 impulsů za vteřinu.) Proto při řízení kvadrokoptéry, která má plnohodnotnou řídicí jednotku, joystickem definujete náklon, jenž má být dosažen, ale o jeho docílení se už nestaráte.

Chceme-li si řídicí jednotku naprogramovat sami, principiálně nejdůležitější otázka pro nás je, jak na základě náklonu kvadrokoptéry, který získáme z IMU, budeme regulovat výkon motorů. Zjistíme, že zrovna tato část není tak složitá, jak se může zdát. Použijeme k tomu PID regulátor, který má dva vstupy: požadovaný náklon (ten získáme z joysticku) a momentální náklon (ten získáme z IMU). Výstup je hodnota, kterou upravíme výkon motorů. PID regulátor se dá snadno implementovat programově a jsou potřeba celkem tří jeho instance: dva PID pro regulaci náklonu a jeden PID pro regulaci rotace.

Pro pořádek si označme motory kvadrokoptéry jako severní (N), jižní (S), východní (E) a západní (W). Tvoří nám celkem dvě osy: sever-jih (NS) a východ-západ (EW). Jeden PID bude mít na starost osu NS, druhý osu EW. Motory v ose NS se točí opačným směrem, než motory v ose EW. Rozdílem výkonu na motorech os NS a EW se dosahuje rotace kvadrokoptéry, kterou má na starost také jedno PID. Představte si, že uchopíte kvadrokoptéru za vrtule osy NS, které se za provozu budou otáček ve směru hodinových ručiček. Snadno si uvědomíte, že jejich rotace vyvíjí pohyb kvadrokoptéry proti směru hodinových ručiček (princip je stejný, jako u vrtulníku). Bude-li výkon motorů osy NS větší, než osy EW, kvadrokoptéra bude rotovat proti směru hodinových ručiček (Analogicky pak v opačném případě).

root_podpora

Když jsem započal článek tím, že uděláme kvadrokoptéru s vlastními řídicími algoritmy, je to trochu zavádějící. Udělat totiž základní řídicí algoritmy, jako najdeme např. v Multiwii, tj. pomocí PID, je vlastně to úplně nejmenší na tom všem. To nejnáročnější je všechno ostatní, tj. zprostředkování komunikace vašeho notebooku a řídicí jednotky, ověřované přeposílání příkazů, zprovoznění senzorů, elektroniky, zajištění napájení, sestavení modelu kvadrokoptéry (a jeho opravy) a další věcí. Proto jestli vám můžu poradit, použijte co nejvíc již hotových řešení, jako např. funkční model kvadrokoptéry, který už létá a má vyřešeno napájení a desku s mikropočítačem, která už v sobě má zabudované IMU (toto je skoro nutnost).

Následující článek bude o chybách, které jsem udělal při realizaci kvadrokoptéry, a podrobnějším popisu dalších detailů její činnosti.

Byl pro vás článek přínosný?

Autor článku

Jiří Kačírek je studentem informatiky při VŠB FEI, ve svých projektech nejraději používá C++ a knihovnu Qt. Je fanouškem Linuxu a open-source, který rád používá především jako programátorskou základnu.