Jeśli chcesz tworzyć trówymiarowe mapy, a masz tylko laser, LeGO-LOAM jest dla Ciebie! Wymaga jedynie chmur punktów z Velodyne’a. Opcjonalnie możesz dodać IMU.
Kod który będziemy wykorzystywać do uruchomienia znajduje się na repozytorium LeGO-LOAM.
Pobieranie danych
Jeśli nie masz sensora, albo akurat nie masz przygotowanego rosbaga z nagranymi danymi to jest możliwość pobrania przykładowych danych z jackal_dataset_20170608. Jest tego trochę, dlatego od tego zaczynam, by można było pobierać w tle.
Sensor
Wykorzystany tutaj jest sensor Velodyne VLP-16 zamontowany poziomo jak na poniższym rysunku.
Pobranie repozytorium i budowanie pakietu
Scenariusz wygląda podobnie jak przy każdym pakiecie w ROSie. Musimy pobrać kod pakietu do katalogu src w naszym workspacie, a następnie zbudować pakiet. Pobierzemy od razu pakiet GTSAM, który jest niezbędny do skompilowania pakietu.
cd ~/catkin_ws/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git git clone https://bitbucket.org/gtborg/gtsam.git cd .. # catkin_make # doesn't work because of plain cmake package 'gtsam' catkin_make_isolated
Jeżeli udało Ci się zbudować, to gratuluję! Ja musiałem jeszcze doinstalować zależności:
- Intel Threaded Building Blocks (TBB) (
sudo apt-get install libtbb-dev
) - Intel Math Kernel Library (MKL) – należy się zarejestrować
To nie wszystko, bo komenda catkin_make nie zadziała z powodu pakietu ze zwykłym cmake’iem. Używamy catkin_make_isolated zamiast catkin_make.
Sukces!
Minęło pół roku, a nie jestem już w stanie na tej samej maszynie tego przekompilować…
Tak wygląda obecnie mój błąd:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: MKL_LAPACK_LIBRARY linked by target "gtsam" in directory /tmp/gtsam/gtsam
Uruchomienie
Będą nam potrzebne dwie konsole, w jednej uruchomimy algorytm, a w drugiej odtworzymy dane z plików rosbag. W pierwszej konsoli wpisz:
roslaunch lego_loam run.launch
Pojawi się okno RViza:
Następnie w drugiej konsoli uruchom odtwarzanie dwóch rodzajów wiadomości za pomocą polecenia w katologu z plikami rosbag:
rosbag play *.bag --clock --topic /velodyne_points /imu/data
Po chwili dane powinny zacząć się pojawiać w RVizie:
Jako, że mam dane z pojazdu wyposarzonego w skaner Velodyne VLP-16 prezentuję poniżej film mojego zbioru danych:
Podsumowanie
Wiesz już jak łatwo możesz budować trójwymiarowe mapy z chmur punktów. Zaprezentowany algorytm to również sposób na brak odometrii w pojeździe. Możesz sprawdzić działanie na żywo na swoim komputerze pobierając zbiór danych udostępniony przez The Robust Field Autonomy Lab at Stevens Institute of Technology.
Jeśli masz problemy z uruchomieniem, bądź uzyskujesz świetne wyniki, daj znać!
Linki
- Repozytorium LeGO-LOAM
- Przykładowe dane w ROSbag
- Artykuł LeGO-LOAM – Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain