FoG (1. část)
Praha
FoG (Forces of Gerstner) tým jako jediný na Robotour 2007 využil možnosti soutěžit s více roboty. Vedoucí robot HEAD pracoval na trošku jiných základech než následující BODY a TAIL a tak je text rozdělen do dvou částí. Zde naleznete přehled o cele koloně a druhé části pak detaily o implementaci navigace HEADu.
RoboTour 2007 - Představení týmu FoG
Jan Faigl, Tomáš Krajník, Karel Košnar, Jan Chudoba, Ondřej Fišer, Hana
Szücsová, Vladimír Grimmer, Vojtěch Vonásek
Úvod
Tento článek blíže představuje část univerzitního týmu FoG z Českého
Vysokého Učení Technického v Praze, který se účastnil robotického klání
RoboTour 2007, konaného v pražské Stromovce v září roku 2007. Robotická soutěž
RoboTour 2007 byla zaměřena na autonomní převoz užitečného nákladu. Úkolem
bylo postavit kolonu až tří robotů schopných vézt náklad a autonomně projet
trasu délky cca 1 km. Roboty v koloně nesměly být mechanicky spojené a jejich
rozestup neměl přesahovat 2 metry. Tým FoG nastoupil se třemi roboty. Pouze
první byl schopen autonomní navigace ve venkovním prostředí, ostatní roboty jej
postupně v koloně následovaly. V tomto textu je uveden popis zejména dvou
robotů sledujících robot před sebou.
Obsah článku je rozdělen do několika oddílů. V následujícím jsou představeni
živí i neživí členové týmu FoG. Popis hardware je uveden v dalším oddíle,
přičemž každému robotu je věnováno několik odstavců. Programové vybavení
robotů je uvedeno v samostatné části. Oba roboty používají pro navigaci
sledování barevného objektu, avšak každý využívá odlišného způsobu detekce
vzdálenosti od sledovaného robotu, proto je popisu každého přístupu věnovaný
samostatný oddíl. V závěru jsou shrnuty získané zkušenosti a plány pro další
ročníky robotické soutěže autonomních robotů RoboTour.
Představení týmu FoG
Jméno týmu FoG je tvořeno počátečními písmeny anglického Forces of
Gerstner, neboť zakládající členové tohoto týmu jsou (byli) studenti působící
ve skupině Inteligentní a Mobilní Robotiky [1] (IMR), která je jednou z
vědeckovýzkumných skupin Gersternerovy Laboratoře [2]. Gerstnerova Laboratoř
je částí katedry kybernetiky [3] při Fakultě elektrotechnické [4] Českého
Vysokého Učení Technického v Praze [5]. Hlavním oborovým zaměřením této
laboratoře je studium umělé inteligence a to jak na úrovni základního výzkumu,
tak na úrovni aplikací.
Úspěšná účast v samotné soutěži RoboTour není přímo cílem vědecko-výzkumných
aktivit skupiny IMR, koreluje spíše s jedním z dlouhodobých záměrů výzkumu v
mobilní robotice, kterým je sestavení autonomního inteligentního vozidla. Z
tohoto důvodu je RoboTour využíván především jako testovací platforma pro
ověření některé nově vyvinuté metody nebo přístupu. Přizpůsobování robotu pro
konkrétní pravidla soutěže s cílem vyhrát je tedy spíše druhořadou aktivitou.
Velmi důležitým argumentem pro účast v soutěži je také možnost získání
praktických zkušeností s vývojem autonomního mobilního robotu pro studenty
bakalářských a magisterských oborů ČVUT v Praze, neboť přesně definovaný den
konání soutěže je vhodnou omezující podmínkou pro vytvoření správného
pracovního nasazení.
V roce 2007 tým FoG plánoval nasazení 3 robotů:
- "Cowley" P3AT - experimentální robotická platforma (vedoucí robot),
- "Bodie" P3AT - experimentální robotická platforma (sledující robot),
- "Doyle" robotický podvozek vlastní konstrukce (sledující robot).
V souladu s pravidly pro rok 2007 [6] je hlavní (vůdčí) robot označován
„Head”, robot následující označován „Body” a poslední robot „Tail”.
První a druhý robot je ve skupině IMR používán pro experimentální ověření
vyvíjených algoritmů ve venkovním prostředí. Základem podvozku je mobilní
robot Pioneer 3 AT společnosti ActivMedia Robotics [7]. Robot „Head” a
robot „Body” při soutěži RoboTour 2007 jsou zobrazeny na obrázku 1. Navigace
robotu „Head” je založena na rozpoznávání cesty a význačných objektů v obrazu
kamery. Robot „Body” stejně jako „Tail” sleduje kamerou objekt výrazné
barvy na robotu „Head” resp. „Body”.
Členové týmu FoG spolu s jejich převládající úlohou jsou uvedeni v tabulce 1.
Ačkoliv je ve třetím sloupci uveden robot na jehož konstrukci se tento člen
nejvíce podílel, kompletní realizace autonomního mechanizovaného konvoje je
výsledkem práce všech členů týmu.
Členové týmu FoG:
Jméno | Zařazení | Robot |
---|---|---|
Krajník Tomáš | vedoucí týmu | Head |
Fišer Ondřej | hardware | Head |
Faigl Jan | hospodář | Body |
Košnar Karel | implementace | Body |
Chudoba Jan | hospodář | Tail |
Grimmer Vladimír | Hardware | Tail |
Szücsová Hana | Hardware | Tail |
Vonásek Vojtěch | Software | Tail |
Jan Sova | Sudí |
Roboty
Robot — „Body”
Podvozek
Hlavní část robotu tvoří mobilní platforma Pioneer 3 AT (P3AT). Specifikace
této platformy lze nalézt na stránkách společnosti ActivMedia Robotics [7],
proto zde uvedeme především informace o použitém přístrojovém vybavení neseném
platformou, obrázek 2.
P3AT je diferenciální podvozek se samostatně řízeným levým a pravým pohonem,
který zatáčí smykem. Základní řízení motorů a vyčítání senzorů je realizováno
samostatnou procesorovou deskou. Nadřazený palubní počítač je připojen k
procesorové desce rozhraním RS232.
Součástí platformy P3AT jsou přední a zadní taktilní nárazníky, které po
aktivaci zastaví pohony na hardwarové úrovni. Modul řízení robotu využívá
odometrické informace fúzované s daty z vnitřního gyroskopu.
Robot je napájen ze samostatného bezúdržbového olověného akumulátoru o kapacitě
přibližně 20Ah. Nástavba podvozku, na které jsou uchyceny senzory robotu a
další vybavení, je vytvořena z hliníkových profilů stavebnice Item.
Na zadní části robotu je uchycen optický maják červené barvy s vlastním
osvětlením, který slouží pro navigaci robotu „Tail”. Robot je vybaven
magnetickým kompasem TCM2, který byl používán při složitějším průjezdu
křižovatkou. Systém GPS slouží k monitorování polohy pro účely posouzení jeho
přesnosti a k řízení robotu není nijak využit.
Kamera
Kamera použitá na robotu „Body” je běžná USB webová kamera s plastovou
optikou a čipem ov518+. Použitý čip ukládá obraz ve formátu JPEG, který je
následně přenášen do palubního počítače. Kamera pracuje až do rozlišení
640x480, avšak ztrátová komprese snímků znesnadňuje sofistikovanější zpracování
obrazu.
Palubní počítač
Součástí platformy P3AT je průmyslový počítač s procesorem Intel Pentium III,
který je taktován na 900MHz a osazen 256MB operační paměti. Základní deska
obsahuje 4 sériové porty RS232, ty však nelze použít zcela nezávisle, neboť
porty sdílejí přerušení, experimentálně bylo ověřeno bezproblémové použití
pouze 3 portů současně.
V základní konfiguraci platformy P3AT jsou pohony a palubní počítač napájeny z
jediného zdroje, což není příliš šťastné řešení, neboť při záběru motorů může
krátkodobě klesnout napětí akumulátoru, což způsobí restart palubního
počítače. Z tohoto důvodu bylo použito dvou oddělených napájecích zdrojů.
Palubní počítač je napájen ze samostatného bezúdržbového olověného akumulátoru
přes obvod nabíjecí desky. Ta umožňuje plynulý přechod na režim napájení a
současného nabíjení ze sítě bez restartu počítače.
Podvozek je připojen k palubnímu počítači rozhraním RS232.
Ultrazvukové majáky
Vzhledem pravidlu definujícím maximální vzdálenost robotů v koloně je nutné
také určit vzdálenost robotu „Body” od robotu „Head”. Pro měření
vzdálenosti „Head” a „Body” je použito systému ultrazvukových majáků.
Maják se skládá z osmibitového mikrořadiče (MCU Atmel ATtiny2313),
ultrazvukového měniče, radiového modulu (Radiocraft 433MHz) a obvodů rozhraní
RS232. Při měření vzdálenosti vyšle měřící maják radiový povel s příslušnou
adresou. Adresovaný maják odpálí po přijetí tohoto příkazu ultrazvukový puls.
Pokud je tento puls zachycen v definovaném časovém intervalu měřícím majákem,
je z doby letu zvuku určena vzdálenost majáku adresovaného. Adresovaný maják
je umístěn na robotu „Head”, jeho ovládání probíhá z robotu „Body”.
Přesnost měření vzdálenosti se pohybuje v řádu jednotek cm. Dosah je v
reálných podmínkách 5 až 10 m. Rychlost měření vzdálenosti závisí na počtu
obsluhovaných majáků, pro jediný maják je perioda vyčítání 200 ms.
Komunikační modul
Kromě reaktivního sledování robotu „Head” může robot „Body” realizovat
komplexnější průjezd křižovatkou, o kterém je informován řídícím software
robotu „Head”. Komplexnější kooperativní chování robotů „Head” a „Body”
však vyžaduje explicitní komunikační kanál, který je realizován radiovou
přenosovou soustavou založenou na technologii ZigBee. Komunikační deska je
osazena rádiovým modulem RC2200AT SPPIO [8]. Modul obsahuje kromě vlastního
radiového čipu s anténou také MCU AVR ATMega 128 [9]. Tento mikrokontrolér
obsahuje implementaci ZigBee síťové vrstvy spolu s implementací vrstvy 802.15.4
MAC. Komunikační modul je možné připojit k palubnímu počítači rozhraním RS232
nebo USB, neboť komunikační deska obsahuje převodníky logických úrovni 0,1 z
rozsahu 3,3 V na rozhraní RS232 a USB.
Pro vlastní komunikaci je však v podstatě využito pouze MAC vrstvy 802.15.4,
nad kterou běží vlastní aplikační komunikační protokol, Radiový přenos je
realizován v pásmu 2,4GHz. Komunikační deska je připojena k palubnímu počítači
sériovým rozhraním o rychlosti 57600 bps. Maximální dosažená obousměrná
přenosová rychlost je přibližně 12000 bitů za sekundu, komunikační dosah je v
řádu desítek metrů.
Robot — „Tail”
Robot „Tail” představuje robotickou platformu, kterou je možné vyrobit i za
velmi skromných podmínek. Architektura demonstruje možnost řízení robotu
jednoduchými mikrořadiči na základě dat z kamery.
Podvozek
Podvozek je tvořen rámem o rozměru 0,45 m x 0,55 m, který je vyroben z
ocelového plechu tloušťky 5 mm. Platforma představuje diferenciální dvoukolový
robot s opěrným kolem. Pohony jsou realizovány dvěma nezávislými motory včetně
převodovky z běžných akumulátorových vrtaček. Motory jsou řízeny můstky
osazenými na desce MD22 [10] komunikující prostřednictvím rozhraní I2C. Tato
řídící deska je připojena k procesorové desce s MCU ATMega168.
Kamera
Robot „Tail” je vybaven jednou z nejjednodušších inteligentních kamer, tj.
kamer, které kromě snímání obrazu umožňují také obraz zpracovávat přímo na
desce se senzorem. Použitá kamera CMUcam2 [11], obrázek 4, pracuje v režimu
15 barevných snímků o rozlišení 160 x 85 za sekundu, přičemž disponuje
dostatečným výpočetním výkonem pro jeho jednoduché zpracování v reálném čase.
Hlavní výhodou této kamery oproti běžným webovým kamerám je její sériové
rozhraní s úrovněmi TTL (UART), připojení této kamery k běžným mikrořadičům tak
nevyžaduje převodníky napěťových úrovní nebo další obvody.
Kameru je také možno provozovat v režimu sledování, kdy přímo řídí dva
servomotory tak, aby sledovaný objekt setrvával ve středu jejího zorného pole.
V tomto režimu by tak mělo být možné řídit robot přímo signály z její
procesorové desky.
Algoritmy kamery pracují v barevném prostoru citlivém na okolní osvětlení, měl
sledovaný předmět (maják) připevněný na zádi na robotu „Body”, který robot
„Tail” sledoval, své vlastní osvětlení.
Palubní počítač
Přestože použité komponenty pro řízení a snímání lze přímo připojit k
jednoduchému MCU, byl na robot „Tail” umístěn palubní počítač s plnohodnotným
operačním systémem, především z důvodu zrychlení ladění a vývoje hlavní řídící
aplikace. Procesorová deska s ATmega168 je tak použita pouze jako inteligentní
převodník RS232 na I2C. Palubní počítač je tvořen deskou VIPER společnosti
Arcom [12], která je osazena procesorem XScale PXA255 taktovaném na 400MHz.
Deska je osazena 64MB operační paměti a 32MB paměti typu Flash, další rozšíření
úložného prostoru je možné prostřednictvím Compact Flash slotu. Na robotu je
umístěn VIPER ve verzi vývojového kitu, který obsahuje desku v plechové skříni
spolu s pěti vyvedenými RS232 porty. Kit obsahuje zálohovaný zdroj (UPS)
napětí desky, který kompenzuje případné krátkodobé poklesy napětí. Robotickou
platformu je tak možno napájet z jediného zdroje napětí, kterým je bezúdržbový
olověný akumulátor s výstupním napětím 12V a kapacitě 26Ah.
Programové vybavení a algoritmy
Všechny roboty byly vybaveny palubním počítačem s operačním systémem unixového
typu. Použité aplikace byly implementovány v jazyce C nebo C++.
Základem navigace všech robotů nasazených týmem FoG je fúze dat získaných
metodami počítačového a informací z dalších senzorů. Sledující roboty
využívají jednoduché formy analýzy obrazu, sofistikovanější metody používá
„Head”. Fúze algoritmů navigace robotů „Body” a „Tail” je realizována
reaktivní subsumption architektuře [13].
„Body” navigace
Robot „Body” používá kameru k určení směru a ultrazvukový maják k určení
vzdálenosti od vedoucího robotu „Head”. Tyto dva údaje jsou využity k určení
dopředné a úhlové rychlosti robotu „Body”.
Segmentační algoritmus v HSV barevném prostoru. Snímek je procházen po
řádcích, přičemž posloupnosti pixelů zadané barvy jsou seskupovány. Poté, co
jsou pixely na všech řádcích seskupeny, vytvoří se graf sousednosti těchto
skupin. V grafu se pak vyhledají komponenty souvislosti a tím jsou segmenty
pospojovány do souvislých, ale navzájem se nedotýkajících oblastí. Spočte se
těžiště největší oblasti a z rozdílu její horizontální souřadnice a středu
obrazu je odvozena rychlost otáčení robotu.
Ultrazvukový maják se pravidelně dotazuje majáku umístěném na robotu „Head”
na vzdálenost. Rychlost robotu „Body” je přímo úměrná rozdílu této
vzdálenosti a vzdálenosti požadované.
Pomalá řídící smyčka dopředné rychlosti způsobovala časté, ale bezpečné a
vratné kolize robotů „Body” a „Head”.
Vzájemná komunikace mezi „Head” a „Body”
Vzájemná komunikace mezi roboty slouží k minimalizaci odchylky sledovací
trajektorie při průjezdu zatáčkou. Tato odchylka je způsobena tím, že robot
nesleduje vlastní trajektorii vedoucího robotu, ale aproximuje toto chování
sledováním aktuální polohy robotu.
Petriho síť na obrázku popisuje průběh vzájemné komunikace mezi roboty
„Head” a „Body”. Vedoucí robot se pohybuje přibližně po trajektorii
tvořené lomenou čarou, k odchylce od této trajektorie tedy může docházet v
místech změny směru. V těchto kritických místech (obvykle kritických i z
pohledu pravidel) je vypínáno reaktivní chování a je nahrazeno specifickým
chováním pro průjezd křižovatkou.
Průjezd křižovatkou vyžaduje spolupráci obou robotů. Vedoucí robot „Head”
při detekci ostrého zlomu na trajektorii (typický případ je průjezd křižovatkou
cestiček), zastaví a ohlásí sledujícímu robotu „Body” zprávu křižovatka.
Následně čeká na odezvu hotov. Sledující robot po přijetí této zprávy
zahájí chování průjezd křižovatkou. Robot „Body” dojede co nejblíže k
vedoucímu robotu, ohlásí hotov a zapamatuje si vzdálenost od vedoucího
robotu.
Vedoucí robot po přijetí odezvy hotov pokračuje v navigaci v dalším
segmentu, ale pouze tak daleko, aby uvolnil místo v „křižovatce”. Poté
oznámí sledujícímu robotu azimut, kterým místo opustil a čeká na odezvu.
Sledující robot rovně pokračuje v jízdě o zapamatovanou vzdálenost a otočí se
do udaného azimutu. Ohlásí hotov a pokračuje v reaktivním chování
sledování vedoucího robotu. Vedoucí robot po přijetí zprávy hotov
pokračuje v navigaci, jako by k žádnému přerušení nedošlo.
„Tail” navigace
Algoritmus inteligentní kamery robotu „Tail” počítá souřadnice těžiště pixelů
vymezené barvy. Jednoduchým sériovým protokolem je kamera nastavena do módu,
kdy jsou v sejmutém obrazu hledány pixely definované barvy a vypočítávány
souřadnice jejich těžiště.
Kamera na robotu „Tail” je uchycena v jiné výšce než sledovaný objekt na
robotu „Body”, zároveň je rozdíl výšek přibližně konstantní, proto lze ze
souřadnic těžiště odhadovat nejen úhel natočení robotu „Tail” vůči „Body”,
ale i jejich vzájemnou vzdálenost [14]. Z těchto odhadů je pak dvěma
nezávislými PID regulátory vypočtena požadovaná dopředná a úhlová rychlost.
Požadované rychlosti jsou převedeny na PWM signál pro pohony robotu. Samotný
převod souřadnic těžiště na PWM signál motorů není zcela jednoduchý, je potřeba
kompenzovat nelineární charakteristiku dynamiky robotu, která se navíc značně
mění s různým povrchem po kterém se robot pohybuje.
Závěr
Přesnost navigačního systému vedoucího robotu se nakonec ukázala jako
nedostatečná k bezchybnému absolvování celé zadané trasy, tým FoG se tak v
soutěži umístil na třetím místě.
Sledování robotu „Head” robotem „Body” pracovalo uspokojivě a roboty byly
schopny udržovat předepsanou formaci. Občasná selhání byla způsobena radiovým
rušením a následnými výpadky komunikace mezi jejich ultrazvukovými majáky. To
se projevovalo zejména při delším stání robotu „Head”, kdy do něj „Body”
opakovaně narážel. Tímto nečekaným „agresivním” chováním „Body” pomáhal
vedoucímu robotu v situacích, kdy se nemohl otočit správným směrem. Chování
robotů během průjezdu křižovatkou nebylo během soutěže využito. Při
praktických experimentech v prostředí Stromovky, nebylo vzhledem k navigaci
robotu „Head” vzájemné komunikace zapotřebí. Průjezd křižovatkami
nevyžadoval prudké změny směru a reaktivní sledování bylo dostačující.
Robot „Tail” byl testován na rovném povrchu, kde byl schopen sledovat a
udržovat se v dané vzdálenosti od robotu „Body”. Před dokončením testů ve
venkovním prostředí bohužel došlo k závadě na jeho řídící jednotce a robot
„Tail” se soutěže aktivně nezúčastnil.
Průběh a výsledek soutěže nicméně prokázal nejen správnost koncepce jednoho
„chytrého” vedoucího a dvou následujících reaktivních robotů, ale i
použitelnost implementovaných metod a algoritmů. Očekáváme, že v příštím
ročníku soutěže bude možnost použití více robotů zachována a zaměříme se na
odstranění dílčích nedostatků. Bude provedena hardwarová úprava ultrazvukových
majáčků, která zvýší odolnost proti rušení. Na robot „Body” bude umístěn
infračervený senzor vzdálenosti zabraňující kolizím s robotem „Head”. Pohony
robotu „Tail” budou doplněny IRC čidly, což umožní přímo řídit rychlost jeho
kol a zlepšit tak jeho chování v hůře prostupném terénu. Bude zdokonalen
navigační systém robotu „Head”.
Poděkování
Závěrem chceme vyjádřit uznání organizátorům soutěže, poděkovat členům týmů a
všem, kteří podpořili soutěž. Tato práce byla podpořena výzkumným grantem ČVUT
CTU0706113.
Reference
[13] Ronald C. Arkin. Behavior-Based Robotics. The MIT Press, 1998.
[14] Hlaváč Václav and Šonka Milan. Počítačové vidění. Grada, 1988. ISBN 80-85424-67-3.