Hyeonjae Gil* · Dongjae Lee* · Giseop Kim · Ayoung Kim
(* Equal Contribution)
ELite is a LiDAR-based lifelong mapping framework that integrates ephemerality—the likelihood of a point being transient or persistent—into the entire pipeline. Unlike binary classifications of map elements (static vs. dynamic), ELite introduces a two-stage ephemerality concept to represent changes across different time scales:
- Local ephemerality: Captures short-term variations (e.g., moving cars vs. parked cars).
- Global ephemerality: Represents long-term changes (e.g., parked cars vs. new buildings)
By leveraging ephemerality, ELite seamlessly aligns multiple sessions, removes dynamic objects, and matains accurate maps.
git clone [email protected]:dongjae0107/ELite.git
We tested with python 3.10, but any python version will work fine.
conda create -n elite python=3.10
conda activate elite
cd ELite
pip install -e .
Optional: For CUDA-accelerated matching, we recommend installing pygicp
and using the PyGICPScanMatcher
. Follow the instructions below or refer to the fast_gicp repository for more details.
git clone [email protected]:koide3/fast_gicp.git
cd fast_gicp
python3 setup.py install --user
Download the dataset from this link or use the script below to download example sequences (01
and 02
):
bash scripts/download_parkinglot.sh
To download additional sequences, simply modify the script as needed.
Then, initialize the ELite with first session:
python3 run_elite.py ./config/parkinglot_first.yaml
For the other sessions, run:
python3 run_elite.py ./config/parkinglot.yaml
You need to provide a Session
as input. Each session must include:
- A
Scans/
folder containing point cloud files (in.pcd
format), starting from000000.pcd
- A
poses.txt
file containing LiDAR poses in KITTI format
The expected directory structure is:
Session/
├── poses.txt
└── Scans/
├── 000000.pcd
├── 000001.pcd
├── ...
└── 00000N.pcd
You can easily generate session data using the saver tool provided with SC-LIO-SAM.
Alternatively, SC-A-LOAM and FAST_LIO_SLAM are also supported.
To run the alignment module, you need to provide an initial transformation for the new session. Initial transformation is for coarse aligning the first few scans of new session to the previous session's coordinate frame. The simplest method is to use ICP in CloudCompare and use the transformation matrix. In near future, we are planning to automate this process by introducing global localization-based version (e.g. Scan Context) as written in the paper.
Once your dataset is prepared, update the parameters in config/sample.yaml
.
Make sure to set or remove the prev_outputs_dir
field depending on whether this is the first session or a subsequent session.
To run ELite:
python3 run_elite.py ./config/sample.yaml
If you use ELite for any academic work, please cite our paper.
@INPROCEEDINGS { hjgil-2025-icra,
author={Hyeonjae Gil and Dongjae Lee and Giseop Kim and Ayoung Kim},
title={Ephemerality meets LiDAR-based Lifelong Mapping},
booktitle={Proceedings of the IEEE International Conference on Robotics and Automation (ICRA)},
year={2025},
month={May.},
address={Atlanta},
}
If you have any questions, please contact:
- Hyeonjae Gil ([email protected])
- Dongjae Lee ([email protected])
This work was supported by the National Research Foundation of Korea (NRF) grant funded by the Korea government (MSIT)(No. RS-2024-00461409), and in part by the Robotics and AI (RAI) Institute.