DOCS/Kompendium Wiedzy
|

Rozdział 8: Monaco SLAM i Mapowanie LiDAR

Rozdział 8: SLAM 2D, Mapowanie Przestrzenne LiDAR i Blokady C-Mutex

Rozdział ten opisuje integrację czujników LiDAR 2D, algorytm budowy mapy zajętości (BreezySLAM) oraz zasady wielowątkowego bezpieczeństwa pamięci.


🗺️ 1. Algorytm BreezySLAM 2D i Blokady Pamięci (C-Mutex)

W systemie RCSIM pozycjonowanie wewnątrzpomieszczeniowe bez dostępu do sygnału GPS realizowane jest przy użyciu skanera LiDAR 2D oraz biblioteki mapowania w języku C (BreezySLAM).

[!IMPORTANT] BreezySLAM C-Extension Mutex Gotcha: Dostęp do silnika mapującego C-extensions wymaga używania blokady threading.Lock() (SLAM Mutex) w pętli pobierającej skany. Równoczesny odczyt mapy przez wątek wizualizacji GUI oraz wątek aktualizacji pozycji z LiDARu bez blokady powoduje błąd naruszenia ochrony pamięci (Segmentation Fault).

SLAM Map Render


📡 2. Przesyłanie Mapy i MTU Chunking dla SLAM

Wysokorozdzielcza mapa siatki zajętości (Occupancy Grid 800x800 px) przekracza dopuszczalny rozmiar pakietu UDP:

  1. Mapa jest kompresowana algorytmem zlib.
  2. Moduł chunking.py dzieli dane na pakiety poniżej 1100 bajtów.
  3. Stacja GCS odbiera pod-pakiety, weryfikuje sumę kontrolną i odtwarza pełny podgląd toru jazdy na żywo.