4D Radar-Inertial Odometry implementation in C++, based on Gaussian modeling and multi-hypothesis scan matching
Under Construction
- CUDA Toolkit (including nvcc)
- ROS (optional). We target the following versions:
- ROS 1 One (currently needed for
upo_gaussian_tester
) - ROS 2 Humble
- ROS 1 One (currently needed for
- small_gicp
- Ceres (system package)
gaussian_server.py
from gaussian-rio
For evaluating NTU4DRadLM and Snail-Radar trajectories:
- numpy
- evo
The generated trajectories used to calculate the metrics in our paper can be found in our website.
This repository contains two packages:
upo_gaussians
: A library providing the actual implementation of the 4D Radar-Inertial Odometry. It provides multiple scan matching algorithms, including Gaussians, NDT, GICP and VGICP. It can be used with or without ROS.upo_gaussian_tester
: A ROS package providing arun_offline
tool that allows for running the odometry directly on existing datasets (NTU4DRadLM, Snail-Radar)
In order to use the Gaussian odometry, it is currently necessary to run the gaussian_server.py
script from our previous implementation, which is in charge of generating Gaussian models from radar point clouds. A native optimized implementation of Gaussian fitting is planned to be added in the future, which will remove this requirement.
This repository contains the following scripts (in the scripts/
folder):
run-ntu4dradlm.sh
: Runs the odometry on four sequences of the NTU4DRadLM dataset.run-snail-radar.sh
: Runs the odometry on five sequences of the Snail-Radar dataset.evaluate_ntu4dradlm.py
: Generates evaluation metrics for NTU4DRadLM.evaluate_snailradar.py
: Generates evaluation metrics for Snail-Radar.
Before running the odometry, it is required to adjust the path to the datasets in their respective .yaml
files. Likewise, it is necessary to adjust the DATASET_DIR
variable in the evaluation scripts.
@misc{gaussian4drio,
author = {Fernando Amodeo and Luis Merino and Fernando Caballero},
title = {4D Radar-Inertial Odometry based on Gaussian Modeling and Multi-Hypothesis Scan Matching},
year = {2024},
eprint = {arXiv:2412.13639},
}
This work was partially supported by the following grants: 1) INSERTION PID2021-127648OB-C31, and 2) NORDIC TED2021-132476B-I00 projects, funded by MCIN/AEI/ 10.13039/501100011033 and the "European Union NextGenerationEU / PRTR".