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

DXSLAM环境的点点滴滴

    • 配置该代码环境有两种方法
      • 方法一:利用docker
      • 方法二:直接配置
    • 配置流程
      • 1 配置ORBSLAM2环境
        • 1.1ORB_SLAM2配置
        • 1.2测试单目并处理RGBD的数据集
      • 2 配置tf环境
        • 2.1 配置anaconda以及tf1.13
        • 2.2 借用tf的虚拟环境处理RGBD数据集
        • 2.3 配置ROS(可选)
      • 3 配置DXSLAM环境
        • 3.1 相关文件处理
        • 3.2 处理脚本
        • 3.3 处理特征文件

这里记录配置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以上)

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

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版本不会替换?)。

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

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就应该不会出现这个问题。
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

3 配置DXSLAM环境

3.1 相关文件处理

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

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 处理特征文件

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

最后还有个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

你可能感兴趣的:(那年一起走过的SLAM,深度学习)