【SLAM】——DynaSLAM项目环境配置(超多坑)

2023-11-02

DynaSLAM
坑多,慢慢来,不要急

先整体说一下,项目是在ORB-SLAM2项目的基础上,加上maskrcnn的融合。主流程采用还是采用ORB-SLAM2的流程,maskrcnn部分采用c++调用python的实现。其中又穿插opencv2 mat数据转numpy实现c++和python之间数据的交换。所以很多地方容易有坑。慢慢来,先来一张成功的gif安慰一下,给大家一点希望
在这里插入图片描述

几大坑

  • h5py
  • opencv2.4.11(必须)

首先来看一下官方给定的安装步骤:

  • Install ORB-SLAM2 prerequisites: C++11 or C++0x Compiler, Pangolin, OpenCV and Eigen3 (https://github.com/raulmur/ORB_SLAM2).
  • Install boost libraries with the command sudo apt-get install libboost-all-dev.
  • Install python 2.7, keras and tensorflow, and download the mask_rcnn_coco.h5 model from this GitHub repository: https://github.com/matterport/Mask_RCNN/releases.
    Clone this repo:
git clone https://github.com/BertaBescos/DynaSLAM.git
cd DynaSLAM
cd DynaSLAM
chmod +x build.sh
./build.sh

Place the mask_rcnn_coco.h5 model in the folder DynaSLAM/src/python/.

1. 安装ORB-SLAM2的依赖

https://github.com/raulmur/ORB_SLAM2的安装我这里到是很顺利,直接按照官方的步骤一步一步来就ok了。

我没有安装ROS。

ORB-SLAM2跑TUM Dataset的例子,这里就不过多讲了。
在这里插入图片描述

2. 安装libboost

sudo apt-get install libboost-all-dev

我这里没有报错

3. mask-rcnn相关

  1. 下载模型
    下载mask_rcnn_coco.h5把他放到DynaSLAM/src/python/文件夹下

  2. 安装tensorflow,keras
    DynaSLAM采用ubuntu系统环境下的python2.7,用pip安装的时候注意

我安装的各软件版本:

  • tensorflow-gpu (1.14.0)
  • keras 2.0.9

到这里的时候,python的环境基本已经安装好了,可以测试python的环境:

cd DynaSLAM
python src/python/Check.py

输出:Mask R-CNN is correctly working,可能会没有问题

4. 编译DynaSLAM

cd DynaSLAM
chmod +x build.sh
./build.sh

注意,这里需要用opencv2.4.11,opencv3会有错误(亲测)
多个版本opencv的配置与使用,可参考:多个版本opencv的配置与使用

后面就可以运行DynaSLAM的例子了,这里我用的tum_data,最后的output是保存分割出来的mask。如下图所示:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ../slam_data/rgbd_dataset_freiburg1_xyz output

在这里插入图片描述

可能问题1:
this->net != NULL
这是MaskRCNN.py中的Mask类初始化错误造成的。可以首先在python层面进行验证。在MaskRCNN.py文件后添加

if __name__ == "__main__":
	net = Mask()
	image = np.zeros((480, 640))
	mask = net.GetDynSeg(image)
	T = 1

然后执行:

cd DynaSLAM
python src/python/MaskRCNN.py

如何没有报错,那就有可能是h5py的错,后面有方法排查。

排查是否是h5py的错
src/python/model.py文件的1892行开始改为:

import h5py
from keras.engine import topology

if exclude:
    by_name = True
print("11111111111111111")
if h5py is None:
    raise ImportError('`load_weights` requires h5py.')
try:
    f = h5py.File(filepath, mode='r')
except Exception as err:
    print err
if 'layer_names' not in f.attrs and 'model_weights' in f:
    f = f['model_weights']
print("222222222222222222")

print err如果输出的是:
Invalid high library version bound (invalid high library version bound)
就是h5py的报错,需要手动编译安装h5py


5. 手动编译h5py

直接一条命令
PIP_NO_CACHE_DIR=off pip2 install --no-binary=h5py h5py

可能需要pkgconfig
PIP_NO_CACHE_DIR=off pip2 install pkgconfig


6. 编译opencv2.4.11

请参考:https://blog.csdn.net/u013453604/article/details/49781771

可能问题1.

解决方式:打开opencv2.4.13/cmake/ OpenCVDetectCXXCompiler.cmake,修改第67行"-dumpversion" 为 “-dumpfullversion”

可能问题2

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)

解决方式:
在编译的命令里面添加一条-D WITH_CUDA=OFF就行了。

我的cmake命令如下,供参考:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=../install -D WITH_CUDA=OFF ..

可能问题3

/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
这是因为ubuntu18.04自带的gcc是7.5.0的。难道又要换成gcc5。

解决方式:
参考:https://blog.csdn.net/qq_17783559/article/details/105078293
在cmake中添加-D ENABLE_PRECOMPILED_HEADERS=OFF

可能问题4
编译的时候,报错:
error: ‘CODEC_ID_H264’ was not declared in this scope
{ CODEC_ID_H264, MKTAG(‘H’, ‘2’, ‘6’, ‘4’) },
^~~~~~~~~~~~~
/home/darknet/CM/profile/opencv-2.4.11/modules/highgui/src/ffmpeg_codecs.hpp:104:7: note: suggested alternative: ‘AV_CODEC_ID_H264’
{ CODEC_ID_H264, MKTAG(‘H’, ‘2’, ‘6’, ‘4’) },

解决方式:在cmake时,将ffmpeg设置为OFF,即:-D WITH_FFMPEG=OFF

可能问题5
/home/yinton/opencv-2.4.11/modules/contrib/src/chamfermatching.cpp:969:30: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]
if (&annotate_img!=NULL) {
^
/home/yinton/opencv-2.4.11/modules/contrib/src/chamfermatching.cpp:1016:34: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]
if (&annotate_img!=NULL) {
^
/home/yinton/opencv-2.4.11/modules/contrib/src/chamfermatching.cpp: In member function ‘cv::ChamferMatcher::Match* cv::ChamferMatcher::Matching::localChamferDistance(cv::Point, cv::Mat&, cv::Mat&, cv::ChamferMatcher::Template*, float)’:
/home/yinton/opencv-2.4.11/modules/contrib/src/chamfermatching.cpp:1111:25: error: the compiler can assume that the address of ‘orientation_img’ will never be NULL [-Werror=address]
if (&orientation_img!=NULL) {

解决方式:
找到Opencv-2.4.11/build/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make
(如果没创建build来放编译文件的话就没有build),删去-Werror=address重新make,成功!参考自:https://zhuanlan.zhihu.com/p/364633955

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SLAM】——DynaSLAM项目环境配置(超多坑) 的相关文章

  • 大师兄!SLAM 为什么需要李群与李代数?

    from https mp weixin qq com s sVjy9kr 8qc9W9VN78JoDQ 作者 electech6 来源 计算机视觉life 编辑 Tony 很多刚刚接触SLAM的小伙伴在看到李群和李代数这部分的时候 都有点
  • Ubuntu20.04编译安装opencv3.2和opencv_contrib-3.2

    图像特征提取中需要用到SIFT等算法 因此不得不安装从源码编译安装opencv contrib 网上有很多教程 但是在不同的环境下多少会出现一些错误 针对Ubuntu20 04 gcc 7环境下对opencv opencv contrib编
  • vscode_c++_slambook 编译配置

    工作目录 配置文件 launch json version 0 2 0 configurations name slamBook程序调试 type cppdbg request launch program fileDirname buil
  • 微信小程序SLAM AR零基础入门教程

    鬼灭之刃花街篇 开播在即 今天带大家零基础使用Kivicube制作一个炭治郎的SLAM AR云手办 可以通过微信小程序将AR版的炭治郎放置在家中 提前感受鬼灭的氛围 先上个GIF大家看看动态的展示效果 在这里先科普一下本次教程使用到的AR技
  • Sophus使用记录

    sophus库是一个基于Eigen的C 李群李代数库 可以用来方便地进行李群李代数的运算 头文件 主要用到以下两个头文件 include
  • 视觉SLAM漫谈(二):图优化理论与g2o的使用

    视觉SLAM漫谈 二 图优化理论与g2o的使用 1 前言以及回顾 各位朋友 自从上一篇 视觉SLAM漫谈 写成以来已经有一段时间了 我收到几位热心读者的邮件 有的希望我介绍一下当前视觉SLAM程序的实用程度 更多的人希望了解一下前文提到的g
  • Mask_RCNN 配置并训练自己的数据集

    文章目录 1 配置Mask RCNN 并运行demo 1 1环境 1 2下载github 1 3安装依赖库 1 4安装Mask RCNN 1 5下载coco已训练好模型 1 6安装 pycocotools 1 7使用 Jupyter 运行
  • [SLAM四元数基础系列一] 四元数定义 Hamilton vs JPL

    四元数定义 Hamilton vs JPL 简介 四种区分方式 Hamilton vs JPL 引用 不管是卡尔曼滤波或者BA优化形式的SLAM或者VIO系统中 都需要用到单位四元数 Quaternion 来表示旋转 主要是单位四元数表示旋
  • 关于GPS、惯导、视觉里程计的几个定义

    1 首先写几个定义 惯性导航系统 Inertial Navigation System INS 全球定位卫星系统 Global Navigation Satellite System GNSS GNSS 包括全球定位系统 Global Po
  • Sophus安装踩坑

    装SLAM十四讲第二版提供的Sophus Eigen版本3 4 0 报错 home ch 下载 Sophus 13fb3288311485dc94e3226b69c9b59cd06ff94e test core test so2 cpp 9
  • 互转(经纬度、地心坐标、东北天坐标)

    Part1三种坐标系介绍 经纬度坐标 假设空间某点P 用经纬度表示的话 你们B代表纬度 L代表经度 H代表大地高 纬度B P点沿着地球法线方向与赤道面的夹角 向北为正称为北纬 0 90 向南为负称为南纬 0 90 实际表示可以用 90 90
  • Ubuntu20.04安装各种库----简洁版

    目录 Eigen3 Sophus Pangolin Ceres g2o 建议先装anaconda再装ros python opencv啥该有的都有了 下面仅仅安装ros没有的库 Eigen3 作用 线性代数开源库 提供了有关线性代数 矩阵和
  • linux16.04 从零开始搭建maskrcnn (!!亲测有效!!)

    文章参考 https github com pytorch vision blob temp tutorial tutorials torchvision finetuning instance segmentation ipynb 环境搭
  • SLAM--三角测量SVD分解法、最小二乘法及R t矩阵的判断

    目录 一 三角测量 方法一 SVD分解法的推导 方法二 最小二乘法求解 二 ORB SLAM2 三角测量源码 三 利用Eigen源码实现三角测量 方法一 SVD分解法 方法二 最小二乘法求解 速度最快 方法三 利用OpenCV自带函数 四
  • 快看!那个学vSLAM的上吊了! —— (一)综述

    不同于之前发布的文章 我将使用一种全新的方式 iPad Notability Blog的方式打开这个板块的大门 原因有两个 1 Notability更方便手写长公式 也方便手绘坐标系变换等等 2 之前Apple Pencil找不到了新破费买
  • BLAM跑自己的数据包无法显示全局点云地图解决(速腾聚创RS-LiDAR-16 雷达 )-SLAM不学无术小问题

    BLAM算法跑自己的数据包无法显示全局点云地图解决 适配速腾聚创RS LiDAR 16 雷达 提示 本文笔者使用环境Ubuntu18 04 ROS melodic版本 首先放一个效果链接 由b站up VladimirDuan上传 非官方 官
  • 视觉SLAM漫谈

    视觉SLAM漫谈 1 前言 开始做SLAM 机器人同时定位与建图 研究已经近一年了 从一年级开始对这个方向产生兴趣 到现在为止 也算是对这个领域有了大致的了解 然而越了解 越觉得这个方向难度很大 总体来讲有以下几个原因 入门资料很少 虽然国
  • LIO-SAM运行自己数据包遇到的问题解决--SLAM不学无数术小问题

    LIO SAM 成功适配自己数据集 注意本文测试环境 Ubuntu18 04 ROS melodic版本 笔者用到的硬件以简单参数 激光雷达 速腾聚创16线激光雷达 RS Lidar 16 IMU 超核电子CH110型 9轴惯导 使用频率1
  • Todesk突然高速通道使用已结束

    今天使用Todesk直接报出如下错误 好像对于海外用户需要付费购买海外会员 大家有没有什么可以替换的远程控制软件的吗 能分享一下吗
  • KITTI校准文件中参数的格式

    我从以下位置访问了校准文件KITTI 的部分里程计 http www cvlibs net datasets kitti eval odometry php 其中一个校准文件的内容如下 P0 7 188560000000e 02 0 000

随机推荐