0.注意啊啊啊啊啊啊啊
系统:Ubuntu 18.04 (安装系统后一定要换成国内的阿里源啊啊啊啊啊)
1.最先装Eigen否则会报找不到Eigen的error
#解压缩安装包
#安装
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install
#安装完成后,移动头文件(因为经常使用#include <Eigen/Dense>而不是使用#include<eigen3/Eigen/Dense>,所以要做下处理。)
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
2.Pangolin要安装v0.5版本
(https://github.com/stevenlovegrove/Pangolin)找0.5版本
Pangolin版本高会报"error: ‘slots_reference’ was not declared in this scope",目前网上有两种解决方案:1.降为v0.5版本。2.将c++11升级到c++14或17。
昼行大佬的解答
BigHandsome2020大佬的解答
理论上需要先卸载旧库再装新库,因为本人之前在安装PCL库时使用sudo apt-get install libpcl-dev pcl-tools 命令可能顺带安装了高版本的Pangolin库,无法按照"进入Pangolin文件夹的build里边,执行sudo make uninstall"进行卸载,遂尝试不管旧版直接按照顺序进行安装,结果成功。
#安装依赖项
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev
#安装Pangolin
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOSR=1 ..
make -j
#一定不要省略下面的步骤(否则#include时找不到pangolin)
#否则无法在/usr/local/include/ 看到pangolin文件夹
sudo make install
3.std::map must have the same value_type as its allocator
#将 ~/ORB_SLAM2/include/LoopClosing.h::49 处的
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;
4.‘usleep’ was not declared in this scope
#将头文件“#include<unistd.h>”添加到下列文件中
~/ORB_SLAM2/Examples/Monocular/mono_euroc.cc
~/ORB_SLAM2/Examples/Monocular/mono_kitti.cc
~/ORB_SLAM2/Examples/Monocular/mono_tum.cc
~/ORB_SLAM2/Examples/RGB-D/rgbd_tum.cc
~/ORB_SLAM2/Examples/Stereo/stereo_euroc.cc
~/ORB_SLAM2/Examples/Stereo/stereo_kitti.cc
~/ORB_SLAM2/src/LocalMapping.cc
~/ORB_SLAM2/src/LoopClosing.cc
~/ORB_SLAM2/src/System.cc
~/ORB_SLAM2/src/Tracking.cc
~/ORB_SLAM2/src/Viewer.cc