|

Rozdział 4: GCS – Interfejs, Pierwsze Uruchomienie i Zaawansowana Konfiguracja

Witaj w Ground Control Station (GCS) – centrum dowodzenia systemu RCSIM! Jeśli na widok dziesiątek suwaków, wykresów i skrótów masz ochotę zamknąć program – odetchnij głęboko.

Pierwsza część tego rozdziału to "Przyjazna Encyklopedia", w której tłumaczymy interfejs prostym, ludzkim językiem. Druga połowa (Sekcja Inżynieryjna) to narzędzia dla zaawansowanych twórców: od strojenia filtrów Kalmana po zaawansowaną telemetrię i integrację z autopilotem “AI”.

💻 1. Uruchamianie Aplikacji

Ground Control Station został w pełni zoptymalizowany, by działać "z pudełka":

  • Wersja Produkcyjna (EXE): Nie musisz instalować Pythona na swoim Windowsie. Aplikację uruchamiasz bezpośrednio z pliku RCSIM.exe (znajdziesz go w folderze RCSIM-GCS-Production/).

  • Dla programistów: Jeśli zmieniasz kod GCS, w głównym katalogu projektu znajdziesz skrypt build_gcs.bat, który automatycznie weryfikuje środowisko i kompiluje nową wersję "w jednym kliknięciu".

  • Wskazówka redakcyjna: Po pomyślnym uruchomieniu skryptu, gotowa paczka produkcyjna wygeneruje się w katalogu dist/RCSIM-GCS-Production/.

🏎️ 2. Przewodnik po Interfejsie (Główne Zakładki)

Główne okno w aktualnym kodzie tworzy zakładki: Kokpit, Konfiguracja, Diagnostyka, AI, Nawigacja, Zarządzanie RPi, Multiplayer Lobby oraz DonkeyCar. Kolejność i nazwy wynikają bezpośrednio z gui/main_window.py.

🎮 Zakładka: KOKPIT (Twoje centrum operacyjne)

Spędzisz tu 90% czasu. To Twoja "przednia szyba" pokazująca obraz na żywo, telemetrię i mapę.

  • Selektor połączenia w Kokpicie zawiera: MAVLink RF (Nomad / XR4), RPi WebRTC (Wideo + Dane), RPi UDP (Telemetria Sieciowa), CRSF Direct (Standard ELRS), Arduino (Port Trenera), ESP32 (WiFi Lite Mode), Symulator (DonkeyCar) i Tryb Testowy (Mock).

  • Tryb jazdy (Pilot) w Kokpicie:

  • Manualny: Ty prowadzisz.

  • AI Assist: tryb AI Assist (User Gaz), w którym algorytm wspiera sterowanie, a operator nadal zachowuje kontrolę nad gazem.

  • Full AI: tryb Full AI (Autopilot); dostępność zależy od poprawnej konfiguracji SLAM/AI, telemetrii i uzbrojenia pojazdu.

  • Wskaźnik CTE (Cross Track Error): Pokazuje w centymetrach, jak bardzo zjechałeś z idealnej linii wyścigowej (zielony = poniżej 30 cm, czerwony = powyżej, jesteś na poboczu).

  • Monitory Kanałów: Animowane słupki (CH1-CH16) pokazujące na żywo sygnały wysyłane z Twojego pada.

  • Dodatek (Narzędzia Mapy): Po prawej stronie wbudowaliśmy dużą mapę satelitarną wyposażoną w dwa zaawansowane narzędzia:

  • Kreator Misji: Pozwala w prosty sposób wyklikać trasę z punktów GPS (Waypointów).

  • Ustaw Granice (Geofence): edytor wielokąta bezpieczeństwa na mapie. W aktualnym GCS geofence zasila status OSD, powiadomienia i logikę ostrzeżeń; twarde zatrzymanie realizuj przez DISARM/RTH/failsafe zgodnie z konfiguracją pojazdu.

⚙️ Zakładka: KONFIGURACJA (Garaż)

Tu dopasujesz auto pod swoje palce i umiejętności – ustawisz martwe strefy, krzywe Expo i profile aparatury. (Szczegóły w Sekcji 3).

🧭 Zakładka: NAWIGACJA (SLAM i piloci: LiDAR, silnik SLAM, PWF, FTG, PP, AI Assist, Full AI)

To mózg systemów jazdy autonomicznej. Dzieli się na modularne panele, w których precyzyjnie konfigurujesz parametry systemów takich jak: LiDAR, silnik Monaco SLAM, Wall Following (PWF), Gap Follower (FTG), Pure Pursuit (PP), a także zachowanie asystenta jazdy (AI Assist) i trybu w pełni autonomicznego.

🚑 Zakładka: DIAGNOSTYKA (Twój warsztat mechanika)

Agreguje narzędzia monitorujące zdrowie pojazdu w czasie rzeczywistym:

  • Radar LiDAR & Mapa SLAM: Zobaczysz tu wirtualne "oczy" auta – radar 2D budujący na żywo czarno-białą mapę otoczenia (podobnie jak robią to nowoczesne odkurzacze automatyczne).

  • Data Inspector: Wyświetla absolutnie wszystkie dane (napięcia, temperatury, pozycję) w formie interaktywnego drzewa JSON.

  • Plotter: Rysuje wykresy telemetryczne na żywo. Idealny do sprawdzenia wibracji czujnika ruchu (IMU).

  • Autotesty: Moduł pozwalający wykonać diagnostykę sprawności silnika i serw przed jazdą.

🧠 Zakładka: AI (Sztuczna Inteligencja)

Wieloetapowa „Szkoła Nauki Jazdy” prowadzi operatora krok po kroku przez kompletny cykl uczenia maszynowego w stacji GCS: 01 Zbieranie danych -> 02 Zarządzanie (czyszczenie sesji z błędami) -> 03 Trening -> 04 Export (przygotowanie modelu ONNX pod zewnętrzną kompilację w chmurze lub CLI narzędzia AI Forge) -> 05 Wdrożenie -> 06 Wizja (podgląd włączników CV).

📶 Zakładka: ZARZĄDZANIE RPi

Pozwala bezprzewodowo kontrolować mikrokomputer Raspberry Pi 5 na pokładzie auta: uruchamiać skrypty, sprawdzać temperaturę SoC, obciążenie procesora oraz restartować oprogramowanie pokładowe bez odłączania zasilania.

🏁 Zakładki: DONKEYCAR & MULTIPLAYER LOBBY

  • DonkeyCar: Tryb SITL pozwalający połączyć program z symulatorem komputerowym i uczyć auto w wirtualnym świecie "DonkeyCar".

  • Multiplayer Lobby (RaceNet): Dedykowana zakładka sieciowa umożliwiająca rywalizację i wyścigi z innymi użytkownikami ekosystemu RCSIM.

🚦 3. Konfiguracja i Ustawienia Pada (Dla Początkujących)

Zanim ruszysz, musisz ustawić kluczowe parametry w zakładce KONFIGURACJA.

A. Najważniejsze Parametry Bezpieczeństwa i Telemetrii

Co widzisz na ekranie? W prostych słowach... Zalecane na start Gdzie to znaleźć?
Timeout Watchdoga Zabezpieczenie na wypadek zerwania zasięgu. Odcina gaz po braku ramek. 500 ms (pół sekundy) Konfiguracja -> Ogólne -> Zaawansowane -> Bezpieczeństwo
Profil Pojazdu Napięcie baterii (np. 7.4V) i średnica opony (np. 100.0 mm) do kalkulacji V-max. Wpisz zmierzone wartości Konfiguracja -> Profil Pojazdu
Limit Slew Rate Cyfrowy amortyzator serwa. Zapobiega gwałtownym skrętom niszczącym przekładnie. 15.0 (zmiana µs/ms) Konfiguracja -> Ogólne -> Zaawansowane -> Bezpieczeństwo

B. Martwe Strefy (Dead Zones) i Expo

Masz stary lub zużyty kontroler, którego drążki nie wracają idealnie na środek (wartość 1500 µs), a spusty nie dochodzą do samego końca? Auto może samoistnie "pełzać" lub nie osiągać maksymalnej prędkości. System GCS pozwala zdefiniować wiele stref martwych na jednym kanale!

  • Wejdź w zakładkę MARTWE STREFY.

  • Kalibracja Środka: Jeśli nie dotykasz drążka, a niebieski pasek (aktualny odczyt) drga np. w okolicach 1506 µs:

  • Wpisz w pole Min: 1480

  • Wpisz w pole Max: 1520

  • Wpisz w pole Cel: 1500 (idealny środek) i kliknij [ + ].

  • Kalibracja Skrajności (Bardzo Ważne!): Jeśli Twój spust gazu dochodzi tylko do 1960 µs i lekko drga, uniemożliwiając jazdę na 100%, dodaj kolejną strefę:

  • Min: 1950 / Max: 2000 / Cel: 2000 (pełny gaz).

  • Analogicznie zrób dla dolnej granicy: Min: 1000 / Max: 1050 / Cel: 1000.

  • Wizualizator podświetli te zakresy na czerwono. Czerwona strefa "wchłonie" luz Twojego sprzętu, wymuszając precyzyjne odczyty w zdefiniowanych punktach.

Krzywe Expo i Filtrowanie Sygnału:

  • Ustawienie współczynnika Expo na poziomie np. 1.5 sprawia, że drążek jest mniej czuły wokół środka (ułatwia jazdę z wysokimi prędkościami na wprost), zachowując pełną agresywność przy skrajnych ruchach (do ciasnych nawrotów).

  • Zaimplementowany dwustopniowy układ wygładzania (Low-Pass oraz High-Pass Filter) w tej samej zakładce pozwoli Ci nie tylko odfiltrować szumy i drgania tanich potencjometrów, ale też precyzyjnie wymodelować dynamikę i odpowiedź na gwałtowne ruchy kontrolera.

C. Mapowanie Sterowania

  • Kliknij Przypisz przy interesującej Cię funkcji i wciśnij klawisz na padzie.

  • KRYTYCZNE: Ustaw funkcję "Uzbrój / Rozbrój (ARM)" na łatwo dostępny przycisk (np. START).

  • Porada: Ustaw osie dla Gazu i Hamulca jako "Oś Dzielona" (Split Axis) i przypisz je do tylnych spustów (LT/RT) dla precyzji rodem z symulatorów wyścigowych.

🏁 4. Twój Pierwszy Start (Quick Win)

ZASADA BEZPIECZEŃSTWA #1: Zanim uzbroisz silnik, zawsze postaw auto na podstawce, by koła wisiały w powietrzu!

  • Włącz auto: Podepnij akumulator (baterię) do pojazdu.

  • Połącz się: Wpisz IP swojego auta, wybierz WEBRTC i kliknij POŁĄCZ. Włącz "Okno FPV".

  • Uzbrój silnik: Upewnij się, że drążek gazu jest puszczony. Kliknij przycisk ARM (zmieni kolor z szarego na czerwony).

  • Test "Na sucho": Naciśnij delikatnie gaz na padzie. Koła powinny ruszyć. Sprawdź kierownicę (jeśli koła skręcają w złą stronę, włącz opcję "Invert/Odwróć" w konfiguracji kanałów).

  • Awaryjny Stop: Będąc "w gazie", wciśnij SPACJĘ na klawiaturze. Silnik powinien zgasnąć natychmiast.

  • Gotowe! Połóż auto na ziemi i ciesz się jazdą!

🧠 Sekcja Inżynieryjna: GCS Mastery

Ground Control Station to system czasu rzeczywistego (RT) zarządzający stabilnością platform przemysłowych. Ten rozdział wprowadzi Cię w profesjonalną konfigurację zaawansowaną.

1. Zautomatyzowana Lista Kontrolna (Preflight Check)

Zanim wyślesz drona na autonomiczną misję, GCS automatycznie wykona inżynieryjny test. W zakładce Diagnostyka znajdziesz aktywny panel Preflight Check, który w czasie rzeczywistym (10 Hz) ocenia zdrowie kluczowych systemów, używając prostej kolorystyki (Zielony = OK, Żółty = Ostrzeżenie, Czerwony = Błąd):

  • Połączenie Radiowe (Link Status): Weryfikuje aktywny strumień danych (WebRTC/UDP/MAVLink).

  • Bateria: System ostrzega, gdy napięcie (V) spadnie poniżej krytycznego progu bezpieczeństwa zdefiniowanego w konfiguracji.

  • GPS Fix: Monitoruje jakość sygnału RTK (system wymaga śledzenia odpowiedniej liczby satelitów do autonomii).

  • IMU (Health): Odpytuje sensory o przyspieszenie ziemskie na osi Z, wyłapując groźne wibracje podwozia w spoczynku.

  • LiDAR Scanning: Sprawdza, czy czujnik laserowy obraca się i poprawnie zwraca gęstą chmurę punktów otoczenia.

  • Safety State: Monitoruje głównego watchdoga i architekturę sprzętową (uzbrojenie układu wejść/wyjść PCA9685).

2. Dynamiczne OSD i Architektura Wtyczek (Hot-Loading)

Architektura aplikacji GCS jest zgodna z restrykcjami licencji open-source (m.in. biblioteki PySide6 znajdują się jawnie w folderze _internal/, co pozwala na ich swobodną wymianę). Jednak to, co czyni system RCSIM wyjątkowym, to w pełni dynamiczny Edytor OSD (On-Screen Display) bazujący na głębokiej introspekcji Pythona.

Nie ma tu udawanej funkcjonalności. Wskaźniki nakładane na ekran wideo to niezależne wtyczki ładowane w locie (hot-loading).

🛠️ Jak to działa "pod maską"? (Deep Dive)

Gdy stacja GCS startuje i buduje interfejs, wywołuje klasę OSDWidgetRegistry, która uruchamia zautomatyzowaną procedurę:

  • Lokalizacja wtyczek: Program namierza katalog workshop/widgets/ (w skompilowanej wersji .exe ścieżka to _internal/gui/osd/workshop/widgets/). Następnie wstrzykuje tę ścieżkę do sys.path.

  • Dynamiczny import: Za pomocą modułu importlib program ładuje wszystkie odnalezione pliki .py bezpośrednio do pamięci RAM, jako aktywne moduły Pythona.

  • Introspekcja kodu: To kluczowy etap. Program skanuje zawartość zaimportowanego kodu i szuka zdefiniowanych klas dziedziczących po naszym bazowym OSDWidget.

  • Rejestracja: Gdy tylko taka klasa zostanie znaleziona, system automatycznie dodaje ją do menu Edytora OSD w stacji roboczej.

🎨 Stwórz własny wskaźnik w 5 minut

Chcesz dodać wskaźnik przeciążeń (G-Force) albo obrotów silnika na podglądzie wideo? Nie musisz rekompilować całej stacji! Wystarczy napisać prosty kod korzystający z QPainter i wrzucić go do katalogu z wtyczkami:

  • from gui.osd.widgets.base_widget import OSDWidget

  • from PySide6.QtGui import QPainter, QColor

  • from PySide6.QtCore import QRectF

  • class MyGForceWidget(OSDWidget):

  • def init(self):

  • super().init()

  • self.name = "Custom: G-Force Widget" # Nazwa w edytorze OSD

  • self.width = 100

  • self.height = 50

  • def draw(self, painter: QPainter, data: dict):

  • 1. Odbieramy telemetrię na żywo! (GCS wstrzykuje tu pełny stan pojazdu)

  • imu = data.get("imu", {})

  • ax = imu.get("ax", 0.0) / 9.81 # Przyspieszenie osi X w G

  • 2. Rysujemy wskaźnik na wideo WebRTC

  • painter.setBrush(QColor(0, 0, 0, 150))

  • painter.drawRoundedRect(0, 0, self.width, self.height, 5, 5)

  • painter.setPen(QColor(0, 255, 0))

  • painter.drawText(QRectF(5, 5, 90, 40), f"X: {ax:.2f} G")

System automatycznie wczyta ten plik, zintegruje go z pętlą wideo, pozwoli Ci na interaktywne przeciąganie wskaźnika w GUI myszką i co klatkę przekaże mu najświeższe dane (data) prosto z platformy sprzętowej Raspberry Pi 5.

3. Strojenie Algorytmów Autonomii (Nawigacja)

W zakładce Nawigacja znajdziesz parametry bezpośrednio wpływające na ścieżkowanie (Pathfinding).

  • sequenceDiagram

  • participant L as LiDAR (Pojazd/Symulator)

  • participant R as RPi 5 (Mostek WebRTC/UDP)

  • participant S as SlamService (PC / GCS)

  • participant C as SlamController / Solver (PC)

  • participant G as GCS GUI Config

  • participant M as PCA9685 Mikser (RPi)

  • L->>R: Surowa chmura punktów

  • R->>S: Transmisja WebRTC/UDP (Telemetria)

  • G->>S: Aktualizacja parametrów (lookahead, kp, kd, itp.)

  • S->>S: Voxel Filter & ICP Scan Matching

  • S->>C: Pozycja auta (x, y, yaw) + Zaktualizowana Costmapa

  • C->>C: Obliczenie celu (Pure Pursuit / PWF) i błędu

  • C->>R: Komenda sterowania (Steering & Throttle)

  • R->>M: Generowanie PWM dla serwa i ESC (PCA9685)

  • PWF (Wall Following) / FTG (Gap Follower): Ustaw progi widzenia LiDAR-a i agresywność skrętu dla szybkiej, reaktywnej jazdy po halach (omijanie fizycznych ścian). Parametry takie jak Czas Wyprzedzenia, Kąt Próbkowania czy wzmocnienia PID pomagają utrzymać auto precyzyjnie na środku korytarza.

  • Pure Pursuit (Dystans Lookahead i Wężykowanie): Wyznacza dynamicznie, jak daleko "przed siebie" patrzy auto śledzące linię wyścigową.

  • Objaw: Auto "wężykuje" (oscyluje) na prostej.

  • Rozwiązanie: Skoryguj bazowy dystans Min. Lookahead (lookahead_min) oraz to, jak wydłuża się on wraz z prędkością (Lookahead Gain / lookahead_gain). Aby zredukować nerwowe ruchy kierownicą, zmniejsz mnożnik skrętu (Max Steer Limit / race_steering_gain) lub zwiększ tłumienie błędu poprzecznego (CTE Damping (Kd) / mapping_kd).

  • Progresywne Hamowanie (curve_brake): Działa na dwa różne sposoby w zależności od aktywnego algorytmu:

  • W trybie PWF (Reaktywnym): System hamuje reaktywnie na bazie aktualnego wychylenia kół (curve_brake_threshold). Jeśli zakręt wymusza mocny skręt, auto silnie redukuje gaz.

  • W trybie Pure Pursuit (Apex Hunter): System stosuje hamowanie predykcyjne. Analizuje krzywiznę linii wyścigowej z wyprzedzeniem i automatycznie dohamowuje na prostej, tuż przed wejściem w wierzchołek zakrętu (Apex), bezbłędnie eliminując podsterowność. Czułość tego systemu regulujesz parametrem Czułość na zakręty (curvature_sensitivity).

4. Strojenie Filtrów Orientacji (EKF & Madgwick)

W zakładce Wybór i Strojenie Filtra (Filter Tuning) zarządzasz "błędnikiem" robota, decydując o sposobie fuzji danych z akcelerometru, żyroskopu oraz magnetometru.

  • Filtr Kalmana (EKF) – Najbardziej zaawansowany filtr fuzji:

  • Szum Procesu (Model): Określa niepewność modelu fizycznego. Im niższa wartość, tym ruch na OSD jest płynniejszy, ale przy zbyt niskich wartościach powstaje "lag" (opóźnienie) orientacji względem rzeczywistego pojazdu.

  • Szum Akcelerometru (Accel Noise): Określa stopień zaszumienia wskazań przyspieszenia. Jeśli podwozie mocno wibruje (generując szum na akcelerometrze), zwiększ tę wartość. Zmusi to filtr do ufania bardziej żyroskopom niż akcelerometrowi.

  • Szum Magnetometru (Mag Noise): Określa niepewność wskazań kompasu w środowisku pełnym zakłóceń elektromagnetycznych.

  • Filtr Madgwicka – Wydajny i popularny algorytm:

  • Wzmocnienie (Beta): Parametr siły konwergencji horyzontu (balans między stabilnością a szybkością reakcji – domyślnie 0.1). Wyższa wartość szybciej koryguje dryf na podstawie grawitacji, ale jest bardziej podatna na wibracje.

🧭 Interaktywny Kreator Kalibracji 3D

Zamiast ręcznie wpisywać offsety, w zakładce strojenia znajdziesz zielony przycisk "Uruchom Interaktywny Kreator Kalibracji 3D". To zaawansowane narzędzie, które w 5 krokach idealnie zestroi Twoje sensory:

  • Kalibracja Żyroskopu: Postaw pojazd nieruchomo. System zbierze 300 próbek i automatycznie wyeliminuje stały błąd przesunięcia (dryf kątowy).

  • Kalibracja Akcelerometru (6-pozycyjna): Ułóż fizyczny pojazd w 6 pozycjach (płasko, na nosie, na ogonie, na bokach, na dachu), naśladując podpowiedzi animowanego modelu 3D na ekranie. System sam wykryje stabilność i automatycznie zatwierdzi każdą pozycję, wyliczając idealne wektory grawitacji (1G).

  • Taniec z Kompasem (Magnetometr): Weź pojazd do ręki i obracaj nim, rysując w powietrzu "ósemki". Na ekranie wygeneruje się w czasie rzeczywistym kolorowa chmura punktów 3D. Algorytm na jej podstawie usunie zakłócenia od metalowych części (Hard/Soft Iron).

  • Zerowanie Horyzontu (Zero Orientation): Połóż pojazd płasko, skierowany dokładnie na wprost. Kliknij "Ustaw Orientację ZERO (AAAA)". System zapisze ten kąt jako yaw_offset, kompensując krzywy montaż płytki w podwoziu i gwarantując, że 0° to idealnie kierunek jazdy.

  • Zapis i Hot-Reload: Po kliknięciu "Zapisz", nowe wartości trafiają do rc_config.json i są natychmiastowo aplikowane do pracującego filtra bez potrzeby restartowania aplikacji GCS!

5. Force Feedback i Symulacja (Moza / Thanos)

RCSIM pozwala na transformację Twojego stanowiska simracingowego w kokpit operatora pojazdu RC, mapując telemetrię fizycznego pojazdu bezpośrednio na sprzęt symulatorowy w czasie rzeczywistym.

1. Platforma Ruchu Thanos (Motion Config)

W zakładce Motion Config zarządzasz parametrami platformy ruchowej AMC-AASD Thanos (fotela ruchomego). Algorytm Motion Cueing filtruje i przekształca przeciążenia z akcelerometru modelu RC na ruchy siłowników:

  • Sway Gain (Boczne): Odpowiada za przechylanie fotela w zakrętach. Przekłada przyspieszenie boczne pojazdu na wirtualny kąt Roll platformy.

  • Surge Gain (Wzdłużne): Odpowiada za pochylanie fotela przy przyspieszaniu i nurkowanie przy ostrym hamowaniu (kąt Pitch).

  • Heave Gain (Pionowe): Przenosi pionowe drgania (np. najechanie na tarkę lub wyskok na hopie) bezpośrednio na pionowy ruch siłowników.

  • Road Texture: Pozwala na przeniesienie mikrowibracji struktury nawierzchni wykrywanych przez akcelerometr prosto na konstrukcję fotela.

2. Mostek Telemetrii SimHub & Moza FFB

System FFB i telemetrii zewnętrznej w stacji GCS działa dwutorowo:

  • Emulacja Forza UDP (SimHub & Pit House): Włączenie opcji „Włącz SimHub” aktywuje transmisję pakietów UDP w standardzie protokołu Forza Motorsport Sled (domyślny port 20777). Sprawia to, że oprogramowanie sterujące stacją FFB (np. Moza Pit House czy SimHub) identyfikuje pojazd RC jako wirtualny bolid w grze. Przeciążenia boczne (Lateral G), prędkość obrotowa kół oraz uślizg osi tylnej na piasku są natychmiastowo mapowane na opór i wibracje na Twojej kierownicy.

  • Natywne Moza SDK (Moza Hardware Control): GCS posiada wbudowaną bezpośrednią integrację z kontrolerami Moza Racing (za pomocą MOZA_API_C.dll). Umożliwia to bezpośrednie programowanie kąta obrotu bazy oraz natywną obsługę fizycznej skrzyni biegów Moza H-Shifter (biegi 1-7, wsteczny oraz neutralny), pozwalając na realistyczne, manualne sterowanie modelem RC.

3. Fizyczny Silnik FFB (FFBPhysicsEngine)

Dla kierownic kompatybilnych z SDL Haptic / DirectInput oraz baz Moza, GCS posiada wbudowany silnik obliczeniowy FFB (FFBPhysicsEngine), który przekłada surowe dane inercyjne (IMU) z fizycznego pojazdu bezpośrednio na siły odczuwalne na kierownicy operatora.

Wzory i mechanizmy obliczeniowe:

  1. Moment Samoprostujący (Self-Aligning Torque - SAT): Wyliczany jest na podstawie przyspieszenia bocznego (ay) i prędkości kątowej odchylenia (gz - yaw rate): $$F_{\text{constant}} = a_y \cdot \text{ay_gain} + g_z \cdot \text{gz_gain}$$ Dzięki temu operator natychmiast czuje siłę odśrodkową w zakrętach oraz kierunek uślizgu, co ułatwia intuicyjne kontrowanie kierownicą przy nadsterowności.
  2. Nierówności Terenu (Bump Rattle): Surowy odczyt osi pionowej akcelerometru (az) przechodzi przez filtr górnoprzepustowy (High-Pass Filter) w celu odfiltrowania grawitacji 1G: $$a_{z,\text{lpf}} = (1 - \alpha) \cdot a_{z,\text{lpf}} + \alpha \cdot a_z$$ $$\text{bump_intensity} = |a_z - a_{z,\text{lpf}}|$$ Gdy intensywność przekroczy próg 1.5 m/s², silnik FFB generuje naprzemienne szarpnięcia w lewo i prawo (efekt wibracji/grzechotania na kierownicy): $$F_{\text{constant}} \mathrel{+}= \text{bump_intensity} \cdot \text{az_gain} \cdot \text{bump_state}$$ Gdzie $\text{bump_state}$ zmienia znak ($\pm 1$) przy każdym wyboju.
  3. Dynamiczny Tłumik (Dynamic Damper): Tłumienie bazowe (damper) jest dynamicznie obniżane o 10 jednostek, gdy siła poprzeczna przekracza próg 70%. Powoduje to odczuwalne "rozluźnienie" i spadek oporu kierownicy w momencie zerwania przyczepności (uślizgu przedniej osi), informując operatora o podsterowności.

6. Konfiguracja Radiowa Dalekiego Zasięgu (MAVLink RF)

Opcja stworzona z myślą o profesjonalnych wdrożeniach dalekiego zasięgu, wykorzystujących linki radiowe oparte na oprogramowaniu mLRS (np. nadajnik RadioMaster Nomad z modułem odbiorczym XR4).

Aby aktywować to połączenie:

  • W zakładce Connection (Połączenia) w polu Mode wybierz MAVLINK_RF (w Kokpicie widoczne jako MAVLink RF (Nomad / XR4)).

  • W sekcji „Nadajnik RF (MAVLink) - Tier 3” skonfiguruj następujące parametry:

  • Port: Wybierz port szeregowy COM przypisany do Twojego nadajnika USB/Serial.

  • Baud: Wybierz z listy prędkość 57600 (zgodnie ze standardem transmisji dalekiego zasięgu mLRS).

  • SysID: Wprowadź identyfikator swojego pojazdu (domyślnie 10, po odebraniu pierwszego pakietu GCS automatycznie zsynchronizuje się z rzeczywistym SysID autopilota).

Dlaczego MAVLink RF?

W odróżnieniu od klasycznego protokołu CRSF (Crossfire), MAVLink RF przesyła telemetrię i komendy sterujące (RC_CHANNELS_OVERRIDE) w sposób w pełni ustrukturyzowany, zapewniając integralność danych (sumy kontrolne CRC). GCS wymusza nowoczesny standard MAVLink 2.0, co umożliwia bezproblemową i niezawodną wymianę danych telemetrycznych oraz sterowanie pojazdem nawet na dystansach kilkunastu kilometrów.

Wskazówka Deweloperska: Aplikacja posiada wbudowane inteligentne filtrowanie adresów radiowych. Automatycznie ignoruje ona pakiety kontrolne samego modułu nadawczego mLRS, skupiając się wyłącznie na danych płynących z pojazdu, co zapobiega zakłóceniom i zapewnia natychmiastowe parowanie po włączeniu zasilania modelu.

7. AI Hub & Eksperymentalna Asysta Głosowa (Roadmap AI Autopilot)

Zakładka AI Hub stanowi centrum dowodzenia sztuczną inteligencją pojazdu, integrując menedżer sesji treningowych, logowanie danych telemetrycznych (Tubs) oraz konsolę bezpośredniej komunikacji z systemami autonomicznymi drona.

  • Konsola Komunikacji AI: Umożliwia wysyłanie bezpośrednich komend sterujących i diagnostycznych (np. START_LOGGING, ARM_PERCEPTION) bezpośrednio do głównego serwisu na Raspberry Pi w celu wyzwalania zachowań behawioralnych.

System Syntezy Mowy (TTS) & Komunikaty Głosowe

Aby ułatwić operatorowi zachowanie pełnej koncentracji na obrazie FPV, RCSIM posiada w pełni zaimplementowany, stabilny system komunikatów głosowych:

  • Natywne Audio Windows (SAPI5): Aplikacja wykorzystuje systemową syntezę mowy Microsoft SAPI5. Dzięki architekturze dynamicznej izolacji (silnik mowy jest inicjalizowany i usuwany z pamięci osobno dla każdego zdania), system audio gwarantuje 100% stabilności i nie blokuje interfejsu graficznego.

  • Autodetekcja Języka (PL/EN): Lektor automatycznie dopasowuje się do języka wybranego w ustawieniach GCS, dynamicznie wyszukując odpowiedni pakiet językowy zainstalowany w Twoim systemie Windows.

  • Alerty Telemetryczne: System na bieżąco informuje głosowo o kluczowych stanach pojazdu, wypowiadając komunikaty takie jak: „Armed” (Uzbrojony), „Link Established” (Połączenie nawiązane) czy „Failsafe Triggered” (Aktywacja procedury bezpieczeństwa).