TÉMA - Co se skrývá pod kapotou samořídících automobilů?
Máme tedy v krátkosti probrané nejdůležitější senzory a některé výpočetní systémy. Nyní se pustíme do algoritmů. Chytrý čtenář by samozřejmě na tomto místě mohl podotknout, že pro řízení auta člověkem stačí visuální (obrazová) informace a navíc z monokulární kamery. Nepotřebujeme ani stereoskopické vidění, i když to je značně výhodnější.
Pokud bychom na místo řidiče umístili otočnou dvojici kamer (stereoskopické vidění) a auto řídili dálkově např. pomocí zařízení jako je OculusRift, výsledek by byl stejný jako kdyby řidič seděl přímo ve voze.
Na tomto principu jsou založené např. letecké simulátory nebo simulátory v autoškole. Proč tedy musí mít autonomní auto ostatní senzory? Důvod je ten, že zpracování obrazové informace je značně složité. Slovo „značně“ ani zdaleka nevystihuje onu „strašnou“ složitost a především obrovskou výpočetní náročnost.
Bohužel stále nevíme, jak v tomto směru pracuje lidský mozek a proto není možné řídící algoritmus klasicky od někoho „okopírovat“. Využíváním více senzorů se tak ospravedlňuje dočasná neschopnost navrhnout zcela autonomního a perfektního pilota. Právě radar a 3D Laserové senzory zastávají velmi důležitou roli, protože díky nim je možné určit vzdálenost statických a pohyblivých překážek vůči vozu. Stejně tak je důležitý i GPS a akcelerometr.
Ideální svět
Původní myšlenka řízení vozů v autonomním režimu byla poměrně jednoduchá a dnes se běžně využívá v průmyslových závodech, kde k tomu jsou vhodné podmínky. V reálném světě - na ulici - je bohužel situace poněkud jiná. Světu vládne chaos a ten se počítačům příliš nelíbí.
V ideálním případě – resp. původní čistě akademická myšlenka autonomního vozu – byla taková, že každý vůz je reprezentován bodem – viz obrázek níže (žlutý bod) a má kolem sebe jakousi bezpečnou oblast, kterou reprezentuje červený obdélník.
Do této oblasti se celý automobil vejde a tato oblast je cca o několik cm větší než půdorysná projekce vozu na silnici. Každé auto současně ví o všech ostatních účastnících silničního provozu – tedy nejen o osobních vozech, ale také o chodcích, nákladních vozech, cyklistech apod. K navigaci je využíván systém GPS, 3D Laser, akcelerometr, odometrie, sonar, a další.
Protože všichni účastníci silničního provozu o sobě vzájemně ví, znají svoji přesnou polohu, znají svoji rychlost i rychlost okolních účastníků silničního provozu, stav vozovky, okolní teplotu, svoji váhu, tak silniční provoz je zcela bezpečný. Ke kolizím by teoreticky nemělo vůbec dojít. Pro případ nenadálých situací má každé auto senzory jako je kamera, 2D/3DScanner, Sonar, Radar a tyto senzory zajistí okamžité zastavení nebo zpomalení vozu.
V tomto ideálním světě neprší, nesněží, nepráší se, nedochází s poruchám senzorů, silnice má ideální povrch, nefouká vítr a do silnice nemůže vběhnout nějaké zvíře - a pokud ano, tak v takové vzdálenosti, že auto dokáže bezpečně zastavit. Jednoduše ideální svět. Je těžké vyjmenovat seznam všeho ideálního.
Práce na několik desetiletí
Tento „naivní“ stav panoval od počátku 70. let a přetrval i do 80 let. Především v akademické sféře, protože nikdo jiný s tím jednoduše řečeno nechtěl mít nic společného. Po hlubší analýze daného problému se ukázalo, že výpočetní náročnost zpracování všech dat ze senzorů vysoce překračovala jakékoliv výpočetní možnosti a to i možnosti tehdejších superpočítačů.
Proto byl problém zjednodušen a první autonomní vozítka měla pouze 2 senzory, a to sonar a data z odometrie, později přibyla jednoduchá černobílá kamera. O autonomní Tesle se tehdy nikomu ani nezdálo a tehdejší vozítka zvládla „autonomně“ ujet pouze několik metrů v laboratoři. Ona kamera byla zvolena spíše symbolicky, protože na nějaké zpracování toku dat z kamery nebylo technické vybavení.
Robot sestavený v roce 1975, autor Hans Moravec
Mapa prostředí, kterou si robotí vozítko dokázalo zapamatovat, vypadala přibližně jako na následujícím obrázku. Obdélník reprezentuje malou místnost, trojúhelník autonomní vozítko a nepravidelné paprsky pak měření sonaru. Je nutné upozornit, že takovéto z dnešního pohledu směšné výsledky byly k dispozici až v roce 1991(!!!). Výsledkem práce řídícího algoritmu bylo tedy několik detekovaných stěn a bodů – viz. obrázek (l) vpravo dole.
SLAM
Robot se pohyboval rychlostí max. několik cm za sekundu. V pozdějších letech se pro úlohu navigace a tvorby mapy vžilo označení SLAM neboli Simultaneous Localization And Mapping. Řešení problému SLAM je v dnešní době jedním z hlavních témat vývoje v oblasti návrhu řízení autonomních vozidel a jedná se o nesmírně rozsáhlou problematiku.
[Zdroj: Leonard J.J. and Durrant-Whyte H.F. (1991) Simultaneous map building and localization for an autonomous mobile robot,IROS-91, pp. 1442-1447]
Řešení problému SLAM je každodenním chlebem právě pro vývojáře, kteří pracují na GoogleCars a autonomních pilotech Tesla. Pojem SLAM zahrnuje schopnost řídícího algoritmu sestavit si vlastní mapu prostředí, ve kterém se autonomní entita pohybuje a na základě této mapy se v daném prostředí orientovat, nebo-li jednoznačně určit svoji polohu, provádět permanentní update mapy v případě změn a to vše v prostředí s pohybujícími se objekty – tedy v reálném světě.
Problém SLAM je opravdu velmi složitý, a tak systémy pro navigaci vozu jako např. auta GoogleCars nebo Tesla využívají již hotové mapy prostředí, ve kterém se pohybují a soustava senzorů pouze zajišťuje korekce pozice a prevenci kolizí. To co takový 3DLidar senzor vidí, je zobrazeno na videu zde. V příkladu je senzor použit pro navigaci dronu – tetrakoptery. Nicméně auto „vidí“ to samé.
Lokalizace
V oblasti navigace je nezbytné, aby autonomní vůz věděl, kde se nachází. Říká se tomu lokalizace. Existuje tzv. globální lokalizace a lokální lokalizace. Globální lokalizace reprezentuje stav, kdy entita ví, kde se nachází v globálním měřítku.
Česky řečeno vím, že právě jsem na planetě Zemi, v Evropě, v Praze, v Celetné ulici č.p. 10, sedím v kanceláři na židli za stolem u okna a dívám se směrem na sever. To samé platí i pro autonomní auto, které jede po dálnici kdesi v Kalifornii.
Lokální lokalizací je myšlena schopnost detekovat změnu lokální pozice a to i vůči ostatním statickým nebo pohybujícím se objektům. Obvykle se jedná o nutnost detekce jiných objektů, které se v daném nejbližším okolí vyskytují. Tedy domy, stromy, okolo jedoucí auta, chodci, zvěř, ale také prach, sníh apod.
Na základě této informace pak autonomní vůz musí nějak reagovat, neboli plánovat tu správnou trajektorii bez kolizí. Pro autonomní vozy je právě lokální lokalizace tím možná nejdůležitějším, protože svoji globální polohu zná auto obvykle z GPS nebo ji zadá řidič a systémy GPS, pokud fungují, zvládnou pozici aktualizovat dostatečně rychle. Dostáváme se tedy stále hlouběji do králičí nory, která začíná být z pohledu dnešní vědy v podstatě nekonečná.
Umělá inteligence
Problémy popsané výše v dnešní době řeší vědní obor nazývaný Umělá Inteligence (Artificial Intelligence). Tento obor je dnes již nesmírně rozsáhlý. Nahlédneme proto blíže do problému lokální lokalizace a necháme vše ostatní stranou a to i přesto, že je to velmi důležité. V dnešní době existuje mnoho různých algoritmů pro řízení autonomního vozu v lokálním prostředí.
Jak již bylo řečeno, pro člověka je dostačující visuální informace, aby mohl řídit vůz. Tak, jak auto projíždí např. městem nebo krajinou, dokáže řidič-člověk identifikovat jednotlivé objekty např. značky u silnice, bílé čáry na silnici, okolní auta, chodce. Už jen samotná detekce a identifikace všech těchto objektů je nesmírně náročná. Některé automobilky nabízí již v základní výbavě detektory dopravních značek.
Auto samo přizpůsobí rychlost podle dopravního značení. Obvykle se za ideálních podmínek uvádí úspěšnost vyšší než 90 procent a dokonce někdy i vyšší než má člověk. To samé platí i o tzv. parkovacích automatech. Zdálo by se, že když existuje algoritmus na detekci a identifikaci značek, pak vše ostatní bude jednoduché a v podstatě to samé, ale bohužel tak tomu není.
Teorie kontra praxe
Zde najdeme jednu z mnoha zajímavých prací, která se zabývá právě problémem mapování a lokalizace na malém prostředí s využitím visuální informace. Cílem je právě vytvořit mapu lokálního prostředí čistě na základě visuální informace. Algoritmus nejprve vytvoří sféru a na ni promítá jednotlivé obrazy získané z kamery. Takto si vytvoří celé lokální prostředí.
Podobné algoritmy se využívají již dlouho např. hotely je používají pro tzv. virtuální prohlídku. Pokud bychom takto prošli s kamerou městem a nasnímali postupně všechna místa, pak by za ideálních podmínek – ideální osvětlení, žádné pohybující se objekty - bylo možné autonomní vůz navigovat jen s pomocí těchto informací.
[Zdroj]
Svět ale takový není. Budovy nebo stromy vrhají stíny, ve městě probíhají neustále opravy, okolní prostředí je v podstatě pohyblivé. Ani výpočetní náročnost není nejmenší. K vytvoření tohoto příkladu bylo zapotřebí plné síly Intel i7 920 + NVidia GTX 480 GPU (z dnešního pohledu opět poněkud úsměvné).
Na příkladu je však řešen JEN problém sestavení obrazu a následná lokalizace s využitím navrženého algoritmu. Žádná další identifikace objektů v obraze není prováděna. Některé problémy jako např. existence tmavých stínů a změna jejich polohy v průběhu dne je dnes již dobře řešitelná s využitím hlubokých neuronových sítí.
Existuje však možnost si jednotlivé prvky uměle „přimalovat“ do mapy v paměti a tento obraz pak porovnat s reálným obrazem. Jinými slovy přidat možnost chápat reálný svět, běh slunce po obloze, cyklus dne a noci. V paměti počítače se tak vytváří obraz reálného světa z různých míst formou shluků sfér (mraky sfér), ve kterých se autonomní vozidlo pohybuje.
Při opakovaném průchodu se již jen porovnávají jednou nasbíraná data s aktuálním obrazem z kamery. Detekce pohybu a především odhad změny pozice čistě z obrazových dat se děje tak, že v poměti počítače je uložena sféra a lokální kamera snímá okolní obraz. Počítač se pak snaží aktuální obraz nějak připodobnit k tomu, který je možné vybavit si z paměti počítače z aktuální sféry, ve které se pravděpodobně lokalizovaný objekt nachází.