一、LeGo-LOAM部署
參考鏈接:實(shí)車部署采用速騰聚創(chuàng)RS16激光雷達(dá)的LeGo-LOAM
LeGO-LOAM初探:原理,安裝和測(cè)試
1.gtsam安裝(install的過(guò)程比較慢,需要耐心等待)
git clone https://bitbucket.org/gtborg/gtsam.git
cd ~/gtsam
mkdir build
cd build
cmake ..
sudo make install
2.下載并編譯LeGO-LOAM
mkdir -p slam_ws/src
cd slam_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make
3.數(shù)據(jù)集試運(yùn)行
數(shù)據(jù)集的百度云地址:https://pan.baidu.com/s/1SkrqfN82il1m6jhkLZT-WA 密碼: oqo8
打開(kāi)LeGO-LOAM/LeGO-LOAM/launch/run.launch
文件,確保/use_sim_time
的value
為true
(在線建圖為false
,離線建圖為true
)
運(yùn)行lego-loam
(黑屏別慌)
source devel/setup.bash
roslaunch lego_loam run.launch
遇到下面的報(bào)錯(cuò)
解決辦法
參考鏈接:運(yùn)行l(wèi)ego_loam報(bào)錯(cuò)[mapOptmization-7] process has died pid 11653, exit code 127, cmd /home/p/legoloam/dev
在roslaunch之前動(dòng)態(tài)鏈接庫(kù)
source devel/setup.bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
roslaunch lego_loam run.launch
運(yùn)行剛剛下載的數(shù)據(jù)集
source devel/setup.bash
rosbag play xxx.bag --clock --topic /velodyne_points /imu/data
二、速騰聚創(chuàng)激光雷達(dá)調(diào)試
參考鏈接:速騰聚創(chuàng) RoboSense RS-Helios 32線激光雷達(dá)使用 LeGO-LOAM 算法建圖
因?yàn)镽S-lidar默認(rèn)IP是192.168.1.200
,RS-lidar默認(rèn)可接受數(shù)據(jù)的IP是192.168.1.102
,所以我們將本地ip地址改為192.168.1.102
,子網(wǎng)掩碼設(shè)置為255.255.255.0
將雷達(dá)插上電源,網(wǎng)線與電腦連接后,手動(dòng)修改ip
然后重啟網(wǎng)絡(luò)連接(網(wǎng)絡(luò)開(kāi)關(guān)按鈕關(guān)一下,然后再打開(kāi))
下面打開(kāi)wireshark
,發(fā)現(xiàn)數(shù)據(jù)已經(jīng)通了
sudo wireshark
下面配置ROS開(kāi)發(fā)環(huán)境,ros驅(qū)動(dòng)下載鏈接:https://github.com/RoboSense-LiDAR/rslidar_sdk/releases
手動(dòng)下載rslidar_sdk.tar.gz
文件
新建一個(gè)工作空間,將下載好的ros驅(qū)動(dòng)解壓到該路徑下
mkdir -p RoboSense-LiDAR_ws/src
安裝參考github上面的教程
1.安裝環(huán)境依賴
安裝Yaml(version: >= v0.5.2)
sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev
安裝libpcap(version: >= v1.7.4)
sudo apt-get install -y libpcap-dev
2.編譯和運(yùn)行
下面以ros形式編譯
(1)在文件CMakeLists.txt的頂部,將變量COMPILE_METHOD設(shè)置為CATKIN。
(2)將rslidar_sdk
工程目錄下的package_ros1.xml
文件重命名為package.xml
。
(3)創(chuàng)建一個(gè)新的工作區(qū)文件夾,并在其中創(chuàng)建一個(gè)src文件夾。然后將rslidar_sdk
項(xiàng)目放入src文件夾中。(前面已經(jīng)做過(guò)了)
(4)回到工作區(qū)的根目錄,運(yùn)行以下命令進(jìn)行編譯和運(yùn)行。(如果使用zsh,請(qǐng)將第二個(gè)命令替換為source-devel/setup.zsh
)。
#編譯
cd ~/RoboSense-LiDAR_ws
catkin_make
#運(yùn)行
source devel/setup.bash
roslaunch rslidar_sdk start.launch
運(yùn)行后會(huì)自動(dòng)打開(kāi)一個(gè)rviz,rviz中沒(méi)有雷達(dá)點(diǎn)云
后來(lái)查看RoboSense-LiDAR_ws/src/rslidar_sdk/doc/howto/how_to_offline_decode_pcap_cn.md
里面找到要設(shè)置雷達(dá)型號(hào)
查看雷達(dá)的發(fā)貨清單,發(fā)現(xiàn)雷達(dá)的型號(hào)是RS-Helios
,打開(kāi)RoboSense-LiDAR_ws/src/rslidar_sdk/config/config.yaml
文件,將lidar_type
改成RSHELIOS
重新編譯一下工作空間,運(yùn)行節(jié)點(diǎn),發(fā)現(xiàn)有激光點(diǎn)云信息了
三、將速騰聚創(chuàng)激光雷達(dá)連到LeGo-LOAM
參考鏈接:速騰聚創(chuàng) RoboSense RS-Helios 32線激光雷達(dá)使用 LeGO-LOAM 算法建圖
1.下載一個(gè)轉(zhuǎn)換包,放在RoboSense-LiDAR_ws/src
(與激光雷達(dá)的ros驅(qū)動(dòng)路徑一致)路徑下
cd ~/RoboSense-LiDAR_ws/src
git clone https://github.com/HViktorTsoi/rs_to_velodyne.git
添加launch文件
新建/rs_to_velodyne/launch
文件夾,新建rs_to_velodyne.launch
文件,內(nèi)容如下。(LeGO-LOAM需要的點(diǎn)云格式為XYZIR
,args="XYZIRT XYZIR
"為轉(zhuǎn)換格式的參數(shù)。)
<launch>
<node pkg="rs_to_velodyne" name="rs_to_velodyne" type="rs_to_velodyne" args="XYZIRT XYZIR" output="screen">
</node>
</launch>
打開(kāi)RoboSense-LiDAR_ws/src/rslidar_sdk/CMakeLists.txt
,確保POINT_TYPE
為XYZIRT
編譯、安裝、運(yùn)行
cd ~/RoboSense-LiDAR_ws
catkin_make
source devel/setup.bash
#運(yùn)行rs_to_velodyne
roslaunch rs_to_velodyne rs_to_velodyne.launch
#運(yùn)行ros驅(qū)動(dòng)
roslaunch rslidar_sdk start.launch
訂閱topic:/rslidar_points
,發(fā)布topic:/velodyne_points
接著打開(kāi)LeGO-LOAM/LeGO-LOAM/launch/run.launch
文件
將/use_sim_time
的value
改成false
(在線建圖為false
,離線建圖為true
)
然后運(yùn)行lego_loam
source devel/setup.bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
roslaunch lego_loam run.launch
rviz中成功出現(xiàn)點(diǎn)云
四、解決LeGo-LOAM不保存pcd地圖的問(wèn)題
首先LeGO-LOAM/
路徑下新建PCD_Files
文件夾,用來(lái)保存pcd
點(diǎn)云地圖
接著在LeGO-LOAM/LeGO-LOAM/include/utility.h
文件中第57行將文件保存路徑改成/home/smart_car/slam_ws/src/LeGO-LOAM/PCD_Files/
同樣的,在LeGO-LOAM/LeGO-LOAM/src/mapOptmization.cpp
中,將visualizeGlobalMapThread()
函數(shù)里面有三個(gè)文件路徑改成自己的
運(yùn)行LeGO-LOAM
程序,然后播放ros包,發(fā)現(xiàn)目標(biāo)路徑下并沒(méi)有點(diǎn)云文件保存下來(lái)
解決辦法(參考鏈接:LeGO-LOAM初探:原理,安裝和測(cè)試):
經(jīng)過(guò)調(diào)試,發(fā)現(xiàn)程序進(jìn)入到publishGlobalMap()
函數(shù)后沒(méi)有出來(lái),檢查publishGlobalMap()
函數(shù),發(fā)現(xiàn)下面代碼:
if (pubLaserCloudSurround.getNumSubscribers() == 0)
return;
表明我們需要訂閱pubLaserCloudSurround
,否則會(huì)退出函數(shù),不執(zhí)行后面的代碼,導(dǎo)致globalMapKeyFramesDS
為空。
因此,在運(yùn)行LeGO-LOAM
程序后,手動(dòng)在rviz
中勾選Map Cloud
(這個(gè)問(wèn)題是代碼更新導(dǎo)致的,具體為https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/blob/master/LeGO-LOAM/launch/test.rviz中Map Cloud
由默認(rèn)的勾選變成不勾選。)
然后播放ros包,播放完畢后然后按ctrl+c
退出LeGO-LOAM
程序,最終可以在自定義目錄下生成四個(gè)pcd文件。
使用這個(gè)命令安裝一下點(diǎn)云工具
sudo apt install pcl-tools
使用下面的命令查看點(diǎn)云圖文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-480401.html
pcl_viewer finalCloud.pcd
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-480401.html
到了這里,關(guān)于編譯LeGo-LOAM,并且采用速騰聚創(chuàng)激光雷達(dá)與之相連的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!