Ubuntu18.04从0安装ORB_SLAM3以及记录遇到的问题

Ubuntu18.04从0安装ORB_SLAM3以及记录遇到的问题

ROS-melodic

一键安装ROS,需要在属性里面给fishros.sh文件设置运行权限

wget http://fishros.com/install -O fishros
sudo ./fishros

安装依赖

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

Pangolin

下载地址:https://github.com/stevenlovegrove/Pangolin.git

最好安装0.5版本的:Release v0.5 · stevenlovegrove/Pangolin (github.com)

cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
sudo make install

Eigen3.2.1

下载地址:Releases · libeigen / eigen · GitLab

mkdir build
cd build
cmake .. 
sudo make install
sudo ln -s /usr/local/include/eigen3 /usr/include/eigen3

OpenCv3.2.0

下载地址:https://github.com/opencv/opencv/releases/tag/3.2.0

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. -DENABLE_PRECOMPILED_HEADERS=OFF
//编译中遇到问题,把ippicv_linux_20151201.tgz替换到opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e文件下
之后再cmake一下
sudo make
sudo make install
//配置环境
sudo gedit /etc/ld.so.conf.d/opencv.conf
文末添加
/usr/local/lib
sudo ldconfig
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

Boost

下载地址:https://www.boost.org/users/download/

tar -xvf boost_1_77_0.tar.gz
cd ./boost_1_77_0
./bootstrap.sh
sudo ./b2 install

ORB_SLAM3

下载地址:UZ-SLAMLab/ORB_SLAM3: ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM (github.com)

安装依赖

确保这些都安装上

sudo apt install libboost-filesystem-dev
sudo apt-get install libssl-dev
sudo apt install libboost-all-dev

遇到问题

1.orb_slam3运行视图

把ORB_SLAM3/Examples/Monocular中的mono_euroc.cc中第83行的函数第四个参数中的false改为true

ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, true);
2.版本号更改

把ORB_SLAM3文件夹下的CMakeLists.txt中opencv和eigen的版本换一下,Thirdparty/g2o中也有一个CMakeLists一同修改

3.隐去未使用定义变量的警告

把CMakeLists.txt中-Wall后面加一个-w,添加c++14的编译选择

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall -w  -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -w  -O3")
add_compile_options(-std=c++14)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=native")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native")
4.内存不足

报错:c++: internal compiler ereor: killed(program cciplus)

添加一个交换空间,我之前加的4G的好像还是运行错误,直接加了8G

sudo swapoff -a 
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
sudo mkswap /swapfile
sudo swapon /swapfile
最后启动的时候可能会遇到错误:swapon: /swapfile: insecure permissions 0644, 0600 suggested.
sudo chmod -R 600 swapfile
//关闭删除交换空间
sudo swapoff /swapfile
sudo rm /swapfile
5.修改ros—slam3可能报错的地方

在编译ROS——ORB_SLAM3时,需要改一些代码

找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ros_mono_ar.cc文件:

cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());

改为

cv::Mat Tcw;
 Sophus::SE3f  Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
 Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
 cv::eigen2cv(Tcw_Matrix, Tcw);

找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ViewerAR.cc文件

vPoints.push_back(pMP->GetWorldPos());

改为

cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);

cv::Mat Xw = pMP->GetWorldPos();

改为

cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);

编译ORB_SLAM3

cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j


cd ../../g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../Sophus
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j


cd ../../../
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

运行样例

数据集

下载:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

下载Machine Hall 01数据

下载完解压到MH01文件夹,注意MH01文件夹下面是mav0

运行脚本和修改代码

下载euroc_examples.sh脚本,放到Example文件夹下面

下载地址:ORB_SLAM3/euroc_examples.sh at master · yuantao15/ORB_SLAM3 (github.com)

将pathDatasetEuroc=后面放上MH01的上级文件夹,注意是相对路径

我的MH01的绝对路径是/home/orbslam3/workspace/ORB_SLAM3/Examples/Datasets/EuRoC/MH01

所以应该加上./Datasets/EuRoC

之后就可以运行了。

./euroc_examples.sh
或者
./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml ./Datasets/EuRoC/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono

运行截图

ORB_SLAM3-ROS编译

遇到问题

1.修改环境变量

把
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples_old/ROS
//path需要补全为绝对路径
加到~/.bashrc最后一行
sudo gedit ~/.bashrc
source ~/.bashrc

2.CMakelist修改

到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3下的CMakeLists.txt,找到include_directories并添加 ${PROJECT_SOURCE_DIR}/…/…/…/Thirdparty/Sophus

include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include
${PROJECT_SOURCE_DIR}/../../../include/CameraModels
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
${Pangolin_INCLUDE_DIRS}
)

同时修改eigen和opencv的版本号

编译ROS

cd Examples/ROS/ORB_SLAM3
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j

运行样例

数据集

下载:http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

下载ROS bag数据集

启动

1.roscore
roscore
2.Stereo节点启动
rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples_old/Stereo/EuRoC.yaml true
3.启动rosbag
rosbag play --pause MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu

运行效果和上面的是一样的。

实际运行

如果运行相机节点的话,需要修改asus.yaml中的相机内参配置,并且修改对应.cc文件中的订阅节点。还没实现,后面再来更新。

参考

基于ubuntu18.04的ORB_SLAM3安装 (qq.com)

(22条消息) Ubuntu18.04安装Ros(最新最详细亲测)_向日葵骑士Faraday的博客-CSDN博客_ubuntu18.04安装ros

(22条消息) ubuntu18.04配置ORB-SLAM3(包含ROS)完整版教程_黄宏智的博客-CSDN博客_orbslam3 ros

你可能感兴趣的:(ORB_SLAM3,git,linux,ubuntu)