Rozdział 3: Konfiguracja Wejść i Urządzeń USB
Część 1: Przyjazna Encyklopedia (Dla Każdego)
Kierownice USB i kontrolery są obsługiwane bezpośrednio przez komputer pokładowy RPi 5. Aby sterowanie było precyzyjne, należy wykonać wstępne mapowanie.
🛠️ 1. Procedura Kalibracji Kierownic USB
Podłącz kierownicę (np. Thrustmaster T128X, Logitech G29) do portu USB w Raspberry Pi 5.
- Tryb pedałów: Pedały muszą działać na osobnych osiach. Zrób to na PC w konfiguratorze Thrustmaster/Logitech przed jazdą na RPi!
- Kreator mapowania: W WebUI na telefonie kliknij "Uruchom Kreator Detekcji". Postępuj zgodnie z instrukcjami na ekranie (skręć kierownicę, wciśnij gaz, wciśnij hamulec).
- Przypisanie przycisku ARM: Wybierz przycisk na kierownicy (np. logo PlayStation/Xbox) jako fizyczny wyłącznik awaryjny (Kill-Switch / ARM-DISARM).
⚠️ Złota zasada stabilności
Po przypisaniu osi konfiguracja zostaje powiązana z unikalną nazwą sprzętową kontrolera. Możesz go odpinać, zmieniać porty USB – system zawsze poprawnie rozpozna kierownicę po włączeniu zasilania.
Część 2: Inżynieryjny Deep Dive (Dla Specjalistów)
Odczyt joysticków i kierownic pod systemem Linux realizowany jest niskopoziomowo przez system plików /dev/input/event* za pomocą interfejsu evdev.
1. Niskopoziomowy odczyt (evdev API)
Kod w evdev_reader.py odpytuje deskryptor pliku urządzenia w pętli asynchronicznej. Aby uniknąć problemów z dynamicznymi ścieżkami systemowymi (gdzie kierownica raz zgłasza się jako event2, a po restarcie jako event4), system paruje konfigurację po stabilnym identyfikatorze device_name.
Zapytanie o nazwę urządzenia realizowane jest za pomocą ioctl:
import evdev
device = evdev.InputDevice('/dev/input/event2')
device_name = device.name # Zwraca np. "Thrustmaster T128X Wheel"
2. Algorytm Detekcji i Progi Czułości w /api/wizard/detect
Wiele kierownic i profesjonalnych pedałów hamulcowych (np. Load-Cell) charakteryzuje się ogromną rozdzielczością (16-bitową), ale bardzo małym fizycznym zakresem skoku. Aby kreator detekcji nie ignorował ruchu takich osi, algorytm w input_manager.py oblicza względne i bezwzględne delty sygnału:
- Próg relatywny: Zmiana wartości osi o więcej niż 0.5% pełnego zakresu: $$\frac{|x_t - x_{t-1}|}{x_{\text{max}} - x_{\text{min}}} > 0.005$$
- Próg absolutny: Zmiana wartości o deltę większą niż 20 jednostek: $$|x_t - x_{t-1}| > 20$$ Zabezpiecza to przed ignorowaniem sztywnych pedałów hamulca, jednocześnie odrzucając minimalne szumy elektryczne (noise) i dryfowanie drążków (stick drift).