czech english

Eduro Team

suplování české reprezentace

Díky iniciativě a značnému úsilí Milana Kroulíka z Katedry zemědělských strojů (KZS) na České zemědělské univerzitě (ČZU) se jedenáctý ročník mezinárodní soutěže Field Robot Event konal poprvé v České republice. Byl překonán dosavadní rekord jak v počtu aktivně se účastnících týmů, tak i počtu zemí. S čím ale nikdo nepočítal, že se nepřihlásí ani jeden český tým!


Na FRE2013 (Field Robot Event) jsem Eduro Team registroval na poslední chvíli a to s dost smíšenými pocity. Čekal jsem, že když přišla hora k Mohamedovi, tak můžeme počítat s dvěma, možná i třemi novými českými týmy. Dopadlo to ale hodně „pod očekávání”.
Beru-li „rozšířený” Eduro Team z roku 2010, kdy se nám podařilo získat mnoho cen a „zazářit na robotickém poli”, tak Milan Kroulík se Standou Petráskem se plně věnovali organizaci a zbytek týmu je už zapřažen v pracovním procesu. Svoji účast jsem bral především jako závazek vůči Milanovi a „lehké” zklamání naší robotickou scénou — můj odhad byl hodně špatný.
Přechod z létajících robotů a vzdušných zámků zpět na zem byl poměrně tvrdý. Nemalou roli v tom hrál i fakt, že se od nás očekávaly nadprůměrné výsledky (v roce 2010 i 2012 jsme vyhráli Professional Task), ale příprava i testování bylo minimální, a až moc dobře jsem si byl vědom starých nevyřešených problémů …

Týden do soutěže

Necelé dva týdny před FREčkem jsem ještě létal s Heidi na RoboOrienteeringu a jediný zbývající víkend jsem „proflákal” na zahradě. Robota Eduro jsem měl s sebou, ale letos jsem si žádné testovací políčko nepřipravil (a na rovinu, kdybych připravil, tak by bylo 2x zaplavené a momentálně pod vodou).
Větší přípravy tedy nastaly až v Praze, kde jsem s hrůzou zjistil problém s baterkami. Stejně jako loni se nedostatečně nabíjely. Loni jsem koupil dvě nové (12V gelové olověné akumulátory), ale do toho se mi letos jít nechtělo. Honza pustil regenerační cyklus na ty staré a plán byl skočit si v případě nouze do GME na Křižíkově … je to přeci jenom blíž, než např. loni z Floriade.
Druhý problém byl neustávající déšť a silně rozbahněné pole. Ze středy na čtvrtek jsme, tedy spíše Honza a já jen přihlížel, Eduro odlehčili (sundali robotickou ruku, která loni moc pěkně nabírala květináče s růžemi), přezuli na šípová (traktorová) kola a vyrobili plastový „domeček”, aby bahno necákalo do elektroniky.

Čtvrtek — testovací den

Na čtvrtek jsem si vzal z práce dovolenou a začalo to hodně depresivně. Po projetí jednoho řádku slunečnice se robot zadřel a neměl jsem sílu ho ani já sám ručně tlačit a tím spíš slabé motory. Problém nebyla až tak přední hnaná kola jako zadní kolečko. Bahno fungovalo jako brzdný klín.
Jako jedinému českému týmu se nám ale dostávalo neuvěřitelné pozornosti . Nastoupila parta z katedry strojů a do půl hodiny vyrobila na míru škrabku, která krásně pasovala a hlavně fungovala! Baterky ale umíraly, což byl další důvod, proč Eduo na poli moc nezvládalo. Přešel jsem tedy z programování na mechaniku a baterky vyměnil (na rozdíl od loňska šly šrouby krásně ven, takže celá akce byla hotova během 10min).
Program v Pythonu mi trošku připomínal DNA — daly se tam najít zbytky detekce plevelu v kukuřici z roku 2010 i kód na nabírání růží. Byl to tedy spíše takový crossing-over a nastavení parametrů než programování. Hlavní rozdíl od roku 2012 byla šířka řádku. Papírově byla sice stejná (75cm), ale loni to byly kraje květináčů a letos střed slunečnic. Ty narostly zhruba stejně do výšky i šířky (15-25cm), takže řádek měl spíše k 40cm. Laser, náš hlavní navigační senzor, bylo tedy nutné sklopit dolu jako předešlé ročníky. Ve výšce 30cm by totiž typicky žádnou rostlinu neviděl.
Polední testování v poli bylo o řád optimističtější. Eduro už zvládalo i několik řádek, ale občas nekompromisně začalo likvidovat jednu slunečnici za druhou. Otočení na místě také nedalo, za což částečně nesla vinu nově přezutá šípová kola — prostě pevně držela v bahně a na tu otočku je třeba trochu smyk.
Pomalu jsem rezignoval na Advanced Task (ježdění ob několik řádek), dokud nebude Basic Task (jízda zig-zag) alespoň trošku spolehlivě fungovat. Výsledek při soutěži tomu pak odpovídal — Eduro si řádky odpočítávalo přes odometrii a nepřesná detekce konce řádku či natočení vedla robota k nezdaru.
Pozdě večer jsem měl zase sraz s Honzou Roubíčkem, který znova Eduro přezul. Půda začala vysychat a možnost snazšího otočení byla kritická.

Pátek — soutěž

Ze čtvrtka na na pátek se robot nějak odmítal nabíjet. Ráno byly tedy baterky slabé. Když jsem dorazil do kruhovky (kruhová hala ČZU, kde bylo zázemí všech týmů) a na nabíječce naskočila červená a max nabíjení, tak jsem robota raději nechal v klidu dokud nebude plně nabitý. Dorazil i Tomáš, který si vzal na celý den dovolenou, a tak jsme začali vymýšlet nějakou jednoduchou strategii na „Professional Task” a rozpoznávání plevele (kukuřice, řepka a spálená slunečnice).
Nějak mi nedošlo, že testovací políčka s plevelem byla jinde, než kde jsem ve čtvrtek sbíral data, takže to bylo spíše po paměti. Chtěl jsem algoritmus, kde bych mohl nastavovat nějakou hranici, kdy v extrému by to nic nedetekovalo a ve druhém to naopak detekovalo všechno. To jsem ještě netušil, že celá úloha bude úplně jinak vyhodnocovaná (došlo mi to až týden po soutěži, když sepisuji tento článek). Prostě cíl byl rozpoznat plevel, jen když si budeme opravdu jisti.
První pozorování ukázalo, že listy slunečnice téměř dokonale kryjí půdu na rozdíl od řepky či kukuřice. Klasifikovali jsme tedy pixely podle barvy na zelené a ostatní a počítali maximum přes pohyblivé okénko v X-ové ose (zvlášť levou a pravou půlku). Pokud počet zelených pixelů přesáhl horní limit, tak kamera koukala na listy slunečnice. Pokud byl počet zelených pixelů naopak nižší než spodní limit, tak kamera koukala na zem. Pokud byl počet zelených pixelů mezi oběma limity, tak robot indikoval plevel.
Bylo třeba ještě vyřešit situaci, aby přechod na začátku řádku (tedy pohled zem-slunečnice) nebyl detekován jako plevel. Normálně by stačilo analyzovat více obrázků, ale Eduro zvládalo zpracovat zhruba dva snímky za sekundu, takže bylo třeba vše udělat z jednoho obrázku. Pohyblivé okénko tedy bylo ve dvou pásech a pouze pokud v obou detekovalo plevel, tak robot pípnul a bliknul LED trojúhelníkem na dané straně.
Následovala schůzka kapitánů týmů, oběd a teprve pak první test na poli. Task1 začínal v 13h, takže si dovedete představit, jak dobře to bylo odladěné a ideálně nastavené, sigh.

Basic Task

Spousta lidí, novináři, kamery, velké očekávání. Eduro startovalo na poslední pozici (pořadí se losovalo na schůzce kapitánů), projelo první řádek a neotočilo se do druhého. Až pozdě mi došlo, že jsem měl odehnat fotografa, který měl fotoaparát na konci řádku a Eduro ten konec z laseru tedy špatně detekovalo. Hledal jsem pak důkaz mezi snímky z kamery, ale …
0
(None, None)
904
… pokud jste četli druhý létající blog, tak víte co to znamená. 904 cyklů robot nedostal jediný obrázek z kamery. Nevím, zda vypadl napájecí konektor nebo Ethernet, nebo co se přesně stalo. Po restartu na konci první řádky už vše fungovalo OK.
Další čtyři řádky projelo Eduro bez problémů a zaváhalo na pátém nájezdu. Letos jsem tam nechal variantu, ať se snaží nájezd do řádky najít a tak při špatném otočení volilo někdy cestu podél řádek. Asi jsem měl robota nechat být, protože zbytečně dostal 5 trestných bodů jen pár sekund před koncem.

Advanced Task

To byla dost tragédie. Letos jsem si prosadil pravidlo, že nájezd do N-tého řádku musí být plně autonomní a pokud je třeba zásah operátora, tak že se robot musí vrátit na start. Kód trasy, přeložený do Pythonu, byl pro nás trošku nešťastný: [3,-2,0,-4,-2,1,-2,1], tj. hned po startu bylo třeba jet do třetího řádku vpravo. Navíc konce řádků nebyly stejně zarovnané a Eduro mělo velké problémy.
V prvním pokusu vyrazilo metrovou mezerou v řádku vlevo, otočilo se o 90 stupňů a vzalo řádky napříč. Druhý pokus pokračoval z půlky, dorazil na konec ale přejezd ob dva netrefil. Třetí konečně dojel na konec, trefil odbočku a zpět ujel cca 7m a zase prokličkoval dírou mezi řádky. Pak mi bohužel nedošlo, že jsem mohl robota jen vrátit do řádku a pokračovat. Do příštího ročníku navrhuji FRE komisi vyžadovat kompletní autonomii, tj. zcela bez doteku. Stejně tak bych omezil počet pokusů na 3. Čtvrtý zase projel mezerou vlevo po pěti metrech a pátý zase netrefil nájezd.
Trošku jsem byl teď zklamaný, když jsem koukal na výsledky a náš nejlepší pokus (cca 20 bodů) ve výsledku nebyl, ale … pozdě bycha honiti. A asi jsme přišli o druhé místo — alespoň to naznačuje, jak je ta autonomie těžká.

Professional Task

Poslední úloha byla loterie. Limity pro detekci plevele jsme střelili od boku a co hůř neprověřili jsme ani zapojení levá/pravá (v realitě byla prohozená kabeláž). Asi úplně nejhorší zpráva byla, že jsme dostávali trestné body za nedetekovaný plevel, tj. nejasná dohoda, co že to přesně znamená „incorrect detection”.
Celkově bychom asi měli být rádi, že těch signalizovaných bylo více správných než těch špatně signalizovaných. Na obrázku je signalizován plevel vpravo, přestože je vlevo a to prohození kabelů zrovna tady pomohlo. Ve zkratce nic, čím bychom se mohli chlubit.

Freestyle

Přihlásili jsme se i do „volné jízdy”, přestože jsme neměli nic připraveného. Milan si původně představoval manipulaci s balíčky slámy, ale ruka byla z důvodu odlehčení odmontovaná a ani ty balíčky nikdo nepřipravoval. Chtěl jsem udělat jednoduché demo s letem Heidi nad Edurem, ale trošku foukalo a černobílá značka v zorném poli spodní kamery snad ani nebyla vidět.
Heidi měla konkurenci — jeden Francouz tam také létal se čtyřtulkou od Parrotů. Navigoval jí na bílý kruh s černým pozadím a celkem mu to šlo i když vystoupení končilo pádem poté, co mu jedno malé turecké dítě pláclo do vrtulí.
Na testovacím políčku byly 5x10m veliké stany proti dešti, tak jsem chtěl ve zbývajících minutách zkusit kaskadérský kousek a prolétnout stan tam a zpět. Mluvil jsem do mikrofonu a zároveň vyměňoval baterky a rebootoval, tak to nebylo úplně dobré. Na rozdíl od pěkného příběhu co doprovázel francouzskou dronu jsem já nic rozumného připravené neměl: „drony mohou být i chytré a při autonomním snímkování se vyhýbat třeba i stromům”.
Nakonec byly dva pokusy — v prvním Heidi vlétla do stanu, ale šla trošku moc do výšky a tak sonar detekoval horní okraj. Byl už příliš blízko a tak zařadila zpátečku a pak se chvíli plácala v podkroví stanu jako můra u světla. Ve druhém pokusu to rovnou naprala do sloupu.

Sobota — cooperation

V sobotu jsem dorazil zase mezi prvními a tak jsem využil toho, že kruhová hala byla téměř prázdná. Chtěl jsem znova zkusit navigaci na černobílou značku, ale marně. Tady nešlo shazovat vinu na vítr, spíše naražený kryt v kombinaci se sonarem není úplně v rovině a drona s tím trošku zápasí.
Do dvojice pro spolupráci jsme dostali Idefix — robotický klub dětí ze základní školy z Německa. Celkem překvapující, co ve věku 13-14ti let dokážou (ano, ve spolupráci se svým vedoucím). Na druhou stranu, ne všechno byly ve zbývající hodině schopny do kódu integrovat a tak jsme se domluvili na relativně jednoduchém scénáři: Idefix s postřikovači vyrazí a začne procházet řádek po řádku jako v Task1. V druhém řádku ale bude mít poruchu a vyžádá si servisního robota (Eduro), který na místo zajede a problém vyřeší.
Porota nebyla úplně spokojena s odpovědí na otázku, jak se to Eduro dozví. „Magic” prý nestačí. Počkej 50s ale moc kooperativně nezní . První demo nebylo úplně ideální (jak Idefix, tak Eduro se zaseklo o něco dříve než bylo v plánu), ale druhé klaplo dokonale. Nakonec jsme se s tím dostali na lepší pozici než Helios s bagříkem, který se snažil rozchodit složitou kooperaci vykopání jámy a zasazení míčku.

Závěr

Field Robot Event 2013 v Praze se mi líbil a investované dovolené nijak nelituji. Mrzela mne chybějící účast českých týmů, ale vem je čert. Pokud by soutěž někoho zajímala, tak příští rok se bude konat opět v Německu. Velké díky patří Milanovi Kroulíkovi a celé katedře zemědělských strojů a ČZU za podporu a pěknou akci.

Odkazy