国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SLAM實戰(zhàn)篇】Ubuntu 20.04版本(OpenCV版本4.5.3)對于ORB-SLAM2安裝運行,代碼編譯,自己的數(shù)據(jù)集構(gòu)造

這篇具有很好參考價值的文章主要介紹了【SLAM實戰(zhàn)篇】Ubuntu 20.04版本(OpenCV版本4.5.3)對于ORB-SLAM2安裝運行,代碼編譯,自己的數(shù)據(jù)集構(gòu)造。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

學(xué)完SLAM十四講 心血來潮想跑一下ORB-SLAM2的代碼,純新手小白,自己的踩坑經(jīng)歷進行整理:
本文章主要對ORB-SLAM2進行編譯運行。以及自己構(gòu)建數(shù)據(jù)集。

1 ORB-SLAM2 簡介

源碼github地址:https://github.com/raulmur/ORB_SLAM2
終端克隆代碼:

	git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

ubuntu20.04 安裝運行orb_slam2算法,ubuntu,opencv,linux,c++
查看源代碼,其重要的代碼庫僅為三個文件夾:

Example
include
src

2 安裝相關(guān)庫:

可以去看我?guī)熜衷谥醢l(fā)的文章:https://zhuanlan.zhihu.com/p/452256687
主要操作

2.1更新apt庫:
sudo apt-get update
2.2安裝git

用于從Github上克隆項目到本地

sudo apt-get install git
2.3安裝cmake(巨牛逼)

用于程序的編譯

sudo apt-get install cmake
2.4安裝Pangolin

注意: 需安裝0.5版本的Pangolin,若安裝最新版會在SLAM項目build時出現(xiàn) cannot find -lEigen3::Eigen 的報錯。
直接在Ubuntu中打開鏈接
下載地址:https://github.com/stevenlovegrove/Pangolin/tree/v0.5
終端克隆倉庫:

git clone https://github.com/stevenlovegrove/Pangolin.git

安裝依賴項:

sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev libpython3.8-dev python3-pip

在slambook2/3rdparty/Pangolin文件夾下打開終端并輸入:

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

測試驗證:

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

此時終端出現(xiàn)圖像,則安裝成功
ubuntu20.04 安裝運行orb_slam2算法,ubuntu,opencv,linux,c++

3 更改代碼中OpenCV(本代碼經(jīng)過修改為4.5.3版本適用)版本

3.1 版本過高,更改最新版本

涉及文件夾:

CMakeLists.txt
Examples/ROS/ORB_SLAM2/CMakeLists.txt
Thirdparty/DBoW2/CMakeLists.txt

需要更改第一行代碼,下面那一行是判斷版本不正確時,不會進入那一步

find_package(OpenCV 3.0 QUIET)   中更改為   find_package(OpenCV 4.5.3 QUIET) 

ubuntu20.04 安裝運行orb_slam2算法,ubuntu,opencv,linux,c++

由于OpenCV版本問題,在opencv4中opencv2的cv.h融合進了imgproc.hpp里我們修改其代碼,

include文件夾

include/ORBextractor.h

頭文件中

#include <opencv/cv.h>

更改為

#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/highgui/highgui_c.h>

3.2 OpenCV高版本更改

由于opencv高版本棄用CV_LOAD_IMAGE_UNCHANGED這一參數(shù)導(dǎo)致的涉及到以下文件夾:

Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/ROS/Stereo/stereo_euroc.cc
Examples/ROS/Stereo/stereo_kitti.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc

將  CV_LOAD_IMAGE_UNCHANGED  更改為	cv::IMREAD_UNCHANGED

4 代碼報錯

4.1 初次編譯

orbslam2 fatal error: …/…/config.h: 沒有那個文件或目錄
因為g2o沒有編譯完整,進入ORB_SLAM2文件夾,重新執(zhí)行 ./build.sh
打開ORB-SLAM文件夾,終端輸入完整代碼:

cd ORB_SLAM2
chmod +x build.sh
./build.sh
4.2 為避免報錯usleep(未聲明)的問題

在以下文件夾中頭文件添加

Examples 中 Monocular單目相機文件夾

Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc

Examples 中 RGB-D深度相機文件夾

Examples/RGB-D/rgbd_tum.cc

Examples 中 Stereo雙目相機文件夾

Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc

include文件夾

include/System.h

src文件夾

src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc

頭文件添加

#include <unistd.h>
4.3 修改

把ORB-SLAM2源碼目錄中include/LoopClosing.h文件夾中第49行代碼(中文注釋版本在第64行):

typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
   	 Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

修改為:

typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
    Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;

5 搭建自己的數(shù)據(jù)集(單目視頻)

原本ORB-SLAM2文件夾的樣子:
ubuntu20.04 安裝運行orb_slam2算法,ubuntu,opencv,linux,c++
在跑自己的數(shù)據(jù)后文件夾內(nèi)容:
ubuntu20.04 安裝運行orb_slam2算法,ubuntu,opencv,linux,c++

5.1 新建myvideo.yaml

在ORB-SLAM2文件夾打開終端,要新建一個myvideo.yaml,在終端輸入:

gedit myvideo.yaml

打開新建myvideo.yaml,復(fù)制以下內(nèi)容:

%YAML:1.0
 
#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
 
# Camera calibration and distortion parameters (OpenCV) 
Camera.fx: 500.0
Camera.fy: 500.0
Camera.cx: 320.0
Camera.cy: 240.0
 
Camera.k1: 0
Camera.k2: 0
Camera.p1: 0
Camera.p2: 0
Camera.k3: 0
 
# Camera frames per second 
Camera.fps: 30.0
 
# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 0
 
#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------
 
# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000
 
# ORB Extractor: Scale factor between levels in the scale pyramid     
ORBextractor.scaleFactor: 1.2
 
# ORB Extractor: Number of levels in the scale pyramid    
ORBextractor.nLevels: 8
 
# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast            
ORBextractor.iniThFAST: 10
ORBextractor.minThFAST: 5
 
#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize: 2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500

(這一步是設(shè)置自己手機攝像頭的參數(shù),可以就按照這個用著,手機相機的參數(shù)差不多。)

5.2 新建myvideo.cpp

在ORB-SLAM2文件夾打開終端,要新建一個myvideo.cpp,在終端輸入:

gedit myvideo.cpp

打開新建的myvideo.cpp,直接復(fù)制輸入下面的代碼。注意第9、10、12行,根據(jù)myvideo.yaml、ORBvoc.txt、myvideo.mp4的具體位置自行修改。

#include <opencv2/opencv.hpp>
#include "System.h"
#include <string>
#include <chrono>   // for time stamp
#include <iostream>
using namespace std;
// 參數(shù)文件與字典文件
// 如果你系統(tǒng)上的路徑不同,請修改它
string parameterFile = "./myvideo.yaml";
string vocFile = "./Vocabulary/ORBvoc.txt";
// 視頻文件,若不同請修改
string videoFile = "./myvideo.mp4";
int main(int argc, char **argv) {
 // 聲明 ORB-SLAM2 系統(tǒng)
    ORB_SLAM2::System SLAM(vocFile, parameterFile, ORB_SLAM2::System::MONOCULAR, true);
 // 獲取視頻圖像
  cv::VideoCapture cap(videoFile);    // change to 0 if you want to use USB camera.
  // 記錄系統(tǒng)時間
  auto start = chrono::system_clock::now();

while (1) {
        cv::Mat frame;
        cap >> frame;   // 讀取相機數(shù)據(jù)

        if ( frame.data == nullptr )
            continue;
        // rescale because image is too large
        cv::Mat frame_resized;
        cv::resize(frame, frame_resized, cv::Size(640,360));
        auto now = chrono::system_clock::now();
        auto timestamp = chrono::duration_cast<chrono::milliseconds>(now - start);
        SLAM.TrackMonocular(frame_resized, double(timestamp.count())/1000.0);
        cv::waitKey(30);
    }
    return 0;


}


(這一步,若按照以上的步驟是不需要修改的,第一步的myvideo.yaml就在ORB-SLAM2文件夾中,ORBvoc.txt下載自帶的就在ORB-SLAM2文件夾的Vocabulary文件夾中,myvideo.mp4在第四步,也在ORB-SLAM2文件夾中

5.3 修改CMakeLists.txt

打開ORB-SLAM2文件夾中的CMakeLists.txt,在最后復(fù)制添加以下代碼并保存:

#生成調(diào)用myvideo.mp4 可執(zhí)行文件
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR})
add_executable(myvideo myvideo.cpp)
target_link_libraries(myvideo ${PROJECT_NAME})

5.4 拍攝一段視頻

注意使用手機(單目)拍攝視頻時,因slam初始化需要一定時間,開始的攝像機盡量不要對著顏色單一的白墻或者其他,旋轉(zhuǎn)速度不要太快,將拍好的視頻上傳到電腦,命名為myvideo.mp4,放在ORB-SLAM2文件夾中。

5.5 編譯和運行

ORB-SLAM2文件夾打開終端,直接復(fù)制下面代碼即可運行:

cd ORB_SLAM2
mkdir build
cd build
cmake ..
make -j
cd ..
./myvideo  #(執(zhí)行)

這是我的運行結(jié)果:
ubuntu20.04 安裝運行orb_slam2算法,ubuntu,opencv,linux,c++

6 參考博文:

師兄的環(huán)境安裝:https://zhuanlan.zhihu.com/p/452256687
ORB-SLAM的安裝:https://blog.csdn.net/qq_51645628/article/details/123263013?
編譯出現(xiàn)的問題:https://blog.csdn.net/SEAL0107/article/details/128316425?
使用自己的數(shù)據(jù)集(特別鳴謝,這個很牛,適合新手學(xué)習):https://blog.csdn.net/weixin_45947476/article/details/123923975
使用matlab標定相機內(nèi)參(注意固定焦距):https://blog.csdn.net/qq_64079631/article/details/127984760?
代碼講解:https://www.yuque.com/chenhai-7zi1m/se4n14/udvggt文章來源地址http://www.zghlxwxcb.cn/news/detail-839249.html

到了這里,關(guān)于【SLAM實戰(zhàn)篇】Ubuntu 20.04版本(OpenCV版本4.5.3)對于ORB-SLAM2安裝運行,代碼編譯,自己的數(shù)據(jù)集構(gòu)造的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 工程(十)——github代碼ubuntu20.04在ROS環(huán)境運行單目和RGBD相機ORB-SLAM3稠密

    工程(十)——github代碼ubuntu20.04在ROS環(huán)境運行單目和RGBD相機ORB-SLAM3稠密

    博主創(chuàng)建了一個科研互助群Q:772356582,歡迎大家加入討論交流一起學(xué)習。 加稠密建圖:git@github.com:huashu996/ORB_SLAM3_Dense_YOLO.git 純凈版:git@github.com:huashu996/ORB_SLAM3.git orb-slam3的整個環(huán)境配置還是比較麻煩的,先將一些坑寫在前面,供大家參考和避開這些坑。 orb-slam3的配置要求

    2024年01月25日
    瀏覽(28)
  • Ubuntu20.04配置YOLOV5算法相關(guān)環(huán)境,并運行融合YOLOV5的ORB-SLAM2開源代碼(親測有效)

    Ubuntu20.04配置YOLOV5算法相關(guān)環(huán)境,并運行融合YOLOV5的ORB-SLAM2開源代碼(親測有效)

    ? ? ? ? ? 這篇博客介紹的是如何在Ubuntu系統(tǒng)下配置YOLOV5算法環(huán)境。并且運行一個融合YOLOV5的ORB-SLAM2開源代碼。 ??????? 安裝的軟件主要是anaconda,然后anaconda可以幫我們安裝python、pytorch這些東西。我的ubuntu版本:ubuntu20.04.5LTS。 安裝的anaconda類型: Anaconda3-2022.05 安裝的p

    2024年02月02日
    瀏覽(32)
  • Ubuntu20.04安裝c++版本的OpenCV

    Ubuntu20.04安裝c++版本的OpenCV

    https://www.jianshu.com/p/3c2fc0da7398 https://docs.opencv.org/4.5.3/d7/d9f/tutorial_linux_install.html https://www.jianshu.com/p/3c2fc0da7398 https://www.cnblogs.com/yongy1030/p/10293178.html 其實官網(wǎng)步驟已經(jīng)非常清楚了,只不過是英文的,可能有小伙伴看不下去,所以不妨看看這篇博客。 進入官網(wǎng),選擇你要下載的

    2024年02月12日
    瀏覽(26)
  • ubuntu20.04下多版本opencv共存和切換

    ubuntu20.04下多版本opencv共存和切換

    之前在ubuntu20.04系統(tǒng)上已經(jīng)安裝了opencv4.5.5和擴展庫opencv_contrib4.5.5,但是最近需要跑一下PL-SLAM的源代碼,而PL-SLAM系統(tǒng)是基于opencv3.x.x開發(fā)的,直接運行會出現(xiàn)很多opencv版本不兼容的問題。因此想再安裝opencv3.4.5和擴展庫opencv_contrib3.4.5,過程中出現(xiàn)了很多問題,寫這篇文章記錄

    2024年02月08日
    瀏覽(43)
  • Ubuntu20.04 OpenCV詳細安裝教程(附多版本切換共存教程)

    Ubuntu20.04 OpenCV詳細安裝教程(附多版本切換共存教程)

    opencv安裝有兩種方式: 1.使用包管理器安裝預(yù)編譯版本(安裝十分簡單,但是 版本只有4.2.0 ,且沒有擴展模塊且不支持Qt窗口) 2.從源碼安裝(比較復(fù)雜,但是推薦) 這樣就安裝完成了 這種安裝方法,默認把opencv相關(guān)文件放置在系統(tǒng)目錄 官網(wǎng)下載地址 https://opencv.org/release

    2024年03月13日
    瀏覽(30)
  • 【已解決】Ubuntu 20.04 編譯OpenCV 動態(tài)鏈接庫指向版本不一致導(dǎo)致出錯

    【已解決】Ubuntu 20.04 編譯OpenCV 動態(tài)鏈接庫指向版本不一致導(dǎo)致出錯

    問題:編譯OpenCV 4.8.1, 顯示出錯: /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_uint32@LIBFFI_BASE_7.0\\\' /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_sint32@LIBFFI_BASE_7.0\\\' /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to

    2024年02月04日
    瀏覽(35)
  • Ubuntu18.04版本下配置ORB-SLAM3和數(shù)據(jù)集測試方法

    Ubuntu18.04版本下配置ORB-SLAM3和數(shù)據(jù)集測試方法

    使用:VMware Workstation Pro 虛擬機系統(tǒng)版本是:Ubuntu 18.04.06 虛擬機內(nèi)存:8g(若為4g大小,很容易出現(xiàn)后文中ORB-SLAM3編譯時會出現(xiàn)的內(nèi)存問題) 虛擬機存儲:50g 若是配置完發(fā)現(xiàn)存儲空間不足,可以參考這篇博客進行清理: 下載配置技巧:Ubuntu18.04安裝vmware-tools解決無法復(fù)制粘貼

    2024年02月09日
    瀏覽(22)
  • 【ORB_SLAM】Ubuntu20.04 配置ORB_SLAM3

    【ORB_SLAM】Ubuntu20.04 配置ORB_SLAM3

    本文主要記錄基于Ubuntu20.04環(huán)境下,對普通的ORB_SLAM3和稠密版本的ORB_SLAM3進行環(huán)境的配置。 這里采用魚香ros的一鍵安裝,感謝小魚的一鍵安裝。 Pangolin:鏈接: https://pan.baidu.com/s/1FXYLsEK1W3xmX0m_Vqylag 提取碼: jgz2 (基于小六的注釋后的ORB_SLAM3代碼) https://github.com/electech6/ORB_SLAM3_d

    2024年02月15日
    瀏覽(28)
  • ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

    ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

    一、引言 ORB-SLAM2,它是基于單目、雙目或RGB-D相機的一個完整的SLAM系統(tǒng),其中包括地圖重用、回環(huán)檢測和重定位功能。這個系統(tǒng)可以適用于多種環(huán)境,無論是室內(nèi)小型手持設(shè)備,還是工廠環(huán)境中飛行的無人機和城市中行駛的車輛,其都可以在標準CPU上實時運行。該系統(tǒng)的后端

    2023年04月13日
    瀏覽(25)
  • Ubuntu20.04安裝OpenCV

    Ubuntu20.04安裝OpenCV

    開源計算機視覺(OpenCV)是一個主要針對實時計算機視覺的編程函數(shù)庫。 OpenCV的應(yīng)用領(lǐng)域包括:2D和3D功能工具包、運動估計、面部識別系統(tǒng)、手勢識別、人機交互、移動機器人、動作理解、物體識別、分割和識別、實體影像立體視覺:來自兩個攝像機的深度感知、運動跟蹤、增強

    2023年04月09日
    瀏覽(70)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包