《RGBD GS-ICP SLAM》是最新开源的一个3DGS-SLAM工作,通过利用GICP来实现当前帧gaussian与已mapping的gaussian进行匹配进行位姿的估算,并通过关键帧的选择策略来进一步提升performance~
- Use G-ICP to align the current frame with the 3D GS map which contains covariance (solely need to compute the covariance for the current frame);
- When adding keyframes to the 3D GS map, utilize the covariance computed in GICP during tracking (no need for densifying or opacity reset);
该工作取得了较好的tracking以及渲染的性能,同时FPS可高达107
详细的原理此处不做介绍,本博文记录本人配置以及测试该算法的过程,并且mark对代码的解读的github仓库。本博文仅供本人学习记录用~
论文原文:https://arxiv.org/pdf/2403.12550.pdf
源码链接:GitHub - Lab-of-AI-and-Robotics/GS_ICP_SLAM
目录
配置过程
测试效果
代码解读
配置过程
下载源码(加上后缀--recursive就可以把submodules的也下载下来)
git clone git@github.com:Lab-of-AI-and-Robotics/GS_ICP_SLAM.git --recursive
配置conda环境
conda create -n gsicpslam python==3.9
conda activate gsicpslam
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia
pip install -r requirements.txt
安装PCL库的另外的方式
pip install pcl
conda config --add channels conda-forge
conda install -c sirokujira python-pcl
配置完成~
由于是PCL库中的GICP,因此也需要安装fast-gicp子模块
单纯git clone的时候是无法把submodules内三个model下载的,为此进入目录分别git如下
cd submodules/
git clone https://github.com/Lab-of-AI-and-Robotics/diff-gaussian-rasterization.git
git clone https://github.com/Lab-of-AI-and-Robotics/fast_gicp.git
git clone https://github.com/camenduru/simple-knn.git
然后执行下面代码
conda activate gsicpslam
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
安装fast_gicp的时候报错如下
应该是环境中没有安装pcl库~
conda install -c conda-forge python-pcl
安装好后再执行一次~应该就问题了~
重新编译一次可视化软件~
cd SIBR_viewers
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release
cmake --build build -j24 --target install
编译有问题,感觉是作者给的代码有问题,不过之前3DGS的时候已经用过SIBR_viewers了,为此直接用回当时的吧~
对于数据集之前splatam已经下载好了
修改下面s数据路径。然后运行
打开MobaXterm来可视化(不需要SIBR_viewers)
tmux new -s gs-icp-slam (开了tmux可能导致检测不出显示器)
conda activate gsicpslam
python -W ignore gs_icp_slam.py --config configs/TUM/rgbd_dataset_freiburg2_xyz.txt --dataset_path /home/gwp/SplaTAM/data/TUM_RGBD/rgbd_dataset_freiburg2_xyz --verbose
python -W ignore gs_icp_slam.py --config configs/TUM/rgbd_dataset_freiburg1_desk.txt --dataset_path /home/gwp/SplaTAM/data/TUM_RGBD/rgbd_dataset_freiburg1_desk --verbose
python -W ignore gs_icp_slam.py --config configs/TUM/rgbd_dataset_freiburg3_long_office_household.txt --dataset_path /home/gwp/SplaTAM/data/TUM_RGBD/rgbd_dataset_freiburg3_long_office_household --verbose
或运行
bash tum_unlimit.sh
cd SIBR_viewers
./install/bin/SIBR_remoteGaussian_app --rendering-size 1280 720
但是报错如下(明明所有的依赖都安装了吖~)
重新安装(加上后缀--recursive就可以把submodules的也下载下来,以及用新的pcl安装方式)
下载源码(加上后缀--recursive就可以把submodules的也下载下来)
git clone git@github.com:Lab-of-AI-and-Robotics/GS_ICP_SLAM.git --recursive
安装PCL库的另外的方式
pip install pcl
conda config --add channels conda-forge
conda install -c sirokujira python-pcl
测试效果
看视频实时性效果还是很不错的~
RGBD GS-ICP SLAM testing in rgbd
RGBD GS-ICP SLAM testing in rgbd
RGBD GS-ICP SLAM testing in rgbd
前面三个视频应该只是把tracking过程可视化图片而已。下面视频才是真正的渲染结果。从渲染的结果与真值对比来看。效果一般般hhh~
RGBD GS-ICP SLAM渲染结果
查看输出的文件如下,有ply文件
那么理论上就可以按照之前博客《实验笔记之——Gaussian-SLAM测试与配置-CSDN博客》的方法来进行可视化了~
conda activate gspl
python viewer.py TRAINING_OUTPUT_PATH
在本次实验中为如下:
python viewer.py /home/gwp/Gaussian-SLAM/output/TUM_RGBD/rgbd_dataset_freiburg3_long_office_household/rgbd_dataset_freiburg3_long_office_household_global_map.ply
python viewer.py /home/gwp/GS_ICP_SLAM/experiments/results/scene.ply
但是其输出的点云格式不支持。。。
但是从程序输出的performance来看,帧率是达到了实时的了,PSNR还是比较低,ATE还不错~
代码解读
至于代码解读就不额外写博客了,看后续把中文注释放到下面GitHub中
KwanWaiPang/RGBD-GS-ICP-SLAM-Comment · GitHubContribute to KwanWaiPang/RGBD-GS-ICP-SLAM-Comment development by creating an account on GitHub.https://github.com/KwanWaiPang/RGBD-GS-ICP-SLAM-Comment更多关于3DGS及3DGS-SLAM的工作的测试与解读如下:
- 学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研_3d gaussian splatting slam-CSDN博客
- 学习笔记之——3D Gaussian Splatting源码解读_gaussian splatting源码分析-CSDN博客
- 学习笔记之——3D Gaussian SLAM,SplaTAM配置(Linux)与源码解读_splatam代码-CSDN博客
- 实验笔记之——Gaussian Splatting SLAM (MonoGS)配置与测试-CSDN博客
- 实验笔记之——Gaussian-SLAM测试与配置-CSDN博客
- GitHub - KwanWaiPang/Photo-SLAM_comment: Photo-SLAM的中文注释
- GitHub - KwanWaiPang/3dgs_cuda_opencv: C++版本的3DGS及中文注释