精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于ORB特征的三維定位與地圖構建算法

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

這文章相當于被追屁股后面寫的東西了,拿到地平線的板子一直準備做點什么東西出來。

不辜負是不辜負,有個雷達能干嘛,裝頭上嗎?

自到我看見了這個塵封已久的小飛機

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

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

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

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

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

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

ORB-SLAM算法的一大特點是在所有步驟統一使用圖像的ORB特征。ORB特征是一種非常快速的特征提取方法,具有旋轉不變性,并可以利用金字塔構建出尺度不變性。使用統一的ORB特征有助于SLAM算法在特征提取與追蹤、關鍵幀選取、三維重建、閉環檢測等步驟具有內生的一致性。

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

架構圖

ORB-SLAM利用三個線程分別進行追蹤、地圖構建和閉環檢測。

一、追蹤

ORB特征提取

初始姿態估計(速度估計)

姿態優化(Track local map,利用鄰近的地圖點尋找更多的特征匹配,優化姿態)

選取關鍵幀

二、地圖構建

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

驗證最近加入的地圖點(去除Outlier)

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

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

驗證關鍵幀(去除重復幀)

三、閉環檢測

選取相似幀(bag of words)

檢測閉環(計算相似變換(3D<->3D,存在尺度漂移,因此是相似變換),RANSAC計算內點數)

融合三維點,更新各種圖

圖優化(傳導變換矩陣),更新地圖所有點。

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

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

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

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

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

提前看好自己的IP

ssh root@ip

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

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

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

運行的都可以的

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

PIP也是可以的

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

自動補全的速度還行

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

第一個就是我們的tros了

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

不過這個好像就不管用了

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

這些說的都對

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

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

接下來試試攝像頭:

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

應該是插入一個攝像頭了,但是看源文件

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

參數是dev下面的

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

應該是要這個

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

這里啟動失敗,是不是是因為我的權限不夠

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

報錯是沒有???

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

再開一個terimal,看看列表

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

也知道,節點都是Python的程序,ros的命令是腳本。

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

在tros下面的share是存放公開節點的地方

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

就像這樣

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

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

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

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

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

這個就是我們的MIPI的相機

https://developer.horizon.ai/sunrise

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

害,白嫖笑嘻嘻

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

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

我個人是習慣看看話題的情況的

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

開啟一個新的終端,開始把攝像頭開啟

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

攝像頭開啟了一個新的線程

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

這個就是發布的信息

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

可以對比的看

# 一個終端編碼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

我們的數據在發送給屏幕顯示的時候,需要編碼壓縮,所以一個新的終端

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

這個就是mjpeg的壓縮節點

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

命令

# 再起一個終端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

在起一個節點來把我們的mjpeg的信息通過服務器發給瀏覽器

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

然后再瀏覽器打開就行

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

結果

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

我們可以看到各個節點的情況

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

先把硬件打開

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

把原生的raw數據來發送,并且解碼成mjpeg

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

接著就是把數據轉發到瀏覽器

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

事已至此我們在繼續玩

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

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

打開我的DELL,里面也有ROS,來個全節點之間的使用

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

首先是可以讀取發送的節點信息

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

但是rviz2打不開

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

定位到Cmake,是有這個庫的

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

在這里‘

修了半天也玩不來。

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

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

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

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

板子上面運行這種東西也沒有什么毛病

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

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

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

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

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

打開后你記得選擇信任

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

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

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

救命。。。連個git也沒有

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

這個是噩夢的開始,慢不說,內存還爆了

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

看不懂?

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

就是板子編譯東西的時候,沒內存維持正常運行就宕機了

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

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

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

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

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8497

    瀏覽量

    150834
  • 三維定位
    +關注

    關注

    1

    文章

    8

    瀏覽量

    8357
  • 開源代碼
    +關注

    關注

    0

    文章

    34

    瀏覽量

    2928

原文標題:X3派+大疆無人機-SLAM單目建圖.上

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

收藏 人收藏

    評論

    相關推薦

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

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

    三維設計應用案例

    CAD是目前工業制造產品設計的重要軟件之一,廣泛應用于機械、建筑等領域。而常用的CAD軟件,也就是所謂的三維制圖軟件,較二的圖紙和二的繪圖軟件,三維CAD軟件能夠更加直觀、準確地反
    發表于 07-03 07:06

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

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

    計算機視覺中的三維構建

    三維構建模是計算機視覺技術的主要內容之一。相機內外參數的標定、圖像特征點的提取以及特征點的立體匹配是三維
    發表于 08-21 12:17 ?15次下載

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

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

    基于VSLAM的移動機器人三維定位地圖構建

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

    改進ORB特征點匹配算法

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

    物聯網空間劃分的三維定位算法

    基于無線通信和網絡技術的三維空間定位是目前物聯網領域的一個研究熱點,針對當前三維目標定位算法的精度低、復雜度高、功耗大等實際問題,提出了一種
    發表于 02-27 16:21 ?0次下載

    Taylor算法在TDOA三維定位應用中的相關研究

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

    一種可在動態環境下構建語義地圖算法

    三維語義地圖在移動杌器人的導航、路徑規劃、智能抓取、人機交互等任務中有著關鍵的作用,因此如何實時地構建三維語義地圖尤為重要。當前同時
    發表于 05-07 14:56 ?4次下載

    基于實時特征檢測等的AR系統三維注冊方法

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

    復雜山地環境下的WSN節點三維定位算法

    復雜山地環境下的WSN節點三維定位算法
    發表于 06-25 16:06 ?6次下載

    基于雙目視覺立體匹配的三維地圖構建方法

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

    工程實踐中VINS與ORB-SLAM的優劣分析

    ORB-SLAM是一種基于特征的單目視覺SLAM系統,廣泛用于實時三維地圖構建和機器人定位。該系
    的頭像 發表于 04-08 10:17 ?2621次閱讀
    工程實踐中VINS與<b class='flag-5'>ORB</b>-SLAM的優劣分析

    如何實現三維地圖可視化交互系統

    三維地圖可視化 交互系統是一種基于三維地圖技術的交互式應用程序,可以呈現地理信息和空間數據的立體化展示,并提供用戶友好的交互功能。以下是古河云科技關于
    的頭像 發表于 07-19 18:20 ?826次閱讀