Kdo se díval na slavnostní zahájení letošního mistrovství světa v hokeji z O2 arény (1.5.2015 před zápasem ČR-Švédsko), nemohl přehlédnout obří puk, který na pokyn kouzelníka Pokustóna objel kluziště, a také často používanou kouzelníkovu svítící hůl. A kdo to neviděl v přímém přenosu, může se podívat na záznam. Ale proč toto téma otevírat na RoboDoupěti? Protože obě jmenované rekvizity vznikaly v Hobbyrobotu, jsou příbuzné s robotickou technikou a uplatnily se v nich mikrokontroléry PICAXE i Arduino.
Když se na Hobbyrobot obrátil Ondřej Eremiáš, který spolupracoval na choreografii zahájení a zajišťoval dálkové ovládání rekvizit, vypadal nástin technického zadání poměrně jasně a jednoduše. Radiem řízený velký puk měl plynule jezdit na pokyn kouzelníka po ledě, přitom bylo důležité, aby měl dost velké rozpětí rychlostí a aby na ledě neklouzal, neměnil nechtěně směr.
Požadavky na kouzelnou hůl vypadaly jednodušeji, měla svítit, dokonce osvětlovat kouzelníka – krasobluslaře, a měla umět kouzlit, tedy po stisknutí tlačítka dělat efekt, kdy kouzlo „vznikne“ na konci hole, přejede do hlavice a „vyletí“ v podobě co možná nejsilnějších záblesků.
Jak už to při spolupráci s umělci bývá, zadání se teprve postupně vyvíjelo a vícekrát měnilo, poslední korekce efektů se dělaly doslova pár dnů před zahájením. To, co se zprvu zdálo jako potenciálně velký problém, tedy pohyb po ledě, nakonec nebylo nikterak obtížné, naopak svítící hůl a efekty na ní daly docela zabrat.
Puk
Rozměry puku byly dané, průměr 1,5 m a výška něco přes půl metru. V Hobbyrobotu vznikala jen funkční „kostra“ s mechanizmem pohonu a řízením, lehoučká dutá nástavba z černé pěnové hmoty se posadila na konstrukci až později, stejně jako podsvícení dole. První úvahy předpokládaly využít pohon z modelu terénního auta se stejnosměrnými motory, nicméně od toho se rychle upustilo.
Základem konstrukce byl kříž z hliníkových profilů vpředu a vzadu opatřený zpočátku malými odpruženými kolečky, později kluznými díly. Příčka nesla na koncích po stranách pohony. Dvokolový podvozek už při malé změně otáček jednoho z pohonů vybočuje i na pevné zemi, natož na ledě, kde by snadno došlo k prokluzování kol. Kola byla zvětšena na průměr asi 30 cm a dostala pohon většími krokovými motory, u nichž lze velmi přesně nastavit rychlost otáčení a lépe se předejde prokluzování.
Krokové motory vyžadují řadiče, každý z nich dostal svůj modul SMCB30 s nastaveným mikrokrokem. Zpočátku se zkoušelo napájení tříčlánkem Li-pol (jmenovité napětí 11,1 V), ale později byl puk napájen dvěma sériově spojenými tříčlánky (22,2 V) kvůli tomu, aby se podařilo zvýšit jeho maximální rychlost a nedocházelo ke „ztrátám kroků“ při zvýšení momentu. I když krokové motory mají dost velký a téměř stejný odběr bez ohledu na to, jestli stojí, nebo jednou maximální rychlostí, energie nebyla problémem. Jednak měl puk pracovat jen poměrně krátkou dobu několika minut, jednak kapacita Li-pol akumulátorů mnohonásobně převyšovala potřebu. Ani hmotností nebylo třeba šetřit, spíš naopak.
Řadiče SMCB30 vyžadují na vstupu pulzy pro provedení kroku a druhým logickým signálem určení směru pohybu, puk musel umět couvat nebo se otáčet na místě. Původní myšlena vycházela z toho, že jak zpracování signálu z RC přijímače tak řízení motorů obstará jeden mikrokontrolér PICAXE, ale ukázalo se, že v reálném čase přesně měřit vstupní pulzy a současně bez nejmenší nepravidelnosti ovládat motory je problematické. Ve výsledku dostal každý z pohonů svůj mikrokontrolér Picaxe 08M2 na univerzální desce AXEboard08. Mezi RC přijímačem a těmito moduly byl ještě modul AXEboard20 s mikrokontrolérem PICAXE 20M2, ten jen hlídal vstupní pulzy z přijímače, měřil je a převáděl hodnoty na napětí, které dále posílal dvěma PICAXE 08M2. Proč takto složitě? Jednak bylo žádoucí kvůli nedostatku času vycházet z existujících modulů, které byly okamžitě k dipozici, nevyvíjet a nenavrhovat nic nového speciálního, jednak se rozdělením zpracování pulzů z přijímače a řízení motorů do různých mikrokontrolérů odboural problém se synchronizací, respektive vzájemným narušováním těchto procesů. První mikrokontrolér generuje pomocí PWM napětí průběžně když vezme signál z přijímače, druhý si ho snímá když zrovna potřebuje. V podstatě jde o analogovou paměť na jednu osmibitovou hodnotu zařazenou mezi dvěma mikrokontroléry. K vyhlazení přechodů signálu dochází jednak analogově (integračním článkem), jednak digitálně klouzavým průměrem s horizontem 4.
Má smysl se zastavit u řízení krokových motorů respektive generování krokových pulzů pro ně. S jedním nastavením PWM nešlo dosáhnout potřebného rozpětí frekvencí a současně jemnosti ovládání a alespoň přibližné linearity. Na vstupu je napětí přečtené s rozlišením 10 bitů (0 – 1023), to je převedeno na logický signál směru pohybu a druhý signál rychlosti v rozsahu 8 bitů (0 – 255). Pro rozsah 0 – 91 je pak PWM generováno příkazem PICAXE bez dělicího poměru, pro rozsah 92 – 203 s dělicím poměrem 4, pro 204 – 231 s dělicím poměrem 16 a konečně pro 232 – 255 s dělicím poměrem 64. Program musel být navržen tak, aby pro libovolnou hodnotu trval průchod stejně dlouho. Potřebné konstanty pro PWM byly předem spočítány a uloženy do tabulky, z níž se jen čtou. Jak taková tabulka reálně vypadá je v vidět z následujícího fragmentu programu.
... if w2<=203 then ;dělicí poměr nic nebo 4 if w2<=91 then pwmout 2,w3,w4 ;interval 0-91 else pwmout pwmdiv4,2,w3,w4 endif ;interval 92-203 else ;dělicí poměr 16 nebo 64 if w2<=231 then pwmout pwmdiv16,2,w3,w4 ;interval 204-231 else pwmout pwmdiv64,2,w3,w4 endif ;interval 232-255 endif ... EEPROM 0,(158,159,160,160,161,162,162,163,164,165,165,166,167,167,168,169) EEPROM 16,(170,170,171,172,173,174,174,175,176,177,178,178,179,180,181,182) EEPROM 32,(183,184,185,185,186,187,188,189,190,191,192,192,194,195,196,197) EEPROM 48,(198,199,200,201,202,203,204,205,207,208,209,210,211,212,214,215) EEPROM 64,(216,217,218,220,221,222,224,225,226,228,229,230,232,233,235,236) EEPROM 80,(237,239,240,242,243,245,247,248,250,252,253,255,063,064,064,065) EEPROM 96,(065,066,066,067,067,068,068,069,069,070,070,071,071,072,072,073) EEPROM 112,(073,074,075,075,076,076,077,078,078,079,080,080,081,082,082,083) EEPROM 128,(084,085,085,086,087,088,089,089,090,091,092,093,094,095,096,097) EEPROM 144,(098,099,100,101,102,103,104,105,107,108,109,110,112,113,114,116) EEPROM 160,(117,119,120,122,123,125,127,128,130,132,134,136,138,140,142,144) EEPROM 176,(146,149,151,153,156,158,161,164,167,170,173,176,179,183,186,190) EEPROM 192,(194,198,202,207,211,216,221,226,232,238,244,250,063,065,067,069) EEPROM 208,(071,073,076,078,081,084,087,090,094,098,102,107,112,117,124,130) EEPROM 224,(138,146,156,167,180,194,212,232,064,071,081,094,112,139,181,255) EEPROM 240,(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
A výsledek? I přes obavy z pohybu na ledě a počáteční problémy s ovládáním prvních verzí, v nichž se parametry pro PWM průběžně počítaly, fungoval puk celkem brzy podle požadavků. Poslední úpravou zaměřenou na snížení rychlosti pohybu a získání rezervy pro spolehlivé udržení kroku ve všech režimech byla výměna koleček za menší o průměru 200 mm.
Kouzelná hůl
Vlastně nešlo o jednu hůl, ale hole dvě. Kromě té, která byla při vystoupení vidět, zůstávala ve skrytu „střídačky“ druhá plně připravená záložní hůl pro případ, kdy by třeba kouzelník upadl a první hůl zničil. K případné výměně by stačily jen sekundy.
První představy pracovaly s myšlenkou, že jako efekt kouzla byde vycházet z hlavice ve tvaru prostorové hvězdy úzký kužel silného světla, záhy se kouzlo změnilo na záblesky. Ale jak udělat rychle opakované záblesky tak silné, aby osvětlily blízké okolí a byly nápadně vidět i z nejvzdálenějších řad diváků? Uvažovalo se o třech výbojkách z fotoblesků odpálených v rychlém sledu, pak dokonce o tom, že by se krátce před záblesky vypustil do okolí hlavice aerosol, který by světlo záblesků rozptýlil a vytvořil svítící oblak. Asi by to bylo efektní, ale mechanicky hodně složité, a při relativně rychlé jízdě kouzelníka by aerosol nejspíš někam odvanul a roztýlil se dřív, než by se uplatnil, nebo by naopak zůstal v hlavici a velký efekt neudělal. Tak plynul čas a průběžně se hledaly technické prostředy k řešení měnících se požadavků, až nakonec bylo už nutné jednu možnost zvolit a rychle dotáhnout do konce.
Hlavici hole tvořily tři díly vyřezané laserem z plexiskla, ohnuté a slepené do prostorové pěticípé hvězdy „zaseknuté“ jedním z hrotů do konce hole. Povrch byl matný, pískovaný. V místě zasazení do hole z plastové trubky o průměru přibližně 40 mm byla mezi plexisklové díly hvězdy vlepená trubka ze stejného materiálu, takového průměru, aby šla těsně zasunout do hole. Na každou z vnitřních hran hvězdy byly nalepené moduly s třemi bílými 3W LED; celkem jich bylo v každé hlavici 30. Protože tyto LED byly určené především ke krátkým zábleskům, mohly být proudově přetížené. Součet jmenovitého příkonu LED byl 90W, ale díky pulznímu přetížení svit odpovídal asi tak 150 W LED. Plný výkon LED dávaly jen při pětinásobném záblesku simulujícím kouzlo, jinak běžely na nepatrný výkon regulovaný pomocí desetibitového PWM. Plnému svitu odpovídal proud kolem 30 A při 15 – 16 V, tedy krátkodobý příkon 450 W (včetně rezistorů předřazených každé trojici LED).
Problém nastal, když LED dorazily a byly osazené na moduly. Neměly totiž deklarovou studenou bílou barvu, ale spíš neutrální bílou nebo dokonce mírně teplejšího tón. Kvůli tomu se následně muselo slaďovat barevné vyznění hole a hlavice. Běžné problémy…
Murphyho zákon říká (slušně vyjádřeno), že co se může pokazit, to se pokazí, a co nemůže, to se pokazí taky. Jedna ze dvou dodaných plexisklových hlavic měla trubku s průměrem větším o 2 mm, takže se musela týden před zahájením, kdy už šlo kriticky o čas, nechat předělat. Dokonce dva dny před zahájením mistrovství se firmě dodatečně vyztužující plexisklovou hlavici „podařilo“ zalít u obou holí spoje lepidlem, takže poslední úpravy elektroniky se už ani nedaly udělat, protože obě hole se proměnily v nerozebiratelný celek. Vždycky se najde něco, co nedokážete předvídat.
Na těle hole dlouhém 1,5 metru byly nalepené a průhlednou smršťovací fólií překryté LED pásky, celkem šest. Bylo požadavkem, aby hůl měnila barvu, takže to musely být pásky RGB, a protože navíc měly po holi podélně „běhat“ světelné efekty, musely to být pásky s LED NeoPixel a s hustotou 60 LED na metr. Tyhle pásky se musí napájet napětím 5 V a umí si při plném rozsvícení vzít 18 W na metr délky, takže celkem mohly mít příkon až 160 W, jinak řečeno 5 V / 32 A. Naštěstí tohle byl jen teoretický příkon, celá hůl nikdy neměla svítit naplno, takže reálně k napájení vystačily dva snižující spínané zdroje D24V90F5 se zatižitelností 9 A a každý z nich byl připojený na svou polovinu pásků. I tak byly spínané zdroje využité téměř na doraz a musely být přišroubované k hliníkové základové desce, která sloužila i jako chladič. Připomínám, že výběr použitelných dílů byl omezen vnitřním průměrem hole 35,5 mm.
Z čeho to všechno bylo vlastně napájené? Kvůli omezenému průměru a vysokému požadovanému proudu přicházely v úvahu vlastně jen Li-pol články pro airsoft nebo válcové LiFe akumulátory (A123), nakonec zvítězily pětičlánky LiFe s kapacitou 2,5 Ah (napětí mezi 15 – 17 V), samozřejmě spájené do dlouhé a úzké sady dělané na míru. Aby se sada, která se kvůli vyvážení hlavice vkládala do hole ze spodního konce, vůbec dala zasunout dovnitř vedle silových vodičů, musely být třeba silové spoje v sadě vedené tenkými měděnými pásky izolovanými z obou stran kaptonem a smršťovací hadicí. Provozní nabíjení bylo možné udělat bez vyjmutí sady přes konektor vyvedený do hlavice. Konektor sloužil současně jako hlavní vypínač. Před nabíjením s balancováním se ale musela odšroubovat spodní soustružená zátka, sada odpojit a vyjmout.
Energie byla spočítaná tak, aby s rezervou vydržela maximální možný výkon v průběhu celého desetiminutového vystoupení, reálně ale nakonec hůl neběžela na plný výkon ani souvisle celou dobu, takže na zkoušce zvládla až čtyři vystoupení po sobě na jedno nabití. To ale předem nemohl nikdo vědět a energie rozhodně nesměla dojít příliš brzy. Na zkouškách se ostatně velká rezerva velmi hodila.
Jak byla vlastně hůl řízená? Podle první představy ji měl ovládat krasobruslař – kouzelník osobně, jenže pak se postupně ukázalo, že v masivním kostýmu (klobouk vysoce převyšoval jeho hlavu a oči měl v úrovni úst na kostýmu) toho není schopen. Na řadu přišlo RC ovládání, jen tlačítko pro spuštění kouzla mělo zůstat. I to ale bylo nakonec vypuštěno a všechny funkce (režim efektu, jas hole jako celku, rychlost efektu a kouzlo) byly řízené RC soupravou.
Režimy byly celkem tři. V prvním základním svítila hůl modře a běhaly po ní světlejší až bílé „obláčky“, či jak se jim později začal programátor říkat „améby“, a to od konce k hlavici. Byl požadavek, aby tyto útvary s plynulými přechody na okrajích měly každý jinou rychlost a velikost, a aby v případě, že se vzájemně dostihnou, docházelo k plynulému prolínání. Rychlost byla navíc ještě ovlivnitelná RC soupravou společně. Možná se tahle představa prolínání zdála výtvarníkům jako něco přirozeného a snadného, ale programátorovi, kterým nebyl nikdo jiný než ing. Bedřich Himmel (na fóru nick 48858), docela pořádně zatopila. K tomu se přidaly požadavky na to, aby se sjednotilo barevné ladění těla hole a hlavice, a také aby vznikly barevné přechody těsně pod hlavicí. Na fotografii jsou v modrém režimu améby sotva vidět, protože expozice přišla v době, kdy se LED zrovna střídaly.
V druhém režimu byly efekty stejné, jen v červené verzi. Třetí režim, familierně zvaný „vysavač“, měl pevně stanovený slabý svit pozadí na těle hole a na něm výrazné bílé svítící „améby“, ale tentokrát pohybující se od hlavy ke konci hole. Tento režim se uplatnil jen krátce na konci vystoupení.
V každé holi se ukrývaly dva „počítače“. Opět připomínám, že vše muselo být hotové velmi rychle a zejména vejít se do hodně omezeného prostoru uvnitř hole. Pro řízení LED NeoPixel posloužilo Arduino PRO Mini. Třeba při kouzle, kdy světelná zóna jede od konce k hlavici, bylo využité na doraz. Kdyby se musely obsluhovat NeoPixely a současně snímat a vyhodnocovat signály čtyř kanálů z RC přijímače, dělalo by to už problémy. Proto byl využit stejný „fígl“ jako u puku. Arduino si mohlo testovat ovládací povely kdy chtělo, protože mu je připravoval mikrokontrolér PICAXE 20M2 na malé univerzální desce. Proporcionální povely byly převedené na napětí a předávané v této analogové formě, digitální jako logické úrovně.
Jadnou z posledních změn byla výměna řídícího vysílače i přijímačů. Při zkouškách na ledě v jiné hale byl provoz původně použitého vysílače Turnigy 9x a mini přijímačů bez problémů, ale po přechodu do prostředí haly O2 arény, kde navíc už běželo mnoho jiných a výkonnějších zařízení v pásmu 2,4 GHz, se dosah rapidně snížil a nebyl spolehlivý. Situaci zachránil zapůjčený vysílač Robbe Futaba T10CP a přijímače FrSKY TFR6. Současně byly antény vyvedeny přes otvory a průchodky ven z holí. Po této změně už se spolehlivostí přenosu nebyly žádné problémy.
Těžko říct, jestli všechno, co hůl měla umět a také uměla, bylo vlastně vidět během televizního přenosu slavnostního zahájení. V televizi některé věci dost zanikaly, diváci na místě si však jistě mohli všimnout více detailů.
Byla to určitě zajímavá možnost vidět a vyzkoušet si, kolik práce dá rekvizita, která se nakonec uplatní jen pár minut. Tahle zkušenost by určitě u každého změnila pohled na to, jak náročná je příprava podobných vystoupení.
Poznámka: Další kvalitnější snímky z vystoupení i detaily vnitřní konstrukce puku budou k článku doplňovány průběžně v brzké době.