SLAM jest jedną z kluczowych technologii umożliwiających robotom autonomiczne poruszanie się w nieznanym otoczeniu. Pozwala urządzeniu jednocześnie budować mapę przestrzeni oraz określać własną pozycję względem tej mapy. Bez tego procesu robot nie wiedziałby, gdzie się znajduje, które miejsca już odwiedził ani jak bezpiecznie dotrzeć do wyznaczonego celu.
Technologia SLAM jest wykorzystywana między innymi w robotach mobilnych, czworonożnych, humanoidalnych, dronach, pojazdach autonomicznych oraz systemach inspekcyjnych. W zależności od konstrukcji urządzenia może korzystać z danych pochodzących z LiDAR-u, kamer, czujników IMU, enkoderów i systemów odometrii.
Co oznacza skrót SLAM?
Skrót SLAM pochodzi od angielskiego określenia Simultaneous Localization and Mapping, czyli jednoczesna lokalizacja i mapowanie. Robot tworzy mapę otoczenia, którego wcześniej nie znał, a jednocześnie oblicza swoje położenie na tej mapie.
Oba procesy są od siebie zależne. Aby poprawnie zbudować mapę, robot musi wiedzieć, z jakiego miejsca wykonano pomiar. Z kolei aby określić swoją pozycję, potrzebuje punktów odniesienia znajdujących się na mapie. Algorytm SLAM rozwiązuje te dwa problemy równocześnie, stale aktualizując zarówno mapę, jak i szacowaną pozycję robota.
Dlaczego robot nie może polegać wyłącznie na odometrii?
Odometria określa ruch robota na podstawie obrotu kół, pracy napędów albo danych z czujników ruchu. Z czasem pojawiają się jednak błędy wynikające z poślizgu, nierówności podłoża, niedokładności enkoderów i zakłóceń pomiarowych.
Nawet niewielki błąd powtarzany podczas kolejnych przejazdów może sprawić, że szacowana pozycja zacznie znacznie odbiegać od rzeczywistej. SLAM porównuje bieżące obserwacje z wcześniej zarejestrowanymi elementami otoczenia i na tej podstawie koryguje narastający błąd lokalizacji.
Jak działa SLAM krok po kroku?
Proces SLAM polega na ciągłym łączeniu danych o ruchu robota z obserwacjami otoczenia. System nie wykonuje jednego pomiaru i nie tworzy od razu kompletnej mapy. Mapa oraz pozycja robota są aktualizowane wielokrotnie podczas przejazdu.
W praktyce robot analizuje kolejne skany LiDAR-u albo obrazy z kamer, porównuje je z wcześniejszymi obserwacjami i szacuje, jak zmieniło się jego położenie. Następnie aktualizuje mapę oraz koryguje błędy wynikające z niedokładności odometrii.
Etapy działania algorytmu SLAM
Co oznacza zamknięcie pętli?
Zamknięcie pętli, określane również jako loop closure, następuje wtedy, gdy robot rozpoznaje miejsce odwiedzone wcześniej. System porównuje aktualną obserwację z zapisanymi danymi i stwierdza, że robot powrócił do tego samego obszaru.
Jest to bardzo ważny moment, ponieważ podczas długiego przejazdu błędy odometrii stopniowo narastają. Po rozpoznaniu wcześniejszego miejsca algorytm może skorygować pozycje zapisane na całej trasie i poprawić spójność mapy. W slam_toolbox wykrycie zamknięcia pętli prowadzi do optymalizacji grafu pozycji oraz aktualizacji wcześniejszych estymacji położenia.
Dlaczego mapa może zmienić się podczas przejazdu?
Mapa tworzona przez SLAM nie jest od początku idealnym odwzorowaniem otoczenia. Jej kształt wynika z aktualnie dostępnych pomiarów oraz szacowanej pozycji robota. Jeżeli położenie było obarczone błędem, fragmenty mapy mogą być lekko przesunięte, obrócone albo zdeformowane.
Po wykryciu zamknięcia pętli algorytm ponownie oblicza położenia zapisanych punktów lub pozycji robota. W efekcie ściany, korytarze i inne elementy mogą przesunąć się na wizualizacji. Nie musi to oznaczać awarii — często jest to rezultat poprawiania wcześniejszych błędów i zwiększania globalnej spójności mapy.
Oficjalna dokumentacja Nav2 rozdziela mapowanie, lokalizację i percepcję jako powiązane, ale odrębne elementy systemu nawigacyjnego. slam_toolbox może dostarczać mapę i pozycję robota podczas tworzenia mapy, natomiast później robot może pracować na zapisanej mapie w trybie lokalizacji.
Z jakich czujników korzysta SLAM?
Algorytm SLAM może wykorzystywać dane pochodzące z jednego czujnika albo z kilku źródeł jednocześnie. Wybór zależy od rodzaju robota, środowiska pracy, wymaganej dokładności oraz dostępnej mocy obliczeniowej.
Najczęściej stosowane są LiDAR-y, kamery, czujniki IMU, enkodery kół i systemy odometrii. Dane mogą być łączone w procesie fuzji sensorycznej, dzięki czemu słabości jednego czujnika są częściowo kompensowane przez informacje pochodzące z innych urządzeń.
Nav2 wskazuje, że odometria może być tworzona między innymi na podstawie enkoderów, IMU, LiDAR-u, radaru i odometrii wizyjnej. W systemach nawigacyjnych dane te są następnie łączone z informacjami o mapie i położeniu robota.
Najważniejsze źródła danych dla SLAM
Nie każdy system SLAM wykorzystuje wszystkie wymienione czujniki. W prostym robocie mobilnym wystarczające mogą być LiDAR 2D, enkodery kół i IMU. Robot czworonożny lub dron częściej korzysta z kamer, LiDAR-u 3D i odometrii inercyjnej, ponieważ nie może opierać lokalizacji na obrotach kół.
Dlaczego łączy się dane z wielu czujników?
Każdy czujnik ma inne zalety i ograniczenia. Enkodery dobrze opisują krótkotrwały ruch robota, ale ich błąd rośnie podczas poślizgu. IMU szybko reaguje na zmianę ruchu, lecz jej wskazania również podlegają dryfowi. LiDAR dobrze mierzy geometrię otoczenia, ale może mieć problemy w długim, pustym korytarzu albo przy powierzchniach szklanych. Kamera dostarcza wiele szczegółów wizualnych, lecz jest zależna od oświetlenia i tekstury sceny.
Fuzja sensoryczna pozwala połączyć te informacje w bardziej stabilną estymację ruchu i położenia. Pakiet robot_localization w ROS 2 może łączyć wiele źródeł odometrii, w tym dane z IMU i enkoderów, tworząc płynną lokalną estymację pozycji robota.
Przykładowy przepływ danych w robocie mobilnym
Poprawne działanie takiego systemu wymaga również zdefiniowania wzajemnego położenia czujników. W ROS 2 każdy LiDAR, kamera i moduł IMU powinny mieć prawidłową transformację względem podstawowego układu współrzędnych robota, najczęściej base_link.
LiDAR SLAM, Visual SLAM i Visual-Inertial SLAM – czym się różnią?
Systemy SLAM mogą różnić się przede wszystkim rodzajem danych wykorzystywanych do obserwacji otoczenia. W LiDAR SLAM podstawowym źródłem informacji są skany laserowe lub chmury punktów. Visual SLAM wykorzystuje obrazy z jednej albo kilku kamer, natomiast Visual-Inertial SLAM łączy dane wizyjne z pomiarami pochodzącymi z czujnika IMU.
Każde podejście ma inne wymagania sprzętowe i sprawdza się w innych warunkach. LiDAR dobrze odwzorowuje geometrię przestrzeni, kamera dostarcza bogatych informacji wizualnych, a IMU pomaga śledzić szybkie zmiany ruchu pomiędzy kolejnymi klatkami obrazu.
Oficjalne materiały Nav2 opisują integrację odometrii wizyjno-inercyjnej z systemem ROS 2, natomiast pakiet Isaac ROS Visual SLAM wykorzystuje obrazy stereo wraz z danymi IMU do szacowania ruchu i położenia robota.
Porównanie najważniejszych odmian SLAM
Nie istnieje jeden rodzaj SLAM odpowiedni do wszystkich robotów. W autonomicznym robocie magazynowym poruszającym się po równym podłożu skuteczny może być LiDAR SLAM 2D. Dron albo robot czworonożny potrzebuje zwykle danych przestrzennych i informacji o dynamicznym ruchu, dlatego częściej wykorzystuje Visual-Inertial SLAM, LiDAR-Inertial SLAM albo system wielosensorowy.
Kiedy warto zastosować LiDAR SLAM?
Kiedy lepiej sprawdzi się Visual SLAM?
Visual SLAM nie oznacza automatycznie, że robot nie potrzebuje LiDAR-u. Wiele nowoczesnych konstrukcji wykorzystuje oba rodzaje czujników. Kamera pomaga rozpoznawać cechy i obiekty, natomiast LiDAR dostarcza dokładnych informacji o odległości i geometrii przestrzeni.
Nav2 prezentuje również architekturę nawigacji bez LiDAR-u, w której lokalizacja i percepcja są realizowane za pomocą systemów wizyjnych. Pokazuje to, że nawigacja może działać w oparciu o obraz, ale wymaga odpowiednio przygotowanego systemu percepcji i lokalizacji.
Mapa 2D i mapa 3D w systemach SLAM
System SLAM może tworzyć mapę dwuwymiarową albo przestrzenną mapę 3D. Wybór reprezentacji zależy od rodzaju robota, konstrukcji czujników, środowiska pracy oraz zadań, które urządzenie ma wykonywać.
Mapa 2D przedstawia otoczenie jako płaską siatkę komórek. Każda komórka może oznaczać przestrzeń wolną, zajętą przez przeszkodę albo obszar jeszcze nierozpoznany. Taka reprezentacja jest powszechnie wykorzystywana przez roboty mobilne poruszające się po równych powierzchniach w magazynach, biurach, szpitalach i zakładach produkcyjnych.
Mapa 3D uwzględnia również wysokość obiektów. Może przedstawiać ściany, regały, schody, konstrukcje, elementy instalacji oraz nierówności terenu. Jest bardziej szczegółowa, ale wymaga większej ilości pamięci, mocy obliczeniowej i danych z czujników przestrzennych.
W ROS 2 wiadomość OccupancyGrid reprezentuje dwuwymiarową mapę siatkową. Nav2 wykorzystuje podobne reprezentacje do opisywania przestrzeni wolnej, zajętej i nieznanej oraz do tworzenia map kosztu używanych przy planowaniu ruchu
Porównanie mapy 2D i mapy 3D
Mapa 3D nie zawsze jest potrzebna do nawigacji. Robot może tworzyć szczegółowy model przestrzenny otoczenia, a jednocześnie wykorzystywać uproszczoną mapę 2D do planowania przejazdu. Takie podejście pozwala zachować informacje o wysokości przeszkód, ale ograniczyć złożoność obliczeń wykonywanych przez system nawigacyjny.
Nav2 wykorzystuje dwuwymiarowe mapy kosztu, ale może przetwarzać dane z czujników 3D przez warstwy wokselowe. Dane przestrzenne są wtedy rzutowane na reprezentację użyteczną dla planowania ruchu robota.
Czym jest mapa zajętości?
Mapa zajętości, nazywana również occupancy grid, dzieli przestrzeń na regularne komórki. Każdej komórce przypisywana jest informacja określająca, czy dany obszar jest wolny, zajęty przez przeszkodę albo jeszcze nie został zbadany.
W mapie 2D komórki mają postać kwadratów rozmieszczonych na płaszczyźnie. W mapie 3D przestrzeń może być dzielona na sześcienne elementy określane jako woksele. Im mniejszy rozmiar komórki lub woksela, tym bardziej szczegółowa mapa, ale jednocześnie większe zapotrzebowanie na pamięć i moc obliczeniową.
Czym są woksele i OctoMap?
Woksel jest przestrzennym odpowiednikiem piksela. Opisuje niewielki fragment trójwymiarowej przestrzeni i może zawierać informację o prawdopodobieństwie występowania przeszkody.
Jednym z narzędzi stosowanych w robotyce do tworzenia map 3D jest OctoMap. Biblioteka wykorzystuje strukturę drzewa oktalnego, czyli octree, do przechowywania przestrzennej mapy zajętości. Dzięki temu obszary wymagające większej szczegółowości mogą być reprezentowane dokładniej, a duże jednorodne przestrzenie nie muszą zajmować tak dużo pamięci. OctoMap implementuje probabilistyczne mapowanie zajętości 3D i może integrować pełne chmury punktów.
Jak powstaje mapa zajętości?
Rozdzielczość mapy powinna być dobrana do wielkości robota i przeszkód występujących w jego otoczeniu. Zbyt niska rozdzielczość może powodować utratę niewielkich obiektów, natomiast zbyt wysoka zwiększa zużycie pamięci oraz czas potrzebny na aktualizację i planowanie trasy.
Mapowanie a lokalizacja – dlaczego nie są tym samym?
Mapowanie i lokalizacja są ze sobą ściśle powiązane, ale oznaczają dwa różne procesy. Mapowanie polega na tworzeniu reprezentacji otoczenia na podstawie danych z czujników. Lokalizacja służy natomiast do określania aktualnej pozycji robota względem istniejącej mapy.
Podczas pierwszego przejazdu robot może pracować w trybie SLAM, czyli jednocześnie budować mapę i określać swoją pozycję. Po zapisaniu i zweryfikowaniu mapy kolejne przejazdy mogą odbywać się już w trybie lokalizacji. Robot korzysta wtedy z wcześniej przygotowanej mapy i dopasowuje do niej bieżące skany lub obserwacje.
W praktyce oznacza to, że robot nie musi za każdym razem tworzyć całego otoczenia od początku. Może uruchomić się na istniejącej mapie, określić swoje położenie i rozpocząć nawigację do wyznaczonego celu.
Pakiet slam_toolbox obsługuje zarówno tworzenie map, jak i osobny tryb lokalizacji. W trybie lokalizacji wczytywana jest istniejąca mapa, a nowe skany służą przede wszystkim do wyznaczania bieżącego położenia robota, bez ciągłego rozbudowywania całej mapy.
Porównanie mapowania i lokalizacji
Dobrze przygotowana mapa powinna przedstawiać stałe elementy otoczenia, takie jak ściany, słupy, regały i trwałe konstrukcje. Obiekty tymczasowe, na przykład ludzie, palety, wózki albo otwarte drzwi, mogą utrudniać późniejszą lokalizację, jeżeli podczas mapowania zostaną potraktowane jako stałe elementy przestrzeni.
Jak robot lokalizuje się na gotowej mapie?
Po uruchomieniu robot nie zawsze zna dokładnie swoją pozycję. Może otrzymać pozycję początkową od operatora, systemu nadrzędnego, znacznika lokalizacyjnego albo innego źródła danych. Następnie porównuje bieżące pomiary z mapą i koryguje swoją estymację.
W przypadku lokalizacji laserowej system analizuje zgodność aktualnego skanu ze ścianami i przeszkodami zapisanymi na mapie. Jeżeli robot znajduje się w obszarze o charakterystycznej geometrii, jego pozycja może zostać wyznaczona stosunkowo szybko. Trudniejsze są długie, jednakowe korytarze, otwarte hale i przestrzenie zawierające niewiele stałych punktów odniesienia.
W Nav2 system lokalizacji lub SLAM odpowiada za transformację pomiędzy układem map i odom, natomiast lokalna odometria opisuje ruch robota pomiędzy odom i base_link. Pozwala to połączyć płynny pomiar ruchu z globalną korektą położenia na mapie.
Jak przebiega uruchomienie robota na zapisanej mapie?
W trybie lokalizacji slam_toolbox może wczytać zapisany graf pozycji, dopasować pierwszy skan do lokalnego obszaru mapy i następnie śledzić bieżące położenie robota. System utrzymuje ograniczony zbiór najnowszych skanów, dzięki czemu lokalizacja nie powoduje nieograniczonego wzrostu grafu i zapotrzebowania na zasoby.
Co powoduje błędy i utratę lokalizacji?
Utrata lokalizacji oznacza, że system nie potrafi już wiarygodnie określić położenia robota względem mapy. Może się to objawiać przesuwaniem pozycji na wizualizacji, nagłym obrotem robota na mapie, błędnym planowaniem trasy albo całkowitym zatrzymaniem nawigacji.
Przyczyną nie zawsze jest sam algorytm SLAM. Problemy mogą wynikać z niedokładnej odometrii, nieprawidłowych transformacji układów współrzędnych, opóźnień danych, złej kalibracji czujników, dużych zmian w otoczeniu albo niewystarczającej liczby charakterystycznych punktów odniesienia.
W systemie ROS 2 prawidłowa lokalizacja wymaga spójnego łańcucha transformacji map → odom → base_link → układy czujników. System lokalizacji publikuje zwykle transformację pomiędzy map i odom, natomiast odometria odpowiada za relację odom → base_link. Błędy w tej strukturze mogą uniemożliwiać poprawne wykorzystanie danych z czujników.
Najczęstsze przyczyny problemów z lokalizacją
Nieprawidłowo ustawiona transformacja czujnika może sprawić, że poprawny skan zostanie błędnie umieszczony względem podstawy robota. Nav2 wymaga transformacji pozwalających przeliczać dane ze źródłowego układu czujnika do base_link, a następnie do układów odometrii i mapy.
Po czym poznać, że robot traci lokalizację?
Jak diagnozować problem krok po kroku?
Diagnostykę warto rozpocząć od wizualnego porównania skanu z mapą. Jeżeli punkty pomiarowe nie pokrywają się ze ścianami, przyczyną może być błędna pozycja początkowa, odometria, transformacja czujnika lub opóźnienie danych. Dopiero gdy te elementy są poprawne, należy dostrajać parametry lokalizatora.
W slam_toolbox konfiguracja obejmuje między innymi nazwy układów map, odom i podstawy robota, temat skanu oraz parametry związane z kolejką danych i publikowaniem transformacji. Jakość odometrii ma bezpośredni wpływ na odporność systemu na błędne dopasowania.
Jak przygotować środowisko do poprawnego mapowania?
Jakość mapy zależy nie tylko od parametrów algorytmu SLAM. Bardzo duże znaczenie mają również sposób przygotowania przestrzeni, ustawienie czujników, prędkość robota oraz przebieg przejazdu mapującego.
Podczas tworzenia mapy robot powinien obserwować możliwie dużo stałych elementów otoczenia, takich jak ściany, słupy, regały i trwałe konstrukcje. Obiekty tymczasowe, ludzie, wózki transportowe oraz często przemieszczane wyposażenie mogą zostać błędnie zapisane jako część mapy i utrudniać późniejszą lokalizację.
Dane z czujników muszą być również dostępne w prawidłowych układach współrzędnych i z odpowiednimi znacznikami czasu. Narzędzia mapowania oraz lokalizacji w Nav2 wykorzystują między innymi skany laserowe, mapę, odometrię i kompletny łańcuch transformacji robota.
Jak przygotować obiekt przed mapowaniem?
Jak powinien przebiegać przejazd mapujący?
Robot powinien poruszać się płynnie i z umiarkowaną prędkością. Gwałtowne przyspieszenia, szybkie obroty i poślizg mogą pogarszać jakość odometrii oraz utrudniać dopasowywanie kolejnych skanów.
Trasa powinna umożliwiać obserwowanie tych samych elementów z różnych miejsc. Warto również powrócić do wcześniej odwiedzonych obszarów, aby algorytm mógł wykryć zamknięcie pętli i skorygować narastające błędy.
slam_toolbox pozwala zapisać nie tylko klasyczny obraz mapy, ale również graf pozycji i metadane projektu. Taki zapis umożliwia późniejszą kontynuację mapowania, poprawianie mapy albo wykorzystanie jej w trybie lokalizacji.
Co należy sprawdzić przed rozpoczęciem mapowania?
Przed rozpoczęciem właściwego przejazdu warto wykonać krótki test w niewielkim obszarze. Jeżeli mapa pozostaje stabilna podczas jazdy prosto, skręcania i powrotu do punktu początkowego, można rozpocząć mapowanie całego obiektu.
Kompletne drzewo transformacji jest warunkiem uruchomienia wielu komponentów Nav2, a brak wymaganych relacji może blokować aktywację map kosztu i innych elementów systemu.
Jak ocenić, czy utworzona mapa jest prawidłowa?
Prawidłowa mapa powinna być spójna geometrycznie, kompletna i użyteczna dla lokalizacji oraz planowania trasy. Nie wystarczy, że wygląda estetycznie na ekranie. Musi również poprawnie odwzorowywać przejścia, ściany, przeszkody i wolną przestrzeń w skali odpowiadającej rzeczywistemu obiektowi.
Podczas oceny należy porównać mapę z rzeczywistym układem pomieszczeń oraz sprawdzić, czy robot potrafi ponownie określić swoją pozycję po uruchomieniu. Ważne jest także wykonanie kilku przejazdów testowych do różnych punktów, ponieważ błędy mogą ujawnić się dopiero podczas planowania trasy.
W Nav2 mapy zajętości są wykorzystywane jako reprezentacja przestrzeni wolnej, zajętej i nieznanej, a następnie stanowią podstawę statycznej warstwy mapy kosztu. Oznacza to, że błędnie zaznaczone ściany lub przejścia mogą bezpośrednio wpływać na planowanie ruchu.
Cechy dobrej mapy SLAM
Typowe błędy widoczne na mapie
Niewielkie nierówności krawędzi nie zawsze dyskwalifikują mapę. Ważniejsze jest to, czy reprezentacja pozwala na stabilną lokalizację i bezpieczne planowanie ruchu. Problem pojawia się wtedy, gdy zniekształcenia zmieniają szerokość przejazdów, przesuwają stałe elementy albo powodują powstawanie fałszywych połączeń pomiędzy pomieszczeniami.
Jak przetestować gotową mapę?
Dobra mapa powinna umożliwiać wielokrotne uruchamianie robota bez konieczności każdorazowego ponownego mapowania. Robot powinien poprawnie dopasowywać bieżące obserwacje do mapy, a planowane trasy nie powinny przecinać ścian ani prowadzić przez zbyt wąskie przejścia.
slam_toolbox umożliwia zapis klasycznej mapy przeznaczonej między innymi do wizualizacji i lokalizacji AMCL, a także serializację grafu pozycji wraz z dodatkowymi danymi projektu. Dzięki temu można zachować zarówno końcową mapę, jak i materiał potrzebny do późniejszej edycji lub kontynuacji mapowania.
SLAM a autonomiczna nawigacja – jak te systemy współpracują?
SLAM i autonomiczna nawigacja są ze sobą ściśle powiązane, ale nie oznaczają tego samego. SLAM odpowiada przede wszystkim za tworzenie mapy oraz określanie położenia robota. System nawigacyjny wykorzystuje natomiast mapę, aktualną pozycję, dane z czujników i wskazany cel do zaplanowania oraz wykonania bezpiecznego przejazdu.
Robot może nawigować zarówno podczas aktywnego mapowania, jak i po wczytaniu wcześniej zapisanej mapy. W pierwszym przypadku mapa jest na bieżąco rozbudowywana, natomiast w drugim system lokalizacji dopasowuje aktualne obserwacje do gotowej reprezentacji otoczenia.
W środowisku ROS 2 zadania te mogą być realizowane przez pakiety SLAM oraz system Navigation2, nazywany Nav2. Nav2 integruje lokalizację, mapy kosztu, planowanie globalne, sterowanie lokalne i logikę zachowania robota.
Co dzieje się po wskazaniu celu na mapie?
Planista globalny nie steruje bezpośrednio silnikami robota. Jego zadaniem jest wyznaczenie trasy w większej skali, na przykład przez pomieszczenia i korytarze. Sterownik lokalny analizuje natomiast najbliższy fragment otoczenia i generuje polecenia ruchu potrzebne do podążania za trasą oraz omijania bieżących przeszkód.
Nav2 realizuje funkcje planowania, sterowania i zachowań przez oddzielne serwery z wymiennymi wtyczkami. Dobór konkretnego planisty lub sterownika może zależeć od konstrukcji robota, środowiska i rodzaju zadania.
Główne elementy autonomicznej nawigacji
Mapy kosztu nie są zwykłym obrazem otoczenia. Poszczególne obszary otrzymują wartości określające koszt przejazdu. Ściana może być obszarem całkowicie niedostępnym, natomiast przestrzeń znajdująca się blisko przeszkody może otrzymać podwyższony koszt. Dzięki temu planista może preferować trasy prowadzące w bezpiecznej odległości od ścian i wyposażenia.
Warstwa statyczna mapy kosztu może korzystać z mapy utworzonej wcześniej albo powstającej na żywo podczas SLAM.
Czy robot może nawigować podczas tworzenia mapy?
Tak. Robot może korzystać z nawigacji podczas aktywnego procesu SLAM. W takim przypadku system mapowania publikuje na bieżąco aktualizowaną mapę i pozycję robota, a Nav2 wykorzystuje te informacje do planowania ruchu.
Trzeba jednak uwzględnić, że nieznane obszary nie są jeszcze w pełni opisane. Trasa może być ponownie obliczana, gdy robot odkryje nowe ściany, przejścia lub przeszkody. Jest to przydatne podczas eksploracji, lecz codzienna praca w stałym obiekcie jest zwykle bardziej przewidywalna po przygotowaniu, sprawdzeniu i zapisaniu mapy.
Oficjalny poradnik Nav2 opisuje nawigowanie podczas równoczesnego mapowania z użyciem slam_toolbox, bez uruchamiania osobnego AMCL i serwera wcześniej zapisanej mapy.
Co dzieje się, gdy robot nie może przejechać?
Sposób reagowania na problemy może być opisany przez drzewo zachowań. Pozwala ono ustalić kolejność planowania, sterowania, ponawiania prób oraz działań naprawczych. W Nav2 drzewa zachowań koordynują między innymi ponowne planowanie, czyszczenie map kosztu i reakcję na brak postępu.
Zastosowania SLAM w różnych typach robotów
SLAM znajduje zastosowanie wszędzie tam, gdzie robot musi samodzielnie poruszać się w nieznanym albo częściowo znanym otoczeniu. Technologia może być wykorzystywana zarówno do jednorazowego przygotowania mapy, jak i do bieżącej lokalizacji, inspekcji, eksploracji oraz realizacji autonomicznych zadań.
Sposób wykorzystania SLAM zależy od konstrukcji robota. Platforma kołowa poruszająca się po hali może korzystać z mapy 2D, natomiast dron, robot czworonożny albo system inspekcyjny częściej potrzebuje przestrzennej mapy 3D i dokładnego śledzenia ruchu w wielu osiach.
Nav2 jest przeznaczony do realizacji autonomicznej nawigacji mobilnych robotów o różnych rodzajach kinematyki, a jego dokumentacja obejmuje zarówno nawigację na gotowej mapie, jak i przejazd podczas aktywnego mapowania SLAM.
Przykładowe zastosowania według rodzaju robota
SLAM może być również wykorzystywany w systemach wielorobotowych. Poszczególne urządzenia mogą tworzyć własne fragmenty mapy, wymieniać informacje o położeniu albo pracować w ramach wspólnej reprezentacji przestrzeni. slam_toolbox opisuje między innymi możliwość mapowania rozproszonego i pracy wielu robotów we wspólnym środowisku.
Jak SLAM wspiera realizację zadania robota?
Sam SLAM nie wykonuje zadania transportowego, inspekcyjnego ani usługowego. Dostarcza jednak mapę i pozycję, bez których system autonomii nie mógłby wiarygodnie planować ruchu, realizować przejazdów między punktami ani rejestrować miejsca wykonania pomiaru.
Gdzie SLAM może być szczególnie przydatny?
Dostępność SLAM w specyfikacji robota nie oznacza jeszcze, że użytkownik otrzyma dostęp do mapy, surowych danych z czujników albo parametrów algorytmu. Przed zakupem warto sprawdzić, czy producent udostępnia ROS 2, SDK, sterowniki, dokumentację oraz możliwość eksportowania i ponownego wykorzystywania map.
Zalety i ograniczenia SLAM w robotyce
SLAM umożliwia robotowi pracę w przestrzeni, której wcześniej nie znał, bez konieczności ręcznego przygotowania kompletnej mapy. System może stopniowo poznawać otoczenie, określać własne położenie i dostarczać dane potrzebne do autonomicznej nawigacji.
Technologia ta ma jednak również ograniczenia. Jej skuteczność zależy od jakości czujników, odometrii, kalibracji, synchronizacji danych oraz charakterystyki środowiska. W trudnych warunkach mapa może być zniekształcona, a pozycja robota niestabilna.
Rozwiązania takie jak slam_toolbox pozwalają tworzyć mapy, zapisywać graf pozycji, wykrywać zamknięcie pętli i później pracować w trybie lokalizacji. Nie eliminuje to jednak potrzeby prawidłowego przygotowania czujników i całej architektury robota.
Najważniejsze zalety SLAM
Jedną z największych zalet SLAM jest możliwość rozpoczęcia pracy bez pełnej wiedzy o otoczeniu. Robot może tworzyć mapę podczas pierwszego przejazdu, a następnie wykorzystywać ją do kolejnych zadań. Nav2 umożliwia również nawigowanie podczas aktywnego mapowania, gdy mapa jest na bieżąco publikowana przez system SLAM.
Najważniejsze ograniczenia SLAM
SLAM nie powinien być traktowany jako całkowicie samodzielny system autonomii. Dostarcza mapę i estymację pozycji, ale bezpieczny ruch wymaga również planowania trasy, lokalnego wykrywania przeszkód, kontroli napędów oraz właściwej reakcji na błędy.
Nav2 rozdziela funkcje mapowania, lokalizacji, planowania i sterowania na osobne komponenty. Dzięki temu SLAM może być jednym z elementów większego systemu nawigacyjnego, a nie pojedynczym mechanizmem odpowiedzialnym za wszystkie decyzje robota.
Czy SLAM zawsze jest potrzebny?
Nie każdy robot potrzebuje aktywnego systemu SLAM. Jeżeli urządzenie porusza się po stałej, wcześniej przygotowanej mapie, może korzystać wyłącznie z lokalizacji. W prostszych systemach pozycja może być również określana za pomocą znaczników, reflektorów, kodów QR, systemów wizyjnych albo infrastruktury zewnętrznej.
SLAM jest najbardziej przydatny wtedy, gdy robot musi samodzielnie poznawać otoczenie, pracować w obiekcie bez gotowej mapy albo okresowo aktualizować reprezentację przestrzeni.
SLAM nie jest celem samym w sobie. Jego wartość polega na dostarczaniu wiarygodnej mapy i pozycji, które mogą zostać wykorzystane przez system autonomicznej nawigacji oraz oprogramowanie realizujące zadanie robota.
Jak wybrać system SLAM do konkretnego robota?
Wybór systemu SLAM powinien wynikać z konstrukcji robota, rodzaju dostępnych czujników, środowiska pracy oraz oczekiwanej dokładności mapy i lokalizacji. Nie należy wybierać algorytmu wyłącznie na podstawie jego popularności albo liczby dostępnych funkcji.
Prosty robot mobilny poruszający się po równym podłożu może korzystać z LiDAR-u 2D i mapy zajętości. Robot czworonożny, dron lub platforma działająca w wielopoziomowym otoczeniu częściej wymaga mapowania 3D, IMU oraz bardziej rozbudowanej fuzji sensorycznej.
Nav2 nie narzuca jednego rodzaju SLAM ani obowiązku stosowania LiDAR-u. System nawigacyjny może współpracować z różnymi źródłami lokalizacji i percepcji, pod warunkiem że otrzymuje prawidłową mapę, pozycję robota oraz wymagane transformacje układów współrzędnych.
Najważniejsze kryteria wyboru
Wybór należy rozpocząć od określenia minimalnych wymagań projektu. System przeznaczony do nawigacji robota usługowego nie musi generować szczegółowego modelu 3D całego budynku. Z kolei robot inspekcyjny może potrzebować przestrzennej mapy, dokładnego położenia pomiarów i możliwości ponownego połączenia danych z kolejnych przejazdów.
Przykładowe narzędzia SLAM w środowisku ROS 2
slam_toolbox jest narzędziem przeznaczonym przede wszystkim do laserowego mapowania 2D i może zapisywać mapę oraz graf pozycji. RTAB-Map jest systemem działającym w czasie rzeczywistym, wykorzystywanym między innymi z kamerami RGB-D i w mapowaniu przestrzennym. Dobór narzędzia powinien wynikać z dostępnych danych oraz sposobu późniejszego wykorzystania mapy.
Jak przeprowadzić wybór krok po kroku?
Test w rzeczywistym środowisku jest konieczny, ponieważ dwa systemy wykorzystujące te same czujniki mogą zachowywać się inaczej po zmianie parametrów, prędkości robota i charakterystyki otoczenia. Warto rejestrować dane z przejazdów, aby porównywać konfiguracje bez konieczności każdorazowego powtarzania całego testu.
Najbardziej rozbudowany system SLAM nie zawsze jest najlepszym wyborem. Dobre rozwiązanie powinno zapewniać wymaganą jakość mapy i lokalizacji przy możliwie niskiej złożoności, stabilnym działaniu oraz rozsądnym wykorzystaniu zasobów robota.
Najczęściej zadawane pytania o SLAM w robotyce
Podsumowanie
SLAM jest jedną z najważniejszych technologii wykorzystywanych w autonomicznej robotyce. Pozwala robotowi jednocześnie tworzyć mapę otoczenia i określać własne położenie, nawet wtedy, gdy wcześniej nie posiadał gotowej reprezentacji przestrzeni.
Skuteczność systemu zależy od jakości czujników, odometrii, kalibracji, synchronizacji danych oraz charakterystyki środowiska. LiDAR dobrze odwzorowuje geometrię otoczenia, kamery dostarczają szczegółów wizualnych, a IMU i enkodery pomagają śledzić ruch robota. Połączenie tych źródeł danych może znacząco poprawić stabilność lokalizacji.
SLAM nie jest jednak pełnym systemem autonomicznej nawigacji. Dostarcza mapę oraz pozycję robota, które następnie wykorzystują moduły planowania trasy, omijania przeszkód, sterowania ruchem i zarządzania zadaniem.
Wybór odpowiedniego rozwiązania powinien wynikać z konstrukcji robota, rodzaju czujników, wymaganego poziomu dokładności, środowiska pracy oraz dostępnej mocy obliczeniowej. W wielu robotach mobilnych wystarczy mapa 2D i LiDAR 2D, natomiast roboty czworonożne, humanoidalne, drony i systemy inspekcyjne częściej korzystają z mapowania 3D oraz fuzji danych z wielu czujników.
Przed wdrożeniem warto przeprowadzić próbne mapowanie, ocenić jakość lokalizacji oraz sprawdzić, czy producent robota udostępnia ROS 2, sterowniki, SDK, dokumentację i dostęp do danych z czujników.
Więcej informacji o czujnikach i środowisku programistycznym wykorzystywanym w systemach SLAM znajdziesz w artykułach Jak działa LiDAR w robotyce? oraz ROS 2 w robotyce – czym jest i jak działa?
Szukasz robota z obsługą SLAM i autonomicznej nawigacji?
LEDIO Robotics pomaga firmom, uczelniom, szkołom i zespołom badawczym w doborze robotów wyposażonych w LiDAR, kamery 3D, systemy lokalizacji, ROS 2 oraz otwarte środowisko programistyczne.
Analizujemy dostęp do map, danych z czujników, SDK, sterowników i funkcji nawigacyjnych. Pomagamy również ocenić, czy dana platforma będzie odpowiednia do mapowania, autonomicznych przejazdów, badań, edukacji, inspekcji lub wdrożeń przemysłowych.
Przed wyborem robota sprawdzimy rodzaj systemu SLAM, dostępność ROS 2, możliwość eksportowania map, zakres danych z LiDAR-u i kamer oraz wymagania sprzętowe potrzebne do stabilnej pracy.
