ubuntu18.04安装ORBSLAM2

news2024/12/28 1:48:39

        最近倒腾了一下旧项目,发现之前的环境不知道抽了什么风,直接不能用了,好吧,索性从头装过。

一、第三方库

主要包括Pangolin 、 OpenCV 、 Eigen

g2o 与 DBoW2在ORB-SLAM2里面自带可以不需要自己搞

# 更新apt库,更新软件列表
sudo apt-get update

sudo apt-get upgrade

首先安装 vim 、 cmake 、 git 、 gcc 、 g++

ctrl+alt+t打开终端

sudo apt-get install vim cmake
sudo apt-get install git
sudo apt-get install gcc g++

1、Pangolin

Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。 

安装依赖项

sudo apt-get install libgl1-mesa-dev
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

建议下载0.5的版本,不然会报找不到lEigen的错

git clone -b 0.5 https://github.com/stevenlovegrove/Pangolin.git 

开始编译

# 开始编译和安装
cd Pangolin
mkdir build && cd build 
cmake -DCPP11_NO_BOOST=1 ..
sudo make install 

验证是否安装成功

# 验证
cd ../examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin

成功安装就可以看到下面这个 

2、opencv

地址:Releases - OpenCV

我用的是3.4.14的版本

安装依赖

sudo apt-get install build-essential 
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

如果出现Unable to locate package libjasper-dev,用一下方式解决

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

开始编译

cd opencv/
mkdir build
cd build
cmake ..
make -j4
sudo make install

cmake完能看到下图基本上是没问题的

验证是否安装成功

#验证

cd opencv/samples/cpp/example_cmake
cmake .
make
./opencv_example

成功了可以看到下图效果

 3、Eigen

我是通过源码安装的Eigen 3.3.7 · libeigen / eigen · GitLab

cd eigen
mkdir build && cd build
cmake ..
make
sudo make install

# 在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>
# 因此安装后需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

验证是否安装成功

# 建立 test 测试文件
touch test_eigen.cpp
gedit test_eigen.cpp
g++ test_eigen.cpp -o test_eigen
./test_eigen

在test.cpp中添加如下代码

#include <iostream>
//需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include
#include <Eigen/Dense>
//using Eigen::MatrixXd;
using namespace Eigen;
using namespace Eigen::internal;
using namespace Eigen::Architecture;
using namespace std;
int main()
{
        cout<<"*******************1D-object****************"<<endl;
        Vector4d v1;
        v1<< 1,2,3,4;
        cout<<"v1=\n"<<v1<<endl;
 
        VectorXd v2(3);
        v2<<1,2,3;
        cout<<"v2=\n"<<v2<<endl;
 
        Array4i v3;
        v3<<1,2,3,4;
        cout<<"v3=\n"<<v3<<endl;
 
        ArrayXf v4(3);
        v4<<1,2,3;
        cout<<"v4=\n"<<v4<<endl;
}

运行之后能看到下图

二、安装ORBSLAM2

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

安装过程中可能会遇到usleep的错误

只需要在ORB_SLAM2/include/System.h 中加上 #include <unistd.h> 即可解决

如果上面都没什么问题,这里基本会比较顺利,能看到下图这样

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

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

相关文章

七、c++学习(加餐3:深入分析类和对象(下))

我们把这篇《深入分析类和对象》分为两篇&#xff0c;就是为了简化一下大家学习的压力&#xff0c;现在我们接下来看下一篇。 C学习&#xff0c;b站直播视频 文章目录 7.1 对象操作7.1.1 对象拷贝7.1.1.1 无拷贝赋值运算符7.1.1.2 测试编译器会不会自动生成7.1.1.3 自己写拷贝…

【吃透网络安全】2023软考网络管理员考点网络安全(四)防火墙详解

涉及知识点 什么是防火墙&#xff1f;防火墙的概念及定义&#xff0c;防火墙的优缺点&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 后面还有更多续篇希望大家能给个赞哈&#xff0c;这边提供个快捷入口&#xf…

Reactive 环境配置 遇到的问题记录

问题&#xff1a;Watchman: watchman--no-pretty get-sockname returned with exit code 1 ERROR: Unknown option --no-pretty 解决方案&#xff1a;运行ReactNative工程watchman运行错误 解决过程就是&#xff0c;我的watchman 没安装好&#xff0c;于是卸载&#xff0c;重新…

电子电气架构 —— OEM关于DTC具体实现相关见解

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们当前遇到的几乎所有的成长问题都可以归结道目光短浅、及时满足的天性上,不过在现代社会,用避难趋易和急于求成来指代他们更贴切。 本文主要讲…

Vivado使用技巧之外部编辑器配置

目录 一、前言 二、编辑器配置 2.1 环境变量添加 2.2 环境变量验证 2.3 Vivado设置 2.4 配置验证 2.5 解决Vivado配置失败问题 一、前言 Vivado自带的默认编辑器功能受限&#xff0c;不如第三方编辑器Eclipse&#xff0c;Notepad&#xff0c;Sublime功能强大。因此&…

Python基础篇(八):文件和os、shutil模块

文件和os、shutil模块 1. 文件1.1 打开文件1.2 写入文件1.3 读取文件内容1.4 关闭文件1.5 异常处理 2. os模块2.1 获取当前工作目录2. 创建目录2.3 重命名文件或目录2.4 删除文件2.5 执行系统命令 3. shutil模块3.1 复制文件3.2 移动文件3.3 复制目录&#xff08;包括子目录和文…

【Linux】死锁(更新中)

文章目录 一. 什么是死锁二. 死锁产生的四个条件三. 避免死锁1. 死锁检测算法2. 银行家算法 结束语 一. 什么是死锁 死锁是指一组进程中的各个进程均占有不会释放的资源&#xff0c;但因互相申请被其他进程所占用的不会释放的资源&#xff0c;而处于一种永久等待的状态。 就像…

Elasticsearch是什么,如何学习Elasticsearch,整合SpringBoot

目录 一、是什么Elasticsearch 二、Elasticsearch&#xff0c;整合SpringBoot 三、Elasticsearch的优势和应用场景 一、是什么Elasticsearch Elasticsearch是一个开源的搜索引擎&#xff0c;它采用Java语言编写&#xff0c;使用Lucene作为核心搜索引擎&#xff0c;并在其基…

2.文本分析

目录 1. 词频统计--语料库的构建 1. 词频统计–语料库的构建 文本挖掘&#xff1a;将文本信息转换为可利用的知识。通常&#xff0c;对大量文件的归类&#xff0c;一般通过建立不同的文件夹&#xff0c;来保存不同的文章。 同样的&#xff0c;将需要分析的【文本文件】读取到…

Shell - 01_shell的概述

一、shell 概述 1.shell 的两层含义&#xff1a; 既是一种应用程序,又是一种程序设计语言 a.作为应用程序&#xff1a; 交互式地解释、执行用户输入的命令&#xff0c;将用户的操作翻译成机器可以识别的语言&#xff0c;完成相应功能。称之为 shell 命令解析器。shell 是用户和…

机器学习对风险管理的重要性

✏️写作&#xff1a;个人博客&#xff0c;InfoQ&#xff0c;掘金&#xff0c;知乎&#xff0c;CSDN &#x1f4e7;公众号&#xff1a;进击的Matrix &#x1f6ab;特别声明&#xff1a;原创不易&#xff0c;未经授权不得转载或抄袭&#xff0c;如需转载可联系小编授权。 机器学…

logback-spring.xml详解

本文来写说下logback-spring.xml相关的知识与概念 文章目录 概述configuration元素定义上下文名称定义变量appender组件 概述 对于xml日志文件的配置&#xff0c;大多数人第一次接触时有一种望而生畏的感觉&#xff0c;其实如果仔细分析&#xff0c;会发现核心的部分只有三个元…

【黄啊码】为什么程序员大都鄙视php?

“PHP 是世界上最好的语言”。。。“吗”&#xff1f;相信很多人跟我一样&#xff0c;都会在后边打个问号。这些年以来&#xff0c;“PHP 已死”、“PHP 行将消亡”之类的言论甚嚣尘上&#xff0c;由此看得出&#xff0c;很多开发人员讨厌 PHP。这又是为什么呢&#xff1f;PHP …

Nginx配置https证书遇到的一个问题

前言 今天在给一个站点配置 HTTPS 证书的时候&#xff0c;遇到了一个问题&#xff0c;写此文章记录一下解决过程。 环境 Ubuntu 22.04 Nginx 1.18 过程 今天给一个站点申请了 HTTPS 证书&#xff0c;然后在 Nginx 中进行配置&#xff0c;Nginx 的 SSL 配置如下&#xff1a…

Matplotlib---饼图

1. 饼图 pie()函数用于绘制饼图&#xff0c;其基本语法如下&#xff1a; plt.pie(x, explodeNone, labelsNone, colorsNone, autopctNone, startangleNone, shadowFalse) 其中&#xff0c;参数含义如下&#xff1a; - x: 数组&#xff0c;表示饼图中每个部分的数值大小。 -…

手机技巧:iOS微信 8.0.38正式版更新功能一览

目录 1、安装包变大了很多 2、拍摄功能优化 3、订阅号消息展示优化 4、转账界面优化 5、视频号关注展开更多 7、朋友圈置顶&#xff08;灰度测试&#xff09; 8、搜一搜页面新增问一问功能 2023.06.09大家期待已久的IOS微信8.0.38正式版终于发布了&#xff0c;今天就来给…

第四章网络层

1.网络层概述 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 要实现网络层任务&#xff0c;需要解决以下主要问题: 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)网络层寻址问题路由选择问题 因特网(Internet)是目前全世界用…

idea快捷键和常用设置和maven

因为Eclipse快捷键较为统一&#xff0c;因此我们提前设置好&#xff0c;统一idea中的快捷键遵从Eclipse的快捷键。 常用设置 快捷键的统一 设置–按键映射–Eclipse 自动导包 设置–编辑器–常规–自动导入 这个操作主要是为了正确导包&#xff0c;当我们将某行代码注释的…

【物联网无线通信技术】LoRa从理论到实现(SX1268)

文章先从LoRa的物联网通信技术前辈们讲起&#xff0c;慢慢引出了这种功耗又低&#xff0c;距离又远的无线通信技术&#xff0c;然后又似庖丁解牛一般&#xff0c;从物理层到链路层&#xff0c;详细的介绍了LoRa这种技术的组成&#xff0c;最后以一种实际的原理与嵌入式软件实现…

MySQL实战解析底层---如何正确地显示随机消息

目录 前言 内存临时表 磁盘临时表 随机排序方法 前言 现在说说MySQL中的另外一种排序需求&#xff0c;希望能够加深对MySQL排序逻辑的理解从一个单词表中随机选出三个单词这个表的建表语句和初始数据的命令如下&#xff1a; 为了便于量化说明&#xff0c;在这个表里面插入…