DXLAM、ubuntu16、tf1.13、anaconda环境配置

2023-11-01


这里记录配置DXSLAM环境的点点滴滴

配置该代码环境有两种方法

方法一:利用docker

该方法主要先pull调用tf1.13.1版本,然后配置普通的ORBSLAM2的环境。
但是这里配置的时候,遇到两个问题:

一是docker中的jupyter端口似乎被占用,怎么弄都弄不好。虽然可以用其他的编译器,但是从宿主机调用docker服务端运行代码还是用有很多问题。
二是容器中编译opencv的时候会报一个错误,主要是因为需要去公网下载文件,但是在宿主机上就不需联网下载,猜测可能因为docker镜像版本有些旧的原因吧

综上所素:第一种方法虽然方便,但是中间有问题,就不得不放弃(如果能挂公网,那确实挺好的)

方法二:直接配置

选用的ubuntu版本是16,装系统+配置无线模块可以参考我的这篇博客

https://blog.csdn.net/y18855021710/article/details/127789430?spm=1001.2014.3001.5502

编译该代码主要参考的是这位大佬的

https://blog.csdn.net/weixin_39977764/article/details/122453967

但是大佬有些配置在ubuntu16中有一些小bug,我会一一指出

配置流程

1 配置ORB_SLAM2环境
2 配置tf环境
3 配置DXSLAM环境


                                   我是一个分割线

1 配置ORBSLAM2环境

1.1ORB_SLAM2配置

配置环境主要是参考github源码来配置的

https://github.com/raulmur/ORB_SLAM2

值得注意的是,代码中的opencv版本要求不高,但是听配置DXSLAM的大佬说Pangolin是个毒瘤,只能用ORB_SLAM2代码推荐的Pangolin那个链接。而且配置Pangolin要升级cmake(3.10以上)

1-如果你下载cmake,解压阅读readme发现里面有编译的步骤(就不细说了)
但是一定最后要重复一遍sudo make install(提升权限安装)

2-参考博客

https://blog.csdn.net/weixin_41010198/article/details/109343347

照着上面博客的话:如果出现问题 *** No rule to make target ‘/usr/lib/x86_64-linux-gnu/libGL.so’, needed by ‘src/libpangolin.so’。 停止。
备注:查找命令sudo find / -iname “libGL.so

https://blog.csdn.net/txy12029047/article/details/104036729
https://blog.csdn.net/sinat_28752257/article/details/100167109
简单来说是因为你装驱动或者内核,把原本的链接关系破坏了,所以要重新链接libGL.so
这里不理解为什么要sudo ln -s  /usr/lib/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
(这里还是使用了0.5版本)

1.2测试单目并处理RGBD的数据集

按照github配置好了之后,可以参考这篇博客进行测试以及处理数据集。

https://blog.csdn.net/creative1/article/details/122088612

(备注:RGBD需要看下面2.2来处理数据集)

2 配置tf环境

2.1 配置anaconda以及tf1.13

首先,因为笔记本装系统的时候直接就装显卡驱动了,所以这个时候cuda显示的是11版本。值得庆幸的是安装anaconda后面能够直接换源配置tf1.13旧版本(似乎利用conda装cuda10版本不会替换?)。
这里建议下载Anaconda3-2020.07-Linux-x86_64.sh
如果其中numpy版本报错,建议先卸载numpy然后再安装numpy1.6.5

 pip uninstall numpy
pip install numpy==1.16.5

可以参考博客配置

https://blog.csdn.net/qq_34904125/article/details/118418839

环境配置

sudo vim ~/.bashrc
export PATH=/home/你的名字/anaconda3/bin:$PATH
source ~/.bashrc
配置结束
激活
source activate
环境
conda create -n tf1.13 python=3.7
conda activate tf1.13
conda install tensorflow-gpu=1.13.1
测试
python
import tensorflow as tf
tf.test.is_gpu_available()

2.2 借用tf的虚拟环境处理RGBD数据集

上面1.2提到RGBD需要处理数据集,这里需要激活虚拟环境,然后按照1.2关于RGBD部分进行配置相关文件,如果报错:AttributeError: ‘dict_keys‘ object has no attribute ‘remove‘参考

https://blog.csdn.net/qin_liang/article/details/126860883

2.3 配置ROS(可选)

接下来需要配置ROS(如果不想跑实时就可以不弄)
鱼香ROS一键安装

wget http://fishros.com/install -O fishros && bash fishros

如果你装了ROS,就会发现会报一个错误(应该是后面编译DXSLA的代码某个部分import cv2的时候报错)不装ROS就应该不会出现这个问题。
也有可能没装pip install opencv-python
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
简单来说就是低版本ROS会影响环境中的opencv查找,解决就是申明外部还有opencv环境

https://blog.csdn.net/weixin_42314494/article/details/114686723

要注意的是,需要进入anaconda的虚拟环境进行刷新环境!不然还会出现这个bug

备注:理论上2代的环境能够直接给ORBSLAM3使用,如果配置环境出现:fatal error: openssl/md5.h: 没有那个文件或目录compilation terminated.

sudo apt-get install libssl-dev

3 配置DXSLAM环境

3.1 相关文件处理

首先需要从ORB_SLAM2中单目部分取出TUM1.yaml文件,tum数据集和2.2生成的associations.txt文件,我TUM1.yaml将在了EXamples/RGB-D/下,associations.txt文件放在了tum数据集下并统一放在在dxslam-master下。
预编译第三方库

如果第三方库报错
CMake Error at cmake_modules/FindEigen3.cmake:33 (file):
  file failed to open for reading (No such file or directory):

    /usr/include/eigen3/Eigen/src/Core/util/Macros.h
Call Stack (most recent call first):
  cmake_modules/FindEigen3.cmake:59 (_eigen3_check_version)
  CMakeLists.txt:70 (FIND_PACKAGE)
就是eigen3位置有问题,需要复制
sudo cp -r /usr/local/include/Eigen /usr/include
sudo cp -r /usr/local/include/eigen3 /usr/include

3.2 处理脚本

大佬说的很清楚,第一次下载失败,就一直会报错。
https://blog.csdn.net/weixin_39977764/article/details/122453967
如果有公网就可以参考大佬修改的build.sh,然后试运行就行,没有公网的话需要自己事先下载了两个文件DXSLAM.tar.xz和model.tar.xz(还需要公网,汗颜啦)

`wget https://github.com/ivipsourcecode/dxslam/releases/download/1.0.0/DXSLAM.tar.xz`

以及

`wget https://github.com/ivipsourcecode/dxslam/releases/download/1.0.0/model.tar.xz`

然后DXSLAM.tar.xz放在Vocabulary下,model.tar.xz放在hf-net下。来嗯个都需要解压。

3.3 处理数据集

tum数据集在运行RGBD时需要处理一下数据集格式

python associate.py ./rgb.txt ./depth.txt > associations.txt

3.4 处理特征文件

3.2下载的两个文件,DXSLAM.tar.xz解压后就能直接用,但是model.tar.xz解压后使用来处理数据集的,也就是在原本2.2处理之后还需要再次处理。这次是在虚拟环境下从图像和图像之中利用hf-net提取某种关系。注意,大佬博客这块少了一点,看下面评论应该是

python3 getFeature.py /home/名字/DXSLAM/dxslam-master/tum/rgbd_dataset_freiburg1_xyz/rgb.txt ./features
11.17 修正:上面不是读取txt而是读取rgb目录

python3 getFeature.py /home/名字/DXSLAM/dxslam-master/tum/rgbd_dataset_freiburg1_xyz/rgb ./features

不然在虚拟环境下就该会报错
File “getFeature.py”, line 70, in
query = hfnet.inference(image)
File “getFeature.py”, line 28, in inference
self.image_ph: image[…, ::-1].astype(np.float),
TypeError: ‘NoneType’ object has no attribute ‘getitem
这个命令运行成功会一直输出图片名字,等待一会处理完毕就行。
最后运行测试

./Examples/RGB-D/rgbd_tum Vocabulary/DXSLAM.fbow ./Examples/RGB-D/TUM1.yaml ./tum/rgbd_dataset_freiburg1_xyz  ./tum/rgbd_dataset_freiburg1_xyz/associations.txt ./hf-net/features

bug2:

UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [Op:Conv2D]
解决:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:0'  

最后还有个bug,我用的数据集跑到一半左右似乎卡住了,不知道为啥。后期有时间再看吧
最后放出我的项目树
.

├── build
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   │   ├── 3.21.4
│   │   ├── cmake.check_cache
│   │   ├── CMakeDirectoryInformation.cmake
│   │   ├── CMakeError.log
│   │   ├── CMakeOutput.log
│   │   ├── CMakeTmp
│   │   ├── DXSLAM.dir
│   │   ├── Makefile2
│   │   ├── Makefile.cmake
│   │   ├── progress.marks
│   │   ├── rgbd_tum.dir
│   │   └── TargetDirectories.txt
│   ├── cmake_install.cmake
│   └── Makefile
├── build.sh
├── CMakeLists.txt
├── cmake_modules
│   └── FindEigen3.cmake
├── Dependencies.md
├── Examples
│   └── RGB-D
│       ├── rgbd_tum
│       ├── rgbd_tum.cc
│       └── TUM1.yaml
├── hf-net
│   ├── features
│   │   ├── des
│   │   ├── glb
│   │   └── point-txt
│   ├── getFeature.py
│   ├── model
│   │   └── hfnet
│   └── model.tar.xz
├── include
│   ├── Converter.h
│   ├── FrameDrawer.h
│   ├── Frame.h
│   ├── Initializer.h
│   ├── KeyFrameDatabase.h
│   ├── KeyFrame.h
│   ├── LocalMapping.h
│   ├── LoopClosing.h
│   ├── MapDrawer.h
│   ├── Map.h
│   ├── MapPoint.h
│   ├── Matcher.h
│   ├── Optimizer.h
│   ├── PnPsolver.h
│   ├── Sim3Solver.h
│   ├── System.h
│   ├── Tracking.h
│   ├── Viewer.h
│   └── Vocabulary.h
├── lib
│   └── libDXSLAM.so
├── License-gpl.txt
├── LICENSE.txt
├── README.md
├── src
│   ├── Converter.cc
│   ├── Frame.cc
│   ├── FrameDrawer.cc
│   ├── Initializer.cc
│   ├── KeyFrame.cc
│   ├── KeyFrameDatabase.cc
│   ├── LocalMapping.cc
│   ├── LoopClosing.cc
│   ├── Map.cc
│   ├── MapDrawer.cc
│   ├── MapPoint.cc
│   ├── Matcher.cc
│   ├── Optimizer.cc
│   ├── PnPsolver.cc
│   ├── Sim3Solver.cc
│   ├── System.cc
│   ├── Tracking.cc
│   └── Viewer.cc
├── Thirdparty
│   ├── cnpy
│   │   ├── build
│   │   ├── CMakeLists.txt
│   │   ├── cnpy.cpp
│   │   ├── cnpy.h
│   │   ├── example1.cpp
│   │   ├── LICENSE
│   │   ├── mat2npz
│   │   ├── npy2mat
│   │   ├── npz2mat
│   │   └── README.md
│   ├── DBoW2
│   │   ├── build
│   │   ├── CMakeLists.txt
│   │   ├── DBoW2
│   │   ├── DUtils
│   │   ├── lib
│   │   ├── LICENSE.txt
│   │   └── README.txt
│   ├── fbow
│   │   ├── build
│   │   ├── CMakeLists.txt
│   │   ├── cmake_uninstall.cmake.in
│   │   ├── config.cmake.in
│   │   ├── README.md
│   │   ├── src
│   │   ├── tests
│   │   └── utils
│   └── g2o
│       ├── build
│       ├── CMakeLists.txt
│       ├── cmake_modules
│       ├── config.h
│       ├── config.h.in
│       ├── g2o
│       ├── lib
│       ├── license-bsd.txt
│       └── README.txt
├── tum
│   ├── rgbd_dataset_freiburg1_xyz
│   │   ├── accelerometer.txt
│   │   ├── associations.txt
│   │   ├── depth
│   │   ├── depth.txt
│   │   ├── groundtruth.txt
│   │   ├── rgb
│   │   └── rgb.txt
│   └── rgbd_dataset_freiburg1_xyz.tgz
├── Vocabulary
│   ├── DXSLAM.fbow
│   └── DXSLAM.tar.xz
└── 环境配置.md
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DXLAM、ubuntu16、tf1.13、anaconda环境配置 的相关文章

  • AWS EC2手动/自动切换Elastic IP

    一 手动切换Elastic IP 1 进入ec2控制台 选中实例然后操作 gt 联网 gt 管理IP地址 2进入分配Elastic IP页面 点击分配 3 分配Elastic IP 4 配置Elastic IP 5 关联ip地址 二 自动脚
  • CSS 页面禁止滚动

    methods 禁止滚动 stop var mo function e e preventDefault document body style overflow hidden document addEventListener touch
  • java内部分享课题,层层深入

    正文 二叉树 由 n n gt 0 个有限节点组成一个具有层次关系的集合 看起来就像一个倒挂的树 因此称这样的数据结构为树 一个节点的子节点个数叫做度 通俗的讲就是树叉的个数 树中最大的度叫做树的度 也叫做阶 一个 2 阶树最多有 2 个子
  • 你懂mongoDB吗

    MongoDB 是一个基于分布式文件存储的数据库 由 C 语言编写 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB 是一个介于关系数据库和非关系数据库之间的产品 是非关系数据库当中功能最丰富 最像关系数据库的 Mon

随机推荐

  • unity多场景加载与GameObject实例管理

    使用LoadSceneMode Additive 可以同时加载多个场景 但是并不是所有可以见元素都是可以直接调用的 如图 加载了scene02 激活后显示为粗体 一些常用对象的说明 Directional Light 不对另一个场景中的物体
  • 赣榆高中2021高考成绩查询,2020年连云港赣榆高考续写辉煌,各大高中“喜报”新鲜出炉...

    又到一年一度高考放榜时 赣榆各大高中纷纷发布喜报 今年赣榆高考又有哪些新成绩新亮点 楼下一一解读 省赣中 据了解 江苏省赣榆高级中学2020年高考再创辉煌 再攀新高 截至目前 据不完全统计 本一上线1058人 400分以上51人 市局目标完
  • yolov7裂缝检测

    B站视频笔记 1 首先到Github上找RoboFlow的仓库地址 该教程提供了传统算法比如Resnet YOLO等 还有包含一些较新的算法 2 通过Colab打开例程 可以直接通过Colab打开 还支持其他的打开方式 这里提供三种方式 提
  • 11尺寸长宽 iphone_使用Matlab测量图像目标尺寸

    在传统的数字图像处理当中 边缘检测与形态学为两门非常重要的技术 在笔者的第一篇文章中已经重点介绍了各种边缘检测算子 因此这次笔者将结合一些较为简单的形态学算法 使用Matlab为大家介绍一个很有意思的测量目标尺寸的小项目 效果如下 图1 效
  • 盘点了109个金融行业活动案例,找到了最常用的10种

    电商平台有 双11 消费节 家居品牌有 家装节 随着近两年大众财富管理意识的成长 金融行业也诞生了 理财节 银行 券商同行们会在特定时间段内做主题活动 活动形式丰富且多元化 除了传统的积分 红包等 还有直播 盲盒 转盘抽奖等多种活动形式 事
  • SpringBoot项目后端开发逻辑梳理总结

    SpringBoot项目中包含Mapper层 Dao层 Entity层 model层 DTO层 VO层 Service层和Controller层 本篇以学生信息表增删改查为例 梳理各个层之间的逻辑关系 开发流程和注意事项 目录 一 各层之间
  • Upload-labs文件上传漏洞(MIME限制)——Pass02(详解)

    0 00 题目描述 本题要求对数据包中的MIME进行检查 0 01 MIME介绍 所以首先要搞清楚MIME在数据包的哪里 MIME是个什么 关于MIME 由百度百科可知 MIME Multipurpose Internet Mail Ext
  • 如何提高oracle数据库的性能,想提高Oracle性能,如何优化数据库?

    我们今天主要向大家介绍的是如何优化数据库来大提高Oracle性能 以下我们就介绍几个比较简单的步骤来大幅的提高Oracle性能 沃尔玛你很形象将其比喻成优化数据库的三板斧 数据库优化的讨论可以说是一个永恒的主题 资深的Oracle优化人员通
  • chatgpt赋能python:如何放大Python运行出来的图

    如何放大Python运行出来的图 Python是一种流行的编程语言 广泛应用于数据科学 人工智能 机器学习等领域 在这些领域 数据图表是非常重要的 而将这些图表放大可以帮助我们更好地理解数据 发现规律和趋势 在Python中 matplot
  • vue-json-view 一款用于展示json的vue组件,支持大体积json文件快速解析渲染

    在线示例 开发背景 项目开发过程中遇到展示json的场景 且json文件体积过大 小则几百kb 也尝试了已经开源的部分组件 但由于节点过多 渲染速度过慢 无法使用 已有项目技术选型为vue 无法再使用react相关技术 所以考虑自己开发一款
  • 【数据结构】--栈--括号匹配

    在pop 那个地方卡了好一会 原来是NULL这个情况没有考虑 用栈实现 输入一行符号 以 结束 判断其中的括号是否匹配 括号包括 lt gt 例如 输入 Result as x lt lt gt gt right a b gt The 6
  • Cookie详细分析及JSP Cookie操作

    Http协议中Cookie详细介绍 Cookie简介 网络早期最大的问题之一是如何管理状态 即服务器无法知道两个请求是否来自同一个客户端 用户 当时最简单的方法是在请求时 在页面中插入一些参数 并在下一个请求中传回参数 这需要使用包含参数的
  • 计算机网络题库---选择题刷题训练(100多道精品)

    第一章 概述 1 下列四项内容中 不属于Internet 因特网 基本功能是 D A 电子邮件 B 文件传输 C 远程登录 D 实时监测控制 2 Internet是建立在 C 协议集上的国际互联网络 A IPX B NetBEUI C TC
  • RT-Thread:RW007-通讯速度

    目录 1 测量方法 2 硬件准备 3 软件准备 4 使用env配置工程 5 代码修改 下载测试下行速度 6 代码修改 下载测试上行速度 7 总结 1 测量方法 影响通讯速度原因 1 单片机运行速度 2 单片机和RW007通讯的速度 3 RW
  • 常用矩阵定义概念

    1 托普勒斯矩阵 Toeplitz matrix 一维情况下 行响亮不断的向右一定一格形成的循环矩阵 2 双块循环矩阵 doubly block circulant matrix 这是卷积核展开之后 加速与图像卷积过程 因为是两行两行一起循
  • Python爬虫编程实践--task01

    主要内容 HTTP基础 HTML基础 requests get的使用 API的使用 HTTP HTTP是一个客户端 用户 和服务器端 网站 之间进行请求和应答的标准 通过使用网页浏览器 网络爬虫或者其他工具 客户端可以向服务器上的指定端口
  • jersey实现web service接口+客户端调用

    jersey实现web service接口 客户端调用 jersey百度百科 Jersey是一个RESTFUL请求服务JAVA框架 与常规的JAVA编程使用的struts框架类似 它主要用于处理业务逻辑层 与Struts类似 它同样可以和h
  • 手机app登录显示服务器异常,手机app 连接云服务器异常

    手机app 连接云服务器异常 内容精选 换一换 通过内网连接云手机实例时 需要在租户VPC中创建一台弹性云服务器 作为连接云手机的跳板机器 若创建云手机服务器时未使用自定义网络 还需在云手机租户的VPC和服务器所在VPC之间建立对等连接 如
  • RSA算法的详细设计(C++)及不同优化策略的比较

    本篇文章总结了我对RSA算法的理解和设计 并在后文对优化运行效率的方法做了对比分析 一 RSA算法简介 密码学是研究如何隐密地传递信息的学科 它被认为是数学和计算机科学的分支 和信息论也密切相关 在很久之前的传统密码学中 使用的都是对称加密
  • DXLAM、ubuntu16、tf1.13、anaconda环境配置

    DXSLAM环境的点点滴滴 配置该代码环境有两种方法 方法一 利用docker 方法二 直接配置 配置流程 1 配置ORBSLAM2环境 1 1ORB SLAM2配置 1 2测试单目并处理RGBD的数据集 2 配置tf环境 2 1 配置an