slam的环境配置大全–保姆教学

本文参照哔哩大学的视频【高翔x助教黑熊x深蓝学院】视觉SLAM理论与实践环境搭建,我黑熊又来了!但是视频没有给出安装包链接,而且视频中间出错一次。
本博客根据安装无数遍后的踩坑而总结,根据每一步链接应该可以完成(前提你熟悉ubuntu,我用的ubuntu18版本)。

slam的环境配置大全--保姆教学

首先,每个库的版本都很重要,把每个库都重新安装一遍最好。
环境配置成功后sudo apt-get upgrade 指令就一般不要用了。

先在终端运行两句:

sudo apt-get update
sudo apt-get install build-essential cmake

开始安装

1、Eigen3.3.9安装

Eigen3.3.4以上的Eigen3版本对于目前的slam环境都可用,但是亲测Eigen3.3.9的毛病最少。

参照这个链接:https://blog.csdn.net/knswd/article/details/113006153
Eigen是一个c++开源线性代数库,后边几个库都要根据Eigen3.3.9来安装,很重要。安装后应该在/usr/local/include/eigen3 中能找到eigen3文件夹。

查看已经下载的Eigen3的方法为指令:

gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h

其中后边可以改成自己Eigen3的位置,下图中竖着的几个数字3.3.4即为版本号。

slam的环境配置大全--保姆教学

2、Sophus安装

sophus需要依赖fmt库,因此优先安装fmt:

git clone  https://github.com/fmtlib/fmt.git
cd fmt
mkdir build
cd build
cmake ..

make
sudo make install

再安装sophus,自己建立一个文件夹,在终端打开,然后:

git clone https://github.com/strasdat/Sophus.git
cd Sophus/
mkdir build
cd build
cmake ..

make
sudo make install

在这里强调!不要回滚git checkout a621ff,否则会装成老版本的非模板sophus(网上大多教程都有回滚)
千万不要回滚!!!!!
且强调
sudo make install一定要有。

最后测试,先看看这个目录下有没有sophus

slam的环境配置大全--保姆教学
(1)CMakeList.txt ( 同时加入eigen和sophus的依赖 )
cmake_minimum_required(VERSION 2.8)
project(useSophus)

find_package(Sophus REQUIRED)
include_directories(${Sophus_INCLUDE_DIRS})

include_directories("/usr/local/include/eigen3")
add_executable(useSophus useSophus.cpp)
target_link_libraries(useSophus ${Sophus_LIBRARIES} fmt)

注意,include_directories(“/usr/local/include/eigen3”) 一定是这个路径,而不是直接usr/include/eigen3,因为你自己编译安装的是在local下面。
(2)测试


using namespace std;
using namespace Eigen;

/// 只是导入头文件看看能不能成

int main()
{

}

3、安装Pangolin

Sophus和这个Pangolin必须在Eigen3.3.#的版本安装,如果装过建议重装。若和Eigen版本不对应则后边无法运行。
已安装的卸载:在Pangolin文件夹的build文件夹下打开终端,输入

sudo make uninstall

卸载。然后删除Pangolin文件夹,按照下文重新安装。

先安装两个必要依赖:

sudo apt install pkg-config python3-pip
sudo apt install libglew-dev

推荐依赖:python2、用于python和C++互相调用所需的库pybind11、图形库Pillow等其他python模块、Linux 新型显示服务架构Wayland

sudo apt install libpython2.7-dev
git submodule init && git submodule update
sudo python -mpip install numpy pyopengl Pillow pybind11
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

然后安装Pangolin,打开终端以下指令安装。
一定要安装0.5版本,默认下载就是0.6版本了。0.5版本安装包链接如下:
https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5

cd Pangolin
mkdir build
cd build
cmake ..

cmake --build .
sudo make install

4、安装Ceres-solver

先安装依赖:


sudo apt-get install libgoogle-glog-dev libgflags-dev

sudo apt-get install libatlas-base-dev

sudo apt-get install libsuitesparse-dev

然后去https://github.com/ceres-solver/ceres-solver下载安装包,点击网站页面的Code,选择Download zip即可下载。找到下载的文件夹,解压并在文件夹中打开终端,然后输入以下指令完成安装:

mkdir build && cd build
cmake ..

make -j3
make test
sudo make install

5、安装g2o

先安装依赖:

sudo apt-get install libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5

然后去https://github.com/RainerKuemmerle/g2o下载安装包,点击网站页面的Code,选择Download zip即可下载。找到下载的文件夹,解压并在文件夹中打开终端,然后输入以下指令完成安装:

mkdir build && cd build
cmake ..

make
sudo make install

6、安装opencv

(可以卸载完后参照我以前的博客:ubuntu安装opencv

首先先把以前的Opencv完全卸载:

进入原先编译opencv2的build目录,在该目录下打开终端;再执行以下代码。(注意如果build已经删除了,可以重新编译一遍该版本的opencv,然后在最后一步执行sudo make uninstall)

sudo make uninstall
cd ..

sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

代码执行后会报错,忽略掉

sudo apt-get --purge remove opencv-doc opencv-data python-opencv

用以下代码检查opencv是否卸载干净

pkg-config opencv --libs
pkg-config opencv --modversion

若仍能显出opencv的相关信息,则存在两种可能:
可能一:未卸载干净
执行以下代码

sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4

可能二:
库已经被删除,但系统里仍保留了配置文件
打开/usr/local/lib/pkgconfig文件夹,发现有一个opencv.pc,打开该文件,里面写有包含路径与库路径,确保包含路径与库路径均被清空后,删除该pc文件,重新执行pkg-config opencv –libs pkg-config opencv –modversion
显示下面这样就可

No package 'opencv' found

卸载完后安装:
首先安装依赖:

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev

然后去https://github.com/opencv/opencv/tree/3.4.12下载安装包,点击网站页面的Code,选择Download zip即可下载。找到下载的文件夹,解压并在文件夹中打开终端,然后输入以下指令完成安装:

mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

sudo make -j4
sudo make install

最后运行下边代码,结合我的截图理解:

sudo gedit /etc/ld.so.conf.d/opencv.conf
添加:
     /usr/local/lib
sudo ldconfig
sudo gedit /etc/bash.bashrc
添加:
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
source /etc/bash.bashrc
sudo updatedb

上边这一段代码的注释:安装好opencv后要告诉系统,安装好了,即首先运行sudo gedit/etc/ld.so.conf.d/opencv.conf,弹出一个文本编辑的小窗,在里边添加上/usr/local/lib即可,如下图

slam的环境配置大全--保姆教学

写好了运行sudo ldconfig,即加载上边写的那个。再运行sudo gedit /etc/bash.bashrc,弹出一个系统的环境变量文档,在最后加上:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

slam的环境配置大全--保姆教学

这两句话加上后用source /etc/bash.bashrc让其生效,然后sudo updatedb全部加载一下。

以上所有安装包和依赖就配置完成了。

slam的环境配置大全--保姆教学这个环境下可以完成大部分的slam开源项目,例如ORB_SLAM 2

安装ORB_SLAM 2

选择放置ORB_SLAM2工程的文件夹(如果需要在ROS环境下运行ORB_SLAM,最好将工程放在catkin_ws/src文件夹下),在该文件夹中打开终端,执行一下命令:

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

如过需要在ROS环境下运行ORB_SLAM,则需要执行一下命令:

chmod +x build_ros.sh
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
./build_ros.sh

如果机器性能较低,可以将build.sh文件和build_ros.sh文件中的命令make -j全部改为make

运行ORB_SLAM2

我们使用KITTI数据集中的数据运行ORB_SLAM2。KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测立体图像(stereo),光流(optical flow),视觉测距(visual odometry),3D物体检测(object detection)和3D跟踪(tracking)等计算机视觉技术在车载环境下的性能。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据,每张图像中最多达15辆车和30个行人,还有各种程度的遮挡与截断。整个数据集由389对立体图像和光流图,39.2 km视觉测距序列以及超过200k 3D标注物体的图像组成,以10Hz的频率采样及同步。

我们可以通过如下链接进行下载:http://www.cvlibs.net/datasets/kitti/eval_odometry.php
在ORB_SLAM2文件夹下打开终端,执行以下命令来运行程序:

./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER

KITTI数据集有多组数据,不同的数据集需要选择不同的配置文件。所以我们需要根据KITTI数据集中数据编号来修改以上命令。以KITTI中第00组数据为例,在终端输入一下命令:

./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml PATH_TO_DATASET_FOLDER/dataset/KITTI/sequences/01

其中PATH_TO_DATASET_FOLDER指KITTI数据集所在文件夹的路径。

运行之后效果如下图所示:

slam的环境配置大全--保姆教学

Original: https://blog.csdn.net/weixin_45947476/article/details/122606174
Author: running snail szj
Title: slam的环境配置大全–保姆教学

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/623525/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球