介绍
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/
运行./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即可,所有包下载安装成功后就是这样
3、接着按照Pangolin的github中的README流程走即可,配置构建,cmake编译即可
运行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
(2)运行HelloPangolin显示结果
cd examples/HelloPangolin
# 从Pangolin文件夹进入测试文件夹
mkdir build && cd build && cmake .. && make
# 创建编译文件夹并编译代码
./HelloPangolin
# 运行即可看到显示结果
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
编译报错: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为缺少文件的路径。
编译报错: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
编译报错:error: ‘slots_reference’ was not declared in this scope
解决方法
(1)需要在cmakelist中更改编译器版本,从c++11->c++14:
sed -i 's/++11/++14/g' CMakeLists.txt
(1)进入/usr/local/include/pangolin/gl/glsl.h及gl.hpp文件中,修改文件权限为可写:
chmod 777 glsl.h && gl.hpp
# user、group、other三个用户都能读取,写入,执行文件
(2)根据对应报错更改里边的函数,比如上图glShaderStorageBlockBinding更改为它标绿的建议SetShaderStorageBlock,这些报错是因为版本原因,函数名更改了,再运行就没有报错了
我的服务器环境还是报错,还是没跑通,枯了,以后跑通了再放上来/(ㄒoㄒ)/…
终于发现问题了,是Pangolin版本问题,导致的build.sh编译过程中的各种bug,改用Pangolin v0.5的版本,就直接测试ORB-SLAM3了,效果在ORB-SLAM3的博客中,链接如下:
https://blog.csdn.net/BigHandsome2020/article/details/123458612