RGBD GS-ICP SLAM
1. Introduction
RGBD GS-ICP SLAM으로, 3D Gaussian Splatting을 기반으로 한 실시간 SLAM 시스템
2. Algorithm
3. Code review
torch.multiprocessing.set_sharing_strategy('file_system')
4. System Setup
4.1 가상환경의 구축
회사에서 실행할 것을 고려하여, Miniconda로 하려 한다.
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
이제 conda 가상환경을 만들어보자.
conda create -n gsicpslam python=3.9 -y
conda activate gsicpslam
PyTorch와 CUDA 설정이 필요하므로, 관련 설정을 진행한다. 내 컴퓨터의 CUDA 버전은 12.8이다.
(gsicpslam) user:~$ nvidia-smi
Tue Jul 1 20:35:12 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.133.07 Driver Version: 570.133.07 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4060 ... Off | 00000000:01:00.0 On | N/A |
| N/A 40C P8 4W / 80W | 48MiB / 8188MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 1937 G /usr/bin/gnome-shell 2MiB |
+-----------------------------------------------------------------------------------------+
conda install pytorch=2.2.2 torchvision=0.17.2 torchaudio=2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia
버전 추천은 ChatGPT의 도움을 받았다. (만세)
4.2. Git Clone 그리고 나머지 설치
주 코드를 받아보자.
git clone https://github.com/Lab-of-AI-and‑Robotics/GS_ICP_SLAM.git --recursive
cd GS_ICP_SLAM
conda install -c conda-forge pcl #PCL의 설치
이후 Sub module도 설치가 필요한데, 내 경우는 두어가지 오류가 발생했다.
1) Numpy 오류
A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.1 ...
이 오류는 Numpy버전 문제였다. 일단 아래방법으로 해보니 해결은 된다.
pip install "numpy<2"
버전을 다운그레이드해야 하나..
2) CUDA 패스 문제
OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.
CUDA경로가 설정되어있지 않아 설치가 필요했다.
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
3) Nvidia-Cuda-Toolkit
error: [Errno 2] No such file or directory: '/usr/local/cuda/bin/nvcc'
컴퓨터를 포맷하고 다시 깐 경우다보니, 툴킷이 설치되어있지 않았다.
이 에러는 툴킷을 설치하는 걸로 해결했다. 의외로 용량이 많다.
sudo apt install nvidia-cuda-toolkit
4) Ninja (옵션)
ChatGPT의 추천 옵션이다. 빌드 속도를 올려준다고 한다. 별 문제 없다면 일단 한번은 설치해도 좋을듯하다.
pip install ninja
5) 계속되는 오류 트러블 슈트
CUDA 12.1 에 코드가 맞춰져있어 오류가 이어지고 있다.
ChatGPT의 도움을 받아 아래의 코드를 수행하면 된다. 첫줄 pip 시작할때 git clone 한 위치임을 확인하자.
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
cd submodules/fast_gicp
mkdir build
cd build
cmake ..
make
cd ..
python setup.py install --user
4.3. 데이터셋의 설치
이거 오래 걸리네…..ㅡㅡ;;;; 12기가구만. 이거라도 미리 눌러둘걸.
git clone 폴더에 bash 파일이 있다.
bash download_replica.sh
폴더 구조를 보면
./dataset/
└── Replica
├── depth_images
├── images
├── office0
│ └── results
├── office1
│ └── results
├── office2
│ └── results
├── office3
│ └── results
├── office4
│ └── results
├── room0
│ ├── depth_images
│ └── images
├── room1
│ └── results
└── room2
└── results
뭐 이런 식이다. 위의 room0의 result 폴더에 이미지가 있는데, 하나는 frame000000.jpg 형태이고 또 하나는 depth000000.png 형태로 저장되어있는데, 이걸 저 폴더이름대로 imgages와 depth_images로 나누자.
result폴더안에 있으면 오류나니까, 한 층 위로 올려야 한다. 에러가 많다.
일을 좀 수월하게 해보자. bash파일을 만들기엔 이미 늦었고..ㅜㅠ……그냥 인라인 코드정도만 작성해보자.
mkdir -p images depth_images && mv frame*.jpg images/ && mv depth*.png depth_images/
mv ./images ../ && mv ./depth_images ../
4.4 Installing SIBR Viewer
SIBR Viewer 은 3D 렌더링결과를 보기 위한 뷰어다… 일단 그렇게 알고 넘어가자. 설치하다보면 이것저것 더 깔아야 할 것 들이 많다.
cd SIBR_viewers
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release
cmake --build build -j24 --target install
4. 5. 추가적인 troubleshoot
dependency 문제로 인해 /submodules/fast-gicp/CMakeLists.txt에 아래 코드를 추가 해야 한다.
install(TARGETS fast_gicp
EXPORT fast_gicp
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
)
# include 헤더 설치
install(DIRECTORY include/
DESTINATION include
FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h"
)
# 앱(실행 파일) 설치
if (BUILD_apps)
install(TARGETS gicp_align gicp_kitti
RUNTIME DESTINATION bin
)
endif()
그리고 pip uninstall pygicp 로 지운다음 , make -12, make install 와 python setup.py install 순으로 실행하자. 각각의 명령이 가지는 의미는 좀 더 있다가 알아보고.
5. Experiment
실험 자체는 잘 된다. 결과도 좋고. 노트북수준에서 돌리면 30fps 정도가 나오는데, 해상도가 커서 그런가. 어떤 포인트를 튜닝해야 하는지 좀 더 알아봐야 할 것 같다.
우선 Point Cloud가 어떻게 구성되어있는지 궁금했다. Cursor IDE의 도움을 받아 시각화를 좀 더 추가해봤고, 이것저것 다 안되다가 matplotlib 로 겨우 그려볼 수 있었다.

댓글남기기