czech english

Short Circuits

Praha

Short Circuits mají už nejednu robotickou soutěž za sebou, ale robot pohybující se ve volném prostoru (outdoor) byla pro tým nová výzva. Získané zkušenosti by mohly mnohým naznačit tudy ne přátelé, takže přejeme pěkné počtení.

Short Circuits Prague: projekt Robotour 2007

Členové týmu: Pavel Jiroutek*, Jiří Iša*, Dan Polák, Tomáš Staněk
*Matematicko-fyzikální fakulta, Univerzita Karlova, Malostranské nám. 25, 118 00 Praha 1, Česká republika

Abstrakt

Tento text popisuje softwarovou a hardwarovou architekturu robota týmu Short Circuits Prague určeného pro soutěž outdoorových autonomních mobilních robotů Robotour 2007. Hardwarovým základem robota je podvozek z hračky auta velikosti 1:6. Řídící algoritmus využívá informací z kamery, kompasu, GPS a odometrie a metodou Monte Carlo lokalizace z nich určuje předpokládanou polohu robota. Robot pak na základě znalosti aktuální pozice sleduje předem zadanou trasu.

Úvod

Robotický tým Short Circuits Prague (SCP) se do roku 2006 soustředil na tvorbu malých indoorových robotů pro soutěž Eurobot [2]. V následujícím textu je popsán první outdoorový robot SCP – robot pro soutěž Robotour [3]. Cílem projektu bylo získat zkušenosti s řízením robota v reálném prostředí v úloze, která je velmi blízká skutečným aplikacím autonomních mobilních robotů, a v neposlední řadě získat robotickou platformu, která bude nadále vylepšována pro další ročníky této soutěže. Text je členěn do tří hlavních částí. Sekce 1 popisuje hardwarový a softwarový návrh robota, sekce 2 stručně shrnuje průběh soutěže, která proběhla 22. září 2007, z pohledu SCP a poslední sekce 3 shrnuje hlavní poznatky, získané během přípravy a soutěže samotné.

Architektura robota

Hardware

Hardwarová konstrukce robota vychází z amatérského charakteru týmu SCP. Jednotlivé komponenty systému byly tedy voleny tak, aby byly běžně dostupné na trhu a v cenových relacích maximálně jednotek tisíc korun. Robot obsahuje následující komponenty:
Podvozek – základem robota je plastový podvozek z levné hračky auta s Ackermannovým řízením ve velikosti 1:6. Podvozek je vyztužený hliníkovým rámem. Původní motor pro natáčení zatáčecí nápravy je nahrazen silným modelářským servem HS-805BB. Původní motor pro pohon pevné nápravy je nahrazen dvěma stejnosměrnými motory s převodovkou z akumulátorového šroubováku. Pro lepší manévrovatelnost a menší zátěž na zatáčecí nápravu robot de facto při jízdě vpřed couvá – pohybuje se se zatáčecí nápravou vzadu.
Kompas – modul CMPS03 s magnetorezistivním senzorem umístěný na stožáru robota poskytuje velmi kvalitní informaci o absolutní orientaci robota.
GPS – PocketPC Mio P550 s integrovaným modulem GPS Sirf 3 a WiFi rozhraním se používá pro získání přibližné absolutní pozice.
Odometrie – kola na pevné nápravě robota jsou vybavena kvadraturními IR enkodéry o rozlišení 260 tiků na metr. Údaje z enkodérů jsou využívány pro regulaci rychlosti a odhad směru jízdy robota.
Kamera – robot má k dispozici barevný obraz z webkamery Logitech QuickCam Pro 5000 umístěné na stožáru.
Regulátory motorů – motory jsou ovládány dvěma modelářskými regulátory Graupner Speed Profi 40R, jejichž směr a výkon je řízen servosignálem.
Ovládání elektroniky – stav jednotlivých low-level senzorů a zařízení je monitorován a měněn vlastní deskou s mikrokontrolérem ATmega8, která je po RS232 připojena na hlavní počítač.
Hlavní počítač – hlavní výpočetní jednotku robota tvoří standardní notebook s docking station pro připojení RS232. Tento počítač přímo zpracovává data z kamery přes USB, z GPS přes WiFi a komunikuje se zbytkem hardwaru prostřednictvím RS232.
Napájení – řídící elektronika je napájena 12 V olověnou baterií s kapacitou 1,2 Ah a motory a servo robota jsou napájeny samostatnou 12 V olověnou baterií s kapacitou 7,2 Ah.

Software

Robot je vybaven třemi výpočetními jednotkami – notebookem, PocketPC s GPS a mikrokontrolérem (MCU). Jediným úkolem programu v PocketPC je zaslat data z interní GPS do hlavní řídící aplikace v notebooku. K tomu je použit freeware program GPS2Blue, který je určen právě pro tuto úlohu.
Software v MCU pravidelně aktualizuje strukturu obsahující stav senzorů. Na žádost pošle tuto strukturu do hlavní aplikace v notebooku a aktualizuje stav zařízení podle požadavku hlavní aplikace. Software v MCU je kompletně napsán v jazyku C.
Hlavní část odpovědnosti za high-level chování robota leží na dvou programech v notebooku. Jedním z nich je hlavní řídící aplikace, druhým tzv. Visiir – samostatný modul pro zpracování obrazu.

Hlavní řídící aplikace

Prvním úkolem tohoto programu je udržovat na základě dat ze senzorů nejpravděpodobnější pozici robota na předem definované mapě – tedy lokalizace. Jednoduché a efektivní syntézy údajů ze všech senzorů je dosaženo pomocí metody Monte Carlo Lokalizace [1]. V této metodě je udržována množina možných vážených pozic robota (vzorky), která je aktualizována údaji ze senzorů – relativních a absolutních. Relativní senzory aktualizují každý vzorek stejně, vzhledem k jeho pozici. Při aktualizaci je navíc přidán náhodný šum, reprezentující nepřesnost měření senzorů. Absolutní senzory slouží k eliminaci vzorků, jejichž pozice neodpovídá naměřeným hodnotám.
Jako relativní informace pro aktualizaci pozic vzorků jsou použita data z odometrie a aktuální natočení zatáčecího serva. Vzhledem k nepřesnosti celé zatáčecí soustavy a chybějícímu senzoru pro přesné určení natočení nápravy je v algoritmu bráno toto natočení jako velmi nevěrohodné. Absolutní informace pro korekci vzorků je brána z kompasu, GPS a kamery (resp. Visiiru – viz níže) následujícím způsobem:
  • Jsou eliminovány vzorky, jejichž orientace se liší od aktuálně naměřené o více než 10 stupňů.
  • Jsou eliminovány vzorky, jejichž GPS souřadnice se liší od aktuálně naměřené o více než 10 metrů.
  • Jsou eliminovány vzorky, u nichž plánovač radí nový směr jízdy lišící se od toho, který radí Visiir, o více než 15 stupňů.
Jako nejpravděpodobnější pozice robota je pak brán vážený průměr všech vzorků.
Druhým úkolem hlavní řídící aplikace je na základě aktuální pozice robota a mapy cesty, po které má robot jet, určit směr a rychlost další jízdy. Cesta je reprezentována jako posloupnost přímých segmentů. Jako doporučený směr další jízdy robota je brán směr k bodu, který se dostane jako kolmý průmět aktuální pozice robota na aktuální segment, prodloužený o konstantní vzdálenost v požadovaném směru průjezdu segmentem (použito 1,5 m).

Visiir

Visiir je samostatný aplikační modul, který na základě dat z kamery vrací doporučený směr, kterým by měl robot jet, aby se udržel na cestě. Podrobný popis Visiiru bude zveřejněn v samostatné publikaci, proto je zde představena jen jeho základní struktura.
Visiir vykonává paralelně dvě základní funkce. Jednou z nich je klasifikace pixelů aktuálního snímku z kamery mezi ty, které jsou platnou cestou, a ty, které cestou nejsou (viz Obrázek b). Druhou funkcí Visiiru je adaptace klasifikátoru cesty na podmínky aktuální cesty a okolního prostředí. Tato adaptace se provádí kontinuálně na základě virtuálního referenčního obdélníku, který je těsně před robotem (viz Obrázek a) a je považován za platnou cestu. Z obrazu po provedení klasifikace je pak spočítáno těžiště pixelů cesty, jehož vychýlení od středu obrazu je interpretováno jako směr, kterým vede platná cesta.
S výše popsanou funkcionalitou je Visiir velice robustním modulem, který je bez nutnosti explicitní kalibrace možné použít pro sledování cesty s různými povrchy a s různými světelnými podmínkami. Visiir se dokonce autonomně vypořádá i s plynulou změnou těchto vlastností na jedné cestě.

Průběh soutěže

Průběh soutěže Robotour 2007 byl pro SCP poměrně dramatický od samého počátku. Hardwarové problému s kontroléry motorů vedly ke kompletní výměně těchto kontrolérů za jiný, výkonnější typ, který ale nebylo možné důsledně otestovat v reálných jízdách. Nefunkčnost jednoho z enkodérů a nedostatečné softwarové ošetření tohoto výjimečného stavu vedly v první testovací jízdě v den homologace ke značné destrukci robota, který vyrazil jedním z kol na plný výkon vzad, což nevydrželo původní plastové uchycení poháněné nápravy. Pro homologační jízdu musela být tedy náprava provizorně fixována vázacím drátem a později vyztužena hliníkovými profily.
Řešení značného počtu hardwarových problémů před soutěží zapříčinilo nedostatek času na kompletní integraci jednotlivých komponent řídící aplikace. Pro homologační jízdu (a jak se později ukázalo i pro všechny ostatní soutěžní jízdy) byla tedy použita velmi redukovaná verze hlavního programu, který se řídil výhradně doporučeným směrem z Visiiru, který se používal přímo pro ovládání směru jízdy robota. K úspěšnému průjezdu homologačního úseku, který byl bez křižovatek, bylo toto řešení zcela postačující. Kvůli dalším problémům, které se v průběhu soutěže vyskytly, a krátkým časovým úsekům mezi jednotlivými koly se bohužel nepodařilo v průběhu soutěže zprovoznit žádnou další verzi software, která by slibovala lepší dojezd robota než homologační verze.
Díky velmi kvalitním radám z Visiiru byla použitá verze schopna projet bez problémů úsek cesty bez křižovatky. Problémy způsobovaly pouze ostré stíny na cestě (počasí bylo velmi slunečné), se kterými se Visiir většinou také vypořádal. Na křižovatce byla však další cesta volena v podstatě náhodně (resp. podle aktuálních světelných podmínek a umístění robota ve křižovatce).

Závěr

S výše popsanou funkcionalitou obsadil robot týmu SCP sedmé místo z celkově šestnácti týmů. Vzhledem k první účasti SCP na outdoorové akci a vývoji před soutěží i během ní lze tento výsledek interpretovat jako velmi dobrý. Všechny naplánované moduly se ukázaly jako použitelné, i když nebylo dosaženo jejich plné integrace. Hardwarová platforma je funkční a nadále použitelná do nenáročného terénu.

Zhodnocení

Po analýze průběhu soutěže se ukázaly následující prvky jako problémové, zasluhující další řešení:
  • Křehké plastové díly
  • Nezakryté nerobustní enkodéry
  • Prokluzující kola
  • Mechanická neodolnost HDD v notebooku
  • Výdrž baterie notebooku při velkém zatížení CPU
  • Jediný notebook
  • Pozdní integrace software
  • Nerobustní elektronika – „hnízdo” z drátů, viklající se sloty
  • GPS filtrující pomalý pohyb

Výhled

Tým SCP se chce účastnit i dalších ročníků soutěže Robotour. Do dalšího ročníku předpokládáme zachování současného robota beze změny jako druhého, případně záložního robota. Ze zkušeností Robotour 2007 vyplývá, že plastové modely aut neposkytují dostatečnou robustnost pro outdoorové autonomní roboty a energie vynaložená na dodání této robustnosti je minimálně srovnatelná s vývojem vlastní platformy, navíc s nevýhodou nenahraditelnosti většiny konstrukčních prvků. Proto předpokládáme vývoj vlastní robotické platformy s jednoduchým ale robustním hardware, která by měla být slučitelná i s transportem předepsané přídavné zátěže. Koncepce řízení robota se ukázala jako životaschopná, proto předpokládáme její zachování s doplněním některých chybějících částí a kvalitním odladěním a otestováním.

Literatura

[1] Fox D., Burgardy W., Dellaert F., Thrun S. (1999): Monte Carlo Localization: Efficient Position Estimation for Mobile Robots, In Proceedings of the Sixteenth National Conference on Artificial Intelligence, Orlando, FL.