czech english

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.