【算法】跑ORB-SLAM2遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)

文章目录

  • 一、Pangolin库的介绍和安装问题
    • 1、问题:Error: No preferred package managers from list [brew] found. Use -m to select manually.
    • 2、问题:"make: *** No rule to make target 'pypangolin_pip_install'. Stop."
  • 二、编译 ORB_SLAM2 遇到的问题
    • 1、问题:ROS环境编译报错double-check ROS_PACKAGE_PATH
    • 2、问题:Pangolin路径不对
    • 3、问题:eigen库时出现找不到文件
    • 4、问题:编译error: ‘slots_reference’ was not declared in this scope
    • 5、其他编译报错(跟g++/gcc、cmake、gl版本有关系)
  • 三、运行 ORB_SLAM2 效果展示

一、Pangolin库的介绍和安装问题

介绍
1、OpenGL显示/交互以及视频输入的一个轻量级、快速开发库

2、在计算机视觉领域中被广泛使用,作为一种删除特定于平台的样板文件并使数据易于可视化的方法

3、理念:通过简单的界面交互,而不是窗口视频,最大限度减少样板文件,最大限度提高可移植性和灵活性

4、提供:交互式调试的实用程序,如3D操作、绘图仪、调整变量,及用于python脚本和实时调整的的下拉式控制台。

5、主要特征:
(1)跨平台窗口:
为Windows、Linux、OSX和Web构建(使用Emscripten编译);
支持不同的窗口实现,包括屏幕外缓冲区
(2)视图管理和交互:
简单高效的视口管理;
直观的3D导航和处理程序;
使用Computer Vision & Robotics摄像头和坐标约定的实用程序
(3)视频输入和输出:
用于普通和机器视觉摄像头和媒体格式的广泛视频输入/输出包装;
灵活的过滤接口,便于对视频通道和格式等进行后期处理。
(4)调整变量:
有101个widgeting库和几个“tweak”变量库;
单行定义和可扩展类型
(5)下拉式控制台:
可扩展到不同的shell,但目前支持Python live console;
轻松访问内省调整变量

安装过程

安装过程参照Pangolin的github中的README流程来走,安装需要的工具、依赖项等。

安装链接:https://github.com/stevenlovegrove/Pangolin

PS:如果跑ORB-SLAM2、ORB-SLAM3不要用上边这个链接里边最新版的Pangolin进行编译安装,会导致error: ‘slots_reference’ was not declared in this scope或者cannot findind Eigen3.cmake,我就是安装了最新版然后编译ORB-SLAM2库的时候报了一大堆错,改环境跟代码花了一天时间都没有搞定,最后发现是这个问题,欲哭无泪www,所以建议安装Pangolin v0.5的版本。

安装链接:https://github.com/stevenlovegrove/Pangolin/tree/v0.5
参考链接:https://codingnote.cc/p/484790/

1、问题:Error: No preferred package managers from list [brew] found. Use -m to select manually.

运行./scripts/install_prerequisites.sh -m brew all时报错:

Error: No preferred package managers from list [brew] found. Use -m to select manually.

解决方法

1、运行:sudo apt install linuxbrew-wrapper

2、安装好wrapper包后就再运行sh文件后就可以下载了,一直Enter就可以自动安装所需的东东了,中间出error一般是网络不好的原因,重新运行apt install即可,所有包下载安装成功后就是这样
【算法】跑ORB-SLAM2遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)_第1张图片
3、接着按照Pangolin的github中的README流程走即可,配置构建,cmake编译即可

2、问题:“make: *** No rule to make target ‘pypangolin_pip_install’. Stop.”

运行cmake --build . --target pypangolin_pip_install时报错:
在这里插入图片描述
解决方法
1、从github的issue中查到原因是cmake版本太低,我cmake --version一看cmake版本只有3.10,而直接改动cmakefile中的python链接的话会提示“You cannot use the new FindPython module with CMake < 3.12”,所以此时需要把cmake版本升级到3.12以上
(貌似3.12还不够,我试了3.12的版本虽然有找到python但是还是没有pypangolin_pip_install的目标,所以得安装3.21版本)

安装过程:
(1)直接conda install cmake==3.21.2
(2)没法直接conda安装,则更新condaconda update conda,再试试
(3)实在不行再尝试以下方法
wget https://cmake.org/files/v3.21/cmake-3.21.2.tar.gz
tar zxvf cmake-3.21.2.tar.gz
sudo mv cmake-3.21.2 /opt/cmake-3.21.2
cd /opt/cmake-3.21.2
sudo ./bootstrap --prefix=/usr/local
sudo make && sudo make install
cmake --version
sudo ln -s /usr/local/bin/cmake /usr/bin
在这里插入图片描述
2、在Pangolin文件夹路径下,重新 Configure and build,再查看build/CMakeCache.txt可以看到他就可以找到python包了
mkdir build && cd build
cmake ..
cmake --build .

3、cmake成功后再运行:
cmake --build . --target pypangolin_pip_install

4、最后在build文件夹中sudo make install,安装Pangolin库

5、测试是否安装成功
(1)运行 ctest
【算法】跑ORB-SLAM2遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)_第2张图片
(2)运行HelloPangolin显示结果
cd examples/HelloPangolin # 从Pangolin文件夹进入测试文件夹
mkdir build && cd build && cmake .. && make # 创建编译文件夹并编译代码
./HelloPangolin # 运行即可看到显示结果
【算法】跑ORB-SLAM2遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)_第3张图片

二、编译 ORB_SLAM2 遇到的问题

1、问题:ROS环境编译报错double-check ROS_PACKAGE_PATH

ROS环境编译报错:

You should double-check your ROS_PACKAGE_PATH to ensure that packages are found in the correct precedence order. 
Call Stack (most recent call first): /opt/ros/melodic/share/ros/core/rosbuild/public.cmake:177 (_rosbuild_check_package_location) 
CMakeLists.txt:4 (rosbuild_init)

解决方法

(1)原因:很有可能是你以前编译过ORB_SLAM的ros包,然后再次编译就会可能路径不一样出错

(2)进入share目录,删除原来的ORB_SLAM2软连接(如果没有这个软连接,就直接进入第(3)步)
cd /opt/ros/melodic/share
sudo rm -r ORB_SLAM2

(3)对当前工程在/opt/ros/melodic/share目录下建立软连接
sudo ln -s /home/YOUR_FOLDER_PATH/ORB_SLAM2 /Examples/ROS/ORB_SLAM2 /opt/ros/melodic/share/ORB_SLAM2

2、问题:Pangolin路径不对

编译报错:Could not find a package configuration file provided by “Pangolin”

ubantu CMake Error at CMakeLists.txt:43 (find_package): By not providing “FindPangolin.cmake” in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by “Pangolin”, but CMake did not find one. 
Could not find a package configuration file provided by “Pangolin” with any of the following names: PangolinConfig.cmake pangolin-config.cmake 
Add the installation prefix of “Pangolin” to CMAKE_PREFIX_PATH or set “Pangolin_DIR” to a directory containing one of the above files. 
If “Pangolin” provides a separate development package or SDK, be sure it has been installed

解决方法

(1)在当前工程文件下打开CMakeLists.txt

(2)在find_package(Pangolin REQUIRED)后边添加
set(Pangolin_DIR /xxx/xxx/Pangolin/build/src)
其中xxx/xxx为缺少文件的路径。

3、问题:eigen库时出现找不到文件

编译报错:fatal error: Eigen/Core: No such file or directory

fatal error: Eigen/Core: No such file or directory
compilation terminated.

解决方法

(1)首先看看是否安装了eigen库,执行以下命令检查:
sudo updatedb
locate eigen3

(2)如果eigen库没有安装,执行安装:
sudo apt-get install libeigen3-dev

(3)如果eigen库已经安装,检查CMakelist文件是否包含了eigen库的头文件:
include_directories("/usr/include/eigen3")

(4)如果仍不成功,则需要链接对应文件,执行此命令是因为 eigen 库默认安装在了 /usr/include/eigen3/Eigen 路径下,需使用下面命令映射到 /usr/include 路径下。
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen

4、问题:编译error: ‘slots_reference’ was not declared in this scope

编译报错:error: ‘slots_reference’ was not declared in this scope

解决方法

(1)需要在cmakelist中更改编译器版本,从c++11->c++14:
sed -i 's/++11/++14/g' CMakeLists.txt

5、其他编译报错(跟g++/gcc、cmake、gl版本有关系)

编译时报的一堆奇奇怪怪的代码错误:
【算法】跑ORB-SLAM2遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)_第4张图片
解决方法

(1)进入/usr/local/include/pangolin/gl/glsl.h及gl.hpp文件中,修改文件权限为可写:
chmod 777 glsl.h && gl.hpp # user、group、other三个用户都能读取,写入,执行文件

(2)根据对应报错更改里边的函数,比如上图glShaderStorageBlockBinding更改为它标绿的建议SetShaderStorageBlock,这些报错是因为版本原因,函数名更改了,再运行就没有报错了

三、运行 ORB_SLAM2 效果展示

我的服务器环境还是报错,还是没跑通,枯了,以后跑通了再放上来/(ㄒoㄒ)/…
【算法】跑ORB-SLAM2遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)_第5张图片
终于发现问题了,是Pangolin版本问题,导致的build.sh编译过程中的各种bug,改用Pangolin v0.5的版本,就直接测试ORB-SLAM3了,效果在ORB-SLAM3的博客中,链接如下:

https://blog.csdn.net/BigHandsome2020/article/details/123458612

你可能感兴趣的:(代码项目,人工智能,自动驾驶,算法)