|

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 SafetySupervisor po 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_engine i path_optimizer uwzgl?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, PathOptimizer i RacingEngine mog? wyznacza? oraz wyg?adza? lini? przejazdu, z uwzgl?dnieniem marginesu od ?cian (wall_inflation/inflation w jednostkach mapy). Element GhostItem istnieje 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.py z klasami LSTMDenoiser i LSTMFilter. 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?.