前面我已經完成了mid360激光雷達的驅動安裝,octomap的復現,昨天我去把這倆在正式環境中實測了一下,效果不好,走廊轉角沒建出來,我查了一下,應該是TF的原因,但這部分我還不太懂,看到有的教程里說可以用SLAM建圖完成TF變換,加上我之前就想要先做建圖,再用Octomap轉為柵格地圖,于是就有了這次嘗試。
要完成我這篇里實現的東西,你需要先具備這些條件:
1.完成了mid3620的驅動安裝,保證激光雷達有數據,包括了SDK安裝和driver安裝,參考以下鏈接:
Livox_Mid-360激光雷達使用教程_ubuntu 20.04 mid 360 csdn-CSDN博客
2.我使用的是ubuntu18.04,ROS1 noetic。供參考
不想看廢話的可以跳過這幾段:
假設我們現在都裝好了雷達,并且雷達能夠正常工作,那么要復現FAST_LIO的思路是什么呢?我覺得在重現一個項目前,應該要有大致的思路,不能說按照網上的教程一通走,極有可能會出錯,而且不知道錯在哪。(嗚嗚嗚,我踩的坑,淚奔~)。
大致思路:激光雷達運行,FAST_LIO接收到數據開始建圖。其實很簡單。那么對應的就是,我們應該先編譯激光雷達的包,再去編譯建圖的包,不要走回頭路。一起放進src就得走回頭路。
————————————————————————————
下面附上一個保姆級教程:
一、安裝激光雷達驅動
上面已經給了鏈接了,不重復。
我的雷達驅動工作空間名稱為:catkin_livox_ros_driver2
二、安裝編譯FAST_LIO
官方鏈接(建議看看):GitHub - hku-mars/FAST_LIO: A computationally efficient and robust LiDAR-inertial odometry (LIO) package
我用的教程:
GitHub - 66Lau/NEXTE_Sentry_Nav: The navigation system of "sentry" for Next-E team in RoboMaster2023Ubuntu 20.04使用Livox mid 360 測試 FAST_LIO_ubuntu mid360 fastliono configured subnet or ip-ra-CSDN博客
——————————————————————————————
先說說別的問題,我先嘗試了第一個鏈接里的教程,因為這個教程很符合我的要求,可以把整條路徑規劃的線都走通,但一直失敗,編譯時報錯找不到雷達驅動的包,試了很多方法,單獨編譯驅動可行,把下載的源碼放進去編譯就報錯。最后放棄了,還是從簡單的來吧。不過后面我還是會再次嘗試這個鏈接里的方法。
——————————————————————————
1.下載源碼
我是那個永遠git clone不下來的人,所以選擇直接到官方下載.zip
下載之后注意修改文件夾名稱為:FAST_LIO
2.創建一個工作空間
cd ~/$A_ROS_DIR$/srcgit clone https://github.com/hku-mars/FAST_LIO.gitcd FAST_LIOgit submodule update --initcd ../..catkin_makesource devel/setup.bash
這里只是給一個創建工作空間的參考。更方便的是,直接把源碼放到已經編譯好的雷達驅動工作空間里,也就是:把FAST_LIO放到catkin_livox_ros_driver2的src里,如圖所示:
2.修改FAST_LIO源碼
為了使其與mid360適配,必須修改代碼,因為mid360用的是driver2。
大家直接用vscode打開工作空間,搜索:livox_ros_driver
直接選擇全部替換為:livox_ros_driver2
不要一個個去改了。容易出錯。改完之后記得保存。
3.編譯
可以看到,官方給了這樣一句指令
git submodule update --init
?但我們目前沒有使用,而且我用這句指令會報錯,最開始我沒理解啥意思,就沒有管,直接編譯了,然而,會報錯!找不到include/ikd-Tree/ikd_Tree.cpp 這個玩意兒。
于是我就去下載的源碼里看,真沒有這玩意,又去官網看了下,原來他把這個放在了子倉庫里。直接從子倉庫里下載.zip復制里面的文件放在include/ikd-Tree里就行了:
GitHub - hku-mars/ikd-Tree at e2e3f4e9d3b95a9e66b1ba83dc98d4a05ed8a3c4
?————————————————————
接下來,正式開始編譯!!!!
首先,要進入工作空間編譯,我用的是:
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
如果你的環境沒問題,直接用catkin_make也可以的。我的是因為曾經出了一些問題,不這樣會報錯。
激動人心!!終于成功了!!!紀念!!
4.運行
如果你前面都成功了,那就運行看結果吧!!
首先,確認你的雷達連線沒有問題,ip已經配置成功,能夠看到數據進來。
其次,沒有其次了。。。哈哈哈
————————
開始運行:
啟動雷達:
#進入工作空間source devel/setup.bash
roslaunch livox_ros_driver2 msg_MID360.launch
重開一個終端,啟動FAST_LIO:
source devel/setup.bash
roslaunch fast_lio mapping_mid360.launch
沒有問題的話,你就可以看到結果了:
5.結果保存
結束運行后,結果會自動保存到PCD文件夾,這個scans就是我今天跑的:
然后,如果你想查看這個.pcd,需要安裝pcl的一個工具包:
sudo apt install pcl-tools
最后,進入PCD文件夾:
pcl_viewer scans.pcd
就能看到結果啦:
按不同的鍵,它會有不同的著色喲,哈哈哈,我覺得最好玩的就是看到結果之后。上面這個是按的5。
1 is all random2 is X values3 is Y values4 is Z values5 is intensity
——————————————————————
好了,最后來記錄一下吧,后續呢我還要進行將pcd傳給octomap進行柵格地圖構建。目前有兩種思路,一種參考鏈接1的教程。一種用octomap的教程中的實時顯示。大差不差感覺。
最后,有空再嘗試一下鏈接1教程的那一套,能不能走得通。
做事情之前一定要先想想大致思路,為什么要這么做。不要無腦看教程。會走彎路。
希望大家都能成功!!
——————————————————————
更新,我馬不停蹄的去試了一下用跑出來的pcd文件生成octomap的柵格地圖
1.直接上鏈接吧
OctoMap-基于八叉樹的地圖 - 智學無人小車平臺
這個實測可以成功。
(奇怪,之前跑的那個octomap居然跑不出來了),會報錯:
用上面那個跑,結果是這樣的,有點奇怪誒,感覺是不是分辨率的問題,也有可能是這個mid360的點云。。。:
怎么和人家的pcd跑出來的不一樣,他這個效果這么好。。。嗚嗚嗚嗚
這個圖是用官方的工具打開的,沒染色,仔細看看還是能看出來中間是空的嘿嘿。
暫時性的成功吧。加油嘍!