Skip to main content

It Is All About Matching Data -- Robust and Informed LiDAR Odometry

Project description

MAD-ICP

It Is All About Matchign Data -- Robust and Informed LiDAR Odometry

Preprint


:gift: Install

You can download MAD-ICP using pip

pip install mad-icp

:rocket: Usage

We provide a Python launcher for Rosbag1, Rosbag2, and KITTI binary formats. The dataset configuration file is important for the sensor characteristics and extrinsic information (typically, ground truths are not expressed in the LiDAR frame).

The internal parameters are in configurations/params.cfg. All the experiments have been run with this same set. To run the pipeline, choose the appropriate dataset configuration file (kitti.cfgfor this example) and type:

cd mad-icp/
mad_icp --data-path /input_dir/ \
        --estimate-path /output_dir/ \
        --dataset-config mad-icp/configurations/datasets/kitti.cfg \
        --mad-icp-config mad-icp/configurations/params.cfg

Our runner directly saves the odometry estimate file in KITTI format (homogenous matrix row-major 12 scalars); soon, we will provide more available formats like TUM.

Our pipeline is anytime realtime! You can play with parameters num_keyframes and num_cores and, if you have enough computation capacity, we suggest increasing these (we run demo/experiments with num_keyframes=16 and num_cores=16).

:hammer: Building

Building is tested by our CI/CD pipeline for Ubuntu 20.04 and Ubuntu 22.04 (using g++).

The following external dependencies are required.

Dependency Version(s) known to work
Eigen 3.3
OpenMP
pybind11
yaml (optional for C++ apps)

If your system lacks any dependency (except for OpenMP) we download local copies using FetchContent. If you want to build and install the package, assuming you're inside the repository, you can use pip as follows:

pip install .

Moreover, you can build the C++ library (along with the pybinds) by typing:

mkdir build && cd build && cmake ../mad_icp && make -j8

:godmode: Building and Running C++ Apps [Optional]

If you want to avoid Python, we provide the bin_runner C++ executable (located in mad_icp/apps/cpp_runners/bin_runner.cpp) that accepts binary cloud format (KITTI, Mulran, etc.). You can build the executable using

mkdir build && cd build && cmake -DCOMPILE_CPP_APPS=ON ../mad_icp && make -j

And run

cd build/apps/cpp_runners
./bin_runner -data_path /path_to_bag_folder/ \
             -estimate_path /path_to_estimate_folder/ \
             -dataset_config ../../../mad_icp/configurations/datasets/kitti.cfg \
             -mad_icp_config ../../../mad_icp/configurations/params.cfg 

[!IMPORTANT] If running on the KITTI dataset, enable the flag -kitti for KITTI scan correction (not documented anywhere). We do not (currently) provide a viewer for this executable.

:pencil: What is missing?

  • ROS/ROS2 optional dependencies

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mad_icp-0.0.2.tar.gz (19.4 MB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page