站点图标 AI技术聚合

VMware-Ubuntu16.04从零配置SLAM十四讲第二版环境(自用,极度完整)

VMware-Ubuntu16.04从零配置SLAM十四讲第二版环境(自用,极度完整)

以下步骤从已经用VMware建立好虚拟机开始,ubuntu版本是16.04,是自己安装时一步步试错修改总结出来的步骤,希望能对大家有所帮助。
调整了各种库的安装顺序,保证依赖库都已经安装完成,并加入了自己遇到的问题和解决方案,重点参考了:链接1和链接2,其他参考链接也会进行标注。
请尝试按以下顺序安装和配置。随意更改顺序会导致安装失败。

顶部写的注释:

sudo apt-get upgrade 

如果你在各种配置教程中遇到上述语句,一定要谨慎使用。因为是更新所有已安装库的声明,所以升级后会导致你的很多库版本不兼容,之后你可能不得不到处删除降级的版本。这个配置我完全不用这个升级语句,版本兼容性很重要,不要随便升级!
血的教训要慎用!

1、设置管理员密码,打开终端:

sudo passwd root

输入设置的密码后,未来通过:

su
密码

可以进入管理员模式,以下步骤最好进入管理员模式。
2、替换国内源
下载库的时候官网有时候连接不上,导致很多库没有安装,所以这里必须换成国内的源,这里是阿里源,可供个人测试,这部分参考链接。
备份原始源:

sudo cp /etc/apt/sources.list /etc/apt/sources_init.list

打开包含源列表的文档:

sudo cp /etc/apt/sources.list /etc/apt/sources_init.list

清除并用以下内容替换文档中的所有内容(不用担心,它已备份):

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

更新列表:

sudo apt-get update

3、调整虚拟机的字体,初始字体太小了。
参考链接,通过安装tweak工具,终端内输入:

sudo apt-get isntall  unity-tweak-tool

随后在软件中搜索:unity-tweak

找到fonts,自己调节大小看看吧:

4、给虚拟机和主机设置共享文件夹,方便文件在二者之间传输使用。
vmware菜单栏-虚拟机-虚拟机设置-选项:

共享文件夹在虚拟机的/mnt/hgfs/share中。
注意,如果要使用共享文件夹中的文件来安装一些库,请务必在安装前将文件复制到虚拟机中(总之,不能安装在共享文件夹中)。

5、在官网安装最新版的make:
cmake官网,一定要是新版,不然安装其他库容易报错,参考:参考链接。
选择一个压缩包下载,这里我选择
cmake-3.16.0.tar.gz
下载后解压,进入解压后的文件夹,打开文件夹下的终端,输入:

./bootstrap
make
sudo make install

如果中间没有错误,则安装完成。可以验证是否成功:

cmake --version

以下语句代表成功:

之后我们就可以用cmake来编译运行程序了!
6、安装eigen
eigen是SLAM中许多库文件的基础,务必安好,最好是安个最新版,直接终端中输入以下语句:

sudo apt-get install libeigen3-dev

我这里安装的版本是 3.2.92,Eigen库的版本可以在/usr/include/eigen3/Eigen/src/Core/util/Macros.h的前几行里找到。
安装后,为保证以后程序运行的方便,最好是找到eigen安装的位置。不是在/usr/local/include就是/usr/include,看看Eigen和eigen3文件夹在这两个中的哪一个,然后把Eigen和eigen3文件夹复制到另一个文件夹中去。
最好保证/usr/local/include和/usr/include两个路径下都有Eigen,这两个路径前者是本地安装库的路径,后者是直接apt-get安装库的路径,这样以后库的调取能省去找不到Eigen等问题。
7、安装opencv
opencv的版本要和eigen对应上,即两个不能一个太新一个太老。我的eigen版本是3.2.92,安装的opencv最后选的是3.4.6,安装包下载:(链接,提取码:453q)
然后安装过程参考:参考链接,安装后的配置很重要,不能省略。

(1)安装依赖:

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

(2)随后解压opencv的压缩包,进入解压后的文件夹,在该路径下的终端输入:

mkdir build
cd build
cmake ..
make
sudo make install

(3)最后配置编译环境,将OpenCV的库添加到路径,从而可以让系统找到:

sudo gedit /etc/ld.so.conf.d/opencv.conf

(4)执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:

/usr/local/lib 

(5)执行如下命令使得刚才的配置路径生效:

sudo ldconfig 

(6)配置bash:

sudo gedit /etc/bash.bashrc

(7)在打开文件的末尾添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH 

(8)保存,执行如下命令使得配置生效:

source /etc/bash.bashrc 

(9)更新一下配置:

sudo updatedb 

(10)进行测试,如果成功则配置完成。
进入opencv-3.4.6(就是下载的压缩包解压之后的文件夹,刚刚在这里mkdir build来着),找到如下路径:
opencv-3.4.6/smaples/cpp/example_cmake
终端输入:

mkdir build
cd build
cmake ..
make

运行opencv_example:

./opencv_example

如果电脑有摄像头,就会启动摄像头(我的笔记本摄像头是打开的,它会亮),这样配置就完成了。
注意,如果摄像头没有开启,也可能是虚拟机设置的问题。
需要在VMware菜单栏-虚拟机-可移动设备-第五项camera-连接主机;
如果这个设置完成,运行刚刚的文件还是不能开启摄像头,那就要看看报错是什么了。(我一开始报错是因为安装完opencv后没进行后面的配置,重新安装配置之后就没有错误,成功运行了。)

8、安装git clone:
以便未来从github上下载源码,这里需要先去Github注册一个账号,并登录。
在终端中输入(设置名字,填写邮箱即可):

 git config --global user.name "Your Name"
 git config --global user.email "email@example.com"

随后生成本地公钥/私钥,一路回车即可。

ssh-keygen -t rsa

然后输入以下语句:

cat /home/couchy/.ssh/id_rsa.pub

在跳出的文本文档中(或直接在终端中),会有一长串字符,请直接复制。 (我这里已经配置好了,重新配置会覆盖,就不给大家截图了)
登录github(地址),点击右上角的头像-setting-左侧的SSH and GPK keys-右边绿色按钮New SSH key:
title随便写个就好,然后把你复制的那一长串字符粘贴到下面Key的文本框里去,最后添加完成,就配置好了:

之后就可以在终端里用git clone https://github.com/…来下载github上的资源。
如果这个语句不好使,就把https换成git,即git clone git://github.com/…。

9、opengl(同样也是后面安装库的依赖库,务必安装成功)
参考这里:参考链接

sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3-dev

这里我遇到的问题就是sudo apt-get install freeglut3-dev这步,连接不到官网,所以前面一定要记得换成国内源。
测试代码,命名为test.cc

#include <GL/glut.h>


void init(void)
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glOrtho(-5, 5, -5, 5, 5, 15);
    glMatrixMode(GL_MODELVIEW);
    gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);

    return;
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0, 0);
    glutWireTeapot(3);
    glFlush();

    return;
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(0, 0);
    glutInitWindowSize(300, 300);
    glutCreateWindow("OpenGL 3D View");
    init();
    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
}

在终端输入:

gcc -o test test.c -lGL -lGLU -lglut
./test

出现一个红色茶壶,表示安装成功。
10、安装python
ubuntu16里内置了python2.7和python3.5,这里可以不用再特地安装,但是需要将3.5版本设置成默认版本,毕竟2.7太老啦,很少用。这里参考了:参考链接。
设置优先使用python3:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

然后还要安装一个python3.5的软件包才能成功运行python代码,终端输入:

sudo apt-get install python3.5-dev

11、安装Pangolin
这里我直接用SLAM十四讲第二版的代码里给的库文件安装的(在3rdparty里),进入Pangolin文件夹。
终端输入:

mkdir build
cd build
cmake ..
make
sudo make install

这里我遇到的bug就是各自依赖库没有安装,按照我这篇文章的顺序应该就不会遇到这种问题了。
12.安装sophus
同样直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里),进入sophus文件夹。
终端输入:

mkdir build
cd build
cmake ..
make
sudo make install

这里虽然高博士说不用install,但是我运行程序会出错,还是要最后一步install一下。

13、安装PCL
参考这里:参考链接
终端输入:

sudo apt install -y \
    libvtk6.2 \
    libvtk6.2-qt \
    libvtk6-dev \
    libproj-dev
sudo apt-get install libpcl-dev pcl-tools

14、安装ceres
同样直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里),进入ceres-solver文件夹,该文件夹下终端输入:

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.4 libgflags-dev libgoogle-glog-dev libgtest-dev
mkdir build
cd build
cmake ..
make
sudo make install

15、安装g2o
同样直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里),进入g2o文件夹,该文件夹下终端输入:

sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.4 libcholmod3.0.6
mkdir build
cd build
cmake ..
make
sudo make install

16、安装DBow3
同样直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里),进入DBow3文件夹,该文件夹下终端输入:

mkdir build
cd build
cmake ..
make
sudo make install

如果报错,则将CMakeList.txt中的libDBow3.so改为libDBow3.a即可。

接下来是运行视觉SLAM十四讲第二版中我进行代码修改的部分:
ch3
useGeometry文件夹的CMakeLists.txt:
将add_executable( eigenGeometry eigenGeometry.cpp …/examples/coordinateTransform.cpp)
改成:

add_executable( eigenGeometry eigenGeometry.cpp)

ch4
CMakeLists.txt中添加如下代码,添加对c++11的支持:

SET(CMAKE_CXX_FLAGS "-std=c++0x")
或者
set(CMAKE_CXX_FLAGS "-std=c++11")

ch5
imageBasics文件夹:

CMakeLists.txt更改为如下内容:

project(imageBasics)
#加入对c++11的支持
set(CMAKE_CXX_FLAGS "-std=c++11")
#ubuntu内置了openCV2的版本,这里的语句是选择使用openCV3
#并加入openCV3的路径
set(OpenCV_DIR /usr/local/opencv3/share/OpenCV)
find_package(OpenCV 3 REQUIRED)
include_directories( ${OpenCV_DIR} )
include_directories(/usr/local/opencv3/include)

#find_package(OpenCV REQUIRED)
#include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(imageBasics imageBasics.cpp)
# 链接OpenCV库
target_link_libraries(imageBasics ${OpenCV_LIBS})

add_executable(undistortImage undistortImage.cpp)

cmake make之后,利用如下语句执行:

./imageBasics ubuntu.png

stereo:
CMakeLists.txt添加如下内容:
set(CMAKE_CXX_FLAGS “-std=c++11”)
set(OpenCV_DIR /usr/local/opencv3/share/OpenCV)
find_package(OpenCV 3 REQUIRED)
include_directories( ${OpenCV_DIR} )
include_directories(/usr/local/opencv3/include)

rgbd:
CMakeLists.txt添加如下内容:
set(CMAKE_CXX_FLAGS “-std=c++11”)
et(OpenCV_DIR /usr/local/opencv3/share/OpenCV)
find_package(OpenCV 3 REQUIRED)
include_directories( ${OpenCV_DIR} )
include_directories(/usr/local/opencv3/include)
并将pose.txt和depth、color文件夹都放进build中去,这样运行joinMap即可,参考了:参考链接。

ch6
CMakeLists.txt添加如下内容:

set(OpenCV_DIR /usr/local/opencv3/share/OpenCV)
find_package(OpenCV 3 REQUIRED)
include_directories( ${OpenCV_DIR} )
include_directories(/usr/local/opencv3/include)

ch7
如果报如下错误,则代表需要添加Opencv3的路径。

terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(3.4.6) /home/fuyouao/opencv-3.4.6/opencv-3.4.6/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

这本书的代码有关opencv的部分,都需要在每个CMakeLists.txt添加如下内容:

set(OpenCV_DIR /usr/local/opencv3/share/OpenCV)
find_package(OpenCV 3 REQUIRED)
include_directories( ${OpenCV_DIR} )
include_directories(/usr/local/opencv3/include)

运行程序示例(图片都放到build里去):

 ./orb_cv 1.png 2.png

之后继续运行和安装将再次更新。

Ubuntu16安装中文输入法
参考链接:这里

版权声明:本文为博主荡神咩原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/baidu_38431960/article/details/123189925

退出移动版