Hlavní navigace

Stavíme kvadrokoptéru: bezpečnost, PID regulátor

Jiří Kačírek 29. 7. 2015

Článek je o bezpečnosti při stavbě kvadrokoptéry a navazuje na použité komponenty v minulém díle. Čtenáře by měl zdravě vystrašit, neboť kvadrokoptéra může být nebezpečná. Závěr článku je o stabilizaci kvadrokoptéry a PID regulátoru, kde si každý může povšimnout, že jeho implementace není moc složitá.

Minulý díl byl celý o komponentách pro kvadrokoptéru a nezmínil jsem důležitou věc: bezpečnost.

Kvadrokoptéra je potenciálně nebezpečné věc. To jsem si sám vyzkoušel, když mi vrtule rozsekla špičku palce i s nehtem. S trochou fantazie si možná dokážete představit, že by při nešťastné shodě událostí zvládla pořezat žíly na zápěstí, nebo tepnu na krku. Schválně si zkuste u krční tepny nahmatat, jak tenká vrstva kůže jí chrání. Myslete na to, prosím, a při testování mějte kvadrokoptéru přikurtovanou, popřípadě zajistěte, aby v jejím dosahu nebyli lidé, nedejbože malé děti. Buďte ve střehu!

Odstrašující (škaredý) obrázek hned na úvod. Pokud chcete víc, zkuste dát do Google: „quadcopter hurt“. Ale pozor, jsou tam podstatně ošklivější věci.

Je dobré si co nejdříve postavit stojan. Konstrukce není složitá, jen doporučuji, abyste kvadrokoptéru mezi stojan nenapínali mezi jakákoliv lanka – není na ně velký spoleh. Nejlepší zkušenost mám s umístěním kvadrokoptéry do stojanu za jednu z jejich os a poté její upevnění suchým zipem. Dimenzujte stojan tak, abyste měli naprostou jistotu, že kvadrokoptéru i při tom největším a zároveň škubavém tahu udrží.

Další zdroj nebezpečí plyne z použití LiPol baterií. Je třeba se opravdu držet bezpečnostních pokynů. Baterie by se neměla při nabíjení vůbec zahřívat. Pokud došlo i k malému poškození obalu jejího článku, už ji nepoužívejte. Baterie se může sama vznítit, vždy ji doma uchovávejte v nějakém kovovém hrnci v místě, kde nezpůsobí požár. Baterie jsou to vcelku drahé, pokud se vám je podaří i na okamžik zkratovat, můžete si je poškodit, čímž ztratí přinejmenším část své kapacity. V rámu mějte baterii dostatečně chráněnou proti poškození od pádů, obaly článků jsou tenké. Nepoužitelnou baterii můžete bezpečně zneškodnit tak, že ji nějaký čas necháte ponořenou ve slané vodě.

LiPol baterie vzplála přímo v modelu.

Myslete na to, že motory se chladí proudem vzduchu z vrtulí. S rostoucím odporem při jejich otáčení navíc roste odebíraný proud. Proto: pokud se vám motor nějakým způsobem zasekne o překážku, nejspíše brzy poté uvidíte, jak se z něj kouří. (Nemusel se však nutně zničit, prvotní bílý kouř pochází z pálící se izolace měděného vinutí uvnitř motoru.) Vyzkoušet si motor, jak se točí bez vrtule, není problém, neboť odebíraný proud je velmi malý.

Vinutí motoru napravo je lehce spálené.

Když jsem si psal svůj algoritmus pro řízení kvadrokoptéry, implementoval jsem si vypnutí všech motorů, pokud v posledních 0,5 s nedorazil žádný řídicí povel. Proto jsem mohl motory s jistotou zastavit vypnutím WiFi na mém notebooku.

Stabilizace kvadrokoptéry

Stabilizací je myšleno setrvání polohy kvadrokoptéry v náklonu, nejčastěji definované pilotem. K tomu je zapotřebí údaj náklonu kvadrokoptéry vzhledem k zemi (získaný z IMU) a regulační člen, který změní otáčky motorů. Jako regulační člen můžeme použít PID regulátor.

PID regulátor (dále jen PID) realizuje funkci:

Funkce PID regulátoru.

  • Kp je proporcionální konstanta
  • Ki je integrační konstanta
  • Kd je derivační konstanta
  • e(t) je chyba v čase t; e = žádaná hodnota (např. náklonu) – aktuální hodnota

Konstanty získáme jejich manuálním nastavením. Funkci je možné snadno implementovat programově (tedy diskrétně), neboť derivaci nahradíme rozdílem aktuální a předchozí chyby (vydělené Δt), integraci zase nahradíme sumací všech chyb od počátku měření (vynásobených Δt).

Kvadrokoptéra má celkem 3 osy: označíme-li motory sever, jih, východ a západ, potom motory sever-jih tvoří jednu osu (dále jen NS osa) a východ-západ druhou (dále jen EW osa); 3. osa (dále jen Z osa) je pak poněkud specifická.

Z IMU můžeme získat aktuální hodnotu náklonu pro osy NS a EW relativně k zemi. Chceme-li mít sklon NS osy 0° a aktuální je –5°, ubereme výkon na severním motoru a na jižním přidáme. Hodnotu manipulovaného výkonu získáme z PID a budeme tedy potřebovat jeden PID pro každou osu.

Zatímco osy NS a EW jasně určují sklon vůči zemi, svislá osa je vztažena k rotaci. Otočením páky na ovladači, např. joysticku, chceme nejčastěji docílit, aby kvadrokoptéra rotovala. PID svislé osy tedy musí mít na vstupu nejlépe hodnotu úhlové rychlosti okolo osy Z (získáme z IMU). Na motorech jedné osy tak dojde k přidání výkonu a jeho ubrání na druhé ose.

Popsaným způsobem pilot vychýlením ovládací páky určuje náklon kvadrokoptéry v NS a EW ose a jejím otočením (kolem osy Z) určuje rychlost její rotace, avšak rotace kolem její osy vždy kolmé k zemi, neboť při pokusu o rotaci v náklonu vlastně měníme sklon osy NS a EW, což jejich PID nechce dovolit a bude to dorovnávat. Můžeme tím tedy v náklonu zatáčet s kvadrokoptérou otáčením páky, což také vlastně intuitivně očekáváme.

Výše popsané by se dalo klasifikovat jako jeden z možných módů (neakrobatický) řízení. Použijeme-li joystick jako ovladač, budeme jeho naklápěním určovat absolutní naklopení kvadrokoptéry (např. v rozsahu od –40° do +40° pro osy NS a EW) a jeho otáčením budeme v podstatě zatáčet, resp. rotovat v případě, je-li kvadrokoptéra srovnána vodorovně.

Základní zjednodušený kód PID by mohl vypadat takto:

class PID {
  float suma_err = 0;
  float predchozi_err = 0;
  public float P_const = 0;
  public float I_const = 0;
  public float D_const = 0;
  float err = 0;
  float ret = 0;

public float get_PID(float zadany_naklon, float aktualni_naklon, float diff_t) {
  err           =  zadany_naklon - aktualni_naklon;
  suma_err     +=  err;
  ret           =  P_const*err +
                   I_const*suma_err*diff_t +
                   D_const*(err - predchozi_err) / diff_t;
  predchozi_err =  err;
  return ret;
  }
}

Proměnná diff_t je vlastně čas, který uplynul od předchozího volání funkce get_PID. Budeme-li upravovat výkon motorů s frekvencí 200 Hz, potom diff_t = 1/200.

Příští díl bude o nastavení konstant PID regulátoru a úpravě výkonu motorů.

Našli jste v článku chybu?

4. 8. 2015 15:14

Karel (neregistrovaný)

Opravdu to vyslovujete? Zkuste si to nahlas "vy by jste se měl stydět", "ty by jsi se měl zamyslet", "vy by jste to podepsal"? Stěhuji se po ČR poměrně často, ale to J jsem tam ještě neslyšel.

31. 7. 2015 12:56

Karel (neregistrovaný)

"By jste" se sice vyskytuje hojně, ale pouze v psané formě. Nikdo to takhle nevyslovuje. Označovat to za hovorové je proto trochu zvláštní. Je to častá pravopisná chyba, ale není to hovorové.

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

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

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

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

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

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

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

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony