PL-SLAM安装
预备
sudo apt-get install libboost-regex-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libeigen3-dev libboost-dev libyaml-cpp-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5 build-essential pkg-config libdc1394-22-dev libjpeg-dev libftdi-dev freeglut3-dev zlib1g-dev libusb-1.0-0-dev libudev-dev libfreenect-dev libavformat-dev libswscale-dev libassimp-dev libgtest-dev libpcap-dev cmake git gcc g++ make zip libgtk2.0-dev libwxgtk3.0-dev-y
OpenCV
官网:https://opencv.org/releases/
下载3.4.0版本的sources
cd ~/code && curl -L -o opencv-3.4.0.zip https://github.com/opencv/opencv/archive/3.4.0.zip && unzip opencv-3.4.0.zip
curl -L -o opencv_contrib-3.4.0.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip && unzip opencv_contrib-3.4.0.zip && cd opencv-3.4.0
mkdir build && cd build && cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/code/opencv_contrib-3.4.0/modules -D WITH_GTK=ON -D WITH_GTK_2_X=ON -DBUILD_opencv_legacy=OFF ..
make -j$(nproc) && sudo make install
配置环境
#添加OpenCV库路径到系统动态链接库配置文件
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
#更新系统动态链接库
sudo ldconfig
如果sudo ldconfig 报错libcuda.so.1 is not a symbolic link,参考这个
# 编辑Bash配置文件
sudo nano /etc/bash.bashrc
# 在配置文件中末尾添加PKG_CONFIG_PATH变量
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
wsl里执行更新locate数据库比较慢
sudo nano /etc/updatedb.conf
# 找到PRUNEPATHS行,添加/mnt
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /mnt"
```
# 重新加载Bash配置
source /etc/bash.bashrc
# 更新locate数据库
sudo updatedb
# 检查安装的OpenCV版本
pkg-config --modversion opencv
g2O
cd ~/code && git clone --branch 20160424_git https://github.com/RainerKuemmerle/g2o.git && cd g2o
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j$(nproc) && sudo make install
mrpt
cd ~/code && git clone https://github.com/MRPT/mrpt.git && cd mrpt && git checkout 0c3d605c3cbf5f2ffb8137089e43ebdae5a55de3
```
//在reactive_navigator_demoMain.h文件中加入
nano apps/ReactiveNavigationDemo/reactive_navigator_demoMain.cpp
#ifndef wxTE_AUTO_SCROLL
#define wxTE_AUTO_SCROLL 0
#endif
```
# GCC版本过高导致安装报错,我们需要修改一个文件
nano cmakemodules/script_detect_gcc.cmake
# dumpversion替换为dumpfullversion,可以使用ctrl+w搜索
```
nano libs/base/include/mrpt/math/matrix_adaptors.h
# 将507行的howMany()改为howMany,可以使用ctrl+shift+-跳转到指定行
```
mkdir build && cd build && cmake ..
make -j$(nproc) && sudo make install
stvo-pl
cd ~/code && git clone https://github.com/rubengooj/stvo-pl.git && cd stvo-pl && chmod +x build.sh
我们需要修改一个文件在前面加入万能的头文件
nano src/stereoFrameHandler.cpp
#include<bits/stdc++.h>
```
nano /root/code/stvo-pl/CmakeList.txt
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -mtune=native -march=native")
修改为
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -mtune=native")
```
nano /root/code/stvo-pl/src/sceneRepresentation.cpp
//v_aux_ = v_aux;
//obj->setLineCoords(v_aux_(0),v_aux_(1),v_aux_(2), v_aux(0),v_aux(1),v_aux(2));
```
./build.sh
PL-SLAM
cd ~/code && git clone https://github.com/rubengooj/pl-slam.git && cd pl-slam && chmod +x build.sh
修改CmakeList.txt文件,在find_package(G2O REQUIRED) 之前添加以下俩条语句
list( APPEND CMAKE_MODULE_PATH /root/code/g2o/cmake_modules )
set(G2O_ROOT /usr/local/include/g2o)
现在添加一个链接
cd /usr/local/lib && sudo ln -sv libg2o_csparse_extension.so libg2o_ext_csparse.so
之后回到文件目录下进行安装
cd ~/code/pl-slam && ./build.sh
运行数据集
# 复制参数文件到数据集的目录并重命名
cp ~/code/pl-slam/config/dataset_params/kitti00-02.yaml ~/dataset/KITTI/sequences/00/dataset_params.yaml
# 修改KITTI子文件名称
nano ~/dataset/KITTI/sequences/00/dataset_params.yaml
# 修改配置文件
nano ~/code/pl-slam/config/config/config_kitti.yaml
```
# 找到Loop closure,修改为下面
vocabulary_p : "/root/code/pl-slam/vocabulary/mapir_orb.yml"
vocabulary_l : "/root/code/pl-slam/vocabulary/mapir_lsd.yml"
```
# 运行数据集
# -o设置偏移量,即跳过数据集中的前几帧,-o 100(跳过前100帧)
# -s设置帧跳跃参数,处理每隔多少帧处理一次,-s 1(默认值,每帧都处理)
# -n设置处理的帧数,-n 1000(处理前1000帧)
#./plslam_dataset /root/dataset/KITTI/sequences/00 -c /root/code/pl-slam/config/config/config_kitti.yaml -o 100 -s 1 -n 1000
cd ~/code/pl-slam/build && export DATASETS_DIR=/root/dataset && ./plslam_dataset /KITTI/sequences/00 -c /root/code/pl-slam/config/config/config_kitti.yaml -o 100
评论区