浏览目录

  • 1. 安装对应的英伟达显卡驱动
  • 2. 安装CUDA
  • 3. 安装OpenCV2.4.13
    • 3.1 前期准备
    • 3.2 下载并编译OpenCV
    • 3.3 配置环境变量
    • 3.4 测试
  • 4. 安装PCL
    • 4.1 安装第三方库
    • 4.2 安装vtk
    • 4.3 编译安装PCL
  • 5. 安装OpenNi2
  • 6. 安装DLib
  • 7. 安装DBoW2
  • 8. 安装DLoopDetector
  • 9. 安装iSAM
  • 10. 安装Pangolin
  • 11. 编译、运行时候的一些问题
  • 12. 最终运行

1. 安装对应的英伟达显卡驱动

安装驱动时参考博客:Ubuntu18.04安装Nvidia显卡驱动教程,我的显卡是rtx3060,驱动版本是510.60.02。
在执行以下命令的时候,出现了”没有release文件“的问题,解决方法参考博客:E: 仓库 “http://ppa.launchpad.net/zarquon42/meshlab/ubuntu bionic Release”没有 Release 文件,即输入以下命令

$ sudo add-apt-repository ppa:graphics-drivers/ppa

2. 安装CUDA

实验室小伙伴跟我是一个版本的显卡驱动,他要跑神经网络模型,倒腾了好长时间,中间还重装系统,终于试出了CUDA11.3版本的是最合适的,这里我就直接奉行拿来主义,跟他装了一个版本的CUDA。
安装过程参考博客:Linux下安装cuda和对应版本的cudnn,输入完执行.run文件的命令回车后要耐心等一会~
CUDA11和10安装时的提示过程不太一样,到下面这一步的时候,要在第一个选项上回车,取消安装显卡驱动。

当系统存在多个版版本的CUDA时,可以用以下命令切换系统当前使用的CUDA版本。

$ cd /usr/local
$ sudo rm -rf cuda
$ sudo ln -s /usr/local/cuda-11.0 /usr/local/cuda

3. 安装OpenCV2.4.13

看到有人说先装CUDA后装OpenCV是走了弯路,咱也不知道,反正咱CUDA已经费老大劲装好了,还能回去重新搞咋地。

3.1 前期准备

安装编译工具
$ sudo apt-get install build-essential
安装依赖包
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
安装可选包
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

我最后一步装libjasper-dev的时候,提示无法定位软件包,解决方法是输入以下命令:

$ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
$ sudo apt update

执行完以后再重新执行上面安装可选包的命令。

3.2 下载并编译OpenCV

OpenCV下载地址 ,找到自己要的版本,选“Source”类型的下载。我装的是2.4.13版本的。

$ cd opencv-2.4.13新建一个文件夹用于存放临时文件:
$ mkdir build$ cd build这是kintinuous提供的opencv编译命令,最好用这个吧,我编译2.4.13的时候这个语句没问题,换成2.4.9就好挫错误,最终也没解决,所以我装的不是官方用的2.4.9的版本
$ cmake -D BUILD_NEW_PYTHON_SUPPORT=OFF -D WITH_OPENCL=OFF -D WITH_OPENMP=ON -D INSTALL_C_EXAMPLES=OFF -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D WITH_QT=OFF -D WITH_OPENGL=OFF -D WITH_VTK=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF ..我的CPU是8核,所以开了8个线程
$ make -j8    $ sudo make install查看opencv版本,出现版本号表示安装成功
$ opencv_version

3.3 配置环境变量

打开文件,第一次安装opencv的话,这个文件是空的
$ gedit /etc/ld.so.conf.d/opencv.conf 在文件末尾加入如下语句,这是opencv库目录
/usr/local/lib保存文件后,输入以下命令使文件生效
$ sudo ldconfig上面是配置系统环境变量,下面要为C++程序配置环境变量
打开文件
$ sudo gedit /etc/bash.bashrc
在末尾添加以下语句,pkg-config有默认路径,这里是为它新添加一个文件查找路径
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH切换到root用户,更新系统的环境变量,执行完后记得切换回普通用户
$ su
$ source /etc/bash.bashrc$ sudo updatedb

3.4 测试

确保"/usr/local/lib/pkgconfig"目录已经存在opencv.c文件
$ ls /usr/local/lib/pkgconfig 测试是否配置好环境变量,记住这里"pkg-config --cflags opencv"表示查看opencv的头文件路径,"pkg-config --libs opencv"表示库文件路径
$ pkg-config --cflags opencv

进入解压的opencv目录下的samples文件夹,找一个c++的程序编译运行。

$ g++ connected_components.cpp -o connected_components `pkg-config --cflags --libs opencv`
$ ./connected_components

成功运行就表示OpenCV安装完成了。

4. 安装PCL

我一开始装了1.12版的,结果最后编译项目的时候报了老大一堆错,就卸载了。
仔细看项目的安装教程发现要的是1.7的,但这个版本的网上安装教程太少,于是又装了1.8的,后面的半成功运行证明大概是没什么问题的。
下面是卸载已安装的pcl的命令。
卸载vtk:

$ sudo rm -r /usr/local/include/vtk*
$ sudo rm -r /usr/local/lib/libvtk*

卸载pcl-1.12:

$ sudo rm -r /usr/local/include/pcl-1.12 /usr/local/bin/pcl* /usr/local/lib/libpcl*
$ sudo rm -rf /usr/local/share/pcl-1.12

4.1 安装第三方库

$ sudo apt-get update
$ sudo apt-get install git build-essential linux-libc-dev cmake cmake-gui libusb-1.0-0-dev libusb-dev libudev-dev mpi-default-dev openmpi-bin openmpi-common libpcap-dev libflann1.9 libflann-dev
$ sudo apt-get install libeigen3-dev libboost-all-dev vtk6 libvtk6.3 libvtk6-dev libvtk6.3-qt libvtk6-qt-dev libqhull* libgtest-dev freeglut3-dev pkg-config libxmu-dev libxi-dev mono-complete libopenni-dev libopenni2-dev

4.2 安装vtk

到官网下载vtk-7.1.1.tar.gz,解压后编译安装。

4.3 编译安装PCL

下载地址,我下的是pcl1.8版本的。

解压后进入文件夹
$ mkdir build
$ cd build
用Kintinuous主页给的cmake命令编译pcl之后,会缺少头文件,下面这个命令就ok
$ cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_GPU=OFF -D BUILD_examples=OFF ..
$ make -j8
$ sudo make install
$ sudo ldconfig

5. 安装OpenNi2

安装依赖
$ sudo apt-get install -y g++ python libusb-1.0-0-dev freeglut3-dev doxygen graphviz
$ sudo apt-get install libudev-dev在源中寻找openni2
$ apt-cache search openni2
能找到的话会显示以下内容,否则要更换源
libopenni2-0 - framework for sensor-based 'Natural Interaction'
libopenni2-dev - headers for OpenNI 'Natural Interaction' frameworks
openni2-doc - developer documentation for OpenNI frameworks
openni2-utils - debug and test utilities OpenNI2 framework安装
$ sudo apt-get install libopenni2-dev
测试,能显示版本号就是安装成功了。
$ pkg-config --modversion libopenni2

6. 安装DLib

v1.0版本的下载地址,我编译的时候出现了以下错误提示:

/home/zxq/桌面/DLib-master/src/DVision/FSolver.cpp:149:39: error: ‘REDUCE_SUM’ is not a member of ‘cv’cv::reduce(sq_ab, norms, 0, cv::REDUCE_SUM); // 0 = single row^~~~~~~~~~
/home/zxq/桌面/DLib-master/src/DVision/FSolver.cpp:160:36: error: ‘REDUCE_SUM’ is not a member of ‘cv’cv::reduce(prod, dot, 0, cv::REDUCE_SUM); // dot is Nx1
/home/zxq/桌面/DLib-master/src/DVision/HSolver.cpp:144:39: error: ‘REDUCE_SUM’ is not a member of ‘cv’cv::reduce(sq_ab, error, 0, cv::REDUCE_SUM); // 0 = single row

其实就是变量名字问题,到出现错误的cpp文件对应位置,把"cv::REDUCE_SUM"改为"CV_REDUCE_SUM",再重新make、sudo make install就ok啦。

7. 安装DBoW2

v1.0-nonfree版本的下载地址,编译的时候提示找不到头文件<opencv2/xfeatures2d/nonfree.hpp>,于是到这个位置找了下,确实没有这个头文件,这个引用应该改为<opencv2/nonfree/nonfree.hpp>。

8. 安装DLoopDetector

v1.0版本的下载地址。

9. 安装iSAM

下载地址,我下的是v1_7版本的。
进入解压后的文件夹编译安装,不需要安装别的依赖项。

10. 安装Pangolin

下载地址,我用的是高博SLAM十四讲提供的库版本。

11. 编译、运行时候的一些问题

(1)
报错:usr/local/include/DVision/BRIEF256.h:284:12: error: ‘DUtils’ has not been declared
解决方法:在usr/local/include/DVision/BRIEF256.h头文件引用中添加#include <DUtils/DUtils.h>(2)
运行时报错:no kernel image is available for the device
解决方法:确定已安装的cuda和自己的显卡是适配的话,那就是cuda的计算框架不匹配。
到CMakeLists.txt中,看到有这一项:set(CUDA_ARCH_BIN "20 30 35 50 52"),含义是在cmake时,编译器会自动从引号里面的计算框架中选择,排在第一个的20会被优先选择,于是我们可以把20去掉,也可以到官方网站:http://developer.nvidia.com/cuda-gpus中查自己显卡适配的计算架构,比如我的rtx3060适合的就是8.6,于是就可以在里面把引号里的内容改成“8.6”。我最终是改成“50”,在编译和运行时候解决了一些其他问题,最终通过。(3)编译时提示类似'.sync'或者没有'__shlf_down()'的问题
解决方法:按错误提示,1)找到有__ballot(x)函数的地方,改为__ballot_sync(__activemask(), x);2)找到有__shfl_down(temp, offset)的地方,改为__shfl_down_sync(0xFFFFFFFF, temp, offset)(4)运行时提示Eigen字节对齐问题
解决方法:参考错误提示给出的官网链接知道编译时候用C++17标准就行了,具体方法是,在Kintinuous的CMakeLists.txt中开头和CMAKE其他设置差不多的位置,加上下面两句:
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)

12. 最终运行

最终编译后,用github上给的命令:./Kintinuous -s 7 -v ../vocab.yml.gz -l loop.klg -ri -fl -od运行的时候,到回环检测那就报了double free or corruption(out)的错然后退出了。到网上一搜,全是ORB SLAM项目出这个问题的解决方法,基本都是依赖库配置问题。我的解决方法是去掉-od,也就是不运行placeRecognition和Deformation线程,这样可以正常跑。在图形化界面点击"‘save’就可以保存.pcd文件和pose文件。
配环境、看代码、看论文,加起来花了两周的时间,还没搞清楚问题出在哪,又因为打算干别的活儿,于是就把这个错放过去了。
如果有小伙伴也遇到这个问题并且解决了,万望告知!

Ubuntu18.04配置运行Kintinuous相关推荐

  1. Ubuntu18.04配置YCM

    Ubuntu18.04和windows子系统Ubuntu18.04配置vim插件YoucompleteMe YouCompleteMe的安装麻烦程度也算是首屈一指了 目前安装配置方法一堆,坑太多,这里 ...

  2. Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台

    这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...

  3. Ubuntu18.04配置静态ip后发现ping不通百度

    在用ubuntu18.04配置静态ip时发现重启虚拟机后发现虚拟机ping 不同百度.原因是因为重启虚拟机后/etc/resolv.conf文件被清空.导致没有域名服务,在ping百度时域名解析失败. ...

  4. Ubuntu18.04配置robotiq-2F-85

    一.配置环境 操作系统:Ubuntu 18.04 夹爪型号:Robotiq 2F-85 转换线:RS485转USB 二.配置步骤 2.1创建robotiq工作空间,克隆代码包到新创建的src文件夹: ...

  5. Ubuntu18.04配置 ROS2 dashing+ gazebo9 + Turtlebot3

    Ubuntu18.04配置 ROS2 dashing+ gazebo9 + Turtlebot3 预备工作 1.换源 2.配置Hosts 一.安装ros2 dashing 1. 设置语言环境 2.添加 ...

  6. Ubuntu18.04配置无人驾驶赛车游戏TORCS(解决找不到GL/glut.h、AL/alut.h和libXmu,以及编译中出现‘isnan’was not declared等)

    Ubuntu18.04配置无人驾驶赛车游戏平台TORCS 一.资源下载TORCS<The Open Racing Car Simulator> 二.环境搭建 三.运行游戏与测试 菜菜的博主 ...

  7. Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联

    Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联 背景: 主要是为了复现叶小飞的Open ...

  8. Ubuntu18.04 配置nvidia 460驱动、cuda10.1和cudnn7.6.5

    Ubuntu18.04 配置nvidia 460驱动.cuda10.1和cudnn7.6.5,并在同一系统中配置不同的CUDA版本以满足tensorflow版本的需求.以下源自各位大佬的博客,并进行整 ...

  9. 【Ubuntu】——ubuntu18.04配置静态ip

    ubuntu18.04配置静态ip 要点: 1.root权限: 2.打开 /etc/netplan/01-network-manager-all.yaml 3.修改内容如下: 1.查找netplan目 ...

  10. Centos7或ubuntu18.04配置公共邮箱或个人邮箱发报警邮件

    系统:Ubuntu18.04配置方法 使用的软件:heirloom-mailx 亲测可用,这篇文章说的是配置邮箱,并发送邮件,具体报警邮件及脚本后续有空写 1.配置软件源 ubuntu18.04上无法 ...

最新文章

  1. 用Python分析你是否已经实现荔枝自由了?
  2. spcontent------spcollection.add(field)
  3. python经典小游戏-又一个python小游戏,叫什么不知道了。。。
  4. 温商机器人企业_7家温商企业上榜“中国企业500强”
  5. Problem - 6111迷宫出逃
  6. clion修改选中行的背景颜色
  7. java反射随意值_Java反射笔记
  8. 云存储精华问答 | 如何选择混合云提供商?
  9. C#LeetCode刷题之#34-在排序数组中查找元素的第一个和最后一个位置(Find First and Last Position of Element in Sorted Array)
  10. c语言学习-编写函数求x的n次方的值
  11. Linux 中如何启用和禁用网卡?
  12. [USACO 2012 Feb Gold] Cow Coupons【贪心 堆】
  13. python BeautifulSoup对应关系
  14. LINUX下载编译OpenH264
  15. JAVA:实现Gaussian高斯算法(附完整源码)
  16. c语言void*指针,C语言void指针
  17. 董明珠下台 格力还能一统智能家居吗?
  18. 手机号码或账号查询支付宝名字和性别
  19. 简练网软考知识点整理-易混概念项目绩效评估与团队绩效评价
  20. 数学建模参赛技巧 --- 论文撰写

热门文章

  1. 关于哪些信息是个人隐私信息
  2. linux 更改时间时区,Linux下修改系统时区
  3. 透明加密系统设计及实现-透明加密的关键技术
  4. mysql如何创建用户代码_Mysql 创建用户 受权_mysql
  5. 18个Windows应该有却没有具有的苦守(2)
  6. KGB知识图谱成功落地金融行业
  7. mac自带邮件设置QQ企业邮箱发邮件
  8. 打砖块游戏-第12届蓝桥杯Scratch省赛1真题第5题
  9. 陈年再创业:B2C必须标准化 VANCL只做男装
  10. 高德地图完整功能的html,关于高德地图WEB版基础控件的展示