Hlavní navigace

Stavíme kvadrokoptéru: odesílání povelů

Jiří Kačírek 19. 8. 2015

Hlavní princip řízení kvadrokoptéry pomocí PID regulátoru byl už zmíněn v minulých článcích. Všechno ostatní už je především programátorský úkon, který se týká správného přeposílání řídících povelů a spousta laborování. Tento díl bude o možnostech řízení kvadrokoptéry joystickem, popřípadě RC vysílačkou.

Na úvod malá poznámka k minulému dílu. Pokud si budete chtít implementovat PID regulátor, zvažte možnost stáhnout si ho jako hotovou knihovnu. Existuje taky velice pěkný tutoriál, se kterým si můžete případně svůj PID regulátor vylepšit (jsou v něm i některé velice důležité věci), doporučuji si ho přečíst.

Dnešní díl bude o posílání příkazů do řídicí jednotky z počítače. Já jsem k tomu použil joystick, přenosové médium Wi-Fi a signály jsem do jednotky přeposílal z Raspberry Pi přes sběrnici SPI. Výhoda Raspberry Pi je v tom, že můžete použít k přenosu signálu Internet, pokud do něj zapojíte USB 3G modem. Pokud se vám toto řešení nelíbí, zvážil bych, zda vůbec použít Wi-Fi – přeci jen přenosová vzdálenost není příliš velká. V tomto případě by bylo nejvhodnější použít modelářský vysílač a přijímač na 2,4 GHz, který má slušný dosah, a místo ovládání z počítače joystickem si rovnou pořídit modelářskou vysílačku.

Nejprve tedy k joysticku. Na Linuxu je velice snadné číst a parsovat z něj data. Princip si můžete vyzkoušet přímo v konzoli s myší. Pro Linux Ubuntu: v adresáři /dev/input můžete najít soubory mouse0 a mouse1. Napište sudo cat mouse0 (popřípadě mouse1). Při pohybování a klikání myší uvidíte, že se do konzole vypisují data. Přesně tak to funguje i s joystickem, kdy po jeho zapojení se v adresáři /dev/input objeví soubor js0 (nebo js1). Data „události“, která vznikla na joysticku, ať už je to pohyb páky či zmáčknutí tlačítka, jsou složena ze čtyř bajtů: první dva bajty jsou identifikátor příkazu, druhé dva bajty jsou jeho hodnota.

Doporučuji k parsování dat z joysticku použít lightweight knihovnu napsanou v C++ pro Linux. V následujícím kódu (C++/Qt) je ukázka čtení jedné události z joysticku:

joystick = new Joystick(0); // Knihovna Joystick pro Linux
joyevent = new JoystickEvent(); // Knihovna Joystick pro Linux
joystick->sample(joyevent);
joyfile = new QFile("/dev/input/js0");

if ((!joyfile->exists()) || !joyConnected) { // Kontrola
   on_joystick_not_found();
   emit joystickNotFound();
}
else if (joystick->sample(joyevent)) { // --je k dispozici nový vzorek dat?
   if (joyevent->isButton())  { // --jedná se o tlačítko?
      switch(joyevent->number) { // --jaké konkrétní tlačítko to je?
         case 23:
            EnqueueData(BUT_SWITCH1, joyevent->value);
            break;
      }
   }
   else if (joyevent->isAxis()) { // --nebo se jedná o nějakou osu? (páka na joysticku)
      switch(joyevent->number) { // --která z os to je?
         case 0:
            EnqueueData(AXIS_Y, -joyevent->value); //osy páky
            break;
         case 1:
            EnqueueData(AXIS_X, joyevent->value);
            break;
         case 2:
            EnqueueData(AXIS_Z, -joyevent->value);
            break;
         case 3:
            EnqueueData(FUEL, joyevent->value); // osa potenciometru
            break;
      }
   }
}

Přeposílání příkazů do Raspberry Pi je pak už klasický klient-server, jen velice doporučuji k odesílaným datům přidávat checksum. Data se čas od času při přenosu poškodí a může být nebezpečné s nimi chybně nastavit ovládání kvadrokoptéry. Používám checksum implementovaný v knihovně Qt, ale postačovat by mohl dvoubajtový součet jednotlivých bajtů odesílaných dat, který se umístí na konec celé zprávy.

Co se joysticku týče, použil jsem joystick Cobra M5. Jeho cena byla někde okolo 1500 Kč a měl dobré uživatelské recenze. Musím říct, že použití joysticku je v podstatě z nouze ctnost, protože preciznost jeho ovládání se nechytá ani na 15 let starou modelářskou vysílačku. Zkrátka páka má vůle a slepá místa, stejně tak jeho potenciometr. Na ovládání kvadrokoptéry, pokud nevyhledáváme akrobacii, to postačuje, nicméně k precizností modelářské vysílačky to má daleko. Teď dost hanění, joystick má i své výhody.

Joystick Cobra M5

Detailní pohled

Poněkud vytuněná verze Cobry M5, nejspíše od fanouška

V první řadě je to hlavní páka, která je tříosá, což perfektně zapadá do logiky ovládání kvadrokoptéry. Pohybem dopředu/dozadu, vlevo/vpravo určujete kvadrokoptéře náklon a navíc, pákou se dá i rotovat. Kolečkem na joysticku se dá regulovat výkon motorů, je to jen trochu nepraktické – páčka by byla lepší. Terno má být u tohoto joysticku umístění páky do magnetického pole, místo do pružin, nicméně v okolí výchozí pozice páky jsou stejně vůle. Má jednu zásadní nevýhodu a to je hmotnost. Jít si zalétat s kvadrokoptérou a přenášet u toho notebook i tento joystick je poněkud nepraktické.

Výhodnější by byl například lehký a praktický gamepad, který má i preciznější páčky (alespoň při pohybu s nimi se tak jeví). Bohužel neviděl jsem žádný, který by měl vhodnou páčku pro nastavení výkonu, což je zásadní nedostatek.

Gamepad

Další možnost řízení kvadrokoptéry – pro inspiraci

V případě použití modelářské vysílačky a přijímače odpadá spousta programování (ale stoupají vynaložené finanční prostředky na vysílačku). Řídicí jednotky pro kvadrokoptéru obsahují vstupy pro PWM signál, který přijímač generuje. (Raspberry Pi umí také generovat PWM signál.) Po spřažení vysílačky a přijímače ho tedy stačí propojit s jednotkou. Zkušenost s touto variantou nemám, ale v případě RC modelu letadla kdysi před lety byl dosah signálu opravdu velký. Pro bližší informace vyhledejte modelářské weby.

Modelářská vysílačka

RC přijímač

Je otázka, jakou variantu použít. Mě osobně na kvadrokoptéře neláká samotné létání, ani akrobacie, ani natáčení, ale tzv. FPV (first-person view), což znamená sledovat letové video na počítači a podle něj kvadrokoptéru řídit klidně až mimo dohled, což je mimochodem nezákonné – a vůbec tady tím k ničemu nenabádám. Z tohoto důvodu jsem použil joystick a Raspberry Pi, které umožní použití kamery, ovládání prostřednictvím Internetu a v počáteční fázi testování se může použít Wi-Fi.

Další variantou by bylo použít k ovládání modelářskou vysílačku a Raspberry Pi ponechat pouze k přeposílání či nahrávání letového videa, což je mimochodem s Raspberry Pi velice snadné a pokud máte Pi Cameru, realizaci zvládnete za pár minut jen pomocí konzole. Nahradíte tak lehce pochybnou kontrolu modelu přes Internet spolehlivějším řešením.

Na závěr následující videa ukazují některá zajímavá použití kvadrokoptéry.

Našli jste v článku chybu?

20. 8. 2015 9:09

Pro prenos lze pouzit jeste jednu kombinaci :

- PPM data (serializovany servo signal) generovat pomoci uC/Raspi ale vysilat je do modelu pomoci modelarske prenosove vrstvy tj. napr. tohodle (http://www.jetimodel.com/cs/katalog/Duplex-2-4-EX/Vysilaci-moduly-EX/@produkt/Duplex-TU2-EX/) na strane vysilace a tohodle (http://www.jetimodel.com/cs/katalog/Duplex-2-4-EX/Prijimace-EX/Pripojitelny-satelit/@produkt/Duplex-Rsat-2-EX/) na strane prijimace.

Z prijimace leze opet PPM tj. pouze jeden signal a…

19. 8. 2015 8:37

Joystick za 1500 Kč...

Za cca 3 000 Kč se dá sehnat devítikanálová modelářská vysílačka Turnigy 9x (přímo z číny ještě trochu levněji). Kdo nevěří číně, může zkusit třeba šestikanálový Graupner MX-12 HOTT za cca 5 500 Kč.

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Alza.cz má StreetShop. Mall.cz více výdejních míst

Alza.cz má StreetShop. Mall.cz více výdejních míst

Podnikatel.cz: Hledáte investora? Neunáhlete se

Hledáte investora? Neunáhlete se

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Často čůrá a má žízeň? Příznaky dětské cukrovky

Často čůrá a má žízeň? Příznaky dětské cukrovky

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy