1. 簡介
fusion_pointclouds 主要目的為Ubuntu環(huán)境下無人車多激光雷達(dá)標(biāo)定之后, 將多個激光雷達(dá)點(diǎn)云話題/坐標(biāo)系 通過PCL (Point Cloud Library)融合為 一個ros點(diǎn)云話題,以便于后期點(diǎn)云地面分割與地面處理等等。
1.1 應(yīng)用場景
圖1:為了保證激光雷達(dá)的360°環(huán)境覆蓋,我們需要用到多傳感器的拼接 | 圖2:只單純?nèi)诤霞す饫走_(dá)的信息,多激光雷達(dá)會發(fā)生重疊,因此需要點(diǎn)云坐標(biāo)變換 |
|
|
圖3:激光雷達(dá)一定角度掃描車體本身,濾除車身周圍干擾/遮擋點(diǎn)云,如圖1白色區(qū)域,下圖為pcl濾波效果圖 | 圖4:雷達(dá)外參標(biāo)定不一定十分精確,濾波需要估計車體大小也需調(diào)整。結(jié)合rqt_reconfigure 模塊實現(xiàn)在線動態(tài)參數(shù)微調(diào) |
![]() |
|
圖1-3均來源網(wǎng)絡(luò),只為表達(dá)場景需求,非商用。
?1.2 項目內(nèi)容
???????????? (1)點(diǎn)云的坐標(biāo)變化;
???????????? (2)通過PCL(Point Cloud Library)融合為一個點(diǎn)云話題;
? ?????????? (3)通過條件濾波與直通濾波方式,可濾除車身周圍干擾/遮擋點(diǎn)云與遠(yuǎn)處較弱點(diǎn)云;
? ?????????? (4)結(jié)合ros系統(tǒng)中 rqt_reconfigure 模塊實現(xiàn)在線動態(tài)參數(shù)微調(diào)。
2.依賴介紹-ROS
若需在ROS環(huán)境下使用雷達(dá)驅(qū)動,則需安裝ROS相關(guān)依賴庫
Ubuntu 16.04 - ROS kinetic desktop-full
Ubuntu 18.04 - ROS melodic desktop-full (自帶pcl-1.8,無需安裝)
安裝方式: 參考 Documentation - ROS Wiki 如果安裝了ROS kinetic desktop-full版或ROS melodic desktop-full版,那么兼容版本其他依賴庫也應(yīng)該同時被安裝了,所以不需要重新安裝它們以避免多個版本沖突引起的問題, 因此,強(qiáng)烈建議安裝desktop-full版,這將節(jié)省大量的時間來逐個安裝和配置庫。
?3. 編譯 & 運(yùn)行
????????1.將 *fusion_pointclouds* 工程工作空間放入*src*文件夾內(nèi)。
git clone https://github.com/Hliu0313/fusion_pointclouds.git
????????2.根據(jù)實際情況修改fusion_pointclouds/config/params.yaml
樣例:詳細(xì)可下載程序,查看。
fusion_lidar_num: 3 #融合 lidar 點(diǎn)云數(shù)量 2/3/4
topics: #訂閱 lidar 點(diǎn)云話題
parent_pc_topic: "/front/rslidar_points"
child_pc_topic1: "/back/rslidar_points"
child_pc_topic2: "/left/rslidar_points"
child_pc_topic3: "/front/rslidar_points"
fusion_pc_topic: "/rslidar_points" #融合后發(fā)布點(diǎn)云話題名稱
fusion_pc_frame_id: "/front_rslidar" #融合后發(fā)布點(diǎn)云話題名稱
#注意
????????3.返回工作空間目錄,執(zhí)行以下命令即可編譯&運(yùn)行
catkin_make
source devel/setup.bash
????????? (1)注意:只做點(diǎn)云tf變換、融合與濾波,不啟動rqt_reconfigure
roslaunch fusion_pointclouds fusion_pointclouds.launch
???????? (2)啟動rqt_reconfigure 動態(tài)調(diào)整參數(shù),用于參數(shù)實時微調(diào)
roslaunch fusion_pointclouds fusion_pointclouds.launch set_params:=true
4. 參數(shù)介紹
本工程只有一份參數(shù)文件 params.yaml
, 儲存于fusion_pointclouds/config
文件夾內(nèi),配合load_params.h
與load_params.cpp
加載參數(shù),方便隨時修改。
(參數(shù)配置介紹在參數(shù)文件中已經(jīng)描述較為詳細(xì),在此不做介紹)
5.改進(jìn)方向
1.using PointCloud = pcl::PointCloud<pcl::PointXYZIR>;-點(diǎn)云包括帶pcl::PointXYZIR,pcl::PointXYZI兩種格式,設(shè)置自由切換入口,可參考rslidar_sdk
2.圖像與激光雷達(dá) 動態(tài)可視化參數(shù)微調(diào)
3.初次寫筆記請多多見諒,未來會積極的向前輩大佬們學(xué)習(xí)!
補(bǔ)充:
6. 功能包結(jié)構(gòu)
主要程序為fusion_pointclouds.cpp 與 fusion_pointclouds.h 其頭文件。
>config
????? ?? >>params.yaml -- 將參數(shù)上傳至ros參數(shù)空間,方便程序獲取參數(shù),且可讓程序訂閱不同雷達(dá)話題,自定義發(fā)布話題名稱及frame_id,增加了程序適應(yīng)性;
???? ? ? >>set_params_bounds.cfg -- 生成 src/set_params_bounds.cpp頭文件,調(diào)用動態(tài)參數(shù)程序—— rqt_reconfigure ;
?????? ? >>set_params_tf.cfg -- 同上;
>img -- readme.md 調(diào)用圖片;
>include
★★>>fusion_pointclouds.h -- 定義FusionPcNode類,函數(shù)實現(xiàn)流程 “接口?”;
???????? >>load_params.h -- 配合 load_params.cpp 將ros參數(shù)空間參數(shù)加載至程序;
>launch
???????? >>fusion_pointclouds.launch -- 主launch文件,通過參數(shù)重載,包含靜態(tài)融合與動態(tài)調(diào)參;
>src
★★ >>fusion_pointclouds.cpp -- 對應(yīng)fusion_pointclouds.h,函數(shù)具體實現(xiàn);
???????? >>load_params.cpp -- 同 load_params.h;
???????? >>set_params_bounds.cpp -- 同 set_params_bounds.cfg ;
???????? >>set_params_tf.cpp -- 同上;文章來源:http://www.zghlxwxcb.cn/news/detail-778175.html
>rviz -- 啟動 launch 調(diào)參時可以啟動默認(rèn) rviz 界面,減少時間。文章來源地址http://www.zghlxwxcb.cn/news/detail-778175.html
到了這里,關(guān)于Fusion_PointClouds - 多激光雷達(dá)點(diǎn)云數(shù)據(jù)融合的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!