czech english

RoboOrienteering 2025

nová lokace

Soutěž RoboOrienteering se po delší době koná na nové lokaci v lázeňském parku zámku Kynžvart. Úkolem robota je stále navšívit co nejvíce kontrolních bodů označených kužely s tím, že u pěti může odhodit míček a získat extra body. Vzhledem k tomu, že zámek Kynžvart je státní zámek a soutěž bude součástí oficiálního programu, je nutná brzká registrace do 31. května 2025. Samotná soutěž se koná v sobotu 21. června 2025. Update: 22/06/2025 — Matty M03 - Robotika

Obsah


Změna lokace!

Z důvodu revitalizace (?) zámeckého parku se soutěž přesouvá na jíné místo — na dopravní hříště Základní školy Úšovice v Mariánských Lázních!
Doplňující info od organizátora soutěže:
V příloze naleznete mapu s vyznačenými značkami a jejich přesné souřadnice. Vzhledem k menšímu prostoru bude pouze 8 kontrolních bodů. Pokud pojede robot v pořadí číslování kuželů 1 – 8, délka trati je cca 350m. Pořadí a počet navštívených kontrolních bodů si můžete zvolit sami.
Start prvního kola je v 10:30 hod, vzhledem k velkému počtu přihlášených robotů se bude startovat v tří minutových intervalech. Během max. tří minut musí robot opustit startovací pozici.
Pokládání golfových míčků je dobrovolné, ale pokud to robot zvládne, získá body navíc. Body získá i za průjezd, nebo přiblížení se k cíli. Cíl bude umístěn jinde než start, aby nedocházelo ke kolizím se startujícími roboty.
Pokud by mělo během jízdy dojít ke střetu dvou či více robotů, je povoleno robota zastavit ( měl by se sice umět jinému robotovi vyhnout), a opětovně zase zapnout. To platí hlavně u střetu více robotů u kontrolního bodu - kuželu. Tady můžete robota v dostatečné vzdálenosti zastavit a až bude prostor kolem kuželu volný, pokračovat v jízdě.
Start 49°954046 12°709531
Cíl 49°953423 12°709187
1 49°9539450 12°708882
2 49°9537240 12°709185
3 49°9539130 12°709649
4 49°9541606 12°709484
5 49°9543109 12°709360
6 49°9542960 12°708717
7 49°9546010 12°708368
8 49°9536645 12°708831
… celková vzdálenost trasy při průjezdu všemi kontrolními body v pořadí 1 – 8 je cca 350m

Matty M03 - Robotika

Včerejší soutěž byla fajn — vlastně předčila všechna moje očekávání. Na rovinu se přiznám, že jsem se těšil na Kyžvartský zámecký park a že to byla jedna z motivací, proč do toho jít. Pak Jirka/Cogito zmínil, že je to jedna z mála soutěží letos, kam by mohl dorazit sám ze Švýcar. No a korunu tomu nasadil MartinL, když zminil, že se ho žena ptala, zda nebude nějaka soutěž, že by si udělali rodinný výlet. A s robotem (a ženou) do toho šel i PavelS, tak … řekněte v této konstelaci NE! a že máte už robotů po FRE plné zuby. Z čehož jsem však ustoupil byl počet robotů. Původně jsem chtěl „vyvětrat” velkého Pata, který by na rozsáhlý zámecký park pěkně pasoval. Pak jsem přihlásil i Matty M02, hlavího učastníka FRE, kdyby si to studenti náhodou rozmysleli — nerozmysleli. A tak jsem zůstal u jednoho robota Matty M03, kterému jsem se ale tady v Mariánkách mohl plně věnovat.
Přiznám se bez mučení, že přípravě jsem věnoval hrozně málo času … a na rovinu nebylo z čeho ho brát. Schválně otevřu pull request, tam to v těch commitech bude vidět (mimochodem mne tady dostal TomíkK, že vlastně sleduje i změny na GitHubu, což je asi první člověk, kterého znám No myslel jsem, že tam bude vidět i časová osa, ale není — ta je lépe vidět zde.
Je tam nějaký commit z 23. května 2025, kdy jsme se asi rozhodli, že do toho jdeme. Naházel jsem tam na hromadu kód z 2018, hrátky s Patem a Cones Challenge. Další příhoz byl 18. června (3 dny do soutěže), kdy jsem tam pro vyhybání se překážkám přidal kus kódu z FREčka. I když to možná ještě byla jen jízda rovně … no raději toho nechám, je to ostuda a takto se přece člověk na soutěž nepřípravuje. Ale opravdu nám šlo o soutěž? Plán byl to pojmout jako společenskou událost a přizvat k tomu i naše roboty.

Testování na hřišti

Asi největší radost jsem měl z toho, že Matty M03 detekoval (resp. jeho neuronka běžící na OAK-D Pro) oranžový kužel bez pruhů! Převzal jsem to na zmiňovanou Cones Challenge (jen interní hecování) někde z internetu a nedotrénovával jsem to. To bych tady na místě opravdu nedal. A co více, nejen že to kamera detekovala, ona to velmi dobře i na vzdálenost desítek metrů! Ale klasicky to mělo vedlejší efekt — při prvních testovacích startech vždy vyjel a hned zahnul vlevo?! On tam totiž byl kužel (číslo 2) a tak se na něj vrhnul. Jen to bylo do kopce a ten před sebou krásně po rovince (číslo 1) ignoroval. Svůj starý kód si teď interpretuji tak, že pokud vidíš vícero kuželů, tak si vyber ten největší, tj. nejblíž (z barevného obrazu).

1. kolo

Startoval jsem poměrně na začátku, tak už nebyl čas na další úpravy a „problém” z testování jsem chtěl pořešit vhodným nasměrováním robota na startu. No myslím, že na druhý pokus vyjel skoro rozumně. Detaily si teď nevybavím, ale při náhodné jízdě s algoritmem:
  • když vidíš kužel, tak vyraž tím směrem
  • pokud je před tebou překážka, tak odboč směrem, který je blíže středu (levá vs. pravá)
  • jinak jeď rovně
  • a pokud i přesto narazíš (přední nárazník), tak si 1m couvni mírně do zatáčky
  • pokud je kužel méně než 1m před tebou zastav a čekej 3 sekundy
A tak Matty M03 vesele jezdil (rychlost jsem mu zvedl na maximálku 0.5m/s) a když to šlo, tak ze soutěžního prostoru „zdrhnul”. Nechal jsem ho přejet hřiště, silnici a až ke kontejnerům v dalším bloku, ale pak podle GPS (kterou jsem jenom sbíral a nepoužíval) byl více jako 100m o nejbližšího waypointu, tak jsme ho se sudím o 180 stupňů otočili (to bylo v prvním kole povolené). Body získal někde na začátku (kužel 4?) tak zbytek už byl test, co vše přežije … a bylo to drsné.
První kolo skončilo bouráním do plotu, kdy se navíc připlet do plané růže a ta mu vytrhla kabel od kamery. Zpětně si uvědomuji, že za tu problémovou detekci drátěného plotu si možná můžu sám — místo nejblížší překážky jsem bral np.percentile(data, 5), tj. 5% nejbližších se ignoruje (typicky vyšší stonky trávy a šum) … a možná i ten plot.

2. kolo

Cílem druhého kola bylo se udržet v soutěžní aréně. Jelikož nedošlo k integraci kompasu (ani indicie typu míříš na sever nebo na jih), tak hrubou informaci měl robot pouze z GPS. Musel mezi tím ujet alespoň metr … a ano, byl to důvod tanečků. Algoritmus se změnil na
  • jinak jeď rovně, pokud GPS pozice od nejbližšího waypointu je menší než 20m
  • v opačném případě se otoč na waypoint
A jak to dopadlo? Jel krasně rovně na kužel číslo 1 a po dvaceti metrech se otočil na start. A když v té divoké otočce neviděl žádný kužel, který by ho srovnal a nutil do jízdy na kužel tak se na té hranici 20m rád rozhlížel po okolí — viz obrázek odometrie z poslední části (i když to možná byl už test navíc po soutěžní jízdě). Za startovní kužel mi nikdo body dát nechtěl, ale přesto se robotu podařílo zase jeden (?) někde ulovit.

3. kolo

Do posledního kola jsem přídal pár drobných, ale důležitých změn:
  • ignoruj první waypoint (start)
  • pokud při reportu kužele jsi blíž jak 10m od nějakého waypointu, tak ho odstraň ze seznamu
  • pokud jsi více jak 20m od nejbližího waypointu, ze zbývajících bodů, tak se otáčej pomalým obloukem jeho směrem (ať pozice GPS dává alespoň trošku smysl).
Na doporučení jsem také přesunul GPS anténu alespoň na krabici (jak jsem tu GPS do té doby moc nepotřeboval, tak byla uvnitř).
A jezdilo to pěkně. Sice některé kužely si dal i 4x (v GPS waypointech je neměl, ale když je viděl, tak „nemohl odolat”), ale s časem a přirozenou randomizací (nature) za 75 minut navštívil všechny kužele. Ono třeba cíli byl cca v první třetině, ale nikde neni v pravidlech řečeno, že cíl musí být poslední. Bylo to úmorné a dalo se na to koukat jenom s tím, že níkdo nevěděl, co teď přesně udělá!
TIMEOUT snídane! … časem snad doplním nějaké foto a video … a závěr, že díky moc ogranizátorům za super outdoor robotický den