Tvorba algoritmov pre autonómne systémy – 3. časť

V predchádzajúcej časti sme sa venovali komplexnému vnímaniu okolia pomocou kamier a lidaru, ako aj rôznym prístupom k mapovaniu prostredia a globálnemu či lokálnemu plánovaniu pohybu. Informácia o výsledná trase sa následne odovzdáva regulátorom, ktoré sa ju snažia dosiahnuť. Aby však systém fungoval spoľahlivo, je potrebné regulátory správne navrhnúť a autonómne algoritmy nasadiť na cieľový hardvér.

V nasledujúcich sekciách si preto priblížime prístupy k návrhu riadenia a možnosti nasadenia algoritmov na cieľové zariadenia.

Tvorba riadiacich systémov

Naplánovanú trasu je potrebné sledovať prostredníctvom vhodných regulátorov. Existuje niekoľko prístupov, pričom každý je vhodný pre iný typ aplikácie. Pre jednoduchšie aplikácie je k dispozícii algoritmus Pure Pursuit, ktorý generuje riadiace povely potrebné na sledovanie vopred vypočítanej trasy neustálym sledovaním bodu na trase pred sebou. UAV Toolbox tiež poskytuje bloky pre sledovanie trajektórie definovanej bodmi alebo orbitom. Pri návrhu vlastných regulátorov možno využiť viacero nadstavieb zameraných na riadenie.

<text pro slepý>

Obr.1 Sledovanie trasy s modelom UAV a vetra

Tradičným prístupom sú PID regulátory, pričom nadstavba Simulink Control Design umožňuje navrhovať a analyzovať riadiace systémy namodelované v Simulinku. Podporuje automatické ladenie SISO aj MIMO architektúr, ako aj rôzne kompenzačné stratégie. Umožňuje tiež návrh a nasadenie pokročilých techník, ako sú kĺzavý režim, iteratívne učenie, aktívne potláčanie rušenia či rôzne nelineárne, adaptívne a dátami riadené metódy. Jednou z výrazných výhod je aj možnosť automaticky ladiť viacero regulátorov súčasne.

Autonómne algoritmy potrebujú často reagovať na situácie, ktoré nenastávajú pravidelne, ale sú aktivované konkrétnymi udalosťami. MATLAB poskytuje na modelovanie takýchto udalostných systémov nadstavbu Stateflow. Ide o grafický jazyk, ktorý umožňuje definovať stavy systému a prechody medzi nimi. Stateflow je vhodný na návrh supervízorového riadenia, plánovanie úloh, správu porúch či modelovanie hybridných systémov – napríklad riadenie prevodovky automobilu. Zaujímavou vlastnosťou je možnosť sledovania stavov počas simulácie aj pri interaktívnom nasadení na hardvér.

stateflow

Obr.2 Výber prevodového stupňa pre prevodovku

Okrem týchto tradičných prístupov existujú mnohé ďalšie stratégie riadenia. Populárnou voľbou je prediktívne riadenie. Model Predictive Control Toolbox poskytuje funkcie a bloky pre návrh lineárneho a nelineárneho prediktívneho riadenia. Ďalším pokročilým prístupom sú regulátory založené na neurónových sieťach, ktoré sa učia prostredníctvom interakcie so svojím prostredím. Pri učení sa vykonáva obrovské množstvo experimentov, kde je výhodné práve simulačné prostredie. Návrh a trénovanie sietí pomocou tohto prístupu nájdete v nadstavbe Reinforcement Learning Toolbox.

reinforcement

Obr.3 Balansovanie loptičky s AI

Implementácia algoritmov

Po vytvorení a otestovaní algoritmov v prostredí MATLAB a Simulink je potrebné nasadiť ich na reálny hardvér. MATLAB natívne podporuje široké spektrum zariadení – od cenovo dostupných platforiem, ako sú Arduino či Raspberry Pi, až po profesionálne procesory od výrobcov typu Texas Instruments, STMicroelectronics či NXP. Transformáciu modelov a skriptov do podoby vykonateľného kódu zabezpečujú nástroje obsahujúce v názve slovo " Coder."

Embbeded Coder generuje čitateľný, kompaktný a výkonný C/C++ kód vhodný pre embedded procesory. Je rozšírením nástrojov MATLAB Coder a Simulink Coder so zameraním na optimalizáciu generovaného kódu. Pri reálnom nasadení musíme často brať ohľad na rýchlosť procesora a veľkosť pamäte. Embedded Coder berie ohľad aj na štandardy, čo uľahčuje certifikáciu algoritmov. Pri nasadzovaní umožňuje overovanie algoritmov pomocou metód software-in-the-loop (SIL) a processor-in-the-loop (PIL).

HDL Coder pomáha transformovať kód prostredia MATLAB a Simulinkové modely do podoby Verilog, SystemVerilog a VHDL kódu. Vygenerovaný kód HDL je možné následne využiť pri programovaní FPGA alebo na rýchle prototypovanie. Nástroj podporuje optimalizácie zamerané na rýchlosť a plochu, taktiež dokáže zvýrazniť kritické cesty a vygenerovať odhady využitia zdrojov pred syntézou. HDL je možné generovať aj pre hlboké neurónové siete.

V oblasti výpočtovo náročných aplikácií zohráva dôležitú úlohu nadstavba GPU Coder generuje optimalizovaný CUDA kód z MATLAB a Simulink modelov. Umožňuje výrazne zrýchliť aplikácie z oblastí deep learningu, počítačového videnia či spracovania signálov. Podporuje platformy ako NVIDIA Jetson a NVIDIA DRIVE, vrátane prístupu k perifériám a údajom zo senzorov. Pri generovaní kódu možno optimalizovať veľkosť potrebnej pamäte výberom vhodných dátových typov, či urýchľovať výpočty volaním knižníc ako je TensorRT.

Robotické aplikácie často využívajú ROS (Robot Operating System), pričom prepojenie MATLAB/Simulink s ROS zabezpečuje ROS Toolbox. ROS Toolbox podporuje generovanie kódu C++ aj CUDA (v kombinácii s MATLAB Coder, Simulink Coder a GPU Coder). Umožňuje automatické generovanie ROS nodov zo Simulink modelov alebo MATLAB skriptov, ktoré možno priamo nasadiť na simulovaný alebo fyzický hardvér. Externý režim Simulinku navyše umožňuje monitorovanie správ a zmenu parametrov počas behu modelu na zariadení.

coders

Obr.4 Generovanie kódu

Pre aplikácie v oblasti bezpilotných lietadiel ponúka MATLAB spolu s UAV Toolboxom rozšírenie pre autopiloty PX4 (UAV Toolbox Support Package for PX4 Autopilots). S týmto doplnkom môžete pristupovať k perifériám autopilota priamo z MATLABu a Simulinku, generovať C++ kód pomocou Embedded Coder a následne využívať nástroje PX4 na nasadenie algoritmov prispôsobených špeciálne pre jednotky riadenia letu FMU. Podporované je aj spracovanie údajov z palubných senzorov a ďalších PX4 služieb. Balík je kompatibilný s populárnymi doskami, ako sú Cube Blue, Cube Orange a mnohé ďalšie.

uav

Obr.5 Tvorba a testovanie UAV aplikácií

Cieľom tohto blogu bolo predstaviť jednotlivé kroky a nástroje programu MATLAB, ktoré uľahčujú vývoj algoritmov pre autonómne systémy. Okrem uvedených nadstavieb ponúka MATLAB aj množstvo ďalších užitočných rozšírení, ktoré pomáhajú vytvárať robustné a spoľahlivé aplikácie. Ak vás predstavené možnosti zaujali, neváhajte nás kontaktovať.

zpět na 1. díl článku

zpět na 2. díl článku

Michal Blaho, 2.12.2025

close