Written by 12:38 pm Tutoriale

LeGO-LOAM – Lidar Odometry and Mapping

LeGO-LOAM

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.

Jackal with Velodyne VLP-16 Source: https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

Jackal with Velodyne VLP-16 Source: https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

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:

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:

LeGO-LOAM Rviz

Rviz

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:

LeGO-LOAM - Velodyne VLP-16 first scan

LeGO-LOAM – Velodyne VLP-16 first scan

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

Close