sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
sudo apt-get install libpng-dev
根据经验运行ORB——SLAM2,Pangolin不能太高,选择05版本,下载地址如下:
https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5
编译运行
cd Pangolin-0.5
mkdir build && cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j2
sudo make install
(没有使用make-j,使用了2个线程,避免系统卡死)
验证
cd ..
cd examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin
安装05版本遇到的问题,例如:
//1.error: ‘AV_PIX_FMT_XVMC_MPEG2_MC’ was not declared in this scope
/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In function ‘std::__cxx11::string pangolin::FfmpegFmtToString(AVPixelFormat)’:
/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:41:41: error: ‘AV_PIX_FMT_XVMC_MPEG2_MC’ was not declared in this scope
//2.error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
#define TEST_PIX_FMT_RETURN(fmt) case AV_PIX_FMT_##fmt: return #fmt; /home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In member
function ‘void
pangolin::FfmpegVideoOutputStream::WriteFrame(AVFrame*)’:
/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:572:39:
error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
if (recorder.oc->oformat->flags & AVFMT_RAWPICTURE) {
都可以参考如下帖子解决:
视觉SLAM十四讲 Ubuntu20.04 Pangolin 环境配置
可以通过一下命令来安装Eigen库。
sudo apt-get install libeigen3-dev
这里给出官方的地址
https://github.com/opencv/opencv/archive/3.4.5.zip
在终端下进入该文件夹
安装依赖
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
sudo apt install libcanberra-gtk-module libcanberra-gtk3-module
发现第一个命令就报错:
add-apt-repository: command not found
输入以下指令解决:
sudo apt-get install software-properties-common
sudo apt-get update
重新执行sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
,又报错 E: Failed to fetch
使用命令
sudo vim /etc/apt/sources.list
用下面替换全部内容(,替换了两次源,最后换成中科大的源,很成功!!!!)
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
(这是重写的内容,发现写的直接发表没有更新,码的几页全没了)
(第三次重写)
又重新尝试了 清华的源,但是反反复复的报各种错,最后发现这是一个大坑,切记无脑换源
先查看自己板卡是什么系统,如下:
bullseye/sid 2019年07月06日,Debian代号为“buster”发布Stable稳定版本,同日Debian代号为“bullseye”进入testing版本通道,2019年10月24日,Ubuntu20.04LTS建立代号“FocalFossa”,所以Ubuntu20.04LTS基于Debian代号为“bullseye”的Testing通道,而不是基于Unstable通道。
所以真正的问题在这里,我们之前使用中科大,阿里,清华的源,比如:
中科大 deb https://mirrors.ustc.edu.cn/archive.raspberrypi.org/ stretch main ui
清华 deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
默认官方源 deb http://archive.raspberrypi.org/debian/ stretch main ui
可以看到是stretch,而不是我们的bullseye/sid
这里给出了国内一些 bullseye/sid 依赖下载源
后面解决了证书信任等等问题,更新了证书,同时将deb中 https换为http,才将所有依赖下载成功
不过由于板子性能有限,在OpenCV编译过程中,SSH连接总是中断,只能开两个线程,但是又有点慢,这个还是比较难受的,可能也确实不太适合,毕竟这算是拿来测试极限性能了
另外板子只有4G,不确定我的ORB_SLAM整个项目上传后会不会崩,估计大大概率会崩,刚看了我的ORBslam2文件夹大小为500M,测试压力很大。
芯片当前的结温温度、CPU运行频率、BPU运行频率和BPU使用率
使用make -j
,温度直接飙到 60℃,最高约65℃并且SSH连接断开,应该是板子过载了
编译又是好几个小时的等待,枯萎ing
加持了小风扇,为了速度,重新调成了8线程,慢慢也能运行,不过目测未发挥出8线程实力,虽然是make -j8,但是速度感觉还是不太够。
终于编译成功!!!,功夫不负有心人,ORB——SLAM2 运行环境到这里配置完毕
cd ORB_SLAM2
chmod +x build.sh
./build.sh
报错
/usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
122 | static_assert(is_same<typename _Alloc::value_type, value_type>::value,
解决:
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
换为:
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;
接下来出现了
内存不足的问题出现C++: fatal error: Killed signal terminated program cc1plus导致编译中断
还是挺不容易的,既要解决调试环境遇到的bug,还要兼顾硬件性能
测试大概就到这里,因为比较慢,所以就不继续进行等待编译了