如何搭建RGBD GS-ICP SLAM环境以及如何与自己编的pcl并存
最近深度学习SLAM又出来一个分支,3D gaussion splatting做slam的操作,之前我们给读者讲过如何使用C++做。这里最近受到优刻得的使用邀请,正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。暂时已经满足我的使用需求了
0. 简介
最近深度学习SLAM又出来一个分支,3D gaussion splatting做slam的操作,之前我们给读者讲过如何使用C++做3D高斯溅射。这里最近受到优刻得的使用邀请,正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。暂时已经满足我的使用需求了,同时支持访问加速,独立IP等功能,能够更快的完成项目搭建。
而且在使用后可以写对应的博客,可以完成500元的赠金,完全可以满足个人对GPU的需求。
对应的环境搭建已经在《如何使用共享GPU平台搭建LLAMA3环境(LLaMA-Factory)》、从BEVDET来学习如何生成trt以及如何去写这些C++内容介绍过了。对于自定义的无论是LibTorch还是CUDA这些都在《Ubuntu20.04安装LibTorch并完成高斯溅射环境搭建》这篇文章提到过了。《RGBD GS-ICP SLAM》是最新开源的一个3DGS-SLAM工作,通过利用GICP来实现当前帧gaussian与已mapping的gaussian进行匹配进行位姿的估算,并通过关键帧的选择策略来进一步提升performance。我们既然要改动这部分代码,那首先就是要先将对应的代码跑通。《实验笔记之——RGBD GS-ICP SLAM配置与测试》一文中有详细的步骤,但是我在使用的时候发现总会出现pcl找到后和vtk关联出现问题。而且pcl版本是anaconda的python版本环境,这里我们更希望使用我们自行安装的版本。
这一章节我们来看一下怎么在平台上运行RGBD-GS-ICP-SLAM项目的。同时作者因为以上原因,对代码进行了一定的调整和改动。相关注释以及适配代码在https://github.com/lovelyyoshino/RGBD-GS-ICP-SLAM-Comment。这里作者提供了对整个项目的代码注释,以及ROS改编欢迎尝试。
这里我们安装的环境为
ROS noetic
Pangolin-0.6
gflags 2.2.2
glog 0.4.0
eigen 3.3.7
ceres-solver 1.14.0
vtk 9.2.0
pcl 1.13.0
Sophus a621ff
1. 环境配置
1.1 环境配置
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 需要用于 fast-gicp 子模块。下面安装子模块
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 -j8
cd ..
python setup.py install --user
1.2 数据集
- Replica
-
下载
bash download_replica.sh
-
配置
请修改目录结构如下。
原始结构
Replica - room0 - results (包含 rgbd 图像) - frame000000.jpg - depth000000.jpg ... - traj.txt ...
我们的结构
Replica - room0 - images (包含 rgb 图像) - frame000000.jpg ... - depth_images (包含深度图像) - depth000000.jpg ... - traj.txt ...
-
- TUM-RGBD
- 下载
bash download_tum.sh
- 下载
1.3 运行
- 限制到 30 FPS
# Replica bash replica.sh # TUM bash tum.sh
- 不限制跟踪速度
# Replica bash replica_unlimit.sh # TUM bash tum_unlimit.sh
1.4 安装 SIBR Viewer
##如果提示/usr/bin/ld: cannot find -lXxf86vm
#sudo apt-get install libxxf86vm-dev
#如果没有安装embree的GPU加速
git clone https://github.com/embree/embree.git
mkdir embress/build
cd embree
git checkout v3.1.0
mkdir build
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DEMBREE_TUTORIALS=OFF \
-DEMBREE_ISPC_SUPPORT=OFF \
-DEMBREE_TASKING_SYSTEM=OFF ..
make -j8
sudo make install
cd SIBR_viewers
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release
cmake --build build -j24 --target install
1.5 实时演示
1.5.1 使用 rerun.io viewer
Rerun viewer 显示可跟踪的高斯模型均值,以及从重建的 3DGS 地图渲染的图像。
python -W ignore gs_icp_slam.py --rerun_viewer
1.5.2 使用 SIBR viewer
python -W ignore gs_icp_slam.py --dataset_path dataset/Replica/office0 --verbose
# 在另一个终端
cd SIBR_viewers
./install/bin/SIBR_remoteGaussian_app --rendering-size 1280 720
2. 在运行时候遇到的一些问题
2.1 无法pip install 安装diff-gaussian-rasterization
这个主要问题在于我们ubuntu20安装的3.9时候,setuptools版本太高导致,这里是我们尝试ok的版本
pip install setuptools==69.5.1
2.1 安装conda后无法编译fast-gicp
在安装fast-gicp的时候发现找不到vtk,但是我们实际是有安装vtk的。这里我们需要指定固定位置,因为默认找的是conda位置下的pcl,这个在配置的时候存在冲突,我们可以直接找到本地可以使用的pcl,也不需要使用python-pcl完成安装了
具体修改如下:
2.3 SIBR_viewers配置
由于我们自带的ros版本是4.2的ros版本,所以我们需要修改cmake里面的配置
修改的路径如下,将4.5版本给修改掉,作者尝试Opencv 4.2编译也是没有问题的
3. 实际运行
在实际运行时候还会发现一个问题,即GLIBCXX版本不新,需要额外更新
然后输入下面指令找到
sudo find / -name "libstdc++.so.6*"
strings /home/ld/anaconda3/lib/libstdc++.so.6.0.29 |grep GLIBCXX
可以看到有需要的版本,接下来就是建立新的链接到这个文件上
ranhou复制到指定目录并建立新的链接
sudo cp /home/xxx/anaconda3/envs/tf2/lib/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/
sudo mv /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6-origin
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
之后程序一般是能够成功运行的。有时候由于权限问题,我们需要查看它们的权限
ll /usr/lib/x86_64-linux-gnu/libstd*
更多推荐
所有评论(0)