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 .
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
Build ORB-SLAM 的库和例子
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh
淦失败了
搜了一下issue,推荐下载3.2版本的Eigen,或者把./include/System.h
加上include <unistd.h>
,还得重新编译,我真是🌿了,你不早说。我之前都在干什么。就在我喷到一半的时候我发现它继续编译下去了。看来忽视这个warning就行了。
不行,淦还是装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
执行下面这条命令,把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跑通了,我哭了。