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

視覺學(xué)習(xí)筆記4——ORB-SLAM3的地圖保存與使用

這篇具有很好參考價值的文章主要介紹了視覺學(xué)習(xí)筆記4——ORB-SLAM3的地圖保存與使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

ORB系列文章目錄

前言:視覺學(xué)習(xí)筆記4——學(xué)習(xí)研究ORB-SLAM3



前言

ORB-SLAM3基本搭建完成,具體可以看開頭的系列文章目錄,接下來需要研究如何自定義自己的地圖,也就是實(shí)時地圖的保存與運(yùn)用。


一、地圖保存

方法1(使用自帶OSA保存):

按照開源說明來看,地圖保存與加載在V1.0已經(jīng)實(shí)現(xiàn)了,需要修改相應(yīng)的yaml文件即可,也就是相機(jī)yaml文件,例如單目測試就需要修改ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/Asus.yaml文件。

  • 1、修改yaml文件
    在該文件中的末尾添加以下代碼:
System.SaveAtlasToFile: "map.osa"
  • 2、ORB-SLAM3編譯運(yùn)行:
    重新編譯后再運(yùn)行單目實(shí)例,這時就會自動保存點(diǎn)云了,點(diǎn)云信息保存在.osa文件中。
sudo ./build.sh
sudo ./build_ros.sh
  • 3、加載
    按道理此時地圖已經(jīng)保存成功,也確實(shí)有.osa文件出現(xiàn)在主目錄里,可是我卻沒有很好辦法來查看和調(diào)用這個文件,所以就修改為pcd文件來使用。

方法2(保存為PCD文件):

經(jīng)過查詢找到這位博主的文章

  • 1、安裝PCL庫
sudo apt-get install libpcl-dev pcl-tools
  • 2、修改MapDrawer.cc 文件
    視覺學(xué)習(xí)筆記4——ORB-SLAM3的地圖保存與使用

第一步,先加入 pcl 保存點(diǎn)云所需的頭文件:

#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>

第二步,找到 DrawMapPoints 函數(shù)中的如下代碼:

for(set<MapPoint*>::iterator sit=spRefMPs.begin(), send=spRefMPs.end(); sit!=send; sit++)
{
    if((*sit)->isBad())
        continue;
    Eigen::Matrix<float,3,1> pos = (*sit)->GetWorldPos();
    glVertex3f(pos(0),pos(1),pos(2));
 
}

并將其修改為如下代碼:

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_saved(new pcl::PointCloud<pcl::PointXYZ>());
for(set<MapPoint*>::iterator sit=spRefMPs.begin(), send=spRefMPs.end(); sit!=send; sit++)
{
    if((*sit)->isBad())
        continue;
    Eigen::Matrix<float,3,1> pos = (*sit)->GetWorldPos();
    glVertex3f(pos(0),pos(1),pos(2));
 
    //modified by Awei
    pcl::PointXYZ p;
    p.x = pos(0);
    p.y = pos(1);
    p.z = pos(2);
    cloud_saved->points.push_back(p);
}
if (cloud_saved->points.size())
    pcl::io::savePCDFileBinary("map.pcd", *cloud_saved);

第三步在ORB-SLAM3下的 CMakeLists.txt文件中添加 PCL 庫

注意每一段代碼放的位置,一共三段、
1、
find_package(PCL REQUIRED)
 
 2、
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/CameraModels
${PROJECT_SOURCE_DIR}/Thirdparty/Sophus
${EIGEN3_INCLUDE_DIR}
${Pangolin_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
)
 
 3、
target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PCL_LIBRARIES}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
-lboost_serialization
-lcrypto
)
  • 4、ORB-SLAM3編譯運(yùn)行:
    重新編譯后再運(yùn)行單目實(shí)例,這時就會自動保存點(diǎn)云了,.pcd文件保存在主目錄下。想要修改保存位置可以參考這篇博客
sudo ./build.sh
sudo ./build_ros.sh
  • 5、使用 pcl_viewer 進(jìn)行查看.pcd文件
pcl_viewer map.pcd

視覺學(xué)習(xí)筆記4——ORB-SLAM3的地圖保存與使用

二、地圖調(diào)用

1.修改PCD文件

接下來需要把建圖的點(diǎn)云集用meshlab導(dǎo)成dae格式的
MeshLab支持的輸入輸出格式:.ply, .stl, .obj, .qobj, off, .ptx, .vmi, .bre, .dae, .ctm, .pts, .apts, .xyz, .gts, .pdb, .tri, .asc, .txt, .x3d, .x3dv, .wrl,它不支持PLC格式,所以需要改一下代碼,改成.ply。
再次魔改之前修改的MapDrawer.cc

//多加上一個頭函數(shù)
#include <pcl/io/ply_io.h>


//修改之前的DrawMapPoints 函數(shù)
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_saved(new pcl::PointCloud<pcl::PointXYZ>());
for(set<MapPoint*>::iterator sit=spRefMPs.begin(), send=spRefMPs.end(); sit!=send; sit++)
{
    if((*sit)->isBad())
        continue;
    Eigen::Matrix<float,3,1> pos = (*sit)->GetWorldPos();
    glVertex3f(pos(0),pos(1),pos(2));
 
    //modified by Awei
    pcl::PointXYZ p;
    p.x = pos(0);
    p.y = pos(1);
    p.z = pos(2);
    cloud_saved->points.push_back(p);
}

 for (int i = 0; i < cloud_saved->points.size(); i++)
    {
        if (isnan(cloud_saved->points[i].x))
        {
            cloud_saved->points[i].x = 0;
            cloud_saved->points[i].y = 0;
            cloud_saved->points[i].z = 0;
        }
    }

if (cloud_saved->points.size())
    pcl::io::savePLYFileBinary("map.ply", *cloud_saved);

ORB-SLAM3重新編譯

sudo ./build.sh
sudo ./build_ros.sh

再運(yùn)行單目實(shí)例

第1個終端:
roscore
第2個終端:
roslaunch usb_cam-test.launch
第3個終端:
rosrun ORB_SLAM3 Mono /home/xxx/Guide_blind/ORB_SLAM3-1.0/Vocabulary/ORBvoc.txt /home/xxx/Guide_blind/ORB_SLAM3-1.0/Examples_old/ROS/ORB_SLAM3/Asus.yaml
第4個終端:
rqt_graph

這時就會自動保存點(diǎn)云.cly文件了。文件保存在主目錄下,想要修改文件保存位置可以參考這篇博客

2.安裝使用meshlab

非常簡單,打開【Ubuntu軟件】,右上角點(diǎn)擊搜索,輸入meshlab回車,然后點(diǎn)擊安裝,只需10s即可安裝成功!

視覺學(xué)習(xí)筆記4——ORB-SLAM3的地圖保存與使用

然后找到應(yīng)用圖標(biāo),打開meshlab,然后打開文件選擇打開的保存的map.ply文件,成功顯示!

視覺學(xué)習(xí)筆記4——ORB-SLAM3的地圖保存與使用文章來源地址http://www.zghlxwxcb.cn/news/detail-464488.html

未完待續(xù)···

到了這里,關(guān)于視覺學(xué)習(xí)筆記4——ORB-SLAM3的地圖保存與使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ORB-SLAM2學(xué)習(xí)筆記7之System主類和多線程

    ORB-SLAM2是一種基于特征的視覺 SLAM ( Simultaneous Localization and Mapping )系統(tǒng),它能夠從單個、雙目或 RBGD 相機(jī)的輸入中實(shí)時地同時定位相機(jī)的位置,并構(gòu)建環(huán)境的三維地圖。 ORB-SLAM2 是在ORB-SLAM的基礎(chǔ)上進(jìn)行改進(jìn)和擴(kuò)展的版本。

    2024年02月12日
    瀏覽(19)
  • ORB-SLAM2學(xué)習(xí)筆記6之D435i雙目IR相機(jī)運(yùn)行ROS版ORB-SLAM2并發(fā)布位姿pose的rostopic

    ORB-SLAM2算法1已成功編譯安裝 ROS 版本 ORB-SLAM2 到本地,以及ORB-SLAM2算法5

    2024年02月14日
    瀏覽(24)
  • 【視覺SLAM】An Improved ORB-SLAM2 in Dynamic Scene with Instance Segmentation

    【視覺SLAM】An Improved ORB-SLAM2 in Dynamic Scene with Instance Segmentation

    Cite: H. Qian and P. Ding.An Improved ORB-SLAM2 in Dynamic Scene with Instance Segmentation[C].2019 Workshop on Research, Education and Development of Unmanned Aerial Systems (RED UAS).Cranfield, UK. 2019:185-191. Keyword: 特征提取,圖像運(yùn)動分析,圖像分割,移動機(jī)器人,姿勢估計(jì),機(jī)器人視覺,SLAM (機(jī)器人) 為了提高動態(tài)

    2024年02月01日
    瀏覽(15)
  • ORB-SLAM稠密點(diǎn)云地圖構(gòu)建(黑白+彩色)+ pcd文件以八叉樹形式表示

    ORB-SLAM稠密點(diǎn)云地圖構(gòu)建(黑白+彩色)+ pcd文件以八叉樹形式表示

    pcl1.8.1 VTK 7.1.1 版本一定要對好,如果安裝了不符的版本如我之前安的pcl1.1.3和VTK8.2 一定要卸載干凈不然會一直報錯 ,不同版本的pcl和vtk是無法共存的,并且光把包刪除是不夠的,要去/usr下面使用命令行(先搜索再一起刪掉) 使用高翔老師的源碼ORB-SLAM2-modified 運(yùn)行前要先把

    2024年02月07日
    瀏覽(32)
  • ORB SLAM3 點(diǎn)云地圖保存

    ORB SLAM3 點(diǎn)云地圖保存

    目前 ORB_SLAM3 已經(jīng)提供了地圖保存功能。 方法是在 yaml 文件中以下這行配置: 保存下來的地圖可以在下次運(yùn)行 ORB_SLAM3 時加載。 然而,我經(jīng)過搜索,沒能找到關(guān)于 .osa 文件離線加載和可視化的方法,于是對 ORB_SLAM3 的代碼進(jìn)行了簡單的修改,使其可以保存 pcd 格式的點(diǎn)云地圖

    2024年02月06日
    瀏覽(61)
  • orb_slam3實(shí)現(xiàn)保存/加載地圖功能and發(fā)布位姿功能

    先說方法:在加載的相機(jī)參數(shù)文件.yaml的最前面加上下面兩行就行。 第一行表示從本地加載名為\\\"MH01_to_MH05_stereo_inertial.osa\\\"的地圖文件,第二行表示保存名為\\\"MH01_to_MH05_stereo_inertial.osa\\\"的地圖到本地。第一次運(yùn)行建圖時注釋掉第一行,只使用第二行,加載地圖重定位時反過來,

    2024年02月15日
    瀏覽(22)
  • 自學(xué)SLAM(2)---保姆教程教你如何使用自己的視頻運(yùn)行ORB-SLAM2

    自學(xué)SLAM(2)---保姆教程教你如何使用自己的視頻運(yùn)行ORB-SLAM2

    如果你是新手入門,僅僅只會Linux的基本操作,并看了高翔老師視覺SLAM視屏的第一講,那么你需要準(zhǔn)備一整天的時間,可能還不一定能運(yùn)行出來!運(yùn)行ORB-SLAM2將會安裝很多很多東西。那么,我們準(zhǔn)備開始??! 我是默認(rèn)你已經(jīng)裝了虛擬機(jī)和Ubuntu系統(tǒng)的!! 首先先展示一下成果

    2024年02月08日
    瀏覽(30)
  • ORB-SLAM2的布置(四)ORB-SLAM2構(gòu)建點(diǎn)云

    ORB-SLAM2的布置(四)ORB-SLAM2構(gòu)建點(diǎn)云

    高博的工作是對基本 ORB SLAM2 的擴(kuò)展,基本思想是為每個關(guān)鍵幀構(gòu)造相應(yīng)的點(diǎn)云,然后依據(jù)從 ORB SLAM2 中獲取的關(guān)鍵幀位置信息將所有的點(diǎn)云拼接起來,形成一個全局點(diǎn)云地圖。 https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map 具體的依賴包括: OpenCV (推薦 3.2 版本) DBoW2 和 g2o(源

    2024年02月05日
    瀏覽(22)
  • ORB-SLAM 論文閱讀

    ORB-SLAM 論文閱讀

    論文鏈接 ORB-SLAM 0. Abstract 本文提出了 ORB-SLAM,一種基于特征的單目同步定位和建圖 (SLAM) 系統(tǒng) 該系統(tǒng)對嚴(yán)重的運(yùn)動雜波具有魯棒性,允許寬基線環(huán)路閉合和重新定位,并包括全自動初始化 選擇重建的點(diǎn)和關(guān)鍵幀的適者生存策略具有出色的魯棒性,并生成緊湊且可跟蹤的地圖

    2024年01月22日
    瀏覽(24)
  • Ubuntu18.04下使用安卓手機(jī)Camera和IMU信息運(yùn)行ORB-SLAM2

    Ubuntu18.04下使用安卓手機(jī)Camera和IMU信息運(yùn)行ORB-SLAM2

    1、下載Android_Camera-IMU,將其中的Camera-Imu.apk文件發(fā)送至手機(jī)端進(jìn)行安裝。 下載命令: git clone https://github.com/hitcm/Android_Camera-IMU.git ?發(fā)送至手機(jī)的文件在手機(jī)端安裝以后的軟件 ?在手機(jī)端安裝好以后的軟件如下: ?2、安裝功能依賴包:sudo apt-get install ros-melodic-imu-tools ?# 修改

    2024年02月09日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包