閱讀 | 訂閱
閱讀 | 訂閱
今日要聞

視覺激光雷達(dá)信息融合與聯(lián)合標(biāo)定技術(shù)解析

激光制造網(wǎng) 來源:智駕最前沿2023-04-06 我要評論(0 )   

最近在為車輛添加障礙物檢測模塊,障礙物檢測可以使用激光雷達(dá)進(jìn)行物體聚類,但是我們使用的是16線的velodyne,線數(shù)還是有些稀疏,對于較遠(yuǎn)的物體過于稀疏的線數(shù)聚類效...

最近在為車輛添加障礙物檢測模塊,障礙物檢測可以使用激光雷達(dá)進(jìn)行物體聚類,但是我們使用的是16線的velodyne,線數(shù)還是有些稀疏,對于較遠(yuǎn)的物體過于稀疏的線數(shù)聚類效果并不好,因此考慮使用視覺進(jìn)行目標(biāo)檢測,然后投影到3D點(diǎn)云里面,獲取障礙物位置,同時(shí)視覺還可以給出障礙物類別信息。

使用視覺進(jìn)行目標(biāo)檢測,將檢測結(jié)果2D bounding box坐標(biāo)信息投影到點(diǎn)云里面獲得3D bounding boxx坐標(biāo),這里面需要將攝像頭和激光雷達(dá)進(jìn)行聯(lián)合標(biāo)定,即獲取二者坐標(biāo)系的空間轉(zhuǎn)換關(guān)系。

相關(guān)代碼已經(jīng)同步到我的github-smartcar:https://github.com/sunmiaozju/smartcar

標(biāo)定部分在detection/calibration文件夾, 信息融合部分在detection/camera_point_fusion

聯(lián)合標(biāo)定轉(zhuǎn)換關(guān)系

聯(lián)合標(biāo)定的作用就是建立點(diǎn)云的point和圖像pixel之間的對應(yīng)關(guān)系,

需要獲取相機(jī)與激光雷達(dá)外參,將點(diǎn)云3維坐標(biāo)系下的點(diǎn)投影到相機(jī)3維坐標(biāo)系下。

還需要通過相機(jī)標(biāo)定獲得相機(jī)內(nèi)參,這個(gè)是把相機(jī)3維坐標(biāo)系下的點(diǎn)投影到成像平面。具體如下所示:

上圖顯示的就是聯(lián)合標(biāo)定得到的4×4轉(zhuǎn)換矩陣的作用,將我們的3D點(diǎn)云轉(zhuǎn)換到相機(jī)坐標(biāo)系下面

這幅圖顯示了相機(jī)坐標(biāo)系和成像坐標(biāo)系的關(guān)系,相機(jī)標(biāo)定會得到相機(jī)內(nèi)參矩陣和畸變系數(shù),畸變系數(shù)可以消除相機(jī)凸透鏡的畸變效應(yīng),相機(jī)內(nèi)參的信息就可以想相機(jī)坐標(biāo)下的3維點(diǎn)投影到2維的像素平面。相機(jī)標(biāo)定的具體原理可以參考:https://zhuanlan.zhihu.com/p/24651968

相機(jī)標(biāo)定

需要一個(gè)標(biāo)定板,要硬質(zhì)板或者泡沫的標(biāo)定板,因?yàn)闃?biāo)定板的平面要保證是平的。標(biāo)定板的文件可以到opencv官網(wǎng)下載。

首先做相機(jī)標(biāo)定,相機(jī)標(biāo)定模塊在detection/calibration/camera_calibration

編譯

這里我們先不編譯ndt_mapping;static_map;ndt_localization這三個(gè)軟件包

如果出錯(cuò),可以先編譯消息文件,再編譯全部文件:

然后要修改detection/calibration/camera_calibration/nodes文件夾下面python文件的可執(zhí)行權(quán)限:

啟動(dòng)攝像頭驅(qū)動(dòng)節(jié)點(diǎn)

這里注意你自己的攝像頭video_id,使用如下命令查看

然后根據(jù)需要修改your_path/driver/cv_camera/launch/cv_camera_driver.launch里面的

新開一個(gè)終端,執(zhí)行

然后就可以進(jìn)行標(biāo)定了,彈出的界面如下所示:

需要做的就是移動(dòng)標(biāo)定版,讓右上角的四個(gè)條都變綠(我這里綠的是已經(jīng)調(diào)好了,未調(diào)整是偏黃色)

x代表左右移動(dòng),y代表上下移動(dòng),size代表遠(yuǎn)近移動(dòng),skew代表傾斜側(cè)角,可以上下傾,也可以左右傾。

只有四個(gè)尺度的信息都滿足要求之后,右側(cè)的calibration圖標(biāo)才會顯示出來,這時(shí)候代表可以計(jì)算標(biāo)定結(jié)果了,點(diǎn)擊calibration,然后save,標(biāo)定結(jié)果會保存在home文件夾下面。

聯(lián)合標(biāo)定

聯(lián)合標(biāo)定使用的是autoware的CalibrationTookit模塊,代碼在detection/calibration/calibration_camera_lidar文件夾下面

編譯好代碼之后,首先要啟動(dòng)攝像頭和激光雷達(dá)的驅(qū)動(dòng)節(jié)點(diǎn)

新終端

然后驅(qū)動(dòng)聯(lián)合標(biāo)定節(jié)點(diǎn)

啟動(dòng)之后可以看到UI界面,具體操作指南,可以參考文檔:detection/calibration/calibration_camera_lidar/CalibrationToolkit_Manual.pdf 的2.3節(jié)

也可以參考鏈接:https://blog.csdn.net/AdamShan/article/details/81670732#commentBox

如何使用這個(gè)模塊上面的鏈接已經(jīng)說的很明白,這里簡單說一下:

·首先左上角load之前標(biāo)定的相機(jī)內(nèi)參文件,導(dǎo)入相機(jī)內(nèi)參

·在捕獲單幀的點(diǎn)云上面,選取圖片中對應(yīng)標(biāo)定板的位置,選取的是圓圈內(nèi)的所有點(diǎn),所包含的信息不僅僅只有點(diǎn),還有平面法相量,標(biāo)定的時(shí)候一定要確保法相量與平面是垂直的,因?yàn)殚_始我沒有注意這個(gè),結(jié)果后面驗(yàn)證的時(shí)候投影點(diǎn)在圖片上顯示不出,根本沒有投影在圖像范圍內(nèi)。

標(biāo)定好之后,在右上角有一個(gè)project,可以查看標(biāo)定的效果,一般來將,可以看到如下效果:

左下角圖片上的紅線就是右下角點(diǎn)云紅線投影到圖片上的位置,下面這幅圖片換一個(gè)角度,點(diǎn)同樣投影上去,而且相對位置在點(diǎn)云和圖片里面基本一致:

這樣的效果基本就是可以了,點(diǎn)擊save,會將輸出的外參文件保存在home文件夾下面。

視覺與點(diǎn)云信息融合

有了聯(lián)合標(biāo)定的外參文件,我們就可以進(jìn)行信息融合了。

信息融合主要有兩個(gè)模塊:點(diǎn)云到圖像 、 圖像到點(diǎn)云

5.1 image2points

這部分代碼在your_path/deteection/camera_point_fusion/packages/joint_pixel_pointcloud這個(gè)pkg下面

這部分代碼實(shí)現(xiàn)的功能是建立將velodyne-16的點(diǎn)云投影到640×480的圖像上面,如果點(diǎn)云投影的二維點(diǎn)在圖像640×480范圍內(nèi),那么就把這個(gè)三維激光雷達(dá)點(diǎn)的位置記下來,同時(shí)匹配圖像上對應(yīng)像素的顏色,變成pcl::XYZRGB點(diǎn)返回,并顯示出來。

除此之外,這個(gè)模塊還可以訂閱目標(biāo)檢測信息,攝像頭獲取圖像,經(jīng)過目標(biāo)檢測模塊之后,得到2維bounding box坐標(biāo),利用點(diǎn)云和圖像像素的對應(yīng)關(guān)系,得到3維bounding box信息,并在RVIZ中顯示出來。

編譯好代碼之后,運(yùn)行:

同樣,需要先運(yùn)行攝像頭驅(qū)動(dòng)節(jié)點(diǎn)和velodyne驅(qū)動(dòng)節(jié)點(diǎn),還有目標(biāo)檢測節(jié)點(diǎn),不過目標(biāo)檢測模塊因?yàn)槟承┰虿荒芄_到github,你可以使用自己的目標(biāo)檢測模塊,作為ROS節(jié)點(diǎn)添加到工作空間即可。

代碼運(yùn)行效果如下所示:

這個(gè)就是圖像像素所對應(yīng)的點(diǎn)云,可以看到點(diǎn)云已經(jīng)被加上了黑白的顏色,點(diǎn)云周邊有一些比較淡的顏色,下面這幅圖加深了顏色,同時(shí)顯示出圖像對應(yīng)的點(diǎn)云在整個(gè)點(diǎn)云幀的位置:

下面是目標(biāo)檢測的效果:

可以看到,圖像上檢測出來的物體,基本都在3D場景下對應(yīng)出來了,其中,不同的顏色代表不同的物體類別。

不過,因?yàn)檫@個(gè)目標(biāo)檢測模型是針對于自動(dòng)駕駛場景的,分類對象都是car,pedestrian,info signs等,而因?yàn)閷?shí)驗(yàn)條件的原因我還沒有來得及拿出去測試代碼效果,就先在房間測試了一下,所以可以看到目標(biāo)檢測的框是有些沒意義的東西,不過不影響驗(yàn)證信息融合效果。

這個(gè)節(jié)點(diǎn)可以便于我們進(jìn)行障礙物檢測,因?yàn)橐曈X信息進(jìn)行障礙物檢測是要優(yōu)于低線數(shù)激光雷達(dá)聚類的,但是視覺信息識別物體雖然準(zhǔn),卻沒有距離信息,激光雷達(dá)可以提供距離信息,因此,視覺和激光雷達(dá)二者結(jié)合,就可以獲得障礙物的距離、類別以及位置了

5.2 points2image

這個(gè)是把點(diǎn)云投影到圖像上,具體運(yùn)行基本同理我就不說了。

代碼的具體效果如下所示:

可以看到,點(diǎn)云基本是和圖像是匹配的。

這個(gè)節(jié)點(diǎn)的作用是可以幫助我們進(jìn)行紅綠燈識別或者其他info_sign識別。因?yàn)檫M(jìn)行紅綠燈檢測最好是可以獲取紅綠燈在圖像上的位置,即ROI,然后再進(jìn)行識別會容易很多。我們可以在事先建立好的場景語義地圖中,加入紅綠燈的位置,這樣車輛到達(dá)該位置的時(shí)候就可以立刻找到紅綠燈在圖像上的ROI,這樣會優(yōu)化info sign的檢測。具體如下所示:

總結(jié)

本文主要介紹了關(guān)于視覺和激光雷達(dá)進(jìn)行信息融合相關(guān)內(nèi)容,包括相機(jī)標(biāo)定,攝像頭與激光雷達(dá)聯(lián)合標(biāo)定,信息融合節(jié)點(diǎn)等等

利用激光雷達(dá)和視覺信息融合,我們可以結(jié)合二者的優(yōu)點(diǎn)優(yōu)化障礙物檢測或交通標(biāo)志的識別,以及優(yōu)化其他相關(guān)任務(wù)等等。


轉(zhuǎn)載請注明出處。

光電,激光,激光企業(yè),激光雷達(dá),激光制造
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系我們刪除。
③ 任何單位或個(gè)人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請及時(shí)向本網(wǎng)提出書面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點(diǎn)評
0相關(guān)評論
精彩導(dǎo)讀