Rozdział 9: Autonomia AI (Sieci Neuronowe, AI Forge i Hailo-8)
Część 1: Przyjazna Encyklopedia (Dla Każdego)
W poprzednich rozdziałach daliśmy pojazdowi odruchy (ABS, kontrolę trakcji) i świadomość przestrzenną (LiDAR SLAM). Teraz nadszedł czas, by tchnąć w niego prawdziwą inteligencję. Zamiast pisać tysiące linijek kodu z instrukcjami "jeśli widzisz zakręt, skręć w lewo", w systemie RCSIM uczymy auto jeździć poprzez naśladowanie ludzkiego kierowcy. Nazywamy to Klonowaniem Behawioralnym (Behavioral Cloning).
🧠 1. Szkoła Jazdy: Zbieranie Danych (Tub Recording)
Aby sztuczna inteligencja mogła prowadzić, musi najpierw podpatrzeć, jak robisz to Ty.
W zakładce
AIprzechodzisz do kroku01 Zbieranie, wybierasz źródła danych i uruchamiasz nagrywanie sesji Tub podczas jazdy manualnej, symulacyjnej lub testowej.System tworzy unikalny folder sesji w katalogu logów RCSIM. W wersji EXE jest to
%LOCALAPPDATA%\RCSIM\logs, a w uruchomieniu deweloperskimRCSIM_PC/pc_app/logs. Zapis obejmuje obrazy JPEG, rekordy JSON, sterowanie, wybraną telemetrię oraz manifest sesji.Uwaga: w aktualnym widżecie źródeł AI kamera, sterowanie, IMU i pozycja GPS/SLAM są domyślnie włączone, a LiDAR jest domyślnie wyłączony. Możesz go włączyć checkboxem
Przeszkody (LiDAR)w kroku zbierania danych.
Niewidzialny Pomocnik: Higiena Danych AI jest jak pilny uczeń. Gdybyś uderzył w ścianę podczas nagrywania, AI nauczyłoby się... uderzać w ściany. Na szczęście RCSIM posiada dwa genialne systemy obronne:
Deduplikacja postoju:
TubWriterzachowuje maksymalnie około 1 sekundę ramek bez ruchu i bez wejść sterujących, a kolejne klatki postojowe pomija do czasu ponownego ruchu lub sterowania. Dzięki temu dataset nie jest zalewany bezużytecznym staniem w miejscu.Auto-Scrub po uderzeniu: jeżeli w telemetrii pojawi się flaga
safety.impact,TubWriterusuwa ostatnie około 3 sekundy danych i zatrzymuje rejestrację. Skuteczność zależy od tego, czy warstwa safety rzeczywiście dostarcza tę flagę w telemetrii.
⚒️ 2. Kuźnia Umysłów: AI Trainer i RCSIM AI Forge
Nagrane dane musisz przekształcić w format, który komputer pokładowy zrozumie. Cały proces składa się z dwóch szybkich kroków:
Trening w stacji GCS: funkcje AI Hub i AI Trainer są obecnie połączone w zakładce
AI. Workflow ma kroki01 Zbieranie,02 Zarządzanie,03 Trening,04 Export,05 Wdrożeniei06 Wizja. Dostępne są silniki Keras, PyTorch BC i RL, a eksport/kompilacja prowadzi przez ONNX oraz zewnętrzne narzędzie AI Forge.Kompilacja w RCSIM AI Forge: narzędzie
RCSIM_AIforgekonwertuje modele ONNX do HEF dla Hailo-8/8L, używając środowiska WSL/Linux i Hailo DFC. W GCS krok04 Exportprzygotowuje model i prowadzi operatora do kompilacji oraz wskazania gotowego pliku.hef.
🚀 3. Mózg na Krawędzi: Akcelerator Hailo-8 / Hailo-8L
Standardowy procesor w Raspberry Pi 5 "udławiłby się", próbując analizować obraz z kamery, chmurę punktów LiDAR i fizykę pojazdu jednocześnie w ułamku sekundy. Dlatego RCSIM wykorzystuje sprzętowy akcelerator sieci neuronowych Hailo-8 / Hailo-8L (zintegrowany z modułami typu AI Kit).
Wygenerowany plik .hef przesyłasz prosto do pamięci komputera pokładowego na pojazd RC. Od tej pory to dedykowany chip NPU przejmuje całe obciążenie sztucznej inteligencji, odciążając procesor główny (CPU) Raspberry Pi, który może bez zakłóceń zajmować się systemem LiDAR SLAM i wysokiej jakości transmisją wideo WebRTC.
Fuzja sensoryczna: aktualny model treningowy łączy obraz z kamery z wektorami telemetrycznymi i SLAM w architekturze przyjaznej Hailo. W kodzie modelu PC część klasyczna obejmuje 17 cech, część SLAM 3 cechy, a gałęzie są łączone w tensorze 4D zgodnym z eksportem ONNX/Hailo; nie jest to osobny, stały interfejs nazwany Elite State Vector 64.
12 stref LiDARu (odległości od ścian z każdej strony pojazdu),
Czujniki Costmapy (zagęszczenie przeszkód wokół auta),
Path Lookahead (4 wirtualne punkty planowanej trasy przed autem),
Dynamika IMU (przeciążenia boczne i wzdłużne G, kąty przechyłu bolidu),
Wskaźniki Driftu i Telemetrii (aktualny poślizg kół, prędkość i błędy naprowadzania).
Opóźnienie inferencji zależy od modelu, rozdzielczości wejścia, kompilacji HEF, obciążenia RPi oraz aktywnych sensorów. Instrukcja nie powinna traktować konkretnej wartości 1.5-2.5 ms jako gwarancji; mierz ją w logach i panelach diagnostycznych dla własnej konfiguracji.
🎙️ 4. Lokalny Asystent Głosowy (Telemetry Voice HUD)
Podczas szybkiej jazdy nie masz czasu patrzeć na wskaźniki na ekranie. RCSIM posiada zintegrowany, w pełni lokalny system syntezy mowy (Voice HUD). System ten na bieżąco analizuje kluczowe parametry telemetrii i poprzez głośniki komputera informuje Cię o zdarzeniach krytycznych. Gdy napięcie pakietu spadnie do niebezpiecznego poziomu lub pojazd opuści strefę Geofence, usłyszysz wyraźny komunikat głosowy. Działa to w 100% offline, bez opóźnień i bez konieczności połączenia z internetem.
🕹️ 5. Zunifikowane Tryby Jazdy
W kokpicie RCSIM znajdziesz jeden suwak (Unified Driving Modes), który pozwala płynnie przejść od kontroli ludzkiej do pełnej sztucznej inteligencji:
Manualny: Ty prowadzisz.
PWF / FTG: Auto samo omija przeszkody lub jedzie wzdłuż ścian (na bazie matematyki i LiDARu).
AI Assist (User Gaz): Sieć neuronowa przejmuje kierownicę (idealnie składa się w zakręty), ale Ty decydujesz o prędkości.
Full AI: Pełna autonomia! Pojazd decyduje o kierunku i prędkości na podstawie wyuczonego modelu.
Część 2: Inżynieryjny Deep Dive (Dla Specjalistów)
Trenowanie sieci neuronowych dla szybkobieżnej dynamiki pojazdów RC to wyzwanie o zupełnie innej skali niż autonomiczne auta osobowe. Ekstremalnie niski czas na reakcję i duża podatność na zaszumienie sensorów wymusiły w RCSIM V8.0+ stworzenie autorskiej architektury Monaco Expert oraz migracji na natywny potok kompilacyjny dla NPU Hailo.
1. Architektura Rejestratora Danych (TubWriter)
Proces nagrywania w GCS to nie prosty zrzut strumienia wideo. Klasa TubWriter tworzy dedykowany format strukturalny w katalogu ai_logs/[nazwa_sesji]_[RRRRMMDD_HHMMSS]. Składa się na nią para zsynchronizowanych plików (z częstotliwością ok. 20-30 FPS):
Zrzut FPV: frame_[numer]_[timestamp].jpg.
Metadane JSON: record_[numer].json.
Wnętrze JSON to ustrukturyzowana reprezentacja stanu świata:
{
"user/angle": 0.45,
"user/throttle": 0.8,
"telemetry": {
"speed": 12.4,
"imu_roll": 0.02,
"slam_x": 4.5,
"slam_y": 1.2
}
}
Zastosowanie filtru AILoggingService pozwala GCS na dynamiczne sterowanie logowanymi pakietami, domyślnie wyłączając ciężkie dane LiDARu w celu odciążenia I/O dysku (dostępne jako opcja dla badaczy).
Higiena Danych (Data Scrubbing & Deduplication)
Idle Deduplication: Zatrzymanie bolidu (prędkość $< 0.05 \text{ m/s}$ oraz przepustnica $0.0$) inicjuje odliczanie. Po 20 zduplikowanych klatkach (ok. 1 sekunda), TubWriter zawiesza zapis na dysk, zapobiegając udręczeniu modelu (tzw. "uczenie stania w miejscu").
[SAFETY-005] Impact Detection: Wykrycie nagłego przeciążenia (G-Force Spike) na czujniku IMU wyzwala procedurę ratunkową. Bufor kroczący (Rolling Buffer) w GCS wywołuje operację usunięcia plików (Scrub) dla ostatnich 3 sekund jazdy i przerywa sesję. Chroni to model przed uczeniem się zachowań kolizyjnych na ułamki sekund przed zderzeniem ze ścianą.
2. Architektura Multi-Modalna i Elite State Vector 64
Naiwne wpychanie surowych wektorów numerycznych do warstw sprzężonych bezpośrednio z wizją prowadzi do wyciszenia gradientu małych wejść przez dominujące cechy macierzy obrazu. Architektura Monaco rozwiązuje to asymetryczną fuzją późną (Late Fusion):
graph TD
A[Kamera FPV 160x120] -->|MobileNetV2 CNN Backbone| B(Image Latent Space)
C[LiDAR 60-Ray Array] -->|1D Conv + Pooling| D(LiDAR Latent Space)
E[Elite State Vector 64] -->|Dense Layers + Swish| F(Sensor Latent Space)
B --> G{Concatenation Layer}
D --> G
F --> G
G --> H[Steering Head: Linear Output]
G --> I[Throttle Head: Linear Output]
Wydzielenie niezależnych głów (Image, Lidar, Sensor) pozwala optymalizować wagi dla każdej modalności przed złączeniem w Concatenation Layer.
Sercem skuteczności tej sieci jest Elite State Vector 64 w głowie czujnikowej (Sensor Head). Jest to tensor 1D złożony z 64 precyzyjnie wyselekcjonowanych wartości:
Świadomość Mapy (SLAM): Transformacje przestrzenne ($x, y, \theta$).
12 Stref LiDAR: Sektorowe bucketingi surowej chmury punktów (np. co 30 stopni), dające heurystyczny obraz przeszkód wokół.
Gęstość Costmapy: Poziom ryzyka wokół bolidu z planera nawigacyjnego.
Lookahead Trajectory: 4 wirtualne punkty ścieżki wygenerowane przez planistę optymalnego toru.
Fizyka IMU i Odometria: Kąty Eulera, akceleracja w osiach X/Y (wykrywanie poślizgu kół) oraz wygładzona prędkość wektorowa. Włączenie tego wektora nadaje sieci pełną świadomość globalną i fizyczną – model potrafi korelować uślizg tylnej osi z obrazem pikseli z kamery.
3. Pętla Treningowa i Kompilacja Edge AI (Hailo DFC & QAT)
Przeniesienie modeli z FP32 (Float32) wyuczonych na układach NVIDIA do formatu INT8 na NPU Hailo wymaga dwuetapowego potoku operacyjnego.
Trening i Augmentacja (GCS AI Trainer): Z poziomu natywnej aplikacji desktopowej GCS uruchamiany jest silnik uczący, który w locie aplikuje Data Augmentation (Flip, Blur, Brightness, Noise) i optymalizuje wagi z użyciem kart RTX (CUDA). Eksportuje zunifikowany graf w formacie .onnx.
Transpozycja Tensorów (NCHW do NHWC): Systemy wizyjne PyTorch natywnie operują w formacie Channel-First (NCHW), podczas gdy układy Hailo wymagają formatu Channel-Last (NHWC). Skrypt 2_KONWERTUJ_MODEL.bat uruchamia kompilator środowiska WSL, który przeprowadza chirurgię grafu i transpozycję warstw wejściowych.
Quantization-Aware Training (QAT): Narzędzie w WSL wykonuje kwantyzację z FP32 do INT8 na bazie zbioru kalibracyjnego (.npy). Analizując dystrybucję aktywacji, NPU kompresuje wagi minimalizując stratę precyzji wartości zmiennoprzecinkowych kąta skrętu.
Wdrożenie HEF (Hardware CPU Offloading): Graf kompilowany jest do binarnego .hef i wgrywany na układ Hailo-8L. Czas inferencji wynosi 1.5 ms – 2.5 ms.
4. Eksperymentalny Filtr Sieciowy: LSTMDenoiser
Klasyczne filtry LPF czy Kalmana wprowadzają tzw. Phase Shift (przesunięcie fazowe), opóźniając sygnał z żyroskopu względem nagranego obrazu FPV w szybkich zakrętach. Filtracja oparta na rekurencyjnej sieci LSTM (Long Short-Term Memory) analizuje bufor ostatnich 10 próbek telemetrii ($N=10$). Rozumiejąc dynamikę szumu w osi czasu, sieć klasyfikuje uderzenia w krawężnik jako anomalię wysokiej częstotliwości i generuje "czystą" wartość sygnału dla aktualnej ramki czasowej z zerowym opóźnieniem (Zero Phase-Shift).
5. Architektura Odpornościowa i Decyzja [GCS-113]
W wersjach deweloperskich RCSIM (V7.x) system posiadał zintegrowany chmurowy most kognitywny (CognitivePlanner) oparty o API Google Gemini, pełniący rolę zaawansowanego nawigatora. Decyzją architektoniczną [GCS-113] Cognitive Planner Purge, kod ten został usunięty z linii produkcyjnej V1.x. Integracja LLM generowała znaczne opóźnienia sieciowe (latencję) i stała w sprzeczności z rygorystycznym wymogiem bezpiecznego, lokalnego przetwarzania w czasie rzeczywistym na brzegu (Edge AI).
Zamiast niego wprowadzono lokalny SoundManager (Voice HUD), natomiast pełna, niskolatencyjna integracja hybrydowa z modelami przestrzennymi przesunięta została na fazę [AI-100] Gemini Robotics (Q4 2026).
Nad bezpieczeństwem sprzętowym czuwają niezmiennie:
The Sentinel (Safety Supervisor): Monitoruje integralność magistrali PCIe (Hailo).
Mock Absolute Stop: Jeśli moduł sprzętowy Hailo ulegnie awarii (tryb Mock/CPU), system odgórnie obniża bezpieczeństwo RTH do procedury HARD STOP (fizyczny pin OE na układzie PWM wymusza Hi-Z), odcinając zapłon pozbawionego refleksu robota.