Robohemia
Brno
Tým Robohemia soutěž Robotour 2007 vyhrál. Na jakých technologiích byl tedy úspěch postaven? Čím se jinak zabývají studenti z VUT Brno?
Základní info
Názov týmu: Robohemia
Univerzita: VUT v Brně
Fakulta elektrotechniky a komunikačních technológií
Členovia:
- František Burian
- Martin Haltuf
- Martin Javorček
- Tomáš Madron
Názov robota: U.T.A.R.II
Predstavenie týmu
Celý štvorčlenný tým je zložený zo študentov na Vysokom Učení Technickom v Brně
z Fakulty Elektrotechniky a Komunikačních Technológií pod vedením doc. Ing.
Luďka Žaluda, Ph.D. ktorý je docentom na fakulte a aktívne sa tiež podieľa na
tvorivej činnosti pre CAK (Centrum aplikovanej kybernetiky). CAK prevádza
teoretický a aplikačný výskum v oblasti automatického riadenia. Pracovisko na
Vysokém učení technickém v Brně je jedným zo štyroch hlavných spolunositeľov
projektu.
Menovite sa podieľali na rekonštrukcií súťažného robotu U.T.A.R.II
členovia:
- Ing. František Burian toho času už úspešný absolvent oboru KAM (Kybernetika, automatizace a měření) pôsobí na fakulte aj ako študent PhD. štúdia ale zároveň je aj zamestnancom na fakulte.
- Martin Haltuf je študentom Bc. programu na ústave automatizace a měřicí techniky a v tomto roku je v 3. ročníku.
- Bc. Martin Javorček a Bc. Tomáš Madron, študenti 1. ročníka na magisterskom štúdijnom programe KAM (Kybernetika, automatizace a měření).
Robot U.T.A.R.II
Původní robot |
V minulom roku, keď bolo prvé konanie súťaže Robotour`06, bol UTAR poskytnutý
nášmu týmu s cieľom upraviť elektroniku a mechaniku tak, aby sa mohol zúčastniť
tejto súťaže.
UTAR |
Pre názornú ukážku sú v prílohe uvedené obrázky pôvodného robota UTAR a aj
aktuálne obrázky po rekonštrukcii. Rekonštrukcia spočívala hlavne vo výmene
riadiaceho počítača, výmenu drivera pre riadenie motorov, mechanické úpravy pre
nové snímače, demontáž pôvodných komunikačných zariadení a kamerového bloku.
Technické parametre
- riadiaci počítač: priemyselný počítač s procesorom Intel Mobile 1,6GHz
- operačný systém MS WinXP Professional SP2
- programové vybavenie v MS Visual Studio 2005
- diferenciálny podvozok poháňaný dvomi motormi Maxon 250W/24V
- napájanie 2x12V gélový akumulátor o kapacite 18Ah
- max. rýchlosť cca 1,5ms
- hmotnosť cca 65kg
- nosnosť robota sme nezisťovali, ale nemal najmenší problém uviesť po rovnom teréne osobu ktorá mala hmotnosť 65kg.
- Dojazd na jedno nabitie akumulátoru cca 6km
Naša stratégia v súťaži
Minulý rok sme sa spolu s celým týmom pripravovali do súťaže s myšlienkou:
„osadiť robota maximálnym množstvom senzorov“ aby nás nemohla zaskočiť žiadna
nečakaná udalosť, ktorá by mohla narušiť náš cieľ prebojovať sa medzi tých
najlepších a paradoxne to sa nám stalo osudným, pretože ako väčšina z vás vie,
minulý rok sme nemohli ani odštartovať.
Keďže sme mali veľké množstvo senzorov, je pochopiteľné, že na každý senzor je
potrebné venovať dostatočný čas na jeho odladenie a jeho následné
zakomponovanie do riadiaceho SW. Nakoľko sme nemali veľa času tak sme nemohli
vykonať veľa testov na ktorých by sa odhalili slabiny robota. Stala sa nám
totiž taká vec, že pár hodín pred samotnou súťažou nám začal robiť problémy
jeden s driverov ktorý ovládal jednu stranu kolies na podvozku. Tento chybný
driver mal malú chybu vo svojom firmwari resp. nebol symetrický s opačnou
stranou čo sme ale nemohli vedieť keďže firmware do tohto driveru vyvíjala
„tretia“ osoba. Túto nesymetriu ale hlavne zvýraznila aj malá porucha z
hľadiska obcasného výpadku pulzov na optickom enkódery zabudovanom v motore.
Fakt, prečo sme minulý rok zvolili takú stratégiu ako sme zvolili (maximum
senzorov) spočíval hlavne v tom, že sme nevedeli čo konkrétne náš čaká. Boli
sme veľmi prekvapený keď sme zistili, že na súťažnej trati sa nenachádzajú
žiadne prekážky a teda prekvapila nás jednoduchosť pravidiel súťaže s čím sme
teda vôbec nepočítali. Naša predstava o tom bola taká, že dostať sa do cieľa,
pričom sme si boli takmer istý že cesta bude náročná s veľkým počom prekážok a
terénnych nerovností keďže sa jedná o súťaž autonómnych robotov. Najviac času
stráveného na príprave do prvého ročníka robotour patrilo jednoznačne
odlaďovaniu algoritmov, ktoré by sa dokázali veľmi inteligentne vyhýbať
prekážkam a následne sa pohybovať ďalej v ceste bez straty orientácie. V tom
čase bolo jednou z našich hlavných „zbraní“ hlavne laserový skener SICK ktorým
sme detekovali prítomnosť prekážky na ceste resp. rozlišovanie presnej polohy
prekážky na ceste. Pokúšali sme sa pomocou tohto skeneru aj rozlišovať trávu a
betónový chodník ale neboli sme schopný urobiť kombináciu detekcie trávy a
prekážky pretože sme nepracovali v 3D režime keďže skener na detekciu prekážky
potreboval iný uhol náklonu ako na detekciu trávy. Nakoniec sme sa rozhodli iba
pre detekciu prekážky a detekciu trávy sme vypustili pretože sme sa spoliehali
na „presnost“ GPS ktorá by nás dokázala presne navigovať až do cieľa. Je teda
úplne jasné, že keby sme aj nemali poruchu v drivery, tak by náš robot s istou
pravdepodobnosťou skončil mimo trate aj keď je možné že nejaké body by sme
nazbierali aspoň za nejaký prejdený úsek.
Po minuloročnej skúsenosti sme sa teda rozhodli pre úplne inú stratégiu ktorú
niektoré tými ktoré súťažili odcudzovali. Z konkurenčných tímov boli ohlasy na
náš tým asi v takom znení že „ako je možné, že robot ktorý sa nedokáže vyhnúť
prekážke mohol vyhrať súťaž a s veľkým náskokom“ a podobné pripomienky zazneli
aj v emailoch od Vás kolegov. Tak aby som oficiálne uviedol každého z Vás ktorý
ma pochybnosti o našej výhre do správnej mieri tak tu je naša stratégia:
V prvom rade chcem povedať to, že je úplne jasné, že každý ide do súťaže s
cieľom aj vyhrať a nie iba zúčastniť sa – teda je prirodzené keď sa snažíme
uspieť čo najlepšie. A presne o tom aj nám išlo. Keďže sme boli poučený z
minulého roku (čo sa týka jednoduchosti trate) a vykonali sme niekoľko testov,
tak sme prišli na algoritmus riadenia ktorý bol dosť presný a jednoduchý
(algoritmus bude ďalej presne popísaný). Ak niekto spochybňoval našu výhru z
dôvodu nie uplnej autonómnosti robota, tak musím iba konštatovať fakt, že je to
jeho vec. Aj keď možno z istého hľadiska je pravda, že robot sa mal vyhnúť
prekážke (lavička v parku) a nie iba pred ňou zastaviť ale o tom pravidla
neboli. Celý náš plán bol založený na tom, že ak sa objaví problém a robot
prejde za trať, tak sa iba jednoducho vloží na miesto z ktorého vyšiel a bude
pokracovať ďalej – čo podľa pravidiel bolo možné. A tak chcem iba poukázať na
fakt, že naša stratégia sa iba prispôsobila pravidlám súťaže. To je možno
inšpirácia pre organizátorov do ďalších ročníkov súťaže robotour aby zlepšili
pravidlá a urobili túto súťaž ešte atraktívnejšou.
Čo sa týka nášho algoritmu tak bol založený na nasledovnom princípe:
Pred súťažou sme dostali presnú mapku po ktorej robot musí prejsť až k cieľu.
Keď sme mali túto mapku tak sme si celú trať spolu s robotom navigovaným
pomocou joysticku prešli, pričom robot si presne zaznamenával na časovú os
rýchlosť otáčania kolies a tiež aj zmenu natočenia pomocou elektronického
kompasu. A pri súťažnom štarte robot iba jednoducho „vyťahoval z pamäte
informácie ako išiel prvý krát“ Je jasné, že takýto algoritmus sa nedokáže
vyhýbať stretom s prekážkami a aj to, že sa integruje neustále chyba, ktorá
vzniká pri nepresnej rekonštrukcií zaznamenaného priebehu – prešmyky kolies na
piesku, tráve a vode a podobne a tiež aj fakt, že WinXP ako operačný systém nie
je systémom reálneho času. S týmto všetkým sme aj počítali a vedeli sme že je
malá náhoda že prejdeme až do cieľa ale vedeli sme aj to, že aspoň nejaké body
získame za to, že prejdeme nejakými úsekmi. Čo sa týka naintegrovanej chyby,
tak sme si poradili jednoducho, keď robot vyšiel z trate tak sme ho posunuli na
stred cesty čím sme vlastne takmer vynulovali naintegrovanú chybu čo podľa
pravidiel možné bolo ;)
Finálna verzia teda bola taká, že sme použili iba kompas a vhodne upravili
riadenie motorov na to, aby sme získali body. Tejto finálnej verzii ale
predchádzala verzia robotu, ktorý používal iba odometriu respektíve iba záznam
smeru a rýchlosti na časovej osy z naučenej dráhy bez použitia kompasu. Ale
tento spôsob bol veľmi nepresný v miestach kde sa musel robot otáčať, pretože
pri otáčani vznikali prešmyky pneumatik a najhoršie to bolo v tom, že prešmyky
na tom istom povrchu boli vždy iné a tým sa až prudko integrovala chyba. Po
týchto testoch sme prišli na nápad použiť kompas pre meranie okamžitého smeru
natočenia. Tento spôsob je ale využiteľný iba tam, kde nie sú zmagnetizované
kovové predmety ktoré by mohli ovplyvňovať kompas. Je úplne jasné, že najlepšie
by bolo, keby robot dokáže riadiť pomocou GPS a výjazd z dráhy by kontroloval
napríklad kamerou, respektíve všeobecne by výjazdy z trate kontroloval nejakým
senzorom alebo sústavou senzorických systémov. Práca na takomto robotovi je ale
príliš zložitá a my sme na to nemali čas ale do budúcej súťaže by sme chceli na
podobnom princípe zapracovať.
Problémy s GPS
Najväčšou výzvou pre každého bolo využitie GPS pre orientáciu v zadanej mapke.
Ako som už na začiatku spomenul, keď sme šli do prvého ročníka súťaže, tak sme
si až priveľa sľubovali od GPS. Ale opak bol pravdou. Klasická GPS vás nedokáže
navigovať presne na konkrétny bod a nulovou odchýlkou. Táto odchýlka má v
skutočnosti hodnotu cca 10m s tým že občas aj oveľa viac a tu vzniká problém
využitia GPS rozlohovo malej oblasti. Musel by byť vytvorený algoritmus ktorý
dokáže robota navigovať po bodoch na ktoré sa robot v mnohých prípadoch ani
nedostane (waypoint mimo trate) a podobne. Rovnako dôležité je aj to, akou
kvalitnou GPS bola premeraná súťažná mapa. Pre tieto účely by bolo vhodné
použiť takzvanú diferenciálnu GPS (DGPS) jedná sa o zložitý systém dvoch GPS čo
by bolo pre väčšinu tímov nepoužiteľné z hľadiska ceny alebo by mohla byť
použitá armádna GPS ale problém je znovu v cene. Tým ale nechcem povedať že
klasická GPS je nepoužiteľná v súťaži! Možné to je ale chce to veľmi dobre
premyslieť algoritmus navádzania a myslím si, že v najbližších ročníkoch tým
ktorý toto zvládne tak, si zaslúži bonusové body na viac ;).
UTAR Robotour 2007 |
Ešte by som mal doplniť jednu informáciu o GPS a to, že zadané body sme si
previedli do UTM formátu a tie sme si graficky vykreslili mapy a tam sme
zistili, že body majú na segmentoch ofsety podľa ktorých sa nedá správne
navigovať a práve na tejto skutočnosti stroskotali naši kolegovia z Red Team
Brno.
Je potrebné si tiež uvedomiť, že park stromovka je dosť zalesnený terén, teda v
parku sa nachádza veľa stromových porastov, ktoré znižujú kvalitu príjmu z
družice GPS. Preto by som ostatným tímom odporučil, keby sa v budúcnosti
zameriavali na GPS prijímače, ktoré majú v sebe rádiový modul SirfStarIII ktorý
má výborné vlastnosti v náročnom teréne.
Kompas
Dá sa teda povedať že najdôležitejšou súčasťou nášho robota bol elektronický
kompas. Ten sme použili konkrétne od firmy Honeywell. Jedná sa o vysoko presný
kompas a navyše s automatickým kompenzovaním náklonu do +-60°. Táto kompenzácia
ako tvrdí výrobca, je uskutočnená pomocou akcelerometra zabudovaného priamo na
doske kompasu. Dôležitým faktom tohto kompasu je to, že pri zrýchlení alebo
spomalení ukazuje akcelerometer chybný smer (zvisle dolu) a za základe tohto
chybného smeru zle koriguje uhol a preto musí pre následné riedenie byť použitý
rovnaký rýchlostný profil ako pri zázname.
Kompas má dve rôzne zbernice RS-232 a SPI. Menší problém nastal ako u každého
kto používal kompas vtedy, keď sme zistili že kompas je veľmi silno citlivý na
kovové časti skrinky robota. Problém sme riešili tým, že sme kompas umiestnili
do PVC „komínku“ pričom dôsledku tejto mechanickej úpravy vznikol iný problém.
Pri malých otrasoch robota sa silno otriasal PVC trubka v ktorej bol kompas a
to spôsobovalo malé nepresnosti v údajoch ktoré posielal kompas a tak sme boli
nútený vzťažnými lankami uchytiť konce PVC trubky a tým znížit chvenie pri
otrasoch. Jediná nevýhoda takejto kompenzácie spočívala v estetike ale tá
nemala našťastie vplyv na bodovanie.
Chvenie v PVC trubke v ktorej bol kompas sa nám podarilo znížiť aj použitím
kvalitnejšej PI regulácie pri pohybe ale hlavne pri otáčaní podvozku.
Riadenie podvozku
Ako som už na začiatku povedal, robot mal diferenciálny podvozok poháňaný dvomi
motormi. Motory sú riadene driverom, ktorý je pre každý motor samostatný. Jedná
sa o systém s mikrokontrolérom riadiaci samotný driver ktorý riadi výkonný H
mostík. Ako spätná väzba pre reguláciu sa používa inkrementálny senzor od frmy
HP ktorý je ale súčasťou motoru. Komunikácia dosky driveru s riadiacim PC je
vytvorená prostredníctvom RS-232. Predné a zadné kolesá boli reťazovo navzájom
prepojené čím vznikla veľmi dobrá schopnosť pohybu po nerovnomernom teréne
ktorá sa nám osvedčila keď robot vyšiel dvomi kolesami na obrubník pričom
nerobilo mu to najmenší problém.
Dva akumulátory 12V o kapacite 18Ah mu dokázali dať dostatočné množstvo energie
potrebnej na prekonanie cca 6x súťažnej dráhy (1x skúšobne a 5x súťažne) pričom
medzi dvomi súťažnými kolami mal asi hodinu na dobíjanie akumulátorov ale tie
boli dobíjané iba nízkym prúdom cca 1,5A.