BMW na cestě k autonomnímu řízení pomocí simulací ve virtuálním prostoru
První známější experiment s autonomním řízením se udál roku 1925 - pouhých 40 let po patentovém řízení na první automobil (patent byl podán Karlem Benzem v roce 1885 a o rok později schválen). Na zajímavější výsledky však bylo nezbytné si počkat na vývojové práce vykonávané od druhé poloviny 20. století. V roce 2020 již několik firem testuje autonomní vozy se stupněm řízení 4 a 5, avšak v rámci masovějšího testování je dnes vrcholem stupeň 3.
Podle mnoha názorů je dnes nejvyspělejším systémem autonomního řízení systém od společností Tesla Motors, leč velkou zásluhu na tomto názoru bude mít velká viditelnost, marketing a přístupnost systému. Samotného by mně zajímalo srovnání se systémem od společnosti Waymo LLC spadající pod Google, bohužel, většina důvěryhodných článků je zastaralá - z roku 2018.
Obě společnosti mají obrovský náskok - zejména díky rokům testování a datům již z miliard ujetých autonomních mil. Systémy autonomního řízení nejsou přitom pouze výsadou společností jako Tesla nebo Google, tento článek Vám umožní nahlédnout pod ruce vývojářům z vývojového centra pro samořídící vozy automobilky BMW pracujích z kampusu v německém Unterschleißheim - dvacet šest a půl tisícovém městě 17 km severně od Mnichova).
Princip učení se...
Systémy strojového učení, pod něž autonomní řízení spadá, jsou založeny na souboru funkcí vytvořených nad analýzami obřích dat ze silničního provozu. Přesto, trénování samořídicích aut lze přirovnat k učícímu se procesu člověka - dítě již od narození vnímá a v průběhu let je postupně schopno pouhým pozorováním rozpoznat, co je silnice, zatáčka, přechod pro chodce, semafor, dopravní značení a další atributy a jaký je jejich vztah k chování dopravy v daném úseku. Nejprve obecně, z pozice diváka, později podrobně nastudováním příručky pravidel silničního provozu v autoškole.
Pokud princip řízení zjednodušíme ad absurdum, samořídící systém pro automobily musí být schopen:
- Bezchybného rozpoznání předmětů v okolí vozu v mžiku pár milisekund
- Znát pravidla silničního provozu a řídit se jimi
- Chovat se přirozeně, předvídatelně, bezpečně a zodpovědně
- Disponovat elektronickou obdobou "selského rozumu" (systémy 4. a 5. stupně)
Body 2-4 jsou víceméně náležitosti digitálního řídícího modelu vytrénovaného nad souborem pravidel a obřím množstvím vstupních dat z bodu 1, který je současně tím nejproblematičtější. Auta se pohybují v nijak nechráněném vnějším prostředím, zahrnujícím obří množství různých předmětů různorodé hustoty, často se měnících povětrnostních vlivů i anomáliím v chování okolního provozu. Na to vše musí být produkční modely připraveny a řádně otestovány. Řada takovýchto testů by přitom byla v běžném světě enormně nákladných či přímo nerealizovatelných, a právě zde přichází příležitost pro prostor virtuální.
95% testovacích autonomních jízd ve virtuálním prostoru
BMW hodlá v průběhu vývoje a testování systému autonomního řízení 3. stupně urazit se samo-řízenými vozy zhruba 240 milionů kilometrů - drtivá většina (95%) z tohoto množství bude odjeta virtuálně - ve virtuálním prostoru reflektujícím reálný svět. Nejde o nic vyjímečného, virtuální testování je velmi rychlý a efektivní způsob vývoje a ověřování funkčnosti v řadě oborů, ku příkladu pro procesy ve výrobním závodě lze použít obecný software pro virtuální simulace Prespective). V případě vývoje autonomního řízení v BMW se používá specializovanější software, leč vzniklý formou nástavby nad obecně použitelným herním Enginem Unity. Tato nástavba, tvořena a spravována 12 členným týmem vývojářů kolem Nicholase Dunninga zásadním způsobem zjednodušuje proces vývoje a snižuje počet nástrojů, které by jinak 1800 členná, agilně (v malých skupinách) pracující masa vývojářů autonomního řízení pro BMW musela používat.
Daný nástroj je pro vývoj a testování modelů autonomního řízení nezbytný, poněvadž přináší hned řadu výhod a řeší několik problémů:
- Převádí data získaná ze senzorů a řídících modelů do 3D modelu reflektujícího podobu světa a tím umožňuje vývojářům snadnou analýzu chyb a chování modelu
- Umožňuje tvorbu dílčích i celistvých automatizovaných testů
- Umožňuje testovat velmi nebezpečné situace, jež je problematické v běžném světě nasimulovat
- Umožňuje nastavovat prostředí - velikost provozu, typy dopravních prostředků, dopravní značení, typy čar a vozovky, chodce, viditelnost (fáze dne (dle hodiny), déšť, mlha...)
- Umožňují trénování autonomního řízení ve virtuálním prostoru, a to současně hned v několika typech povětrnostních podmínek a světlosti
- Na základě měření vzdálenosti mezi řízeným vozem a překážkami detekuje nebezpečné situace a reportuje je vývojářům
- Umožňuje nastavovat "breakpoints" a tím jednoduše sledovat data v kritických okamžicích analyzované situace
- Umožňuje plánovat trajektorii vozidla
- Umožňuje nepřetržitý nezávislý běh testování a učení (režim 24/7/365).
Vývoj a automatizované testy
V témže nástroji, jako na videu výše, vývojáři mohou tvořit sérii automatizovaných testů, a to kompletně od 0, i jednoduše zreplikováním situace, k níž došlo při testování samořídícího vozu ve skutečném světě a z nějakého důvodu je považována za zajímavou. Testy se tvoří dvojí:
- Dílčí testy - Rychlé testy chování v jednotlivých situacích (do 1 minuty délky)
- Celistvé testy - Test chování na trase mezi body A a B (například 2ma německými městy).
Spravování zdrojových kódů autonomního řízení je podobné vývoji jiných softwarových produktů. Každý inženýr / tým, odpovědný za určitou část, provádí vývoj a testování na své stanici, a jakmile je s výsledky spokojen, odesílá nové / vylepšené kódy do hlavní vývojové větve.
Testy funkcionality pro ověření celistvosti chování se provádí po každé úpravě, a to současně v různých světelných a povětrnostních podmínkách.
Vyjma počasí (den, noc, déšť, mlha, sníh, led), vývojáři při jakémkoli testu ve virtuálním prostředí mohou hýbat i s velikostí a typem provozu, dopravním značením, značením na vozovce, existencí chodců a nezanedbatelným počtem dalších parametrů.
Při vyhodnocování testů se vychází převážně z dosažených vzdáleností mezi samo-řízeným vozem a překážkami a z údajů o rychlosti změny pohybů autonomního vozu. Funkci měření vzdálenosti s vyhodnocením v 2D grafu je možné aktivovat v pravém dolním rohu editoru. Ukázka výstupu a jeho vyhodnocení viz graf níže.
Situace se selháním společně se situacemi, v nichž se model zachoval jinak, než je předpokládáno, jsou při testech zpětně reportována vývojářům, kteří se jednoduše prostřednictvím stále stejného nástroje mohou v 3D vizualizaci podívat na danou situaci, analyzovat ji, zjistit problém, upravit soubor pravidel, provést testy, a po úspěšném vylepšení a ověření, že jejich změna negativně neovlivnila chování v jiné situaci (pro níž existuje test), označit danou situaci za "ošetřenou".
Testování kritických situací
Největší výzvou je řešení kritických situací, typu překážky zaznamenatelné ve velmi pozdní fázi vlivem jejího odkrytí jiným účastníkem provozu. Vyběhnutý chodec zpoza překážky, nedání přednosti v jízdě, odkrytí stojícího vozu až úhybným manévrem auta jedoucím před samořídícím vozem - všechny tyto situace jsou zaznamenána na videu níže. Nemluvě o etických otázkách.