Rozdział 6: Inteligencja i Nawigacja (Systemy Wspomagania, SLAM i Autonomia)
Część 1: Przyjazna Encyklopedia (Dla Każdego)
Skalibrowałeś drążki, ustawiłeś martwe strefy, a silnik wchodzi na obroty jak marzenie. Czas jednak spojrzeć prawdzie w oczy: jeśli zamontowałeś w swoim modelu potężny silnik bezszczotkowy (Brushless), zapanowanie nad nim przypomina jazdę po lodzie. W tym rozdziale nauczymy Cię, jak uruchomić "mózg" Twojego pojazdu – od systemów chroniących przed poślizgiem, po algorytmy, które pozwolą autu jeździć zupełnie samemu.
⚙️ 1. Wirtualna Skrzynia Biegów (RCSIM Gearbox)
W zakładce Profil Pojazdu -> Ustawienia Skrzyni Biegów znajdziesz system, który w locie limituje maksymalną moc przekazywaną na koła. Bezszczotkowe potwory mają tak ogromny moment obrotowy, że wciśnięcie gazu do dechy na starcie kończy się natychmiastowym obrotem o 360 stopni. Skrzynia biegów rozwiązuje ten problem:
Tryb Sekwencyjny (Sequential): Pozwala przypisać przyciski na padzie (np. łopatki) do zmiany wirtualnych przełożeń. Wyświetlacz w kokpicie pokaże aktualny bieg.
Wsparcie dla Shifterów (np. Moza H-Shifter): RCSIM natywnie współpracuje z profesjonalnymi kontrolerami simracingowymi. System bezbłędnie czyta absolutne pozycje dźwigni biegów (od wstecznego po 7. bieg).
Limitowanie Mocy (Throttle Limiting): Na niskich biegach (np. na jedynce) system sztucznie ogranicza sygnał gazu (np. do 16% maksymalnej mocy). Koła nie tracą przyczepności, a Ty zyskujesz chirurgiczną precyzję manewrowania. Moc rośnie proporcjonalnie z każdym kolejnym biegiem.
Inteligentne Wyliczanie Prędkości ($V_{max}$): Wpisz parametry swojego napędu (KV silnika, napięcie akumulatora, przełożenia zębatek i rozmiar kół), a RCSIM sam obliczy maksymalną prędkość teoretyczną i idealnie dostosuje limity mocy dla każdego biegu!
🛡️ 2. Cyfrowi Asystenci i Ochrona Trakcji
Choć RCSIM nie posiada klasycznego, prostego pulsowania hamulców ABS, bezpieczeństwo i stabilność są realizowane za pomocą znacznie bardziej zaawansowanych, inżynieryjnych filtrów:
Slew Rate Limiting (Sprzętowa Kontrola Trakcji): System zapobiega gwałtownym skokom sygnału PWM. Jeśli gwałtownie uderzysz w spust gazu na kontrolerze, oprogramowanie wygładzi ten impuls, pozwalając silnikowi płynnie wejść na obroty bez zrywania przyczepności opon.
AI Assist (Wspomaganie Kierownicy): Twój osobisty anioł stróż. W tym trybie komputer pokładowy przejmuje kontrolę nad serwomechanizmem skrętu, idealnie trzymając się wyznaczonej linii toru (na bazie SLAM i LiDAR). Ty kontrolujesz wyłącznie gaz – możesz skupić się na nauce hamowania i kontrolowaniu prędkości, a auto samo pokona idealny zakręt.
Corner Braking (Apex Hunter): Zapomnij o podsterowności! System dynamicznie monitoruje krzywiznę toru przed pojazdem. Gdy zbliżasz się do ciasnego nawrotu z wciśniętym gazem, Corner Braking automatycznie stłumi moc przepustnicy, dociążając przednią oś i pozwalając oponom złapać przyczepność niezbędną do skrętu.
🧠 3. Tryby Autonomii (Kompletna Samodzielność)
Gdy przełączysz selektor w tryb w pełni autonomiczny, RCSIM przejmuje całkowitą kontrolę nad pojazdem. Masz do dyspozycji:
PWF (Predictive Wall Following): Podążanie wzdłuż ścian w oparciu o geometrię LiDAR. Auto "widzi" zakręt z wyprzedzeniem i płynnie dostosowuje linię jazdy.
FTG (Follow The Gap): Reaktywne omijanie przeszkód. Algorytm na bieżąco szuka największej wolnej przestrzeni (luki) i błyskawicznie przez nią przejeżdża.
PP (Pure Pursuit): Wyczynowa jazda wyścigowa po optymalnej linii (Racing Line) wyznaczonej na wcześniej przygotowanej mapie SLAM.
🗺️ 4. Planowanie Trasy i Geofencing (Bezpieczeństwo)
Kiedy włączysz tryb autonomiczny, Twoje auto przestaje być tylko zabawką, a staje się robotem eksploracyjnym.
Geofencing: za pomoc? Mened?era Geofence rysujesz na mapie obszar dopuszczalny. Aktualny kod GCS przetwarza pozycj? pojazdu, aktualizuje status Geofence, pokazuje ostrze?enia na OSD i mo?e generowa? powiadomienia. Samo naruszenie granicy nie jest gwarancj? fizycznego zatrzymania pojazdu; zatrzymanie musi wynika? z aktywnego DISARM, RTH, failsafe RPi/PCA albo konfiguracji ESC.
Waypointy i Mapa SLAM: klikaj?c na map?, wyznaczasz punkty trasy. W kodzie istnieje planowanie A* na mapie zaj?to?ci oraz potok SLAM/Apex, kt?ry mo?e omija? przeszkody z mapy. Analiza "trudnego terenu" z drga? IMU wyst?puje jako starszy/eksperymentalny element planera i nie powinna by? traktowana jako gwarantowana funkcja operatora w aktualnym GUI.
Bateria i nadz?r zasilania: GCS i RPi przekazuj? napi?cie, procent oraz status baterii, a
SafetySupervisorpo stronie RPi mo?e przej?? w stan RTH przy napi?ciu krytycznym. Aktualny kod nie potwierdza operatorskiej funkcji ETE liczonej z ostatnich 60 sekund jazdy.
🎮 5. Imersja: Force Feedback, SimHub i Web Cockpit
Force Feedback (FFB): GCS obs?uguje wej?cie przez pygame dla pad?w i kierownic oraz ma dedykowany backend Moza SDK z zak?adk?
Moza FFB. Efekty FFB i wibracje zale?? od konkretnego backendu, sterownika oraz sprz?tu; dla urz?dze? Logitech/Thrustmaster nale?y traktowa? mapowanie wej?? jako podstaw?, a zaawansowane efekty si?owe weryfikowa? osobno.Integracja SimHub: Uruchom tę opcję, aby wysłać telemetrię do foteli wibracyjnych lub platform ruchowych.
WebRTC i panel web: strategia WebRTC w GCS u?ywa sygnalizacji RPi pod adresem
http://<IP_RPi>:8080/offer, a projekt zawiera zasoby web/mobile. Dost?pny widok w przegl?darce zale?y od uruchomionej us?ugi na RPi; nie traktuj samego portu 8080 jako gwarantowanego pe?nego kokpitu sterowania telefonem.
Część 2: Inżynieryjny Deep Dive (Dla Specjalistów)
Poniżej przedstawiamy matematyczny i programistyczny fundament systemów zarządzania dynamiką oraz nawigacją w architekturze RCSIM.
1. Matematyka Skrzyni Biegów i Dynamicznego $V_{max}$
W klasie GearboxManager teoretyczna prędkość maksymalna pojazdu Vmax(km/h) obliczana jest z uwzględnieniem pełnego łańcucha kinematycznego pojazdu:
2. Filtry Przeciwpoślizgowe: Slew Rate Limiting & LPF
W celu uchronienia opon przed natychmiastowym zerwaniem przyczepności (kontrola trakcji), sygnał PWM w klasie StandardAxisProcessor podlega dwufazowemu przetwarzaniu:
A. Ograniczenie Slew Rate (Szybkości Narastania):
Zapobiega skokowej zmianie szerokości impulsu PWM. Maksymalna dozwolona zmiana Delta PWMmax w czasie kroku obliczeniowego dt:
B. Filtr dolnoprzepustowy (Low-Pass Filter / EMA):
Wygładza szum i drgania palca na spuście gazu kontrolera za pomocą wykładniczej średniej kroczącej:
3. Pętla Wspomagania AI Assist
System asystenta jazdy w ControlManager.update_autonomous_actions realizuje asymetryczną fuzję sterowania:
Pozwala to na separację kanałów decyzyjnych. Algorytm Pure Pursuit (ze sprzężeniem zwrotnym z lokalizacji SLAM) wyznacza idealny kąt skrętu kół przednich na bazie punktu celu (Lookahead), podczas gdy kierowca manualnie zarządza dynamiką wzdłużną, dozując moment obrotowy i wyczuwając limity przyczepności.
4. Corner Braking (System Dynamicznego Dławienia w Zakrętach)
W trybie autonomicznej jazdy wyścigowej (Monaco Racing), moduł MonacoSlamConfig uruchamia algorytm dławienia przepustnicy przed wierzchołkiem zakrętu (Apex). Jeśli kąt skrętu kół przekroczy zdefiniowany próg bezpieczeństwa (curve_brake_threshold), sygnał gazu jest redukowany na podstawie intensywności skrętu:
Gwarantuje to automatyczne przeniesienie środka ciężkości pojazdu na przednią oś (docisk aerodynamiczny i mechaniczny), co drastycznie redukuje podsterowność i eliminuje uślizg tylnej osi w fazie wyjścia z zakrętu.
5. Kinematyka, Śledzenie Ścieżki i Pure Pursuit
Śledzenie wygenerowanej ścieżki na fizycznym sprzęcie realizowane jest za pomocą dwóch komplementarnych paradygmatów:
A. Metric Pure Pursuit (Śledzenie Punktu Wyprzedzenia)
Gdy pojazd posiada wytyczoną linię wyścigową (Racing Line), RacingEngine wykorzystuje zaawansowany wariant algorytmu Pure Pursuit. Kluczem do wyeliminowania oscylacji (wężykowania) jest Dynamiczny Lookahead ($L$). Dystans celowania na ścieżce nie jest statyczny, lecz skalowany w funkcji aktualnej prędkości pojazdu:
Gdzie Lmin (np. 0.5m) zapobiega osobliwościom przy ruszaniu z miejsca. Dodatkowo algorytm wprowadza CTE Damping. Wektor sterowania jest modyfikowany o pochodną Błędu Poprzecznego (Cross Track Error - $e_{\text{cte}}$), działając jak człon D w regulatorze PID, dławiąc skręt przy gwałtownym powrocie na trasę:
B. Ślepe Podążanie (Blind Steering / Wall Following)
W trybie eksploracyjnym, gdy układ nie posiada jeszcze domkniętej mapy, system wykorzystuje algorytm fuzji wektorowej (Gap & PID). System analizuje lewą i prawą burtę z użyciem promieni LiDAR. Geometryczny błąd dystansu e_w względem wirtualnej osi toru kompensowany jest regulatorem:
(Uwaga: Mechanizm Corner Braking wspierający ten tryb został szczegółowo opisany w sekcji 4).
6. Architektura SLAM i Planowanie Globalne (A* & Apex)
Budowanie mapy przestrzennej (Occupancy Grid) sprzężone jest z wysoce zoptymalizowanym silnikiem nawigacji.
Heurystyka i Funkcja Kosztu A*: algorytm minimalizuje koszt $F = G + H$ na mapie zaj?to?ci. Aktualne modu?y
global_planner,planning_engineipath_optimizeruwzgl?dniaj? przeszkody, odleg?o?? od ?cian oraz koszt nieznanych obszar?w; opisywanie wariancji osi Z z IMU jako aktywnej warstwy kosztu w GUI by?oby na tym etapie zbyt mocne.Apex Planner: po utworzeniu mapy modu?y
PlanningEngine,PathOptimizeriRacingEnginemog? wyznacza? oraz wyg?adza? lini? przejazdu, z uwzgl?dnieniem marginesu od ?cian (wall_inflation/inflationw jednostkach mapy). ElementGhostItemistnieje w mapie, ale tryb "ghost car" najlepszego okr??enia jest nadal osobnym zadaniem rozwojowym, a nie gotowym procesem optymalizacji czasu.Upraszczanie Misji (RDP Epsilon): Stacja GCS redukuje przepustowość łącza IP, spłaszczając krzywe algorytmem Ramera-Douglasa-Peuckera przed ich wysłaniem do pojazdu. Wyższy Epsilon to mniejsza liczba waypointów (ostrzejsze krawędzie ścieżki).
7. Fuzja Sensorów i Odporność (Robustness)
Środowisko rzeczywiste (oraz symulacja Monaco SITL) generuje szumy. RCSIM w wersji V36.00 wprowadza zaawansowane mechanizmy "Self-Healing":
Intelligent Speed Fusion: Pojedyncze źródło odometrii zawodzi. System łączy czysty, ale rzadki sygnał z GPS/SITL z wysoko-częstotliwościową, lecz podatną na wibracje estymacją prędkości ze SLAMu (przesunięcia ramki punktów). Filtracja wykładnicza EMA ($\alpha = 0.2$) eliminuje skoki sygnału przy utracie pakietów.
Catastrophic Drift Guard: Optymalizator grafu SLAM monitoruje rozbieżność dopasowania chmury punktów (ICP). Jeśli transformacja przestrzenna zgłosi przesunięcie $>50$ metrów między klatkami, następuje twardy Graph Reset. System unika "złamania" mapy na rzecz jej przebudowania. W symulatorze wspiera to Motion Recovery (gt_hint), które natychmiast "przyciąga" dryfującego drona do prawdziwej pozycji ze świata 3D.
8. Machine Learning na Krawędzi: Filtry LSTM i Multi-Input
Gdy wdrażamy uczenie behawioralne (Behavioral Cloning) z użyciem akceleratora Hailo-8, jakość danych decyduje o sukcesie.
Eksperymentalny filtr LSTM (Long Short-Term Memory): w kodzie istnieje
core/filters/lstm_filter.pyz klasamiLSTMDenoiseriLSTMFilter. To eksperymentalna warstwa filtracji sekwencyjnej, zale?na od dost?pno?ci PyTorch i modelu, a nie podstawowa ?cie?ka stabilizacji sterowania dla operatora.Normalizacja wielomodalna: potok AI ??czy obraz z dodatkowymi cechami telemetrycznymi, a eksport ONNX/Hailo wymaga zgodno?ci kszta?t?w wej?? i normalizacji danych. Szczeg??y architektury zale?? od wybranego modelu treningowego, dlatego manual nie powinien obiecywa? jednej sta?ej architektury "Expert" ani gwarantowa? automatycznego r?wnowa?enia wag mi?dzy LiDAR-em i telemetri?.