如何搭建RGBD GS-ICP SLAM环境以及如何与自己编的pcl并存

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.gitgit clone https://github.com/Lab-of-AI-and-Robotics/fast_gicp.gitgit clone https://github.com/camenduru/simple-knn.git# 然后执行下面代码
conda activate gsicpslam
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knncd 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 installcd 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*

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416806.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频结构化从入门到精通——GPU主要硬件平台介绍

视频结构化主要硬件平台 1. 深度学习中“硬”和“软”的概念 在深度学习中,“硬”和“软”通常用于描述不同的处理方法或策略,尤其是在解码、编码、推理等任务中。它们反映了算法在处理信息时的确定性和灵活性。 软(Soft) 处理…

【看雪-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

电脑物理地址怎么修改方法

电脑物理地址怎么修改方法非常容易,需要用到一个小工具 首先需要下载一个修改软件《物理网卡mac修改器》,工具下载地址:https://download.csdn.net/download/baiseled/89633292 1.点击软件下拉框选中网卡序号 2.当前网卡mac物理地址就会显示…

Android Studio执行代码报错:Cause: unable to find valid certification path to requested target

今天执行一个老项目,代码没人动过,但是启动Android Studio后系统报错,报错信息为:Cause: unable to find valid certification path to requested target 下面是报错截图 网上找了好多解决方法,但是都不好用。 最后的…

windows安装php7.4

windows安装php7.4 1.通过官网下载所需的php版本 首先从PHP官网(https://www.php.net/downloads.php)或者Windows下的PHP官网(http://windows.php.net/download/)下载Windows版本的PHP安装包。下载后解压到一个路径下。 2.配…

【YOLOv5模型部署】——TensorRT推理引擎安装与使用基于Flask的项目部署

声明:笔记是做项目时根据B站博主视频学习时自己编写,请勿随意转载! 温馨提示:对于我的电脑没有Nvidia的独显,只有Intel的集显,最后导出时无法识别Nvidia显卡设备!!就没成功&#xf…

访问数组索引时超出边界引发 ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException 是 Java 中非常常见的一种运行时异常。它是在访问数组时,如果访问的索引超出了数组的有效范围时抛出的异常。为了更好地理解这种异常的工作机制、产生原因以及如何处理,让我们详细分解这个问题,并从多个角度进…

STM32基础篇:RTC × Unix时间戳 × BKP

Unix时间戳 最早是在Unix系统使用的,之后很多由Unix演变而来的系统也都继承了Unix时间戳的规定。目前,Linux、Windows、安卓这些系统,其底层的计时系统都是使用Unix时间戳。 Uinx时间戳(Unix Timestamp)定义为从UTC/…

实验室ICPR 2024论文分享┆DS MYOLO:一种基于状态空间模型的驾驶场景可靠目标检测器

论文分享简介 本推文详细介绍了一篇实验室的最新论文成果《DS MYOLO: A Reliable Object Detector Based on SSMs for Driving Scenarios》,该论文已被第27届国际模式识别大会(ICPR)接收,论文的第一作者为李杨。论文提出了一种基…

Elasticsearch Mapping 详解

1 概述 映射的基本概念 Mapping 也称之为映射,定义了 ES 的索引结构、字段类型、分词器等属性,是索引必不可少的组成部分。 ES 中的 mapping 有点类似与DB中“表结构”的概念,在 MySQL 中,表结构里包含了字段名称,字…

CRIO与Windows下LabVIEW开发对比

LabVIEW在CRIO和Windows平台上开发时,尽管同属于一个编程环境,但在硬件架构、实时性能、模块化设计等方面存在显著差异。CRIO系统通常应用于工业自动化和嵌入式控制,具有实时操作系统支持和强大的I/O扩展能力;而Windows系统则更适…

《机器学习》文本数据分析之关键词提取、TF-IDF、项目实现 <上>

目录 一、如何进行关键词提取 1、关键词提取步骤 1)数据收集 2)数据准备 3)模型建立 4)模型结果统计 5)TF-IDF分析 2、什么是语料库 3、如何进行中文分词 1)导包 2)导入分词库 3&#xff09…

今年读过最绝的大模型神书死磕这本大模型神书!看完直接脱胎换骨!!

书名📖:《大语言模型:基础与前沿》 该书深入阐述了大语言模型(Large Language Model, LLM)的基本概念和算法、研究前沿以及应用,内容全面且系统性强,适合👨🏻‍&#x1…

Prometheus + Grafana + nVisual 实现运维监控全面可视化

Prometheus主要实现采集、存储、查询设备数据指标、告警等功能;Grafana通过Prometheus的API以仪表板的形展示数据,同时在线提供了大量监测数据展示模版。然而,实际运维中我们不仅需要实时监测数据,还需要了解设备的物理位置、拓扑…

3.js - modelPosition.z = sin((modelPosition.x+uTime)*10.0)*0.05;

哈 1、完整的动态波纹效果吧 main.js import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls// 顶点着色器 import basicVertexShader from ./shader/11-01/raw/vertex.glsl?raw // 片元着色器 import basicFragmentShad…

使用docker安装jenkins,然后使用jenkins本地发版和远程发版

使用docker安装jenkins,然后使用jenkins本地发版和远程发版 1、安装docker 1.安装必要的一些系统工具 sudo yum install docker-ce 2.添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3.更新…

内推|京东|后端开发|运维|算法...|北京 更多岗位扫内推码了解,直接投递,跟踪进度

热招岗位 更多岗位欢迎扫描末尾二维码,小程序直接提交简历等面试。实时帮你查询面试进程。 安全运营中心研发工程师 岗位要求 1、本科及以上学历,3年以上的安全相关工作经验; 2、熟悉c/c、go编程语言之一、熟悉linux网络编程和系统编程 3、…

102.二叉树的层次遍历的算法实现及详解

二叉树的层次遍历 题目 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3…

解析查看elf文件的构成

x86下用clang编译一段c代码,编译成elf文件,读elf文件,dump出里面的所有段,并打印出段中的数据和含义以及汇编的内容 编写C代码 首先,编写一个简单的C程序,例如命名为example.c: 使用Clang编…

您知道tar、xz、zip这三种不同压缩方式的区别吗?

tar、xz、zip是三种不同的压缩和打包格式,它们在压缩算法、使用场景、兼容性等方面存在一定的差异。以下是对这三种格式的比较: 1. 压缩算法 tar:tar本身并不进行压缩,它只是一种打包工具,将多个文件和目录打包成一个…