0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ORB特征的三維定位與地圖構(gòu)建算法

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-08-16 10:57 ? 次閱讀

這文章相當(dāng)于被追屁股后面寫的東西了,拿到地平線的板子一直準(zhǔn)備做點(diǎn)什么東西出來。

不辜負(fù)是不辜負(fù),有個(gè)雷達(dá)能干嘛,裝頭上嗎?

自到我看見了這個(gè)塵封已久的小飛機(jī)

dji專屬教育小飛機(jī),嘖,可以編程哪種

寫過無數(shù)了,感興趣的大家自己搜索一下

x3很牛,TT也牛,但是我不牛,我得讓他牛,所以我決定搞個(gè)SLAM使用。TT有一個(gè)單目的相機(jī),還有一個(gè)IMU,以及開放的接口。所以有這個(gè)潛力,其次也能學(xué)一手ROS2.事實(shí)上是我太年輕了,后面再說。

在SLAM框架上面我肯定自己寫不了,這里研究了一下午,使用了ORB-SLAM。

ORB-SLAM是一種基于ORB特征的三維定位與地圖構(gòu)建算法(SLAM)[1]。該算法由Raul Mur-Artal,J. M. M. Montiel和Juan D. Tardos于2015年發(fā)表在IEEE Transactions on Robotics。ORB-SLAM基于PTAM架構(gòu),增加了地圖初始化和閉環(huán)檢測的功能,優(yōu)化了關(guān)鍵幀選取和地圖構(gòu)建的方法,在處理速度、追蹤效果和地圖精度上都取得了不錯(cuò)的效果。要注意ORB-SLAM構(gòu)建的地圖是稀疏的。

ORB-SLAM一開始基于monocular camera,后來擴(kuò)展到Stereo和RGB-D sensor上。作者好像還會做Semi-dense mapping的擴(kuò)展。作者的開源代碼都在GIT上。

ORB-SLAM算法的一大特點(diǎn)是在所有步驟統(tǒng)一使用圖像的ORB特征。ORB特征是一種非??焖俚奶卣魈崛》椒ǎ哂行D(zhuǎn)不變性,并可以利用金字塔構(gòu)建出尺度不變性。使用統(tǒng)一的ORB特征有助于SLAM算法在特征提取與追蹤、關(guān)鍵幀選取、三維重建、閉環(huán)檢測等步驟具有內(nèi)生的一致性。

16bd9930-1c98-11ed-ba43-dac502259ad0.png

架構(gòu)圖

ORB-SLAM利用三個(gè)線程分別進(jìn)行追蹤、地圖構(gòu)建和閉環(huán)檢測。

一、追蹤

ORB特征提取

初始姿態(tài)估計(jì)(速度估計(jì))

姿態(tài)優(yōu)化(Track local map,利用鄰近的地圖點(diǎn)尋找更多的特征匹配,優(yōu)化姿態(tài))

選取關(guān)鍵幀

二、地圖構(gòu)建

加入關(guān)鍵幀(更新各種圖)

驗(yàn)證最近加入的地圖點(diǎn)(去除Outlier)

生成新的地圖點(diǎn)(三角法)

局部Bundle adjustment(該關(guān)鍵幀和鄰近關(guān)鍵幀,去除Outlier)

驗(yàn)證關(guān)鍵幀(去除重復(fù)幀)

三、閉環(huán)檢測

選取相似幀(bag of words)

檢測閉環(huán)(計(jì)算相似變換(3D<->3D,存在尺度漂移,因此是相似變換),RANSAC計(jì)算內(nèi)點(diǎn)數(shù))

融合三維點(diǎn),更新各種圖

圖優(yōu)化(傳導(dǎo)變換矩陣),更新地圖所有點(diǎn)。

先別看這么高大上,需要做修改的。這個(gè)ORB_SLAM2 庫不用Pangolin可視化,而是通過 ROS2 topcis 發(fā)布所有數(shù)據(jù)。

而且這里也需要對TT飛機(jī)來一套完整的ROS封裝。下篇文章講封裝,在這之前還需要對X3上面的ROS2進(jìn)行一個(gè)熟悉。

16f17f70-1c98-11ed-ba43-dac502259ad0.png

這里使用的編輯器是VSCode,記得密碼是root

171f6da4-1c98-11ed-ba43-dac502259ad0.png

提前看好自己的IP

ssh root@ip

17470c92-1c98-11ed-ba43-dac502259ad0.png

官方的安裝文檔很好了,這里不寫,記得運(yùn)行前必須加一下,當(dāng)然了我這里建議是可以一勞永逸的寫好

1761bd12-1c98-11ed-ba43-dac502259ad0.png

就這樣,下面是我的SLAM庫

176c53da-1c98-11ed-ba43-dac502259ad0.png

但是我也不理解,寫了就好像沒有寫一樣

178be4ca-1c98-11ed-ba43-dac502259ad0.png

等等我找到了!

1799a3b2-1c98-11ed-ba43-dac502259ad0.png

tros。。。地平線自己改了,不過注意后面錄還是不對,沒有foxy了

17bcc18a-1c98-11ed-ba43-dac502259ad0.png

對了在VSCode里面推薦安裝這些插件

17dd9702-1c98-11ed-ba43-dac502259ad0.png

Python的話是安裝這些

17fbdb40-1c98-11ed-ba43-dac502259ad0.png

而且可以使用Jupyter,記得pip3 install jupyter

182fad44-1c98-11ed-ba43-dac502259ad0.png

運(yùn)行的都可以的

186ddf24-1c98-11ed-ba43-dac502259ad0.png

PIP也是可以的

189324c8-1c98-11ed-ba43-dac502259ad0.png

自動補(bǔ)全的速度還行

18b9b354-1c98-11ed-ba43-dac502259ad0.png

第一個(gè)就是我們的tros了

18d949c6-1c98-11ed-ba43-dac502259ad0.png

不過這個(gè)好像就不管用了

18f6b272-1c98-11ed-ba43-dac502259ad0.png

這些說的都對

191c2340-1c98-11ed-ba43-dac502259ad0.png

但是這里指出的是源應(yīng)該是墻外的,所以這里需要全局的安排

接下來試試攝像頭:

1946c05a-1c98-11ed-ba43-dac502259ad0.png

應(yīng)該是插入一個(gè)攝像頭了,但是看源文件

196a2b80-1c98-11ed-ba43-dac502259ad0.png

在tos的文件夾里面

/opt/tros/share/hobot_usb_cam/launch/hobot_usb_cam.launch.py

源碼的位置

198b8fa0-1c98-11ed-ba43-dac502259ad0.png

參數(shù)是dev下面的

19aa9102-1c98-11ed-ba43-dac502259ad0.png

應(yīng)該是要這個(gè)

19c66f8a-1c98-11ed-ba43-dac502259ad0.png

這里啟動失敗,是不是是因?yàn)槲业臋?quán)限不夠

19ebdacc-1c98-11ed-ba43-dac502259ad0.png

報(bào)錯(cuò)是沒有???

1a08f86e-1c98-11ed-ba43-dac502259ad0.png

再開一個(gè)terimal,看看列表

1a241aea-1c98-11ed-ba43-dac502259ad0.png

也知道,節(jié)點(diǎn)都是Python的程序,ros的命令是腳本。

1a3bfb1a-1c98-11ed-ba43-dac502259ad0.png

在tros下面的share是存放公開節(jié)點(diǎn)的地方

1a5c36f0-1c98-11ed-ba43-dac502259ad0.png

就像這樣

1a8c90ac-1c98-11ed-ba43-dac502259ad0.png

包括我們的demo也是在這里的

工作溫度:-25°Cto65°C穩(wěn)定工作溫度:20°Cto60°C生產(chǎn)工藝:SMT(ROSH)物距:60CM-150CM解析度:800LW/PH(Center)芯片型號:JX_F37芯片尺寸:1/3最大分辨率:1920*1080像素點(diǎn)大小:2.7um*2.7um最大圖像傳輸速率:30fps(1920*1080)信噪比:36db動態(tài)范圍:79db芯片型號:JX_F37芯片尺寸:1/3最大分辨率:1920*1080像素點(diǎn)大?。?.7um*2.7um最大圖像傳輸速率:30fps(1920*1080)信噪比:36db動態(tài)范圍:79db

1aae04b2-1c98-11ed-ba43-dac502259ad0.png

1ac4eb14-1c98-11ed-ba43-dac502259ad0.png

這個(gè)就是我們的MIPI的相機(jī)

https://developer.horizon.ai/sunrise

售賣的位置,感謝大佬還給了個(gè)攝像頭:

害,白嫖笑嘻嘻

source /opt/tros/setup.bash  ros2 topic list

1b0b4fb4-1c98-11ed-ba43-dac502259ad0.png

我個(gè)人是習(xí)慣看看話題的情況的

# 配置 TogetherROS 環(huán)境:source /opt/tros/local_setup.bash# launch 方式啟動ros2 launch mipi_cam mipi_cam.launch.py

開啟一個(gè)新的終端,開始把攝像頭開啟

1b230e4c-1c98-11ed-ba43-dac502259ad0.png

攝像頭開啟了一個(gè)新的線程

1b437358-1c98-11ed-ba43-dac502259ad0.png

這個(gè)就是發(fā)布的信息

1b5944c6-1c98-11ed-ba43-dac502259ad0.png

可以對比的看

# 一個(gè)終端編碼source /opt/tros/local_setup.bashros2 run hobot_codec hobot_codec_republish --ros-args -p channel:=1 -p in_mode:=shared_mem -p in_format:=nv12 -p out_mode:=ros -p out_format:=jpeg -p sub_topic:=/hbmem_img -p pub_topic:=/image_jpeg

我們的數(shù)據(jù)在發(fā)送給屏幕顯示的時(shí)候,需要編碼壓縮,所以一個(gè)新的終端

1b81df08-1c98-11ed-ba43-dac502259ad0.png

這個(gè)就是mjpeg的壓縮節(jié)點(diǎn)

1ba1bb7a-1c98-11ed-ba43-dac502259ad0.png

命令

# 再起一個(gè)終端source /opt/tros/local_setup.bash# 啟動nginx,nginx只需啟動一次,如前面已啟動過nginx,則無需再次啟動cd /opt/tros/lib/websocket/webservice && chmod +x ./sbin/nginx &&./sbin/nginx -p .# 啟動websocketros2 run websocket websocket --ros-args -p image_topic:=/image_jpeg -p image_type:=mjpeg -p only_show_image:=true

在起一個(gè)節(jié)點(diǎn)來把我們的mjpeg的信息通過服務(wù)器發(fā)給瀏覽器

1bb8bb90-1c98-11ed-ba43-dac502259ad0.png

然后再瀏覽器打開就行

1bd9349c-1c98-11ed-ba43-dac502259ad0.png

結(jié)果

1c099272-1c98-11ed-ba43-dac502259ad0.png

我們可以看到各個(gè)節(jié)點(diǎn)的情況

1c2a7848-1c98-11ed-ba43-dac502259ad0.png

先把硬件打開

1c49b5be-1c98-11ed-ba43-dac502259ad0.png

把原生的raw數(shù)據(jù)來發(fā)送,并且解碼成mjpeg

1c7d2124-1c98-11ed-ba43-dac502259ad0.png

接著就是把數(shù)據(jù)轉(zhuǎn)發(fā)到瀏覽器

1ca36870-1c98-11ed-ba43-dac502259ad0.png

事已至此我們在繼續(xù)玩

把一個(gè)Mac連入我的熱點(diǎn),打開IP就可以播放(我在吃西紅柿)

這里充分的展示了ROS的方便之處。

打開我的DELL,里面也有ROS,來個(gè)全節(jié)點(diǎn)之間的使用

1d16cd42-1c98-11ed-ba43-dac502259ad0.jpg

首先是可以讀取發(fā)送的節(jié)點(diǎn)信息

1d3ca666-1c98-11ed-ba43-dac502259ad0.jpg

但是rviz2打不開

1d56b0b0-1c98-11ed-ba43-dac502259ad0.jpg

定位到Cmake,是有這個(gè)庫的

1d746042-1c98-11ed-ba43-dac502259ad0.jpg

在這里‘

修了半天也玩不來。

把ROS2卸載了重裝看看怎么樣?(好了)

1d9836c0-1c98-11ed-ba43-dac502259ad0.jpg

卸載了重裝了一次,記得最后加一個(gè)--fixmissing的東西

1db97394-1c98-11ed-ba43-dac502259ad0.png

板子上面運(yùn)行這種東西也沒有什么毛病

1ddd4710-1c98-11ed-ba43-dac502259ad0.png

之后我會給安裝腳本,但sudo就可以的

1df31054-1c98-11ed-ba43-dac502259ad0.png

對了在VSCode里面打開新的目錄是使用這個(gè)命令

1e0f40b2-1c98-11ed-ba43-dac502259ad0.png

打開后你記得選擇信任

抱歉了,本來想無梯子的,不地不掛了,有的文件有點(diǎn)難搞

1e6c2688-1c98-11ed-ba43-dac502259ad0.png

這個(gè)是編譯的TT ROS包,大概一分鐘吧,DELL 幾秒鐘

救命。。。連個(gè)git也沒有

1e940144-1c98-11ed-ba43-dac502259ad0.png

這個(gè)是噩夢的開始,慢不說,內(nèi)存還爆了

1ec0672a-1c98-11ed-ba43-dac502259ad0.jpg

看不懂?

1eec52c2-1c98-11ed-ba43-dac502259ad0.png

就是板子編譯東西的時(shí)候,沒內(nèi)存維持正常運(yùn)行就宕機(jī)了

1f383674-1c98-11ed-ba43-dac502259ad0.jpg

兩位兄臺的建議很好,但是太慢了,我不準(zhǔn)備在X3上面編譯了,我試了腳本為1,但是好慢。

1f46a20e-1c98-11ed-ba43-dac502259ad0.png

目前TT ROS搞好了,就差SLAM了

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8598

    瀏覽量

    151153
  • 三維定位
    +關(guān)注

    關(guān)注

    1

    文章

    8

    瀏覽量

    8364
  • 開源代碼
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    2953

原文標(biāo)題:X3派+大疆無人機(jī)-SLAM單目建圖.上

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    bigemap如使用高程DEM建立三維地圖模型的步驟

    bigemap如何使用高程DEM建立三維地圖模型(Arcgis ArcScene)
    發(fā)表于 04-02 12:46

    三維設(shè)計(jì)應(yīng)用案例

    CAD是目前工業(yè)制造產(chǎn)品設(shè)計(jì)的重要軟件之一,廣泛應(yīng)用于機(jī)械、建筑等領(lǐng)域。而常用的CAD軟件,也就是所謂的三維制圖軟件,較二的圖紙和二的繪圖軟件,三維CAD軟件能夠更加直觀、準(zhǔn)確地反
    發(fā)表于 07-03 07:06

    如何使用高程DEM建立三維地圖模型

    如何使用高程DEM建立三維地圖模型(Arcgis ArcScene)
    發(fā)表于 04-30 09:26

    計(jì)算機(jī)視覺中的三維構(gòu)建

    三維構(gòu)建模是計(jì)算機(jī)視覺技術(shù)的主要內(nèi)容之一。相機(jī)內(nèi)外參數(shù)的標(biāo)定、圖像特征點(diǎn)的提取以及特征點(diǎn)的立體匹配是三維
    發(fā)表于 08-21 12:17 ?15次下載

    基于雙目立體視覺的三維拼接和融合方法

    目前,在計(jì)算機(jī)視覺領(lǐng)域,越來越多的高精度三維重建方法以及實(shí)時(shí)定位地圖構(gòu)建(SLAM)算法正在被提出用來對
    發(fā)表于 11-03 16:46 ?5次下載
    基于雙目立體視覺的<b class='flag-5'>三維</b>拼接和融合方法

    基于VSLAM的移動機(jī)器人三維定位地圖構(gòu)建

    移動機(jī)器人在探索未知環(huán)境且沒有外部參考系統(tǒng)的情況下,面臨著同時(shí)定位地圖構(gòu)建( SLAM)問題。針對基于特征的視覺SLAM( VSLAM)算法
    發(fā)表于 11-24 16:33 ?23次下載
    基于VSLAM的移動機(jī)器人<b class='flag-5'>三維</b><b class='flag-5'>定位</b>與<b class='flag-5'>地圖</b><b class='flag-5'>構(gòu)建</b>

    改進(jìn)ORB特征點(diǎn)匹配算法

    針對定向二進(jìn)制簡單描述符( ORB算法不具備尺度不變性的問題,提出一種結(jié)合快速魯棒性特征( SURF)算法ORB的改進(jìn)
    發(fā)表于 12-15 17:15 ?21次下載

    物聯(lián)網(wǎng)空間劃分的三維定位算法

    基于無線通信和網(wǎng)絡(luò)技術(shù)的三維空間定位是目前物聯(lián)網(wǎng)領(lǐng)域的一個(gè)研究熱點(diǎn),針對當(dāng)前三維目標(biāo)定位算法的精度低、復(fù)雜度高、功耗大等實(shí)際問題,提出了一種
    發(fā)表于 02-27 16:21 ?0次下載

    Taylor算法在TDOA三維定位應(yīng)用中的相關(guān)研究

    針對 Taylor算法在TDOA三維定位中受到外界條件的影響而導(dǎo)致大范圍求解失敗的問題,開發(fā)TDOA三維定位
    發(fā)表于 03-24 15:12 ?18次下載
    Taylor<b class='flag-5'>算法</b>在TDOA<b class='flag-5'>三維</b><b class='flag-5'>定位</b>應(yīng)用中的相關(guān)研究

    一種可在動態(tài)環(huán)境下構(gòu)建語義地圖算法

    三維語義地圖在移動杌器人的導(dǎo)航、路徑規(guī)劃、智能抓取、人機(jī)交互等任務(wù)中有著關(guān)鍵的作用,因此如何實(shí)時(shí)地構(gòu)建三維語義地圖尤為重要。當(dāng)前同時(shí)
    發(fā)表于 05-07 14:56 ?4次下載

    基于實(shí)時(shí)特征檢測等的AR系統(tǒng)三維注冊方法

    針對增強(qiáng)現(xiàn)實(shí)(AR)系統(tǒng)在進(jìn)行虛擬信息疊加時(shí)待注冊區(qū)域被遮擋的情況,提岀一種基于實(shí)時(shí)特征檢測與目標(biāo)跟蹤的AR系統(tǒng)三維注冊方法。使用KCF算法對待注冊目標(biāo)區(qū)域與模板進(jìn)行實(shí)時(shí)FAST特征
    發(fā)表于 06-11 11:34 ?12次下載

    復(fù)雜山地環(huán)境下的WSN節(jié)點(diǎn)三維定位算法

    復(fù)雜山地環(huán)境下的WSN節(jié)點(diǎn)三維定位算法
    發(fā)表于 06-25 16:06 ?6次下載

    基于雙目視覺立體匹配的三維地圖構(gòu)建方法

    摘要:針對基于雙目深度圖的室外大規(guī)模地圖構(gòu)建計(jì)算冗長,而在無人系統(tǒng)的有限算力下,計(jì)算效率需求顯著的情況,文中提出一種基于雙目視覺立體匹配的三維地圖構(gòu)
    的頭像 發(fā)表于 08-10 11:38 ?2431次閱讀

    工程實(shí)踐中VINS與ORB-SLAM的優(yōu)劣分析

    ORB-SLAM是一種基于特征的單目視覺SLAM系統(tǒng),廣泛用于實(shí)時(shí)三維地圖構(gòu)建和機(jī)器人定位。該系
    的頭像 發(fā)表于 04-08 10:17 ?2844次閱讀
    工程實(shí)踐中VINS與<b class='flag-5'>ORB</b>-SLAM的優(yōu)劣分析

    如何實(shí)現(xiàn)三維地圖可視化交互系統(tǒng)

    三維地圖可視化 交互系統(tǒng)是一種基于三維地圖技術(shù)的交互式應(yīng)用程序,可以呈現(xiàn)地理信息和空間數(shù)據(jù)的立體化展示,并提供用戶友好的交互功能。以下是古河云科技關(guān)于
    的頭像 發(fā)表于 07-19 18:20 ?869次閱讀