Ubuntu20.04 编译XTDrone的ORB-SLAM3全过程及解决报错++++VINS编译及报错解决


依赖及ORB-SLAM3下载

参考下面博主安装
https://blog.csdn.net/holly_Z_P_F/article/details/118031317

报错解决

各种类似于下面的报错

/usr/local/include/sigslot/signal.hpp:109:79: error: ‘decay_t’ is not
a member of ‘std’; did you mea

最后编译ORB-SLAM3报错为

CMakeFiles/ORB_SLAM3.dir/build.make: Tracking.cc.o] 错误 1

解决方法

== 打开ORB_SLAM3主文件下的CMakeLists.txt==


cmake_minimum_required(VERSION 2.8) project(ORB_SLAM3) 下添加

set(CMAKE_CXX_STANDARD 14)

报错2

CMake Error at CMakeLists.txt:91 (ADD_LIBRARY): Cannot find source
file:

g2o/stuff/timeutil.cpp

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++
.hm .hpp .hxx .in .txx

CMake Error at CMakeLists.txt:91 (ADD_LIBRARY): No SOURCES given to
target: g2o

解决

XTDrone中缺少g2o/stuff/timeutil.h和g2o/stuff/timeutil.cpp。
需要自己官网下载ORB_SLAM3,从中复制粘贴到XTDrone中

下载地址(git%20clone%20https://github.com/UZ-SLAMLab/ORB_SLAM3.git%20ORB_SLAM3)

报错3

Could not find a configuration file for package “OpenCV” that is
compatible with requested version “3.2”.

The following configuration files were considered but not accepted:

/usr/local/lib/cmake/opencv4/OpenCVConfig.cmake, version: 4.5.0
/usr/lib/x86_64-linux-gnu/cmake/opencv4/OpenCVConfig.cmake, version: 4.2.0
/lib/x86_64-linux-gnu/cmake/opencv4/OpenCVConfig.cmake, version: 4.2.0

CMake Error at CMakeLists.txt:35 (message): OpenCV >= 3.2 not found.

解决

在ORB_SLAM3下的CMakeLists.txt中修改find_package(OpenCV 3.2)为find_package(OpenCV 4.5.0)

报错4 编译 ORB SLAM2 找不到 libDBoW2.so / libg2o.so

解决

XTDrone中ORB_SLAM3/Thirdparty/DBoW2中缺少lib文件夹
需要自己官网下载ORB_SLAM3,从中复制粘贴到XTDrone中

下载地址(git%20clone%20https://github.com/UZ-SLAMLab/ORB_SLAM3.git%20ORB_SLAM3)

报错五 No module named rospkg

[rosbuild] Building package ORB_SLAM3
[rosbuild] Error from syntax check of ORB_SLAM3/manifest.xml
Traceback (most recent call last):
File “”, line 1, in
File “/opt/ros/noetic/lib/python3/dist-packages/roslib/init.py”, line 50, in
from roslib.launcher import load_manifest # noqa: F401
File “/opt/ros/noetic/lib/python3/dist-packages/roslib/launcher.py”, line 42, in
import rospkg
ImportError: No module named rospkg
CMake Error at /opt/ros/noetic/share/ros/core/rosbuild/private.cmake:77 (message):
[rosbuild] Syntax check of ORB_SLAM3/manifest.xml failed; aborting
Call Stack (most recent call first):
/opt/ros/noetic/share/ros/core/rosbuild/public.cmake:174 (_rosbuild_check_manifest)
CMakeLists.txt:4 (rosbuild_init)

解决

  1. 查看已安装的python版本
 ls /usr/bin/python*
  1. 查看系统中是否有python配置选项
 sudo update-alternatives --list python

没有添加过配置选项的话会显示update-alternatives错误
在这里插入图片描述
配置过的话会显示下图的内容

在这里插入图片描述

  1. 第1步中看到了系统有python2和python3两个版本,下面配置python选项
 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

在这里插入图片描述

  1. python版本切换
    先来查看下目前使用的python版本
python --version

在这里插入图片描述

发现是pyhon2

下面来切换python版本

sudo update-alternatives --config python

根据提示选择 python3

在这里插入图片描述

最后验证下
在这里插入图片描述

警告

/usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5
/usr/bin/ld: warning: libopencv_imgproc.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.4.5
/usr/bin/ld: warning: libopencv_core.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_core.so.4.5
/usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5

解决

ORB_SLAM3/Examples/ROS/ORB_SLAM3中的find_package(OpenCV 4.5 QUIET)
改成find_package(OpenCV 4.2QUIET)

解决完之后运行scripts下.sh文件出现如下报错

Input sensor was set to: Stereo
Failed to open settings file at: /home/khs/catkin_ws/src/ORB_SLAM3/Examples_old/Stereo/px4_sitl.yaml

解决

需要的注意的是需要改scripts/下的.sh文件下的路径

Ubuntu20.04下运行VINS系列:VINS-Mono、VINS-Fusion

参考下面博客:https://blog.csdn.net/zardforever123/article/details/129042974

猜你喜欢

转载自blog.csdn.net/cherish1211/article/details/130277848