GO-SLAM项目实践

项目主页:GO-SLAMGO-SLAM: Global Optimization for Consistent 3D Instant Reconstructionicon-default.png?t=N7T8https://youmi-zym.github.io/projects/GO-SLAM/

项目地址:GitHub - youmi-zym/GO-SLAM: [ICCV2023] GO-SLAM: Global Optimization for Consistent 3D Instant Reconstruction[ICCV2023] GO-SLAM: Global Optimization for Consistent 3D Instant Reconstruction - youmi-zym/GO-SLAMicon-default.png?t=N7T8https://github.com/youmi-zym/GO-SLAM

一、项目简介

GO-SLAM是ICCV 2023的优秀开源的SLAM文章。GO-SLAM是基于深度学习的密集视觉SLAM框架,实现了对姿势和三维重建的实时全局优化。通过整合强健的姿势估计、高效的闭环检测以及持续表面表示更新,GO-SLAM有效地解决了与神经隐式表示相关的误差累积和畸变挑战。通过利用输入历史中学习到的全局几何信息,GO-SLAM在合成和真实世界数据集上设定了新的跟踪鲁棒性和重建准确性标准。其灵活性涵盖了单目、立体和RGB-D输入。

GO-SLAM的主要贡献:

  1. 一种新颖的基于深度学习的实时全局姿势优化系统,考虑了所有输入帧的完整历史并持续对齐所有姿势。

  2. 一种高效的对齐策略,实现即时闭环和全局结构校正,既节约内存又高效利用时间。

  3. 一种即时的三维隐式重建方法,实现了最新全局姿势估计的即时和连续3D模型更新。这种策略促进了实时三维重建。

  4. 第一个适用于任何设置(单目、立体或RGB-D相机)的联合鲁棒姿势估计和密集三维重建的深度学习架构。

二、项目安装

我的环境:

ubuntu22.04

NVIDIA RTX-3090

直接使用conda创建虚拟环境并安装

git clone --recursive https://github.com/youmi-zym/GO-SLAM

sudo apt-get install libopenexr-dev
    
conda env create -f environment.yaml
conda activate go-slam

pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
pip install evo --upgrade --no-binary evo

python setup.py install

之前在用conda创建虚拟环境的时候,经常出现channel错误。但是这个项目,用conda 安装没有任何错误,只是时间慢了点(不的说,GO-SLAM用到的包太多了)

可能出现的问题:

1. 在执行:pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch的时候,可能会出现如下错误:

Processing /home/XXX/VSLAM/GO-SLAM/tiny-cuda-nn-master/bindings/torch
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/home/XXX/VSLAM/GO-SLAM/tiny-cuda-nn-master/bindings/torch/setup.py", line 2, in <module>
import torch
ModuleNotFoundError: No module named 'torch'

分析问题:原因是自己电脑cuda版本和torch版本不兼容,重新安装pytorch:

mamba install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia

tiny-cuda-nn-master的安装非常麻烦(我前前后后尝试了不止10次,主要是tiny-cuda-nn-master和cuda、torch的版本高度依赖),如果安装出现问题,可以参考这里:

Linux服务器安装tiny-cuda-nn完整流程_tinycudann-CSDN博客文章浏览阅读561次,点赞11次,收藏11次。最近在跑make-it-3d,发现其中很多包的安装很费劲,综合了很多博客才安装好一个包,现将如何安装tiny-cuda-nn包的完整方法记录一下,帮助各位学习者更快的上手跑代码。tiny-cuda-nn包能够显著提升NeRF的训练速度,在目前很多NeRF相关的工作中都有使用到。_tinycudannhttps://blog.csdn.net/weixin_60739161/article/details/135580197

三、数据集下载

数据集下载地址备注
Replicahttps://drive.google.com/drive/folders/1RJr38jvmuIV717PCEcBkzV2qkqUua-Fx?usp=sharing直接Google Drive下载
ScanNetScanNet | Richly-annotated 3D Reconstructions of Indoor Scenes

由于版权问题,需要自己申请下载。然后使用code从.sens文件中提取color/depth数据

EuRoC

下载脚本:code

DATA_ROOT=path/to/folder

mkdir $DATA_ROOT ./scripts/download_euroc.sh $DATA_ROOT

GT 轨迹需要从Google Drive下载

四、运行

所有的数据集的运行命令都是:

XX.sh   MODE   EXP_NAME

XX.sh:数据集运行脚本

MODE:[rgbd, mono]

EXP_NAME:自己取名(实验的名称)

数据集运行命令(示例)备注
Replica​ ./evaluate_on_replica.sh rgbd first_try ​
ScanNet./evaluate_on_scannet.sh rgbd first_try

由于ScanNet自带渲染数据集,所以可以执行如下命令,查看重现效果:

./generate_video_on_scannet.sh rgbd first_try_on_video

EuRoC./evaluate_on_euroc.sh stereo first_try

可能遇到的问题:

1. 运行的时候出现问题:OSError: Could not find compatible tinycudann extension for compute capability 75

解决方法参考:OSError: Could not find compatible tinycudann extension for compute capability 75 · Issue #330 · NVlabs/tiny-cuda-nn · GitHub
在终端运行下面代码,重新安装tinycudann,再次运行之后终于不报这个错啦!

export TCNN_CUDA_ARCHITECTURES=75
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

2.运行的时候出现问题:

RuntimeError: CUDA error: an illegal memory access was encountered
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.

For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

解决方法参考:

可以设置环境变量export CUDA_LAUNCH_BLOCKING=1表示阻塞式执行,即一个算子在device执行完成后,host才会下发一个算子到device上执行,这种完全同步执行方式下如果还是报此错误(非法内存访问)的话,配合算子执行日志就可以初步确定是当前执行算子的问题了。

五、实验结果分析

在Replica room0序列上面进行测试:

./evaluate_on_replica.sh rgbd first_try

我们发现./evaluate_on_replica.sh中运行的实际命令:

python run.py configs/Replica/room0.yaml 
       --device cuda:0 
       --mode $MODE 
       --output ${OUT_DIR}/${sc}/$EXPNAME

实验结果:

GO-SLAM使用6个线程,总体运行速度还是挺快滴。Replica room0上面也就5分钟左右。

  • 22
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
SLAM导航机器人零基础实战系列》讲义 第1章:Linux基础 1.Linux简介 2.安装Linux发行版ubuntu系统 3.Linux命令行基础操作 第2章:ROS入门 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的service和client 7.理解tf的原理 8.理解roslaunch在大型项目中的作用 9.熟练使用rviz 10.在实际机器人上运行ROS高级功能预览 第3章:感知与大脑 1.ydlidar-x4激光雷达 2.带自校准九轴数据融合IMU惯性传感器 3.轮式里程计与运动控制 4.音响麦克风与摄像头 5.机器人大脑嵌入式主板性能对比 6.做一个能走路和对话的机器人 第4章:差分底盘设计 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发 5.底盘PID控制参数整定 6.底盘里程计标 第5章:树莓派3开发环境搭建 1.安装系统ubuntu_mate_16.04 2.安装ros-kinetic 3.装机后一些实用软件安装和系统设置 4.PC端与robot端ROS网络通信 5.Android手机端与robot端ROS网络通信 6.树莓派USB与tty串口号绑定 7.开机自启动ROS节点 第6章:SLAM建图与自主避障导航 1.在机器人上使用传感器 2.google-cartographer机器人SLAM建图 3.ros-navigation机器人自主避障导航 4.多目标点导航及任务调度 5.机器人巡航与现场监控 第7章:语音交互与自然语言处理 1.语音交互相关技术 2.机器人语音交互实现 3.自然语言处理云计算引擎
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值