使用realsense t265測試svo2.0視覺里程計

畢業三年了,現在是第二份工作,第一份工作已經結束一年半了,這意味著,我有一年半的時間沒有搞視覺SLAM相關的東西了,雖然在第二份工作也是做視覺相關的,但是只是用到一些目標識別和跟蹤的知識,并鍛煉了一下工程實現能力,編程能力,一直是我的一塊心病,哈哈,由此可見我不用適合做程序員,至少不會是出色的程序員,但是這畢竟是我一個比較靠譜的職業,他可以讓我生活的更好一些,所以,我還是在不斷堅持,我去面試視覺SLAM崗位,面試官都會問,你有沒有做過什么改進,可笑的是,我只是對一些開源的視覺SLAM代碼熟悉一些而已。但是不積跬步無以至千里,我還是把基礎的工作做好,隨緣吧,哈哈,佛系程序員是這樣的嗎。

今年年初我用了一年的時間完成了兩個工作,單房間和多房間掃地機的覆蓋率測試軟件,從場地搭建到軟件開發,都是我一個人,雖然很多時候感覺到孤寂,但是看到其他同事跟項目經理扯皮時,被項目經理追著不放時,我感覺我是幸運的。完成了上面的項目后,領導讓我開始調研視覺SLAM,想在我們現有的掃地機算法上加上視覺算法,重操舊業,感覺不錯,但是壓力還是不小的,我沒有信息能做好,最初的一段時間我忙著去醫院保胎,還得趕緊把駕照考出來,所以調研的進度比較慢,后來胎兒穩定了,駕照也考出來了,我的心也安定下來,專心做起工作來。

雖說是調研,但是還得實踐,不能說光看看論文,博客就可以了,那就不得不搭建環境,把算法跑起來。說到大環境,不得不讓我想起來,我在研究生時剛開始研究視覺SLAM時,那那基本上兩三天重裝一次Ubuntu系統,我還有個電子文檔專門記錄我的一些成功的操作,哪個庫怎么安裝,但是壓力確實很大,Linux系統知識,編程能力,視覺SLAM基礎知識,數學基礎,真的讓我吃不消,不知道當初為啥非要選這個方向。大概是沒有自知之明,真是慘不忍睹。

話說回來,正是有了之前的無數次失敗的經驗,以及五六年里的知識沉淀,所以這次重新搭建環境就感覺輕松很多,因為我堅信,我遇到的問題,在網上一定會找到答案的,當時你如果能跳墻那是很好的,你的視野大了不是一點半點。之前一直用的是Ubuntu16.04,現在用的是Ubuntu8.04,差別不是很大。之前搭建過orb-slam3的環境,這次也比較順暢,下一個是svo,尤其是svo2.0,費了老鼻子勁了。很多問題是因為網絡問題導致的,一個是Ubuntu上我不能跳墻,在著就是,公司網速不好,一個東西要重復下載好幾次,才有可能成功。所以第二次下載是我就使用手機熱點,確實要好很多。

一、在原有win10系統的基礎上安裝Ubuntu18.04系統

?

Windows10安裝ubuntu18.04雙系統教程 - 不妨不妨,來日方長 - 博客園

Ubuntu上安裝一個sogou輸入法,好使

搜狗輸入法linux-安裝指導搜狗輸入法for linux—支持全拼、簡拼、模糊音、云輸入、皮膚、中英混輸https://shurufa.sogou.com/linux/guide?

二、Ros melodic安裝

我按照官網和一些博客文章安裝最后在rosdep update出了問題一直解決不了,不過這篇文章有解決方法?

ubuntu18.04 ROS melodic完整版教程及錯誤處理(附帶 catkin_ws工作空間搭建)_黃宏智的博客-CSDN博客_ubuntu18.04安裝catkin

?我是用上面的方法解決的rosdep update失敗的問題,后來公司來了一個實習生,在遇到同樣的問題時,他找到了下面這個解決方案,感覺要簡單很多。

本文之后,世上再無rosdep更新失敗問題!如果有....小魚就...造福國內用戶的rosdepc出來啦,再也不用擔心rosdep初始化失敗問題。\x0a大家好,我是小魚,經過小魚的不懈努力,rosdep國產替代品rosdepc終于完成,一行代碼搞定初始化失敗問題。https://mp.weixin.qq.com/s/VGs8oWdhHH6XsHcx21lN4Q

三、 orb-slam3環境搭建

ubuntu18.04配置ORB-SLAM3(包含ROS)完整版教程_黃宏智的博客-CSDN博客

?四、svo2.0

SVO2.0 安裝編譯_HR19的博客-程序員ITS203 - 程序員ITS203

在執行catkin build指令后,需要下載很多東西,好幾個庫會因為網速的問題,無法下載,可以嘗試使用手機熱點聯網進行編譯下載,再者出現“無法獲取某個網址”錯誤時,那就重新編譯,多執行幾次編譯命令,再次編譯時不要刪除掉上一次已經下載的build等文件夾中的東西。

除了網速問題,我還遇到了幾個明顯的問題,

(1)如果遇到“std::automic<int> a;不可以在定義式直接初始化”的錯誤時,

解決方案:那就在提示出錯誤的這個文件上添加頭文件 #include<automic.h>

? (2) 如果遇到“next is not a member of boost : in /usr/include/yaml-cpp/node/detail/iterator.h”

在/usr/include/boost/next_prior.hpp中實現了boost::next的功能

解決方案:在iterator.h文件中添加 #include<boost/next_prior.hpp>

(3)如果遇到“/usr/local/include/sigslot/signal.hpp:1160:65 error: 'slots_reference ' was not declared in this space”

解決方案:將所有CMakeLists.txt中的所有的c++11替換為c++14

五、安裝realsense t265相機驅動

按照官網“librealsense/installation.md at development · IntelRealSense/librealsense · GitHub”上說的步驟來安裝,太過漫長,所以我就使用下面的方法來安裝,還有安裝ros Wrapper的步驟

(69條消息) ubuntu18.04 Intel Realsense T265與Realsense D435i 使用教程_xtdx_xty的博客-CSDN博客

六、使用realsense t265運行svo2.0

首先t265相機是omni-direction相機,對于這種相機使用的相機鏡頭比較特殊,構建鏡頭畸變模型時常用的模型有"Kannala Brandt", "MEI", "Scaramuzza",開源的框架中orb-slam3使用的是Kannala Brandt模型,vins使用的是MEI模型,svo2.0 使用的是scaramuzza模型,前兩種模型都可以用kalibr進行標定,但是kalibr 不能標定scaramuzza模型,只能用ocam_clib庫標定,所以你需要安裝matlab,然后運行ocam_calib進行標定。標定出來還需要根據svo_ros/scripts/omni_matlab_to_rpy.py進行轉換,得到一個24維的矩陣。

參考calib/blufox_25000826_fisheye.yaml文件,還需要一個mask,下面是參考vins的mask的生成方式,得到一個mask。

cv::Mat image = cv::Mat::zeros(800, 848, CV_8UC1);
cv::circle(image, cv::Point2f(424, 400), 424, cv::Scalar(255), -1, 8, 0);
cv::imwrite("mask.png", image);
cv::imshow("mask", image);
cv::waitKey(0);
return 0;

然后在launch/fronted/run_from_bag.launch文件中,將"cam0_topic” value修改為t265相機發布的話題,“camera/fisheye1/image_raw”, 然后是將pinhole.yaml改為fisheye.yaml.

然后首先將t265相機的話題發布出來

roslaunch realsense2_camera rs_t265.launch

然后運行svo2

roslaunch svo_ros realsense.launch cam_name:=realsense_t265_fisheye(這里的realsense.launch是從run_from_bag.launch文件修改過來的,我創建的t265相機的配置文件命名為 realsense_t265_fisheye.yaml)

上面的工作都做完后,我終于在周五下班前的一分鐘,運行成功了,這周工作總算有個交代。但是這周一我跑了一下比較長的走廊,視覺里程計的跟蹤效果不好,角度沒有漂移,但是尺度在開始測試后不久漂移了很多,尺度一直在縮小,不知道是不是我的相機標定結果不精確有關系。

?總結:拿到最后的結果,上面五步是不可或缺的,也用了不少時間,最后是卡在了t265相機的畸變模型上面,其實在svo pro的GitHub上也是有介紹calibration這一塊的,但是剛開始并沒有放心上,不敏感,大概是剛開始對于上面提到的那三種相機模型不熟悉緣故,后來慢慢了解了這三種模型,自己的下一步工作才清晰。要不,剛開始,不知道自己到底該做些什么,怎么做。

上面測試結果,尺度漂移的厲害,肯定是有原因的,我先從我自己的工作上找問題,看看能不能解決這個問題。然后是把imu的數據也加上,再看一下效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252247.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252247.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252247.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JSP動作標識

jsp中include有兩種形式: include指令&#xff1a;<% include file""%> include動作&#xff1a;<jsp:include page"" /> 他們的區別&#xff1a; <% include file""%>又稱靜態包含&#xff0c;使用時要注意以下幾點&#xf…

面試必問之JVM原理

1&#xff1a;什么是JVM JVM是Java Virtual Machine&#xff08;Java虛擬機&#xff09;的縮寫&#xff0c;JVM是一種用于計算設備的規范&#xff0c;它是一個虛構出來的計算機&#xff0c;是通過在實際的計算機上仿真模擬各種計算機功能來實現的。Java虛擬機包括一套字節碼指令…

InfluxDB學習之InfluxDB的基本操作

InfluxDB提供類SQL語法&#xff0c;如果熟悉SQL的話會非常容易上手。本文就為大家介紹一下InfluxDB的基本操作。 InfluxDB提供類SQL語法&#xff0c;如果熟悉SQL的話會非常容易上手。 一、InfluxDB操作方式 InfluxDB提供三種操作方式&#xff1a; 1&#xff09;客戶端命令行方式…

運行svo 2.0的 vio時遇到opencv沖突的問題

當我運行如下指令時&#xff0c;遇到了如下問題 指令 cd svo_ws source ./devel/setup.bash roslaunch svo_ros euroc_vio_mono.launch rosbag play MH_01_easy.bag -s 50 運行時遇到的問題 OpenCV Error: Bad argument (Unknown interpolation method) in resize, file /b…

DOS Network一月項目月報

歡迎大家閱讀DOS Network第一期項目月報&#xff01;DOS為了跟大家更好的溝通和交流&#xff0c;將在每個月為大家跟進DOS Network項目進展月報。月報主要分為項目研發和社區及營銷兩個部分。 如果你是剛認識DOS Network預言機網絡的新朋友&#xff0c;歡迎查閱往期文章&#x…

lsof詳解

from:https://www.cnblogs.com/the-study-of-linux/p/5501593.html lsof (list open files)是一個列出當前系統打開文件的工具。在linux系統環境下&#xff0c;任何事物都可以以文件形式存在&#xff0c;通過文件不僅可以訪問常規的數據&#xff0c;還可以訪問網絡連接和硬件。…

Ubuntu18.04上下載安裝使用sogou輸入法

下載地址&#xff1a;搜狗輸入法Linux官網-首頁 安裝設置網址&#xff1a;搜狗輸入法Linux官網-安裝指導 這樣Ubuntu下工作就更加方便了。

正則

&#xff08;一&#xff09;字符類 [...]  方括號內的任意字符 [^...]   不在方括號內的任意字符 .    除換行符和其它Unicode行終止符之外的任意字符 \w   任何ASCII字符組成的單詞&#xff0c;等價于[a-zA-Z0-9] \W   任何非ASCII字符組成的單詞&#xff0c;等價…

使用Cloud Studio寫python

1、進入【騰訊云開發者平臺】 2、點擊【進入工作空間】 3、點擊【新建工作空間】 4、點擊【從模版創建】 選擇你需要的空間環境&#xff0c;就可以開始啦&#xff01;轉載于:https://juejin.im/post/5c75f79051882562962ef5d7

顯卡、顯卡驅動、顯存、GPU、CUDA、cuDNN

&#xfeff;&#xfeff;顯卡Video card&#xff0c;Graphics card&#xff0c;又叫顯示接口卡&#xff0c;是一個硬件概念&#xff08;相似的還有網卡&#xff09;&#xff0c;執行計算機到顯示設備的數模信號轉換任務&#xff0c;安裝在計算機的主板上&#xff0c;將計算機的…

ros rviz顯示rosbag中的圖像和imu數據

一、rosbag相關的指令 1. rostopic list //列舉出系統中正在發布的ros 話題 2. rosbag record -a //錄制系統中所有正在發布的ros 話題 3. rosbag record topic1 topic2 .... -o bagname.bag 4. rosbag play bagname.bag //播放bag文件 5. rosbag info bagname.bag //查看…

PX4的workqueue

Workqueue相當于是中斷子程序&#xff0c;然后在queue的cycle里面要注意&#xff0c;不能在cycle函數里面用printf打印&#xff0c;在cycle里面printf函數是打印不出來的。 也不能在cycle里面用while(1)&#xff0c;就是不能讓程序一直在queue里面執行&#xff0c;要想讓cycle執…

企業選擇 多云管理平臺 六大注意事項

企業選擇 多云管理平臺 六大注意事項 1、是否足夠簡單&#xff0c;學習曲線有多長 2、是否可實現自動化環境部署&#xff0c;日常運維作業等一系列操作&#xff1f; 3、是否可以管理全異構的云環境&#xff0c;支持主流公有云廠商的云資源&#xff1f; 4、是否能提供管理成本、…

面向接口編程

面向接口編程 一般在實現一個系統的時候,通常是將定義與實現合為一體,不加分離的&#xff0c;我認為最為理解的系統設計規范應該是所有的定義與實現分離&#xff0c;盡管這對于系統中某些復雜的情況有些繁煩。面向接口編程設計 使用面向接口編程思想將層與層之間通過接口依賴,下…

Java并發學習之一——線程的創建

與每個java語言中的元素一樣&#xff0c;線程是對象。在Java中&#xff0c;我們有兩種方式創建線程&#xff1a; 1、通過直接繼承thread類&#xff0c;然后覆蓋run方法。 2、構建一個實現Runnable接口的類&#xff0c;然后創建一個thread類對象并傳遞Runnable對象作為構造參數 …

day1||python

測試題&#xff1a; 0. Python 是什么類型的語言&#xff1f; Python是一種面向對象、解釋型、動態類型計算機程序設計語言解釋型&#xff1a;程序無需編譯成二進制代碼&#xff0c;而是在執行時對語句一條一條編譯動態類型&#xff1a;在程序執行過程中&#xff0c;可以改變變…

2.7萬字還原行業面貌,《2019 AI金融風控行業研究報告》正式上線!...

在金融科技領域&#xff0c;風險控制的重要性&#xff0c;從其關聯的金融業務和結合的技術維度可見一斑&#xff1a;風控涉及信用借貸、保險、支付、供應鏈金融等場景&#xff0c;并運用了包括生物特征識別、機器學習、自然語言處理、大數據、云計算等多項技術。 區別于美國有…

【原創】QT簡單計算器

代碼 //main.cpp#include "calculator_111.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); return a.exec(); /* //QT creator Calculator_111 win; win.show(); return…

cs堡壘機使用說明

一、堡壘機介紹 為了保證機房的網絡安全&#xff0c;IDC內所有服務器不被允許從辦公網直接ssh登錄&#xff0c;必須通過跳板機進行間接登錄。用戶通過跳板機執行的所有命令&#xff08;包括通過跳板機登錄的其他機器后的命令&#xff09;都會被保存并審計。 cs是我們登錄IDC服…

export和export default的區別

es6中export和export default的區別 export與export default均可用于導出常量、函數、文件、模塊&#xff1b;你可以在其它文件或模塊中通過import(常量 | 函數 | 文件 | 模塊)名的方式&#xff0c;將其導入&#xff0c;以便能夠對其進行使用&#xff1b;在一個文件或模塊中&am…