Testování autopilota: Návrh simulačních prostředí HIL a SIL pro drony

Proč SIL/HIL při vývoji autopilotů pro UAV

Simulační metodiky Software-in-the-Loop (SIL) a Hardware-in-the-Loop (HIL) představují jádro moderního ověřování a validace algoritmů autopilota bez rizika poškození reálného dronu. Umožňují rychlou iteraci návrhu, reprodukovatelnost testů, sběr metrik kvality a bezpečnou injekci poruch, přičemž škálují od milionů simulovaných letů v cloudu až po přesné real-time experimenty s fyzickým řídicím hardwarem. Tento článek shrnuje architektury, modely, nástroje, metodiky testování a praktická doporučení pro zavedení SIL/HIL do vývoje řídicích systémů a autopilotů UAV.

Terminologie a cíle validace

  • SIL: Spouštění binárně identické nebo zdrojově shodné implementace autopilota v softwarové simulaci s modely UAV, senzoriky a prostředí.
  • PIL (Processor-in-the-Loop): Testování zkompilovaného kódu na cílovém MCU/CPU s emulovanými vstupy; měří se výkonnost kompilátu a numerická ekvivalence.
  • HIL: Reálný autopilotový hardware (FCU, IMU, GPS modul) je v slučce s real-time simulátorem fyziky a senzorů; vyžaduje determinismus a časovou synchronizaci.
  • Cíl validace: Prokázat, že algoritmus splňuje specifikované požadavky (sledování trajektorie, stabilita, bezpečnostní režimy) v reprezentativních scénářích a hraničních podmínkách.

Architektura SIL: softwarové komponenty a rozhraní

Typický SIL obsahuje: (1) fyzikální model UAV (translační/rotační dynamika), (2) modely senzorů (IMU, magnetometr, barometr, GNSS, vizuální/laserové senzory), (3) modely akčních členů (motory, regulátory, serva), (4) model prostředí (vítr, turbulence, hustota vzduchu, terén), (5) komunikační middleware (ROS 2, uXRCE-DDS, MAVLink), (6) test runner a orákulum.

Spouštění může být offline (rychlost > 1× real-time pro Monte Carlo) nebo soft-real-time (časově vázané simulace pro latenční studie). Synchronizace modulů probíhá buď diskrétně (pevná vzorkovací perioda) nebo s co-simulation prostřednictvím FMI/FMU.

Architektura HIL: real-time slučka s fyzickým autopilotem

V HIL je autopilotový počítač (např. FCU s MCU/SoC) přímo propojen se simulátorem, který generuje senzorické rámce a přijímá příkazy na motory/serva. Klíčové jsou:

  • Deterministický real-time OS nebo RT rozšíření (např. RTX, PREEMPT_RT),
  • Časování a časová reference (PTP, PPS, hardwarové triggre),
  • Rozhraní (UART/I2C/SPI pro IMU/Baro, CAN/UAVCAN/DShot pro pohon, USB/Ethernet pro telemetrii),
  • Elektrická bezpečnost (power-in-the-loop s proudovým limitem, ochrana před zpětným tokem, galvanické oddělení),
  • Monitoring (logování napětí/proudů, teplot, watchdog).

Modelování dynamiky UAV

Pro multikoptéry se používají rigid-body rovnice (Newton-Euler) se šestistupňovou dynamikou. Klíčové efekty:

  • Propeller-thrust/torque nelinearity, saturace a motor lag,
  • aerodynamické interference (downwash, ground effect),
  • distribuované hmoty a změna momentu setrvačnosti (payload),
  • stochastické vlivy větru (Dryden/Kármán spektra) a nárazy.

Pro pevné křídlo: vztlak/odpor/moment, polární křivky, modely klapek, smyk a pádové jevy. Pro VTOL a koinaxial: přechodové režimy, coupling kanálů a cross-termíny.

Modely senzorů a aktuátorů

  • IMU: bias drift, bílý šum, random walk, teplotní závislost, saturace a kvantizace.
  • Magnetometr: tvrdé/měkké železo, lokální rušení, náhodné výpadky.
  • Barometr: 1/f šum, tlakové gradienty, rychlé přeletování nad terénem.
  • GNSS: multipath efekt, výpadky, latence, přesnost vs. režim (SBAS/RTK), výškový model.
  • Vizuální odometrie/LiDAR: FOV, odlesky, degradace textury, rolling-shutter.
  • Motory/ESC/serva: nelineární přechod, mrtvá zóna, tepelný derating, zpětná EMF.

Modelování prostředí a mapových zdrojů

Pro relevanci HIL/SIL je nutné zahrnout: vítr a turbulence (časově-prostorová korelace), hustotu vzduchu vs. výšku a teplotu, 3D terén a překážky, RF podmínky (rušení GNSS/RC), magnetické anomálie, dešťové částice a mlhu pro vizuální senzory.

Komunikační stack a latence v slučce

Autopilot komunikuje přes MAVLink, DDS/RTPS, UAVCAN a proprietární protokoly. V SIL/HIL měřené veličiny zahrnují latenci senzor→řadič, řadič→aktuátor, jitter, ztrátovost paketů a deterministiku plánování vláken. Důležitá je simulace IEEE 802.11/4G/5G linky pro BVLOS scénáře, včetně výpadků, NAT a MTU fragmentace.

Ko-simulace a FMI/FMU

Komplexní systémy se skládají z FMU komponentů (senzory, dynamika, prostředí) spojených s autopilotem. Synchronizace může být master řízená (časové kroky) nebo event-driven. Klíčová je numerická stabilita na hranicích subsystémů a shodné konvence rámců/znaků (např. ENU vs. NED).

Nástrojový ekosystém

  • SIL: MATLAB/Simulink s Aerospace Blockset a Simscape, ROS 2 Gazebo/Ignition, AirSim, PyBullet, MuJoCo, jMAVSim, FlightGear (vizualizace), vlastní C++/Python simulátory.
  • HIL: Real-time simulátory na x86/ARM s RTX/PREEMPT_RT, komerční RT rámce, PX4/ArduPilot HIL adaptéry, generátory senzorových rámců (IMU/GNSS přes UART/SPI), DShot/CAN emulace.
  • CI/CD: GitLab/GitHub runners pro masivní SIL, kontejnerizace, artefakty logů, automatické reporting.

Scénáře testování a pokrytí

Scénáře by měly reprezentovat nominální provoz, hraniční podmínky a poruchy:

  • Vzlet/přistání (včetně failsafe RTH, abort přistání),
  • Let po trajektorii, změna referencí, orbit, survey, waypointy,
  • Zásahy operátora (manuál, loiter, přepnutí módů),
  • Vliv nákladu a změny hmotnosti během letu,
  • Rušení senzoru (dropouty GNSS, saturace IMU),
  • Poruchy aktuátorů (ztráta vrtule, stuck servo, degradace napájení),
  • Komunikační výpadky a zpoždění (telemetrie/RC),
  • Extrémní počasí, vysoká nadmořská výška, teploty.

Orákulum, metriky a kritéria úspěchu

Test orákulum rozhoduje, zda test prošel. Typické metriky:

  • RMSE sledování trajektorie (poloha/orientace/rychlost),
  • Stabilita (damping, přeběhy, doba ustálení),
  • Energetická náročnost a teplotní limity,
  • Čas reakce failsafe a zotavení,
  • Integritní ukazatele GNSS/odometrie,
  • Časování slučky (perioda, jitter, deadline miss rate),
  • Pokrytí požadavků a kódové pokrytí (SIL s profilerem/instrumentací).

Validace regulátorů a navigace

Pro nízkoúrovňové regulátory (attitude/rate) se hodnotí robustnost vůči změnám parametrů (moment setrvačnosti, thrust koeficienty) a poruchám. Pro vysokou vrstvu (trajektorie, MPC, L1, TECS) se posuzuje prediktivní stabilita, respektování omezení (saturace, nelineární vstupy) a zvládání nekonvexních překážek v navigačních algoritmech.

Parameter identification a plant-model mismatch

Rozdíl mezi simulovanou a reálnou „rostlinou” (UAV) je klíčovým zdrojem chyb. Doporučuje se cyklus: experimenty s reálným dronem s bezpečnostními omezeními → identifikace parametrů (thrust křivky, motorové konstanty, aerodynamika) → aktualizace modelu → re-validace v SIL/HIL.

Injekce poruch a bezpečnostní případy

Injektujte poruchy deterministicky (čas, velikost, trvání) i stochasticky (distribuce) pro senzorové a akční větve. HIL umožní testovat reakci real-time: přetížení CPU, ztrátu napájení, brown-out, saturaci sběrnic, stuck-bit v IMU, rozpad MAVLink streamu, i latency spikes. Výstupem jsou bezpečnostní případy pro režimy RTL, Land, Hover a opakované starty.

Latence, jitter a plánování úloh

Měřte latenci end-to-end a jitter pro každou slučku (senzor→odhad→řízení→aktuátor). V SIL lze získat horní odhady; v HIL ověříte interakci s reálným MCU/OS schedulorem, cache miss událostmi a přerušením DMA. Používejte časové razítka, PTP synchronizaci a scope/log sondy.

Reálný čas a determinismus v HIL

Simulátor musí generovat vzorky s přesnou periodou (např. 1 kHz pro IMU) a zvládat nejhorší případ výpočtu v rámci deadlinu. Přetížení řešte redukcí rozlišení modelu, předpočtem lookup tabulek, případně rozdělením na vícejádrové výpočty s affinity a prioritami vláken.

Mapování mezi jednotkami a rámci

Standardizujte směrové rámce (NED vs. ENU), úhlové konvence (ZYX vs. XYZ Euler), jednotky (rad/s vs. deg/s) a definice křivek regulátorů. Chyby v konvencích jsou častým zdrojem nestability v HIL, i když SIL „funguje“.

Kalibrace a verifikace senzorů v HIL

HIL je vhodný k ověření postupů kalibrace: generujte kontrolované rotace pro IMU, simulujte magnetické vzory pro magnetometr, tlakové skoky pro barometr. Validujte, zda autopilot správně ukládá a používá kalibrační matice/offsety.

Integrace s kontinuálním nasazováním (CI/CD)

Automatizujte SIL kampaně při každém merge: jednotkové testy řídicích knihoven, stovky Monte Carlo běhů s variací parametrů, regresní porovnání logů a generování reportů (grafy, statistiky, heatmapy). Noční buildy mohou spouštět dlouhé latenční a robustnostní scénáře.

Verifikace požadavků a stopovatelnost

Každý test mapujte na konkrétní požadavek (např. „Max. boční přesah < 1 m při 10 m/s větru“). Udržujte traceability od požadavku přes testovací skript až po log a verdikt. Umožní to audit a rychlé root-cause analýzy při pádech regresních testů.

Škálování: od desktopu po laboratorní rig

  1. Rychlý SIL na vývojářském stroji (minuty, stovky běhů, bez real-time).
  2. Distribuovaný SIL v cloudu (tisíce běhů, Monte Carlo, A/B porovnání algoritmů).
  3. PIL na cílovém procesoru (časování kompilátu, optimalizace).
  4. HIL s fyzickým FCU, power-in-the-loop, syntetickými senzory.

Porovnání SIL vs. HIL

Parametr SIL HIL
Rychlost/škálovatelnost Velmi vysoká (offline >1×) Omezená (1× real-time)
Realita časování Nízká/střední Vysoká
Náklady Nízké Střední až vysoké
Injekce HW poruch Omezená (modely) Přímá (napájení, sběrnice)
Debug komfort Vysoký (profilery, replay) Střední (RT omezení)

Pracovní postupy a „best practices”

  • Udržujte binární ekvivalenci algoritmu mezi SIL a nasazením (sdílená knihovna, stejné toolchainy a flagy).
  • Deterministická RNG semínka pro reprodukovatelnost a přesné replay.
  • Strukturované logování (časová razítka, jednotky