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*

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐