实验笔记之——RGBD GS-ICP SLAM配置与测试

《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.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
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 gsicpslampython -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 --verbosepython -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 --verbosepython -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.shcd 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 gsplpython 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.plypython 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.icon-default.png?t=N7T8https://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及中文注释

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

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

相关文章

基于人脸识别的发型推荐系统代码实现

1.摘要 本文介绍了一个基于人脸识别技术的发型推荐系统的实现与分析。该系统利用Python编程语言和相关库,结合Face人脸识别API,实现了用户上传照片后的性别识别、脸型分析和发型推荐功能。首先,用户通过Tkinter GUI界面选择上传照片&#xff…

gpt在线网页版最全收录

ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…

Linux网络基础 (二) ——(IP、MAC、端口号、TCPUDP协议、网络字节序)

文章目录 IP 地址基本概念源IP地址 & 目的IP地址 MAC 地址基本概念源MAC地址 & 目的MAC地址 端口号基本概念源端口号 & 目的端口号 TCP & UDP 协议基本概念TCP 与 UDP 的抉择 网络字节序大端、小端字节序 🎖 博主的CSDN主页:Ryan.Alask…

DAY8|344.反转字符串、541. 反转字符串II、151.翻转字符串里的单词

344.反转字符串、541. 反转字符串II、151.翻转字符串里的单词 344.反转字符串541. 反转字符串II151.翻转字符串里的单词 344.反转字符串 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时…

1.9 数据结构之 并查集

编程总结 在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功 本栏目为学习笔记参考:https://leetcode.cn/leetbook/read/disjoint-set/oviefi/ 1.0 概述 并查集(Union Find&#xff09…

vue2/vue3定时处理某个方法

一、vue2定时器 在Vue 2中,你可以使用mounted生命周期钩子来启动一个定时器,并在beforeDestroy钩子中清除它,以确保不会发生内存泄漏。以下是一个简单的例子: export default {data() {return {timerId: null};},mounted() {// …

# Nacos 服务发现-快速入门-测试多实例 Ribbon 负载均衡

Nacos 服务发现-快速入门-测试多实例 Ribbon 负载均衡 1、修改 服务生产模块 quickstart_provider 子工程中的 配置文件 application.yaml port: ${port:56010} # 启动端口 # 修改为动态传参,如果未传参数,默认端口为 56010 2、在 idea 中,…

内网渗透-Linux内网渗透

系列文章目录 文章目录 系列文章目录一、Linux内网渗透二、提权 2.1 利用内核漏洞进行提权2.2 利用文件权限配置不当进行提权2.3 利用SUID程序进行提权 三、隧道 3.1 SSH3.2 nc/ncat3.3 portmap3.4 portfw 四、反弹shell 4.1 bash4.2 netcat4.3 php4.4 perl4.5 python4.6 ruby4…

Prime (2021): 2

前言 这个靶机有亿点难,收获很多。打靶的时候,前面很顺,到创建ssh公钥之后就一点不会了。 1 01 arp扫描,发现有一个130,再查看端口 有22,80,129,445,10123 dirb扫描目录 这…

蓝牙技术在智能硬件中应用火热,你的蓝牙适配测试如何解决?

蓝牙技术在物联网中的应用非常广泛,可以为人们的生活和工作带来更多的便利和智能化体验,主要五大核心应用场景,具体如下: 1、智能家居 通过蓝牙连接智能家居设备,如智能灯泡、智能插座、智能恒温器等,可以…

chrome截屏插件用到的JavaScript 库,图像处理库,

包含的库介绍 javascripts\libs\ InboxSDK.js InboxSDK 是一个 JavaScript 库,用于在 Gmail 中添加应用菜单项目。它允许开发者向 Gmail 的应用菜单添加自己的项目,这些项目通常用于提供高级可折叠面板、导航或发送用户到已注册的不同路由 diigo-image-…

mysql 查询实战-变量方式-解答

对mysql 查询实战-变量方式-题目,进行一个解答。(先看题,先做,再看解答) 1、查询表中⾄少连续三次的数字 1,处理思路 要计算连续出现的数字,加个前置变量,记录上一个的值&#xff0c…

如何用C++判断一个系统是16位、32位还是64位?

如何用C判断一个系统是16位、32位还是64位&#xff1f; 方法一&#xff1a;使用指针的sizeof()判断 #include <iostream> using namespace std;int main() {int *p nullptr;if(sizeof(p) 8){cout << "64 bits system" << endl;}else if(sizeof(…

AI大模型日报#0413:谷歌引入“无限注意力”、Picsart AI 开源120秒超长AI视频模型

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 速递&#xff5c;木头姐 ARK 宣布已投资 OpenAI&#xff01;还将 Anthropic 及 Figure1 等 AI 独角兽一网打尽摘要: ARK已通过其风…

helm upgrade时 报错: another operation (install/upgrade/rollback) is in progress

用helm upgrade的时候&#xff0c;报错Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress 原因可能是之前有一次使用helm upgrade的时候&#xff0c;强制退出了命令(ctrlc) 解决方法: 对于 Helm v3 Helm 3 使用特殊的 Secrets 或 ConfigMap…

MySQL 建表语句详解

目录 基本建表语句 数据类型 列级约束 表级约束 表选项 示例 基本建表语句 CREATE TABLE table_name (column_name1 data_type(size) [column_constraints],column_name2 data_type(size) [column_constraints],...[table_constraints] ) [table_options]; table_name:…

IO流基本流

目录 什么是IO流 IO流的体系 字节流 FileOutputStream FileInputStream 字符集 字符流 FileReader FileWriter 字节流和字符流的使用场景 什么是IO流 内存不能永久化存储,程序停止,数据丢失,所以要添加一个存档功能,存储到硬盘的文件,我们要知道文件在哪里和如何传…

async-validator --- 中文文档

目录 async-validator Install Usage API Validate Rules Type 内置类型 Required Pattern Range Length Enumerable Whitespace Deep Rules 深层规则 defaultField 默认字段 Transform 变换 Messages 提示信息 asyncValidator 异步校验函数 validator 校验函…

【web3技术】什么是 WEB3?

Web3 简介 中心化网络已经帮助数十亿人融入了互联网,并在其上创建了稳定、可靠的基础设施。 与此同时,少数中心化巨头几乎垄断了互联网,甚至可以为所欲为。 Web3 是摆脱这一困境的方案。 不同于科技巨头垄断的传统互联网,Web3 采用去中心化,由所有用户构建、运营和拥有。…