尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

视觉SLAM十四讲实践:Pangolin在Ubuntu20上的完整安装与验证流程

视觉SLAM十四讲实践:Pangolin在Ubuntu20上的完整安装与验证流程 视觉SLAM十四讲实践Pangolin在Ubuntu20上的完整安装与验证流程在计算机视觉和机器人领域SLAMSimultaneous Localization and Mapping技术扮演着至关重要的角色。《视觉SLAM十四讲》作为该领域的经典教材为学习者提供了系统的理论知识和实践指导。其中Pangolin作为一个轻量级的3D可视化库在SLAM系统的开发和调试过程中发挥着不可替代的作用。本文将详细介绍在Ubuntu 20.04系统上安装和验证Pangolin的完整流程帮助读者顺利搭建开发环境。1. 环境准备与依赖安装在开始安装Pangolin之前我们需要确保系统具备所有必要的依赖项。Ubuntu 20.04作为长期支持版本为开发工作提供了稳定的基础环境。以下是详细的准备工作首先更新系统软件包列表并升级现有软件sudo apt update sudo apt upgrade -y接下来安装Pangolin的核心依赖项这些库将支持其3D可视化功能sudo apt install -y libglew-dev cmake libpython2.7-dev \ libwayland-dev libxkbcommon-dev wayland-protocols \ libegl1-mesa-dev libxrandr-dev libxinerama-dev \ libxcursor-dev libxi-dev对于OpenGL的支持还需要安装以下额外组件sudo apt install -y libjpeg-dev libpng-dev libtiff5-dev \ libavcodec-dev libavformat-dev libswscale-dev \ libv4l-dev libxvidcore-dev libx264-dev提示如果系统中有多个Python版本建议使用update-alternatives配置默认Python版本避免编译时出现兼容性问题。验证OpenGL环境是否正常工作glxinfo | grep OpenGL version该命令应返回当前系统的OpenGL版本信息确认图形驱动已正确安装。2. Pangolin源码获取与编译Pangolin的官方仓库托管在GitHub上我们可以直接克隆最新版本进行编译安装。以下是详细步骤首先创建并进入工作目录mkdir -p ~/slam_ws/src cd ~/slam_ws/src克隆Pangolin源码仓库推荐使用最新稳定版本git clone --recursive https://github.com/stevenlovegrove/Pangolin.git注意--recursive参数确保同时获取所有子模块这对编译成功至关重要。进入源码目录并创建构建文件夹cd Pangolin mkdir build cd build配置编译选项。这里我们启用所有推荐功能同时指定安装路径cmake .. -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/usr/local \ -DBUILD_EXAMPLESON \ -DBUILD_TESTSOFF \ -DBUILD_PANGOLIN_PYTHONON关键配置参数说明参数说明推荐值CMAKE_BUILD_TYPE构建类型ReleaseBUILD_EXAMPLES编译示例程序ONBUILD_PANGOLIN_PYTHONPython绑定支持ONBUILD_PANGOLIN_LIBREALSENSERealSense支持OFF(默认)开始编译过程使用多核加速make -j$(nproc)编译完成后进行系统安装sudo make install更新动态链接库缓存sudo ldconfig3. 安装验证与示例运行成功安装后我们需要验证Pangolin是否正常工作。最简单的方法是运行其自带的示例程序。首先进入示例程序目录cd ~/slam_ws/src/Pangolin/build/examples/HelloPangolin运行HelloPangolin示例./HelloPangolin成功运行时应该看到一个3D立方体在窗口中旋转这证明Pangolin已正确安装。对于更复杂的验证可以尝试运行其他示例cd ../SimpleDisplay ./SimpleDisplay这个示例展示了基本的3D场景渲染能力包括坐标系显示和简单的几何图形。4. 常见问题解决方案在实际安装过程中可能会遇到各种问题。以下是几个常见问题及其解决方案问题1编译时找不到GL/glew.h解决方案sudo apt install libglew-dev问题2运行时出现error while loading shared libraries这通常是由于库路径未正确配置导致的解决方法sudo ldconfig或者将安装路径添加到LD_LIBRARY_PATHexport LD_LIBRARY_PATH/usr/local/lib:$LD_LIBRARY_PATH问题3Python绑定无法导入如果编译时启用了Python支持但无法导入尝试sudo apt install python3-dev cd ~/slam_ws/src/Pangolin/build make clean cmake .. -DBUILD_PANGOLIN_PYTHONON make -j$(nproc) sudo make install问题4Wayland相关错误对于使用Wayland显示服务器的系统可能需要额外配置sudo apt install libwayland-dev wayland-protocols或者在运行程序前切换到X11export GDK_BACKENDx115. 在SLAM项目中使用PangolinPangolin在视觉SLAM项目中最常见的用途是可视化相机位姿、3D点云和轨迹。以下是一个简单的CMake配置示例展示如何在你的SLAM项目中链接Pangolincmake_minimum_required(VERSION 3.10) project(MySLAMProject) find_package(Pangolin REQUIRED) add_executable(slam_demo slam_demo.cpp) target_link_libraries(slam_demo PRIVATE Pangolin::pangolin)基本使用代码框架#include pangolin/pangolin.h int main() { // 创建窗口 pangolin::CreateWindowAndBind(SLAM Viewer, 1024, 768); // 启用深度测试 glEnable(GL_DEPTH_TEST); // 定义相机观察矩阵 pangolin::OpenGlRenderState s_cam( pangolin::ProjectionMatrix(1024, 768, 500, 500, 512, 389, 0.1, 1000), pangolin::ModelViewLookAt(0, -0.5, -1.8, 0, 0, 0, pangolin::AxisY) ); // 创建交互视图 pangolin::Handler3D handler(s_cam); pangolin::View d_cam pangolin::CreateDisplay() .SetBounds(0.0, 1.0, 0.0, 1.0, -1024.0f/768.0f) .SetHandler(handler); while(!pangolin::ShouldQuit()) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); d_cam.Activate(s_cam); // 绘制坐标系 pangolin::glDrawAxis(0.1); // 在这里添加你的SLAM可视化代码 pangolin::FinishFrame(); } return 0; }6. 性能优化与高级配置为了获得最佳的Pangolin使用体验可以考虑以下优化措施多线程渲染配置Pangolin支持多线程渲染可以在创建窗口时启用pangolin::CreateWindowAndBind(SLAM Viewer, 1024, 768, pangolin::Params({{scheme, headless}, {use_glx, true}}));高DPI显示支持对于高分辨率显示器可以设置缩放因子pangolin::CreateWindowAndBind(SLAM Viewer, 1024, 768, pangolin::Params({{scheme, headless}, {hidpi_scaling, true}}));日志与调试配置Pangolin提供了详细的日志系统可以通过环境变量控制日志级别export PANGOLIN_LOG_LEVEL3 # 0禁用, 1错误, 2警告, 3信息, 4调试视频输出配置Pangolin可以将可视化结果录制为视频pangolin::VideoOutput video(output.mp4); pangolin::VideoRecordRepeat recorder(video, 30.0); // 30fps在实际SLAM项目中我发现合理配置Pangolin的渲染参数可以显著提高可视化效果和系统性能。特别是在处理大规模点云时适当调整渲染间隔和细节级别能够保持流畅的交互体验。
返回列表