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.