SLAM算法与工程实践——SLAM基本库的安装与使用(3):Pangolin库

SLAM算法与工程实践系列文章

下面是SLAM算法与工程实践系列文章的总链接,本人发表这个系列的文章链接均收录于此

SLAM算法与工程实践系列文章链接


下面是专栏地址:

SLAM算法与工程实践系列专栏


文章目录

  • SLAM算法与工程实践系列文章
    • SLAM算法与工程实践系列文章链接
    • SLAM算法与工程实践系列专栏
  • 前言
  • SLAM算法与工程实践——SLAM基本库的安装与使用(3):Pangolin库
  • Pangolin
    • 安装
      • 错误
        • 找不到 OpenGL
        • libpango_windowing.so


前言

这个系列的文章是分享SLAM相关技术算法的学习和工程实践


SLAM算法与工程实践——SLAM基本库的安装与使用(3):Pangolin库

Pangolin

安装

(建议源码安装)

强烈推荐

Pangolin 0.6(稳定版) 提取码:45bo

We use Pangolin for visualization and user interface。

下载和安装说明可在以下位置找到:https://github.com/stevenlovegrove/Pangolin

按官网最新的说明

# Clone Pangolin along with it's submodules
git clone --recursive https://github.com/stevenlovegrove/Pangolin.gitcd Pangolin# See what package manager and packages are recommended
# 根据脚本一键安装推荐的包
./scripts/install_prerequisites.sh --dry-run recommended# Override the package manager choice and install all packages
./scripts/install_prerequisites.sh -m brew all

然后是配置和编译

# Configure and build
# 注意下面的两个命令都要执行,且是顺序执行
cmake -B build
cmake --build build# with Ninja for faster builds (sudo apt install ninja-build)
cmake -B build -GNinja
cmake --build build# GIVEME THE PYTHON STUFF!!!! (Check the output to verify selected python version)
cmake --build build -t pypangolin_pip_install# Run me some tests! (Requires Catch2 which must be manually installed on Ubuntu.)
ctest

脚本一键安装依赖

在这里插入图片描述

install_prerequistites.sh文件的最后一行是安装库的命令

在这里插入图片描述

编译

在这里插入图片描述

Pangolin编译完成后,看一下有没有安装,如果没有安装就进入build文件夹进行安装

cd build
sudo make install

安装完成后更新一下共享库的缓存

sudo ldconfig

验证

cd ../examples/HelloPangolin
mkdir build && cd build
cmake ..
make -j
./HelloPangolin

若安装成功,则会弹出以下窗口:

在这里插入图片描述

在这里插入图片描述

以下为老安装方法

1)安装依赖项

sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev

2)安装 Pangolin

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOSR=1 ..
make -j
sudo make install

这里的老版本教程可供参考,两种编译方法结果一样

错误

找不到 OpenGL

在编译Pangolin时,报错找不到 OPENGL

CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_glx_LIBRARYOPENGL_INCLUDE_DIR)
Call Stack (most recent call first):/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)/usr/share/cmake-3.16/Modules/FindOpenGL.cmake:397 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)components/pango_opengl/CMakeLists.txt:45 (find_package)CMakeLists.txt:114 (include)

原因是没有OpenGL,安装ros后就可以正常编译了

在这里插入图片描述

在这里插入图片描述

libpango_windowing.so

编译完成后,在测试Pangolin的例子时报错,找不到libpango_windowing.so

./HelloPangolin: error while loading shared libraries: libpango_windowing.so: cannot open shared object file: No such file or directory

在这里插入图片描述

解决办法:

参考:error while loading shared libraries: libpango_windowing.so: cannot open shared object file: No such

输入命令

sudo ldconfig

然后就可以正常运行

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux--文件权限与shell外壳的理解

目录 一.Linux的用户与用户切换,提权 二.对文件权限的理解 1.文件权限角色的权限文件属性 2.Linux中的三种角色 3.为什么会存在所属组这个角色 4.文件属性的意义 4.1.第一个字母的意义 4.2 第2——第10个字母的意义 4.3修改文件权限的方法 三.目录权限 四…

文本润色工具有哪些,高质量的文本润色软件

在当今信息过载的时代,文本的重要性愈发凸显。即便是最精心构思的文章,若未经过仔细的润色,也难以达到最佳的表达效果。本文将专心分享文本润色工具的种类。 文本润色工具的种类 文本润色工具根据其功能和应用范围可以分为多个种类&#xff…

js/jQuery常见操作 之 jQuery操作复选框的常见问题

js/jQuery常见操作 之 jQuery操作复选框的常见问题 1. js/jQuery的其他一些常见基础操作2. 全选/全不选问题2.1 效果2.2 实现代码2.2.1 简单js实现2.2.2 jQuery实现2.2.2.1 注意语法(区别jQuery版本)2.2.2.2 完整代码实现 3. jQuery实现点击 行tr 实现ch…

【Java 基础】21 多线程同步与锁

文章目录 1.存在的问题2.使用同步解决问题1) synchronized2) volatile3) 锁 总结 用多线程过程中,有可能出现 多个线程同时处理(获取或修改等)同一个数据,这个时候就 会发生数据不同步的问题, 因此出现了同步和锁来…

APP备案(Android) - 获取签名证书公钥、MD5

因为近期刚针对各应用平台对APP备案时间节点要求进行了统一整理,然后隔天就被要求提供一下app相关的的公钥和MD5,虽然很快就解决了这个事情,但忍不住又稍微衍生了一下,但行小步,莫问远方吧 关联Blog APP备案(Android)…

java多线程(二)线程池

目录 java线程池 线程池应用场景: 如何创建线程池: 有什么区别: 不同线程池对应的应用场景 案例 输出结果 java线程池 Java线程池是一种预先创建一定数量的线程,并将任务提交给这些线程执行的机制。线程池可以避免频繁创建…

ExecutorService、Callable、Future实现有返回结果的多线程原理解析

原创/朱季谦 在并发多线程场景下,存在需要获取各线程的异步执行结果,这时,就可以通过ExecutorService线程池结合Callable、Future来实现。 我们先来写一个简单的例子—— public class ExecutorTest {public static void main(String[] ar…

Vulnhub项目:EMPIRE: BREAKOUT

一、靶机地址 靶机地址:Empire: Breakout ~ VulnHub 靶机介绍: 该靶机被定义为简单,但是如果没有找到,那就难度成中等了! 二、渗透过程 老三样,发现目标,这里用 arp-scan 确定靶机 ip&#…

Java基础50题:14. 使用方法求最大值(2种方法)

概述 使用方法求最大值。 创建方法求两个数的最大值max2,随后再写一个求3个数的最大值函数max3。 要求: 在max3这个方法中,调用max2函数,来实现3个数的最大值计算。 方法一 【代码】 public class P14 {public static int max…

算法___

文章目录 算法两数之和 算法 两数之和 题目如下图: 我的答案如下图: 我采用的是最笨的思路,直接暴力的两次循环,第一次外循环是取数组的第一个元素,然后内循环会遍历数组后面除第一个的所有元素,然后和…

DDD架构思想专栏二《领域层的决策设计思想详解》

如果不了解DDD基本概念的读者可以去看这篇文章,传送门:DDD架构思想专栏一《初识领域驱动设计DDD落地》-CSDN博客 前言介绍 在上一章节介绍了领域驱动设计的基本概念以及按照领域驱动设计的思想进行代码分层,但是仅仅只是从一个简单的分层结…

【Flink系列三】数据流图和任务链计算方式

上文介绍了如何计算并行度和slot的数量,本文介绍Flink代码提交后,如何生成计算的DAG数据流图。 程序和数据流图 所有的Flink程序都是由三部分组成的:Source、Transformation和Sink。Source负责读取数据源,Transformation利用各种…

Remix IDE 快速开始Starknet

文章目录 一、Remix 项目二、基于Web的开发环境Remix 在线 IDE三、Starknet Remix 插件如何使用使用 Remix【重要】通过 Starknet by Example 学习一、Remix 项目 Remix 项目网站 在以太坊合约开发领域,Remix 项目享有很高的声誉,为各个级别的开发人员提供功能丰富的工具集…

JS中深拷贝与浅拷贝

定义 深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是在编程中常用的两种对象复制方式。 浅拷贝(Shallow Copy): 浅拷贝是创建一个新的对象,将原始对象的属性值复制到新对象中。如果属…

Smart Link和Monitor Link

Smart Link和Monitor Link简介 Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个接口作为另一个的备份。Smart Link常用于双上行组网,提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案,它…

nodejs流

什么是流 stream 流是用于在 Node.js 中处理流数据的抽象接口。 node:stream 模块提供了用于实现流接口的 API。 什么是流数据 流数据是指一组顺序、大量、快速、连续到达的数据序列,一般情况下数据流可被视为一个随时间延续而无限增长的动态数据集合。流数据应用…

【keil备忘录】2. stm32 keil仿真时的时间测量功能

配置仿真器Trace内核时钟为单片机实际的内核时钟,需要勾选Enable设置,设置完成后Enable取消勾选也可以,经测试时钟频率配置仍然生效,此处设置为48MHZ: 时间测量时必须打开register窗口,否则可能不会计数 右下角有计…

第十四章 : Spring Boot 整合spring-session,使用redis共享

第十四章 : Spring Boot 整合spring-session,使用redis共享 前沿 本文重点讲述:spring boot工程中使用spring-session机制进行安全认证,并且通过redis存储session,满足集群部署、分布式系统的session共享。 基于SPringBoot 2.3.2…

[linux运维] 利用zabbix监控linux高危命令并发送告警(基于Zabbix 6)

之前写过一篇是基于zabbix 5.4的实现文章,但是不太详细,最近已经有两个小伙伴在zabbix 6上操作,发现触发器没有str函数,所以更新一下本文,基于zabbix 6 0x01 来看看效果 高危指令出发问题告警: 发出邮件告…

学好操作系统需要的前置知识

1. 态度:不要等一切都准备好了再前行 如果把一切你可能会说,没有这些基础知识,我每看一篇文章,知识就铺天盖地席卷过来,仿佛每一个知识点都准确地打在了自己的盲点上,这该怎么办呢? 我非常能理…