RoboTrip summer 2020
aneb Tulák po parku
Úkolem 0. ročníku soutěže robotů RoboTrip summer bylo projet
parkem po cyklostezce. Že to připomíná Robotour nebo Robotem rovně. Nechte se překvapit.
Pokud vás to zaujalo, můžete si přečíst příběh jak postavit vítězného robota snadno a rychle.
Úterý - druhý den maturit (tedy pro mne jako zkoušejícího)
Mezi ranním a odpoledním blokem zkoušení nemám moc chuť něco dělat. Prohlížím
tedy jeden z oblíbených webů – Robodoupě. Letmo si povšimnu upozornění na
soutěž 20. 6. 2020 v Olomouci - RoboTrip summer. To je něco nového, to neznám.
Procházím stránku soutěže a pravidla, ale moc moudrý z toho nejsem.
Má to být především pro děti a přitom se má jezdit po parkových cestách.
To je úkol jako na Robotour, který vlastně pořádně nezvládli ani největší borci
za těch 15 let, co se koná.
Večer po příchodu domů jsem informován, že bychom o víkendu měli jet navštívit
tchýni, kde jsme od začátku koronamoru nebyli. Tuto informaci přijímám jako něco,
co se musí občas zkousnout.
Středa – třetí den maturit
Ráno než začínáme zkoušet, pročítám poštu a okem spočinu na nezavřené stránce
soutěže. Mám ještě chvilku, tak znovu pročítám pravidla, jestli nepochopím,
o co jde. Ještě se zkusím podívat na fotky ze závodního prostoru. A jejda.
Ta parková cesta je cyklostezka s plnou bílou čárou uprostřed. To zcela mění
náročnost úkolu. Úkol je tedy projet celou parkovou cestičku o délce 900 m co
nejrychleji. Hodnotí se ujetá vzdálenost po opuštění cesty a v případě dokončení
celé trati, pak čas.
V hlavě mě probleskne myšlenka, že by se dalo spoji nutné zlo s něčím příjemným.
V pátek bychom jeli na Moravu k mamince a v sobotu bych si už jen odskočil do
Olomouce na soutěž – alespoň bych měl dobrou záminku proto se vypařit.
Myšlenka pomalu zraje.
V poledne už přehrabuji „sklad“ robotického haraburdí, abych našel něco, co by
se dalo použít. Volba vozidla je jasná. Maxi, se kterým jsem jel loňský
RoboOrienteering je stále mimo provoz. Letos se soutěž nekoná (mimochodem
měla být právě 20. 6.), a tak mě nic nedonutilo podvozek dodělat. Proto vytahuji
ze skříně malou čtyřkolku naposledy použitou na RoboTour 2008 – jak ten čas letí.
Bohudík není příliš zkanibalizovaná, je téměř kompletní – servo řízení, H-můstek,
enkodér, chybí jen původní deska řízení motoru. V nejhorším tam vrznu arduino.
Teď už jen vymyslet jak jet po té cestě. Infračervené snímače, které se běžně
používají na čáru, venku moc fungovat nebudou, to už jsem si vyzkoušel. Co takhle
použít kameru? Zatím jsem se jí bránil, vždy mi to přišlo zpracování obrazu složité
a ne moc spolehlivé. Jediné, co jsem s ní zatím zkoušel, bylo vyhledávání
barevných předmětů. S řídicím počítačem stavebnice FischerTechnik a využitím
předprogramovaných funkcí jsme sledovali barevný míček. No, oranžový míček to
na modrém linu za dobrého osvětlení celkem obstojně identifikovalo.
Ještě než vyrážím po páté hodině domů, zkouším, jak by to tu čáru zvládalo.
Čára na silnici je asi široká jako půlka kratší strany A4. Překládám tedy papír
podélně, vytahuji stavebnici a testuji. První dojem je poměrně dobrý, nachází to
celkem spolehlivě papír - čáru na světle hnědém povrhu stolu. Zkouším ještě kam
tu kameru na robota namontovat. Stojánek po kompasu (který tam už není, byl
někdy zrecyklován) bude vyhovovat, chce to jen nějaký držák.
Plán je tedy jasný, mám na to jeden a půl dne. Tedy teoreticky, ve čtvrtek ještě
od 8 do 16 s přestávkou zkouším, ale v pátek už bude volno, i když jen dopoledne.
Odpoledne už odjíždíme.
Večer ještě popřemýšlím o co nejjednodušším dokončení hardwaru a návrhu softwaru.
Čtvrtek – čtvrtý a poslední den maturit
Ráno si trochu přivstanu a vyrážím do školy už o půl sedmé. Rychle kreslím
držáček na kameru a dávám tisknout. Ještě než jdu zkoušet, ho testuju. Celkem to
vyhovuje, ale chtělo by to mít možnost měnit sklon kamery, aby se dala zvolit
vzdálenost před robotem, kde bude hledat čáru. Začínám upravovat model, ale práce volá.
V polední pauze dokončuji model a dávám tisknout hned třikrát. Stejný držák půjde
použít i na sonary.
Poslední den maturit končíme „už“ ve čtyři. Konec zkoušení byl poněkud infarktový.
Prší celý den, ale kolem půl čtvrté přichází bouřka a s ní i několik krátkých
výpadků elektriky. Ještě, že to bylo 5 minut před koncem zkoušky posledního
studenta. Ono zkoušení CADů na počítači bez elektriky není úplně to nejlepší.
To důležité jsme viděli a posledních 5 minut jsme si o tom už jen povídali.
Po rychlém kafi a zákusku spěchám do laborky.
Montuji držáky kamery a sonarů na robota. Ještě bude potřeba nějak přidělat
počítač – kostku ze stavebnice. Maluju další díly na montáž a dávám tisknout.
Během tisku řeším baterky. Robot je navržen pro oddělené napájení motor a elektroniky.
Bude se to hodit, ten Fischer s kamerou má docela spotřebu. Jeden pack lionek
vytahuju z Maxiho, ale druhý použitelný nikde není k nalezení (dva další byly
ve skříni, ale napětí dvoučlánku pod 4 V moc důvěru nedává). Minulý týden jsem
repasoval kamarádovi baterku do křoviňáku, tak vytahuji, co mi zbylo. Dva obstojné
články tam byly. Výroba packu a další kabeláže akorát vyplňuje čas tisku držáků.
Dávám všechno dohromady a ještě před šestou mířím domů. Jako obvykle čekám,
že jsem ve škole poslední, ale dnes je to jinak. Ten déšť byl poněkud vydatnější,
i když v zaujetí práce jsem si toho moc nevšímal. V šatnách a skladu v suterénu
je už 10 cm vody a „pěkně“ to stříká ze zdí a spárami mezi dlaždicemi. Rychle se
vytrácím, abych také nedostal od školníka kýbl.
Po příchodu domů dostávám čerstvou informaci, že se nikam nejede. Tchýně má prý
moc práce, a tak nás tam nechce. Tak teď nevím, zda je to dobrá, či špatná zpráva.
Spíš špatná. Takhle tam pojedeme asi příští týden a to už nebudu mít výmluvu na soutěž.
Pátek – „volný den“
Přicházím do školy a přemýšlím, co vlastně budu dělat. Měl bych dát do pořádku
laborku – tedy uklidit. Moc se mi do toho nechce, a tak mě přepadá myšlenka,
že bych toho robota přeci jen dodělal.
Hledám nějaký software, který jsem používal pro řízení motorů. Bohužel původní
nejde použít, protože jsem tam dal jinou desku – zkanibalizoval jsem delta manipulátor.
V ní je jen ATmega8 na 8 MHz oproti původní desce s ATmega328 na 16 MHz. Chybí mi čítač 0,
který v 328 umí generovat pwm. Tak beru sw z Maxiho, předělávám části s čítači.
No hrabat se v léta starém softwaru je docela zajímavé (hlavně ta část v asembleru).
Pomalu to oživuju, kupodivu to vypadá, že to bude i fungovat. Servo řízení běží,
enkodér taky. Zkouším pustit motor přímým nastavením pwm a nic. Vždy sebou jen cukne.
Kontroluju můstek – ok. Píšu kód jen pro zapnutí výstupů – ok, motor jede. Znovu
kontroluju nastavení čítačů, přerušení, ... nic. Více než hodina zabitého času.
Ponaučení, pokud zkouším jen funkci můstku, měl bych si vypnout ten PI regulátor,
co má řídit otáčky a hrabe mi tak do toho, pět řádků za nastavením pwm.
Zbývá komunikace s počítačem z Fischera přes I2C (důvod proč jsem tam dal tuto desku,
na ní mám I2C vyvedené). Kdysi jsem I2C slave pro AVR psal pro inteligentní snímač
čáry, takže vyhledám a přidávám do kódu.
Propojuji s Fischerem a zkouším něco poslat do AVR. Motor opět nic, servo řízení
funguje. Zjišťuju, že ta implementace I2C slave je nějaká divná. Příznak dokončení
zápisu přijde jen po zápisu do posledního registru. Nebudu to teď řešit, vždy
pošlu hodnotu pro motor i servo.
Zbývá software do Fischera. Algoritmus super jednoduchý. Blok hledání čáry umí
vrátit pozici od středu obrazu a pravděpodobnost nalezení čáry. Povel pro servo
řízení je tedy přímo odchylka čáry od středu. Pokud je pravděpodobnost nalezení
čáry více než 50% jedu plnou rychlostí, pokud je menší tak zpomalím.
Pokud sonary vidí překážku, motory zastavit a zahoukat. To je vše – práce na 10 minut.
Kolem poledne tak mám hotovo. Jdu domů, stále prší.
Odpoledne tak trochu proflákám (aktivní odpočinek ve vodorovné poloze)
s neradostným výhledem, co budu dělat o víkendu, když stále prší.
Kolem půl šesté přestává pršet a tak vyrážím ven. Napadá mě, že bych se mohl
stavit ve škole pro robota a vyzkoušet ho. Přesouvám se tedy s ním na dopravní
hřiště. Pouštím ho na části plné čáry. JEDE. Dokonce překonává i mezery
v přerušované čáře. I s vyšrafovanou částí si poradí tak, že se chytá na levou
okrajovou čáru. Super. Objíždí na první pokus celé dopravní hřiště, cca 150 m.
Opět začíná pršet.
Testování na dopravním hřišti (natočeno až v neděli po soutěži - ale stále funguje).
Skoro je mi líto, že na soutěž nejedu, když to vypadá, že robot funguje.
Dan mě hecuje, že přeci můžu jet do Olomouce jen na soutěž.
Vidina odjezdu v 6 hodin se mi moc nezamlouvá.
Nechávám to na ráno s tím, že se uvidí, i když předpověď je pesimistická
– má celý den pršet.
Sobota – soutěž
Nějak nemůžu dospat, jsem vzhůru už před pátou. Stále prší. Přesto vstávám a
jdu udělat pláštěnku na robota. O čtvrt na šest vstává má drahá polovička
– asi jsem ji vzbudil, a že pojede se mnou. V šest vyrážíme.
Po poklidné cestě v 8 hodin dojíždíme do Olomouce. Prší jen lehce. Přesouváme
se do Pevnosti poznání (náhodou už vím, kde to je). U vchodu narážíme na hlavního
organizátora Radima Děrdu. Je velmi potěšen, že někdo přijel. Dáváme se do řeči
a přesouváme se na místo startu. Zde už se trousí další účastníci, povětšinou
mládež s roboty z Lega. Potkávám i známou tvář, Tomáše z Jedovnice.
Nakonec je účast nad očekávání – 13 soutěžních robotů.
Připojuji robota k notebooku, abych se podíval, jak uvidí čáru. Katastrofa.
Čára je výrazně širší, zabírá téměř polovinu šířky zorného pole a hlavně je to
ukrutně přepálené. I když je pod mrakem, tak je světlo výrazně větší než v šest
večer. Robot chvílemi čáru vidí s pravděpodobností 10%, ale když zmenším sklon
kamery, aby se čára jevila užší, tak ji ztrácí úplně.
V hlavě mi vyvstává vzpomínka na první RoboOrienteering u nás v Rychnově, kde
Jirka Iša (doufám, že to byl on), řešil stejný problém s přepálením obrazu.
A vyřešil to nasazením slunečních brýlí webkameře. Vracím se do auta a prohledávám
kastlík, kde by měly být staré sluneční brýle s vypadávajícím sklem. Jsem úspěšný
a tak mám sklíčko ze slunečních brýlí. Teď ještě jak ho tam připevnit.
Rezignuji na všechna optická pravidla a natvrdo omotávám kameru přes sklíčko izolepou
(ta je přeci taky průhledná). Musí to držet, ta středová čára je s nějakými
výstupky (snad pro slepce nebo proti usnutí na kole?), takže robot na tom pěkně
poskakuje. Výsledek je ohromující. Pravděpodobnost nalezení čáry kolem 50 %.
Robot je připraven.
Soutěž pomalu začíná. Vzhledem k počasí a očekávanému nízkému počtu účastníků je
organizace velmi volná. Jediný vyhrazený rozhodčí se vydává na 900 m dlouhou trať
s prvním robotem, který se už podle testů řadí k favoritům. Podvozek z RC auta,
řízení Raspberry Pi s kamerou. Jede spolehlivě a hodně rychle. Dlouho se nevrací,
takže odhadujeme, že to projel celé. Nakonec urazil za 11 minut asi ¾ tratě.
Projevuje se problém, že je jen jeden rozhodčí a při takové vzdálenosti to trochu trvá.
Závěr je ten, že si to budou soutěžící měřit sami nebo s nimi půjde někdo jiný.
Prší jen lehce, a tak vypouštím mého robota na trať. Jede spolehlivě, v místech,
kde je cesta méně mokrá vidí čáru dobře, a tak jede plnou rychlostí. V místech,
kde stojí voda, která světlo odráží, zpomaluje, ale čáru nikde neztrácí. Pokud
to robot dojede, bude to trvat při jeho rychlosti asi 0,5 m/s zhruba půl hodiny.
Asi v polovině trasy začíná silněji pršet. Míst, kde stojí voda je více, a tak
jede skoro pořád pomalu. Objevuje se další nepříjemnost. I přes kryt proti dešti,
který přesahuje sonary o 3 cm, se některé kapky dostávají až na něj a způsobují
falešnou detekci překážek. Robot se občas zastavuje a houká. Ale vždy to nakonec
nějak skápne a robot pokračuje dál. Úspěšně přijíždí do cíle v čase 31 minut 1
sekunda. Úkol je splněn.
Při návratu na start potkáváme další roboty, kteří se zarputile rvou o každý metr.
Prší stále silně. Lego roboti brodící se kalužemi s deštníky, které nad nimi
nesou soutěžící, jsou úžasní.
Dalším úspěšným robotem je robot z Lega v čase 49 minut. A nakonec ještě jeden
lego robot dosáhne cíle s časem 47 minut. Neskutečné. I ostatní lego roboti jeli
dobře, ale někteří opravdu nevydrželi vodní koupel, většinou utopili světelná
čidla, která měli blízko země. Největší adept na dobré umístění nakonec k
druhému pokusu nenastoupil. S postupujícím časem se i přes pršení zvyšovala
intenzita světla a tak měl podobné problémy s kamerou jako můj robot. Celou
trať tedy absolvovali tři roboti.
Soutěž měla úžasnou komorní atmosféru, kde se nikdo nehnal za výsledkem. Ale
všichni se až dokonce snažili, aby jejich robot podal maximální výkon. Ještě
jednou smekám před účastníky s roboty z Lega (doufám, že je bez úhony vysuší).
Nakonec bych chtěl poděkovat organizátorům za krásný, i když hodně mokrý zážitek.