Osobní automobily jsou dnes výkonnými mechatronickými systémy, dalo by se říci pojízdnými počítači. Ruku v ruce s moderní technologií vozidel musí jít i nástroje pro jejich vývoj. V něm se stále více uplatňují technologie počítačového modelování, simulace, konektivita i umělá inteligence.
Dnešní moderní vozy disponují velkým množstvím elektroniky. V jejich nitru je ukryto několik desítek mikroprocesorů, které se starají o jejich chod. Patří mezi ně složité systémy řízení motoru či pokročilých asistentů řidiče, ale také systémy jednodušší, starající se o běžné ovládací prvky, jako je ovládání okénka kolébkovým spínačem. Každý metr vaší jízdy sledují senzory, každá otáčka motoru je přesně časovaná, každé sešlápnutí plynu či brzdy je pečlivě vyhodnoceno. A všechny systémy musí mezi sebou komunikovat, aby pracovaly v součinnosti. To vše vyžaduje velké množství programového kódu, který údaje zpracovává a rozhoduje, co má automobil dělat. Jsou to tisíce, stovky tisíc řádek programů. Jak tedy vývojové týmy tyto systémy programují?
První změnou oproti klasické představě programování je, že programy se neprogramují, programy se modelují. Zní to možná zvláštně, ale vysvětlíme si, v čem je smysl a přínos takového přístupu.
Model programu
Co je tedy model programu? Model je spustitelný matematický popis algoritmu v abstraktnější úrovni, než jakou poskytuje klasický program. Často bývá ve formě přehledného grafického schématu. Model, stejně jako program, obsahuje postup, který bere vstupní údaje a přetvoří je na výstupy. Například může vzít údaje o aktuální rychlosti vozidla, stavu motoru a požadavcích na akceleraci a určit množství paliva pro další zážeh – tak aby automobil splnil, co od něj očekáváte, při zachování emisních limitů a bezpečnosti jízdy. Model však, na rozdíl od programu, nemusí obsahovat formální náležitosti programovacího jazyka, jako jsou deklarace funkcí či datových proměnných, a hlavně, nemusí být „ušitý na míru“ konkrétnímu procesoru, který bude nakonec v automobilu danou úlohu vykonávat.
Po kliknutí na obrázek se otevře v plném rozlišení
Model v prostředí MATLAB & Simulink, jeho testování a vizualizace
Právě abstrakce, tedy oddělení algoritmu od konkrétního hardware, je jednou z hlavních výhod programování pomocí modelů, označovaném Model-Based Design. V době, kdy není koncový hardware předem znám, nebo dojde k jeho změnám, je pak snadné přenést výsledné nasazení z jedné procesorové platformy na jinou, aniž by muselo dojít k dramatickým úpravám modelu.
Co může být obsahem modelu? V zásadě cokoliv, co do něj vývojář zanese. Modely mohou zahrnovat běžné a léty prověřené algoritmy řízení systémů, ale také moderní nástroje umělé inteligence, jako jsou hluboké neuronové sítě, schopné řešit složité rozhodovací a prediktivní úlohy.
Generování kódu
Jak se pak model programu dostane do procesoru v automobilu? Využívá se technologie automatického generování zdrojového kódu, obvykle v jazyce C. V modelu se nastaví, jakým způsobem má být kód generován, lze vybrat i typ cílového procesoru pro využití optimálních funkcí a struktury programového kódu, a poté se „na stisknutí tlačítka“ zdrojový kód vygeneruje. Vygenerovaný kód, který lze certifikovat dle ISO 26262, se pak použije přímo na cílovém procesoru.
Po kliknutí na obrázek se otevře v plném rozlišení
Generování zdrojového kódu (vpravo) z modelu v prostředí MATLAB & Simulink
Kromě zdrojového kódu v jazyce C, který je obvyklý pro mikroprocesory, je možné generovat HDL kód, určený pro vysoce výkonná programovatelné hradlové pole (FPGA), nebo kód v jazyce CUDA pro grafické výpočetní jednotky. Ty se dnes využívají zejména pro zpracování kamerového obrazu v pokročilých asistenčních systémech řidiče.
Testování a simulace
Před tím, než je možné z modelu vygenerovat cílový kód, je třeba model podrobně prozkoušet. K tomu se využívá simulace. Model algoritmu se spustí, předáváte mu různé vstupy, odpovídající scénářům z reálného provozu, a pozorujete, jak model reaguje a zda jsou údaje vyhodnocovány správně. Simulace má výhody v tom, že můžete rychle prověřit velké množství situací, aniž byste musely ujet jediný metr ve skutečném vozidle. Opíráte se přitom o další modely – tentokrát o matematické modely chování samotného vozidla. Modely vozidel se vytvářejí ve stejných simulačních nástrojích, jako modely programů, ať již se jedná o klasická vozidla se spalovacími motory nebo o nově vyvíjené elektromobily či vozidla s hybridními pohony. Simulační model vozidla je v podstatě jeho digitálním sourozencem.
Simulace a testování se nemusí odehrávat pouze ve virtuálním prostoru vašeho počítače. Pomocí simulátorů, specializovaných počítačů s množstvím vstupních a výstupních rozhraní, můžete simulovat chování vozidla v reálném čase. K simulátoru připojíte reálný naprogramovaný procesor či řídicí jednotku, a odzkoušíte jeho výsledné chování, jako by byl zapojen ve skutečném vozidle – akorát že není. V simulátoru můžete snadno vytvořit extrémní scénáře a otestovat na nich v podstatě celou elektroniku vyvíjeného vozidla, aniž by hrozilo reálné nebezpečí poškození či dokonce zničení nákladného prototypu. Do skutečného vozidla se tak dostane již odladěný, detailně prozkoušený hardware.
Simulátory dSPACE pro testování modelů v reálném čase
A co klasické programování
Vývoj vozidla je běh na dlouhou trať, kde je často potřeba skloubit různé technologie a postupy. Nejinak je tomu i v případě programování jeho elektroniky. Proto je nezbytné mít možnost kombinovat modelování programů s jejich klasickou tvorbou, ručním vytvářením programů v jazyce C. Může se jednat o programy vytvořené v minulosti, které je výhodné opětovně využít, nebo si vývojář prostě přeje danou část kódu vytvořit ručně. Modely podporují integraci existujících částí kódu, takže je možné model s ručně psaným kódem zkombinovat. Vygenerovaný kód z modelu pak obsahuje tyto ručně psané části jako součást celého programu. Není to tedy o volbě mezi programováním a modelováním, ale o vhodném skloubení obou přístupů.
Současnost a vize, blízké i vzdálené
Vývoj nových pokročilých metod řízení pohonů a komplexních asistenčních systémů řidiče vede postupně k vyšším metám, jako je plně autonomní řízení vozidel nebo spolupráce a organizace celé flotily vozidel, kde si automobily vyměňují informace a přizpůsobují jízdní plán aktuální situaci. Konektivita, cloudový sběr a diagnostika informací, autonomní rozhodování a kooperace. To jsou prvky, které dále zapadají do širších konceptů, jako je „smart city“. Dnes již existují první plně autonomní dopravní systémy v uzavřených lokalitách. Je otázkou času, kdy se stanou běžnou součástí našeho každodenního života.
Závěr
Nyní již máte představu, jak se dnes „programují“ automobily. Co myslíte, jak se programují letadla, drony…?
Distributor produktů společnosti MathWorks v České republice a na Slovensku:
HUMUSOFT s. r. o.
http://www.humusoft.cz