赞
踩
mac M1 pro
parallels
Ubuntu 20.04.2(x86 emulation))
cmake 3.23.2
opencv 4.5.5
pangolin 0.6
boost 1.79
ORBslam 1.0 -2021
realsense 2
sudo apt-get install git
sudo apt install g++
sudo apt install libpython2.7-dev
下载地址
安装对应版本
一般放在住文件夹下面的opt文件夹
解压下载好的cmake 并进入其文件夹中
建立软连接
需要用到权限sudo;参数-s表示软连接:即会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间
sudo ln -sf /opt/cmake3.23.2/bin/* /usr/bin/
配置环境变量
打开并编辑文件
gedit ~/.bashrc
行末加上完整的路径
export PATH=/home/zgj/opt/cmake-3.23.2/bin:$PATH
更新 bashrc
source ~/.bashrc
source --version
方法一:使用命令安装
此方法可能会报错(有坑)
sudo apt-get install libeigen3-dev
如果需要卸载:
sudo apt --purge remove libeigen3-dev
方法二:使用源码编译安装:
下载链接: https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
cd eigen-3.3.7
mkdir build && cd build
sudo cmake ..
sudo make install
注意: 安装后需要移动头文件
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
查看当前版本
pkg-config --modversion eigen3
删除 eigen3 相关文件
查看eigen3位置
sudo updatedb
locate eigen3
删除eigen3相关文件
sudo rm -rf /usr/include/eigen3
sudo rm -rf /usr/lib/cmake/eigen3
sudo rm -rf /usr/local/include/eigen3
sudo rm -rf /usr/local/lib/cmake/eigen3
sudo rm -rf /usr/share/doc/libeigen3-dev
sudo rm -rf /usr/local/share/pkgconfig/eigen3.pc /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
sudo rm -rf /usr/local/lib/pkgconfig/eigen3.pc
sudo rm -rf /usr/local/share/eigen3
刷新查看是否删除彻底
sudo updatedb
locate eigen3
pkg-config --modversion eigen3
查看 eigen3 是否成功安装以及版本
应该有文件夹 /usr/include/eigen3
,否则没有成功安装;编译orb_slam3时会出现很多错误
cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h
或者
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
我选择是opencv4.5.5
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt install python3-dev python3-numpy
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev
从官网下载源码:链接。注意下载source源码
下载完成后解压到主目录中,重新命名 opencv
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
make -j16
sudo make install
opencv 安装成功后需要查看目录下 /usr/local/lib/pkgconfig/opencv4.pc
此文件
推荐: 复制此文件并重命名为 opencv.pc
不更改会查询失败,但是改后后边编译还是有问题,所以直接复制
sudo gedit /etc/profile.d/pkgconfig.sh
在最后一行输入,并保存
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
查看依赖
pkg-config --libs opencv4
pkg-config --libs opencv
sudo gedit /etc/ld.so.conf.d/opencv4.conf
在文件末尾加上:/usr/local/lib
sudo ldconfig
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
echo $PKG_CONFIG_PATH
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存后,更新配置
source /etc/bash.bashrc
sudo updatedb
查看版本号:
pkg-config --modversion opencv
cd到 opencv 主文件/samples/cpp/example_make 目录下
以此执行:
cmake .
make
./opencv_example
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
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
安装 V0.6 版本
https://github.com/stevenlovegrove/Pangolin/tree/v0.6
cd Pangolin
mkdir build && cd build
cmake ..
make -j4
sudo make install
cd examples/HelloPangolin
cmake .
make
./HelloPangolin
如果出现 error 大概率版本高,请安装 06 版本
Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
sudo apt install doxygen
sudo apt install libboost-dev libboost-serialization-dev
官网下载boost: 链接
下载版本为:boost_1_79_0.tar.gz
下载解压提取到主目录; 在解压后的文件夹下打开终端,执行以下指令:
sudo ./bootstrap.sh
sudo ./b2 install
sudo apt-get install libcanberra-gtk-module
sudo apt-get install libssl-dev
在对应的文件夹(home/ORBSLAM3/ThirdPart/DBow2)执行
mkdir build
cd build
cmake ..
make -j4
安装依赖
sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3
下载安装
下载
https://github.com/RainerKuemmerle/g2o
安装
进入目录
mkdir build
cd build
cmake ..
make -j4
sudo make install
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
进入ceres目录
mkdir build
cd build
cmake ..
make -j4
sudo make install
注册public key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
sudo apt install librealsense2-dkms librealsense2-utils librealsense2-dev
mkdir build
cd build
cmake ..
make
sudo make install
git clone https://github.com/strasdat/Sophus.git
cd Sophus/
mkdir build
cd build
cmake ..
make
sudo make install
sudo apt-get install libssl-dev
从 GitHub 下载源码
下载
解压到主目录,重命名
cd ORB_SLAM3
sudo chmod +x build.sh
sudo ./build.sh
进入 ORBLSAM 主文件中
找到 build.sh
主文件推荐更改为:
如果核心多可以更改 make -j[?] ?为并发编译,推荐为 4
下面文件一步一步执行,看出错在哪
echo "Configuring and building Thirdparty/DBoW2 ..."
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j2
cd ../../g2o
echo "Configuring and building Thirdparty/g2o ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j2
cd ../../Sophus
echo "Configuring and building Thirdparty/Sophus ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j2
cd ../../../
echo "Uncompress vocabulary ..."
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..
echo "Configuring and building ORB_SLAM3 ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH_01_easy ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
打开 mono_euroc.cc
第 83 行,将"false"改为"true"
改完重新编译 ORB_SLAM3
cd ORB_SLAM3
sudo chmod +x build.sh
sudo ./build.sh
运行 ./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH_01_easy ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
更改 make -j[?] , ?改想并发的线路,推荐 4 、 8
在 System.cc
和Viewer.cc
中添加 #include<unisted.h>
解决方法:
把incloud中LoopClosing.h中的
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++版本之间存在区别。在C++11版里已经没有momotonic_clock了,有steady_clock作为替代。所以orb-slam2的作者在代码中使用了ifdef来判断用户的C++版本。对应路径下的文件需处理的代码段如下
#ifdef COMPILEDWITHC11
std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
#else
std::chrono::monotonic_clock::time_point t1 = std::chrono::monotonic_clock::now();
#endif
//Pass the image to the SLAM system
SLAM.TrackMonocular(im,tframe);
#ifdef COMPILEDWITHC11
std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();
#else
std::chrono::monotonic_clock::time_point t2 = std::chrono::monotonic_clock::now();
#endif
如果你这部分报错了,大概率你的C++是11版本,那么我们其实可以删掉这部分判断语句,只保留如下部分。
std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
//Pass the image to the SLAM system
SLAM.TrackMonocular(im,tframe);
std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();
//......
这部分就行,把monotonic_clock的代码删掉之后就能正常编译了!
问题为:
/usr/bin/ld: cannot find -lEigen3::Eigen
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/joinMap.dir/build.make:102: joinMap] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/joinMap.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
解决方法:
CMakeLists.txt中添加
#添加红色语句
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
#编译报错再添加如下语句
include(FindEigen3.cmake)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。