Skip to content

YunxuanMao/ngel_slam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NGEL-SLAM

NGEL-SLAM: Neural Implicit Representation-based Global Consistent Low-Latency SLAM System
Yunxuan Mao, Xuan Yu, Zhuqing Zhang, Kai Wang, Yue Wang, Rong Xiong, Yiyi Liao
Winner of ICRA 2024 Best Paper Award in Robot Vision

Logo

Installation

Please follow the instructions below to install the repo and dependencies.

mkdir catkin_ws && cd catkin_ws
mkdir src && cd src
git clone https://github.com/YunxuanMao/ngel_slam.git
cd ..
catkin_make

ORB-SLAM-ROS3 modified by me can be downloaded here: google dirve or baidu netdisk (Passward: di2k)

Install the environment

conda create -n ngel python=3.8
conda activate ngel

pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu113/torch_stable.html

pip install -r requirements.txt

cd third_party/kaolin
python setup.py develop

cd third_party/kaolin-wisp
pip install -r requirements.txt
pip install -r requirements_app.txt
python setup.py develop

Data Preparation

You should put your data in data folder follow NICE-SLAM and generate a rosbag for ORB-SLAM3

python write_bag.py --input_folder '{PATH_TO_INPUT_FOLDER}' --output '{PATH_TO_ROSBAG}' --frame_id 'FRAME_ID_TO_DATA'

You should change the intrinsics manually in orb_utils/write_bag.py.

Run

ROS Communication

This version is for those who can run ORB and NGEL on the same device and at the same time.

You should first start the ORB-SLAM3-ROS, and then using code below

python main.py --config '{PATH_TO_CONFIG}'  --input_folder '{PATH_TO_INPUT_FOLDER}' --output '{PATH_TO_OUTPUT}' 

NGEL with JSON frame infos

This version is for those who cannot run ORB and NGEL at the same time.

You should first start the ORB-SLAM3-ROS and the orb_utils/BA_subscriber.py to save the keyframe information for every timestamps (You should change the save path manually in the script to {PATH_TO_INPUT_FOLDER}/keyframes).

python main_json.py --config '{PATH_TO_CONFIG}'  --input_folder '{PATH_TO_INPUT_FOLDER}' --output '{PATH_TO_OUTPUT}' 

Citation

If you find our code or paper useful for your research, please consider citing:

@article{mao2023ngel,
  title={Ngel-slam: Neural implicit representation-based global consistent low-latency slam system},
  author={Mao, Yunxuan and Yu, Xuan and Wang, Kai and Wang, Yue and Xiong, Rong and Liao, Yiyi},
  journal={arXiv preprint arXiv:2311.09525},
  year={2023}
}
@inproceedings{mao2024ngel,
  title={Ngel-slam: Neural implicit representation-based global consistent low-latency slam system},
  author={Mao, Yunxuan and Yu, Xuan and Zhang, Zhuqing and Wang, Kai and Wang, Yue and Xiong, Rong and Liao, Yiyi},
  booktitle={2024 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={6952--6958},
  year={2024},
  organization={IEEE}
}

For large scale mapping work, you can refer to NF-Atlas.

Acknowledge

Thanks for the source code of orb-slam3-ros, kaolin and kaolin-wisp.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages