czech english

Eurobot 2003 za 45 dní

aneb neříkej hop, dokud nepřeskočíš...

Dalších X dní uteklo jako voda, kde X mělo být původně 10, ale v době sepisování této zprávy to už je 15… a zároveň se zdá, že práce nijak zásadně nepokročily. Dana dostala nové senzory, Daisy si začala trošku hrát s puky a už jsme narazili na první krizi při integraci řízení robota po lomené čáře.

Pomalu, ale jistě, začínáme mít takový ten klasický pocit, že zase něco nestíháme . Myslím, že určitě každý z nás tento pocit zná možná důvěrněji, než by si přál. Doufejme, že to bude spíše vítaná motivace, než zdroj depresivních nálad .

Dana - nové senzory

Robot Dana byl posledních pár dní zase v rozebraném stavu. Jedná se vždy o problémový krok, kdy software není na čem zkoušet a není zaručeno, že nové zásahy neponičí již funkční moduly. Za poslední dva měsíce se však nastřádalo již dostatek drobností, ke kterým by se už později nejspíše nedostalo, a tak „Dana šla pod nůž” hned teď.
V rámci přestavby byly namontovány nové i staro-nové senzory. Mezi nové patří např. dva infračervené detektory na měření výšky věží puků a na detekci nových puků, pokud je ruka již zvednutá. Tyto senzory mají umožňovat záložní řešení, pro případ, kdy by nefungovala kamera nebo selhávaly algoritmy na zpracování obrazu. Stavba věží tak asi bude zásadní výhoda Dany: přeci jenom za dvoj-věž jsou 3 body a za troj-věž 5 bodů.
Mezi staro-nové senzory pak patří další CNY70 na detekci barvy podlahy. Ukazuje se, že čím více senzorů, tím je algoritmus navigace spolehlivější a přesnější. Přesto stále dochází tak v jedné z pěti jízd ke ztátě pozice a robot zabloudí. To by snad mohly vyřešit další senzory, optické myši, které byly na robotu namontovány již loni, a teď s novým USB hubem byly nově zapojeny.

Daisy - první hrátky

Daisy se již pustila do otáčení puků. Na ruce tvaru L byla použita stejná technologie jako u Dany – dvě CNYčka, kdy jedno směřuje nahoru a druhé dolu. V případě dvoubarevných puků bude jedna vnitřní strana černá a druhá bílá. Pokud se tedy použije rozdíl měřených hodnot, vychází spolehlivost detekce barvy zatím na 100%. Že situace není tak růžová jak se zdá se nejspíše projeví až pak na samotném Eurobotovi…
Nestačilo by jedno CNYčko? Pro Danu rozhodně ne, protože si chce poradit i s jednobarevnými puky, které lze sestřelit pomocí ping-pongových míčků. Daisy tuto situaci bude zřejme ignorovat, i když jsme rozebírali řešení, kdy by mohla puk postavit opět na svou hranu. Tato úloha je však hluboko na našem „seznamu priorit”.
Daisy se tedy již rozhoduje podle barvy, která je nahoře, zda puk otočit či neotočit. Jak se jí to daří si můžete prohlédnout na videích:

Černá středa

Byla 9/4/2003. Ne že by jsme odpalili nějaký hardware, ale polevili jsme v zásadách inkrementalního vývoje a dopadlo to přesně tak, jak se dalo očekávat. Na programu byla integrace „Path Following behavior”, který je pěkně demonstrován na http://www.red.com/cwr/steer/, ale jeho popis už je o něco vágnější. Robotovi se pak předá pouze cesta ve tvaru lomené čáry a o nic dalšího se už není třeba starat.
V čem byl problém? Netriviální algoritmus, jenom zběžné vyzkoušení v simulatoru, do toho pokus o regulaci rychlosti motorů a navigace pomocí pozice, kterou si MCL občas trošku upravilo podle sebe. To snad ani dobře dopadnout nemohlo ;). Člověk se holt musí občas popálit, aby příště nezapoměl…
Závěr? Algoritmus jsme zjednodušili, byly doplněny Unit Testy na ověření základních principů, MCL pro rozchození nahradilo DummyMCL, které slepě věří enkoderům a nedělá žádné podivné skoky/posuny, a na testování jízdy samotné jsme si napsali nový (malinký) program. Druhý pokus o integraci by měl proběhnout dnes, tentoráte však snad bude úspěšný.

Řízení po lomené čáře

Úkolem robota je jet po předem zadané lomené čáře (teoreticky by se mohlo jednat i o složitější křivky, ale pro naše účely je lomená čára naprosto dostačující). Zjednodušený algoritmus je následující: nechť pozice robota je určena souřadnicema x, y a směrem heading (na obrázku zelený kroužek se šipkou). Tento bod promítneme na nejbližší bod na lomené čáře (kolmý průmět) a posuneme ho o předem definovanou vzdálenost po lomené čáře (červená šipka). Nový bod budeme nazývat „seek point” a je to místo, kam chceme aby robot směřoval.
Řízení po lomené čáře
Řízení po lomené čáře
Pokud by dopředná rychlost byla nulová, tak se robot pouze stočí ve směru přerušované čáry. Při pohybu však seek point bude „utíkat” a robot podle toho bude vzniklou chybu v natočení korigovat. Jednoduché, není-liž pravda? :) Zrada je samozřejmě v detailech: jaká má být vzdálenost pro seek point, jak se má korigovat chyba v natočení, jak se to promítne na samotné řízení PWM na motorech? Po několika pokusech byl problém přeformulován a řešen pomocí PD-kontroleru (P = proporcionální, D = derivační), kde chybu, kterou se snažíme minimalizovat, je rozdíl v úhlu. Vzdálenost po lomené čáře jsme nakonec zvolili 30cm, což odpovídá velikosti čtverce na šachovnici pro Eurobota.

Další plán

K zápasu mezi Danou a Daisy dosud nedošlo. Je to tedy stále plán číslo jedna. Dále se chystá v Bratislavě soutěž Istrobot, kde by se oba (možná jenom Dana) roboti měli předvést, takže plán je, aby bylo co.