這文章相當于被追屁股后面寫的東西了,拿到地平線的板子一直準備做點什么東西出來。
不辜負是不辜負,有個雷達能干嘛,裝頭上嗎?
自到我看見了這個塵封已久的小飛機
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算法在特征提取與追蹤、關鍵幀選取、三維重建、閉環檢測等步驟具有內生的一致性。
架構圖
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進行一個熟悉。
這里使用的編輯器是VSCode,記得密碼是root
提前看好自己的IP
ssh root@ip
官方的安裝文檔很好了,這里不寫,記得運行前必須加一下,當然了我這里建議是可以一勞永逸的寫好
就這樣,下面是我的SLAM庫
但是我也不理解,寫了就好像沒有寫一樣
等等我找到了!
tros。。。地平線自己改了,不過注意后面錄還是不對,沒有foxy了
對了在VSCode里面推薦安裝這些插件
Python的話是安裝這些
而且可以使用Jupyter,記得pip3 install jupyter
運行的都可以的
PIP也是可以的
自動補全的速度還行
第一個就是我們的tros了
不過這個好像就不管用了
這些說的都對
但是這里指出的是源應該是墻外的,所以這里需要全局的安排
接下來試試攝像頭:
應該是插入一個攝像頭了,但是看源文件
在tos的文件夾里面
/opt/tros/share/hobot_usb_cam/launch/hobot_usb_cam.launch.py
源碼的位置
參數是dev下面的
應該是要這個
這里啟動失敗,是不是是因為我的權限不夠
報錯是沒有???
再開一個terimal,看看列表
也知道,節點都是Python的程序,ros的命令是腳本。
在tros下面的share是存放公開節點的地方
就像這樣
包括我們的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
這個就是我們的MIPI的相機
https://developer.horizon.ai/sunrise
售賣的位置,感謝大佬還給了個攝像頭:
害,白嫖笑嘻嘻
source /opt/tros/setup.bash ros2 topic list
我個人是習慣看看話題的情況的
# 配置 TogetherROS 環境:source /opt/tros/local_setup.bash# launch 方式啟動ros2 launch mipi_cam mipi_cam.launch.py
開啟一個新的終端,開始把攝像頭開啟
攝像頭開啟了一個新的線程
這個就是發布的信息
可以對比的看
# 一個終端編碼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
我們的數據在發送給屏幕顯示的時候,需要編碼壓縮,所以一個新的終端
這個就是mjpeg的壓縮節點
命令
# 再起一個終端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的信息通過服務器發給瀏覽器
然后再瀏覽器打開就行
結果
我們可以看到各個節點的情況
先把硬件打開
把原生的raw數據來發送,并且解碼成mjpeg
接著就是把數據轉發到瀏覽器
事已至此我們在繼續玩
把一個Mac連入我的熱點,打開IP就可以播放(我在吃西紅柿)
這里充分的展示了ROS的方便之處。
打開我的DELL,里面也有ROS,來個全節點之間的使用
首先是可以讀取發送的節點信息
但是rviz2打不開
定位到Cmake,是有這個庫的
在這里‘
修了半天也玩不來。
把ROS2卸載了重裝看看怎么樣?(好了)
卸載了重裝了一次,記得最后加一個--fixmissing的東西
板子上面運行這種東西也沒有什么毛病
之后我會給安裝腳本,但sudo就可以的
對了在VSCode里面打開新的目錄是使用這個命令
打開后你記得選擇信任
抱歉了,本來想無梯子的,不地不掛了,有的文件有點難搞
這個是編譯的TT ROS包,大概一分鐘吧,DELL 幾秒鐘
救命。。。連個git也沒有
這個是噩夢的開始,慢不說,內存還爆了
看不懂?
就是板子編譯東西的時候,沒內存維持正常運行就宕機了
兩位兄臺的建議很好,但是太慢了,我不準備在X3上面編譯了,我試了腳本為1,但是好慢。
目前TT ROS搞好了,就差SLAM了
-
接口
+關注
關注
33文章
8497瀏覽量
150834 -
三維定位
+關注
關注
1文章
8瀏覽量
8357 -
開源代碼
+關注
關注
0文章
34瀏覽量
2928
原文標題:X3派+大疆無人機-SLAM單目建圖.上
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論