ORB-SLAM2 安裝編譯運行(非 ROS)

安裝編譯

必備安裝工具
主要包括 cmake 、 git 、 gcc 、 g++
gcc 的全稱是 GNU Compiler Collection,它是由 GNU 推出的一款功能強大的、性能優越的
多平臺編譯器,是一個能夠編譯多種語言的編譯器。最開始 gcc 是作為 C 語言的編譯器(GNU
C Compiler),現在除了 c 語言,還支持 C++、java、Pascal 等語言。gcc 支持多種硬件平臺。
? gcc 是 GCC 中的 GUN C Compiler(C 編譯器)
? g++是 GCC 中的 GUN C++ Compiler(C++編譯器)
? gdb 是是 GCC 中的 GUN 調試工具
? cmake(cross platform make 的縮寫)是一個開源跨平臺的安裝編譯工
具。它將多個頭文件和源文件組合構建為一個工程。他能夠輸出各種各
樣的 makefile 或者 project 文件,所有操作都是通過編譯
CMakeLists.txt 來完成。
sudo apt-get install vim cmake git gcc g++ libboost-all-dev
安裝第三方庫(推薦源碼安裝)
1、安裝 Pangolin
不要用最新的 pangolin,可能會出錯
建議從這里下載 0.5 版本 https://github.com/stevenlovegrove/Pangolin/tree/v0.5
# Pangolin 依賴項
# 顯示相關
sudo apt-get install libglew-dev
# Python
sudo apt-get install libpython2.7-dev
# 視頻編解碼(可選)
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat
dev libswscale-dev
# 讀取圖像序列用
sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev
libopenexr-dev
# Get Pangolincd ~/your_fav_code_directory
# 不要用最新的 pangolin,會出錯,
# 建議從這里下載 0.5 版本
https://github.com/stevenlovegrove/Pangolin/tree/v0.5
# 解壓
cd Pangolin-0.5
# Configure and build
mkdir build && cd build
cmake ..
make -j4
sudo make install
驗證是否成功安裝
# 在如下路徑下運行示例代碼,注意路徑(和我的路徑不同)
./Pangolin-0.5/build/examples/HelloPangolin/HelloPangolin
2、安裝 OpenCV
提醒:推薦安裝和 ros 匹配的 OpenCV 版本。否則可能會沖突
ros melodic 默認安裝 opencv3.2
以后不要在同一個主控上安裝多個版本 opencv,那是自找麻煩,涉及到各種配置,配置不
對就導致程序無法運行,調試配置花費大量精力!
先安裝依賴項
Ubuntu 16.04 安裝方法
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev
libavformat-dev
libjpeg.dev
sudo apt-get install libtiff4.dev libswscale-dev libjasper-dev
Ubuntu 18.04 稍微有點不同,安裝方法如下
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev
libavformat-dev libjpeg.dev libtiff5-dev libswscale-dev libopenexr
dev libtbb-dev
# Ubuntu 18.04 下安裝 libjasper-dev 需要一點額外操作
sudo add-apt-repository "deb http://s ecurity .ubuntu.com/ubuntu
xenial-s ecurity main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
正式安裝 OpenCV3.2
cd opencv-3.2.0 # 根據自己下載的版本來,推薦和 ROS 一樣的 OpenCV 版本
mkdir build
cd build
cmake ..
make -j4 # 假設你電腦有 4 個核,這樣可以編譯的快一點
sudo make install
成功安裝
3、安裝 eigen3
Eigen3 版本需要 >=3.1.0 ,一般來說 16.04 和 18.04 使用 apt 安裝的版本就符合這個要
sudo apt-get install libeigen3-dev
查看 eigen 版本
cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h
#或者
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
4、DBoW2、G2O 無需安裝
已經包含在 ORBSLAM2 中的第三方庫文件夾中,不需要自己編譯安裝

安裝 ORB_SLAM2

# 用 git 下載 ORB_SLAM2 源碼
git clone https://github.com/raulmur/ORB_SLAM2.git
cd ORB_SLAM2
# 添加可執行權限
chmod +x build.sh
#運行
./build.sh
可能遇到的錯誤
1、usleep 函數問題
先移除錯誤編譯的 build 文件
# 確保在 ORB_SLAM2 文件夾下
rm -r build
在 ORB_SLAM2/include/System.h 中添加一句
#include "unistd.h"
然后重新
./build.sh
2、錯誤 2 ,找不到 eigen
錯誤顯示如下
原因,pangolin 版本不對,使用 pangolin 0.5 版本
https://github.com/stevenlovegrove/Pangolin/tree/v0.5
運行數據集
單目
TUM 數據集為例進行演示。
首先從 http://vision.in.tum.de/data/datasets/rgbd-dataset/download 中下載任意一個數據
包并解壓
tar zxvf rgbd_dataset_freiburg1_desk.tgz
https://github.com/raulmur/ORB_SLAM2 上的示例運行代碼如下
# 請勿直接復制!只是參考格式,需要修改 PATH_TO_SEQUENCE_FOLDER
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt
Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
注意,此處的 TUMX.yaml 文件要對應于你下載的數據集類型 , 需要改成對應的 TUM1.yaml
或 TUM2.yaml 或 TUM3.yaml
PATH_TO_SEQUENCE_FOLDER 要對應于你的數據集文件夾存放路徑,在我的電腦上,上
述命令應修改如下 :
# 在 ORB_SLAM2 文件夾下打開終端,輸入如下(注意要根據自己數據集存放路
徑修改地址)
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt
Examples/Monocular/TUM1.yaml
/home/cxl/SLAM/DataSets/TUM/rgbd_dataset_freiburg1_desk
RGB-D
以 TUM 數據集為例
associate.py 腳本用來關聯 RGB 和 depth 圖像,ORB_SLAM2 里已經提前做好了關聯,存放
在 Examples/RGB-D/associations 路徑
我們打開其中一個
RGB 時間戳 RGB 圖像名 depth 時間戳 depth 圖像名
associate.py 腳本用來關聯 RGB 和 depth 圖像的原理:認為時間戳相差 0.02s(默認參
數) 的 RGB 和 depth 是同步的
自己也可以用腳本來同步,結果和 ORB_SLAM2 里存儲的是一樣的,代碼見下。支持 Python2,
修改一下可支持 Python3
python associate.py PATH_TO_SEQUENCE/rgb.txt
PATH_TO_SEQUENCE/depth.txt > associations.txt
RGB-D 模式的運行模式
# 請勿直接復制!只是參考格式,需要修改 TUMX.yaml,
PATH_TO_SEQUENCE_FOLDER,ASSOCIATIONS_FILE
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB
D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
注意,此處的 TUMX.yaml 文件要對應于你下載的數據集類型 , 需要改成對應的 TUM1.yaml
或 TUM2.yaml 或 TUM3.yaml
PATH_TO_SEQUENCE_FOLDER 要對應于你的數據集文件夾存放路徑,在我的電腦上,上述
命令應修改如下 :
ASSOCIATIONS_FILE 對應于數據集所在的關聯文件夾位置
# 在 ORB_SLAM2 文件夾下打開終端,輸入如下(注意要根據自己數據集存放路
徑修改地址)
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB
D/TUM1.yaml /home/cxl/SLAM/DataSets/TUM/rgbd_dataset_freiburg1_desk
Examples/RGB-D/associations/fr1_desk.txt
雙目
EuRoC 數據集為例,從官網下載數據集
http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
分為 MH 和 V1,V2 序列
對于 MH 序列
運行格式如下,其中 PATH_TO_SEQUENCE,SEQUENCE 需要替換成自己的路徑或文件名
# 請勿直接復制!只是參考格式,需要修改 PATH_TO_SEQUENCE,SEQUENCE
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data
PATH_TO_SEQUENCE/cam1/data
Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
比如我的電腦上,運行指令為:
# 在 ORB_SLAM2 文件夾下打開終端,輸入如下(注意要根據自己數據集存放路
徑修改地址)
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml
/home/cxl/SLAM/DataSets/EuRoC/MH_03_medium/mav0/cam0/data
/home/cxl/SLAM/DataSets/EuRoC/MH_03_medium/mav0/cam1/data
Examples/Stereo/EuRoC_TimeStamps/MH03.txt
注意:路徑,文件名一定要輸對。盡量用 TAB 鍵補全,保證路徑和 文件是有效的。注意數
據集名稱 MH_03,時間戳文件名 MH03 中間沒有下劃線。文件名寫錯,可能會卡住(不報
錯)。
對于 V1、V2 序列
運行格式如下,其中 PATH_TO_SEQUENCE,SEQUENCE 需要替換成自己的路徑或文件名
# 請勿直接復制!只是參考格式,需要修改 PATH_TO_SEQUENCE,SEQUENCE
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data
PATH_TO_SEQUENCE/mav0/cam1/data
Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
比如我的電腦上,運行指令為:
# 在 ORB_SLAM2 文件夾下打開終端,輸入如下(注意要根據自己數據集存放路
徑修改地址)
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml
/home/cxl/SLAM/DataSets/EuRoC/V1_02_medium/mav0/cam0/data
/home/cxl/SLAM/DataSets/EuRoC/V1_02_medium/mav0/cam1/data
Examples/Stereo/EuRoC_TimeStamps/V102.txt

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39030.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39030.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39030.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何將等保2.0的要求融入日常安全運維實踐中?

等保2.0的基本要求 等保2.0是中國網絡安全領域的基本國策和基本制度,它要求網絡運營商按照網絡安全等級保護制度的要求,履行相關的安全保護義務。等保2.0的實施得到了《中華人民共和國網絡安全法》等法律法規的支持,要求相關行業和單位必須按…

C#/WPF 自制白板工具

隨著電子屏幕技術的發展&#xff0c;普通的黑板已不再適用現在的教學和演示環境&#xff0c;電子白板應運而生。本篇使用WPF開發了一個電子白板工具&#xff0c;功能豐富&#xff0c;非常使用日常免費使用&#xff0c;或者進行再次開發。 示例代碼如下&#xff1a; Stack<St…

拓撲排序[講課留檔]

拓撲排序 拓撲排序要解決的問題是給一個有向無環圖的所有節點排序。 即在 A O E AOE AOE網中找關鍵路徑。 前置芝士&#xff01; 有向圖&#xff1a;有向圖中的每一個邊都是有向邊&#xff0c;即其中的每一個元素都是有序二元組。在一條有向邊 ( u , v ) (u,v) (u,v)中&…

JavaScript 動態網頁實例 —— 廣告效果

廣告是現代網頁設計中不可或缺的內容。廣告可以有很多種形式,但最終目的都是要吸引觀眾的注意力。盡管廣告少不了畫面、音效和廣告語等效果,但其實現主要還是應用JavaScript 代碼,只要很好掌握了JavaScript程序設計,剩下的就是創意和美工了。本章介紹幾種廣告效果,包括對聯…

ChatGPT 官方發布桌面端,向所有用戶免費開放

Open AI 官方已經發布了適用于 macOS 的 ChatGPT 桌面端應用。 此前&#xff0c;該應用一直處于測試階段&#xff0c;僅 Plus 付費訂閱用戶可以使用。 目前已面向所有用戶開放&#xff0c;所有 Mac 用戶均可免費下載使用。 我們可以訪問官網下載安裝包&#xff1a;https://op…

Java利用poi實現word,excel,ppt,pdf等各類型文檔密碼檢測

介紹 最近工作上需要對word,excel,ppt,pdf等各類型文檔密碼檢測&#xff0c;對文件進行分類&#xff0c;有密碼的和沒密碼的做區分。查了一堆資料和GPT都不是很滿意&#xff0c;最后東拼西湊搞了個相對全面的檢測工具代碼類&#xff0c;希望能給需要的人帶來幫助。 說明 這段…

PHP 爬蟲之使用 Curl庫抓取淘寶商品列表數據網頁的方法

使用 PHP 的 cURL 庫來抓取淘寶商品列表數據網頁需要謹慎&#xff0c;因為淘寶等電商平臺通常會有反爬蟲機制&#xff0c;以防止數據被濫用。然而&#xff0c;如果你只是出于學習目的&#xff0c;并且了解并遵守了淘寶的robots.txt文件和相關的使用條款&#xff0c;你可以嘗試使…

2024 年江西省研究生數學建模競賽題目 B題投標中的競爭策略問題--完整思路、代碼結果分享(僅供學習)

招投標問題是企業運營過程中必須面對的基本問題之一。現有的招投標平臺有國家級的&#xff0c;也有地方性的。在招投標過程中&#xff0c;企業需要全面了解招標公告中的相關信息&#xff0c;在遵守招投標各種規范和制度的基礎上&#xff0c;選擇有效的競爭策略和技巧&#xff0…

基于JSP技術的校園餐廳管理系統

開頭語&#xff1a; 你好呀&#xff0c;我是計算機學長貓哥&#xff01;如果您對校園餐廳管理系統感興趣或有相關需求&#xff0c;歡迎隨時聯系我。我的聯系方式在文末&#xff0c;期待與您交流&#xff01; 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#x…

QT的編譯過程

qmake -project 用于從源代碼生成項目文件&#xff0c;qmake 用于從項目文件生成 Makefile&#xff0c;而 make 用于根據 Makefile 構建項目。 詳細解釋&#xff1a; qmake -project 這個命令用于從源代碼目錄生成一個初始的 Qt 項目文件&#xff08;.pro 文件&#xff09;。它…

Keil5中:出現:failed to execute ‘...\ARMCC\bin\ArmCC‘

點三個點&#xff0c;去自己的磁盤找自己的ARM\ARMCC\bin

深入解析:計算機系統總線全方位解讀

在計算機組成原理中&#xff0c;總線系統是連接計算機各個部件的重要通道。本文將詳細介紹系統總線的基本概念、分類、特性及性能指標、結構和控制方式。希望通過本文的講解&#xff0c;能夠幫助基礎小白更好地理解計算機系統總線的工作原理。 系統總線 (System Bus) 系統總線…

查看視頻時間基 time_base

時間基、codec, 分辨率&#xff0c;音頻和視頻的都一樣&#xff0c;才可以直接使用ffmpeg -f concat -i file.txt 方式合并。 On Thu, Dec 03, 2015 at 21:54:53 0200, redneb8888 wrote: I am looking for a way to find the time base of a stream (video or audio), $ ffpr…

selenium 簡介以及 selenium 環境配置

文章目錄 一、初識 selenium1.selenium 簡介2.selenium 三大組件3.selenium工作過程和原理4.selenium自動化測試流程5.selenium優點 二、自動化測試1.UI自動化本質2.UI自動化的前提3.適用場景4.UI自動化的原則5.UI自動化的覆蓋率 三、selenium 環境配置 一、初識 selenium 1.s…

單點登錄demo

gitee.com 搜索xxl(許雪里) 的sso 操作demo 完整流程圖

網絡安全控制相關技術

1.惡意代碼&#xff08;Malware&#xff09; 網絡從出現、發展演進都始終伴隨著安全方面的問題&#xff0c;只是每個階段表現的形式不同而已。在網絡安全方面&#xff0c;不能不提進行網絡攻擊的網絡病毒&#xff0c;或者說惡意代碼&#xff08;Malware&#xff09;。所有惡意…

MySQL中的網絡命名空間支持

Network Namespace Support&#xff08;網絡命名空間支持&#xff09; 提供了在Linux系統中創建和管理多個隔離網絡空間的能力。網絡命名空間是來自主機系統的網絡堆棧的邏輯副本。網絡命名空間對于設置容器或虛擬環境非常有用。每個名稱空間都有自己的IP地址、網絡接口、路由表…

什么是應用安全態勢管理 (ASPM):綜合指南

軟件開發在不斷發展&#xff0c;應用程序安全也必須隨之發展。 傳統的應用程序安全解決方案無法跟上當今開發人員的工作方式或攻擊者的工作方式。 我們需要一種新的應用程序安全方法&#xff0c;而ASPM在該方法中發揮著關鍵作用。 什么是 ASPM&#xff1f; 應用程序安全…

配電智能網關賦能電力系統智能化運行維護

隨著智能電網和物聯網技術的不斷發展&#xff0c;兩者之間的融合應用成為電力行業的重要趨勢。配電智能網關作為連接兩者的關鍵設備&#xff0c;在智能電網的物聯網應用中發揮著重要作用。 配電智能網關能夠實現對電力系統的實時監控、數據采集、遠程控制等功能&#xff0c;為…

已解決org.omg.CORBA.portable.RemarshalException:在CORBA中需要重新編組的正確解決方法,親測有效!!!

已解決org.omg.CORBA.portable.RemarshalException&#xff1a;在CORBA中需要重新編組的正確解決方法&#xff0c;親測有效&#xff01;&#xff01;&#xff01; 目錄 問題分析 出現問題的場景 服務器端代碼 客戶端代碼 報錯原因 解決思路 解決方法 1. 檢查網絡連接 …