Skip to content

Multi Method Lidar Odometry is a lightweight Lidar Odometry library with GUI

License

Notifications You must be signed in to change notification settings

enescingoz/multi_method_lidar_odometry_gui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi Method Lidar Odometry with GUI

Presentation

Multi Method Lidar Odometry is a lightweight Lidar Odometry library based on viz3d, a C++ GUI library that integrates Dear ImGUI, an amazing graphical interface library for C++, ImPlot, which provides an interactive plotting library, and VTK, the Visualization Toolkit.

Description

This library is a simple application layer over the singleton GUI, which opens a GLFW window and manages a set of user-defined ImGUIWindows.

A specialized VTKWindow extends an ImGUIWindow and allows the creation and visualization of multiple VTK pipelines integrated with the ImGui-managed layout of windows. The pipelines are rendered offscreen in a texture and then copied into the available space of the window.

For lidar odometry, the library integrates PCL's NDT and ICP methods to generate a lidar trajectory from imported lidar point clouds and saves them as .csv and .pcd files.

Installation

install.sh and install.bat provide complete installation scripts for Linux and Windows. They first install the external dependencies (VTK, GLFW, GLAD, PCL, etc.) and then build the project. The default installation destination is ./install.

Usage

Run the run.sh file to initialize the UI.

  • To run lidar odometry, first select a folder that contains .pcd files of lidar point clouds.
  • If you have a ROS2 bag file, you can import your PointCloud2 topics as .pcd files using this script.
  • After choosing the folder with .pcd files, select your registration method and set the required parameters for that method.
  • Once you click the Start button, your selected registration method will be initialized and a trajectory will be generated and visualized on the UI.
  • To save the generated trajectory as .csv and .pcd files, click the Save odometry button and choose an output path.

See main.cpp for more details.

The interactor style used for each VTKWindow is vtkInteractorStyleMultiTouchCamera, which works as specified below:

  • Left Mouse Button Pressed: Rotates the camera
  • Shift Key + Left Mouse Button Pressed: Translates the camera (Pan)
  • Ctrl Key + Left Mouse Button Pressed: Rotates the camera

TODO(s)

  • Implement ICP-N, ICP-NL, and GICP registration methods from the PCL library
  • Show log messages on the UI