ORB SLAM2 on Xavier

环境配置


Pangolin

Pangolin是一个面向OpenGL显示、交互的轻度开发库。

必要依赖

  • 下载源码
git clone https://github.com/stevenlovegrove/Pangolin.git
  • 安装OpenGl

    sudo apt install libgl1-mesa-dev
  • Glew

    sudo apt install libglew-dev
  • CMake

    sudo apt install cmake

推荐依赖

  • Python2 / Python3 (自带了)
  • Wayland

    sudo apt install pkg-config
    sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

    出了个问题,就是libxkbcommon-dev安装的时候需要libxkbcommon0的版本为0.5.0,但是已经安装了0.8.0。解决办法就是把libxkbcommon0先卸载了...再安装libxkbcommon-dev

可选依赖

  • FFMPEG

    sudo apt install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
  • 图片支持

    sudo apt install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev

Building

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .

Pangolin


OpenCV

最新版的Jetpack刷机过程中已经贴心的帮助你安装了OpenCV,不过安装完之后我并没有找到它的位置。先确定一下到底有没有安装上吧。

pkg-config --modversion opencv
# 返回输出 3.3.1

已经有OpenCV 3.3版本了,nice。

sudo find / -iname "*opencv*"    # 查看下OpenCV位置

发现在/usr/lib里。


Eigen

下载地址 千万别下最新的3.3版本,后面会吃一堆💩

真正的下载地址

解压

tar -jxvf eigen-eigen-323c052e1731.tar.bz2

这东西挺神秘的,不用安装,只需要它的头文件在所需编译的项目里。但是在Linux下,可以直接把Eigen的文件夹copy到/usr/local/include。

sudo mv eigen-eigen-5a0156e40feb /usr/local/include/eigen3

不过还有一件事,直接编译会提示找不到<Eigen/Dense>。 在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>所以要做下处理,否则一些程序在编译时会因找不到Eigen/Dense而报错。

所以我们把eigen3里面的Eigen文件夹复制出来。

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include 

这里有个官方的测试程序

#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
  MatrixXd m(2,2);
  m(0,0) = 3;
  m(1,0) = 2.5;
  m(0,1) = -1;
  m(1,1) = m(1,0) + m(0,1);
  std::cout << m << std::endl;
}

测试一下能否编译

g++ my_program.cpp -o my_program

O98K

eigen


Build ORB-SLAM 的库和例子

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

build

淦失败了

error

搜了一下issue,推荐下载3.2版本的Eigen,或者把./include/System.h加上include <unistd.h>,还得重新编译,我真是🌿了,你不早说。我之前都在干什么。就在我喷到一半的时候我发现它继续编译下去了。看来忽视这个warning就行了。

不行,淦还是装3.2吧。

3.2

报了很多warning,不过最后build过了。

测试Example

我使用RGB-D的例子进行测试

下载TUM的Dataset

解压,并且使用associate.py将数据的rgb与深度信息结合起来得到associations.txt

python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt

associations.txt

执行下面这条命令,把TUMX.yaml改成TUM1.yaml(对应你freiburg1的dataset,如果下载的是freiburgx,就替换成对应的)

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE

例如

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ../rgbd_dataset_freiburg1_xyz ../associations.txt

Demo跑通了,我哭了。

final

Last modification:November 17, 2019
恰饭环节