無人駕駛—激光雷達與相機

1.激光雷達與攝像頭性能對比

在無人駕駛環境感知設備中,激光雷達和攝像頭分別有各自的優缺點。


攝像頭的優點是成本低廉,用攝像頭做算法開發的人員也比較多,技術相對比較成熟。攝像頭的劣勢,第一,獲取準確三維信息非常難(單目攝像頭幾乎不可能,也有人提出雙目或三目攝像頭去做);另一個缺點是受環境光限制比較大。


激光雷達的優點在於,其探測距離較遠,而且能夠準確獲取物體的三維信息;另外它的穩定性相當高,魯棒性好。但目前激光雷達成本較高,而且產品的最終形態也還未確定。


就兩種傳感器應用特點來講,攝像頭和激光雷達攝像頭都可用於進行車道線檢測。除此之外,激光雷達還可用於路牙檢測。對於車牌識別以及道路兩邊,比如限速牌和紅綠燈的識別,主要還是用攝像頭來完成。如果對障礙物的識別,攝像頭可以很容易通過深度學習把障礙物進行細緻分類。但對激光雷達而言,它對障礙物只能分一些大類,但對物體運動狀態的判斷主要靠激光雷達完成。

2.激光雷達和攝像頭分別完成什麼工作

無人駕駛過程中,環境感知信息主要有這幾部分:一是行駛路徑上的感知,對於結構化道路可能要感知的是行車線,就是我們所說的車道線以及道路的邊緣、道路隔離物以及惡劣路況的識別;對非結構道路而言,其實會更加複雜。


周邊物體感知,就是可能影響車輛通行性、安全性的靜態物體和動態物體的識別,包括車輛,行人以及交通標誌的識別,包括紅綠燈識別和限速牌識別。

對於環境感知所需要的傳感器,我們把它分成三類:


感知周圍物體的傳感器,包括激光雷達、攝像頭和毫米波雷達這三類;


實現無人駕駛汽車定位的傳感器,就是 GPS 、IMU 和 Encoder;


其他傳感器,指的是感知天氣情況及溫、溼度的傳感器。


今天主要講的是感知周圍物體的傳感器,即:激光雷達、毫米波雷達和攝像頭。其實他們都有各自的優缺點。

在無人駕駛環境感知中,攝像頭完成的工作包括:


*車道線檢測;
*障礙物檢測,相當於把障礙物識別以及對障礙物進行分類;
*交通標誌的識別,比如識別紅綠燈和限速牌。

對車道線的檢測主要分成三個步驟:

第一步,對獲取到的圖片預處理,拿到原始圖像後,先通過處理變成一張灰度圖,然後做圖像增強;

第二步,對車道線進行特徵提取,首先把經過圖像增強後的圖片進行二值化( 將圖像上的像素點的灰度值設置爲 0 或 255,也就是將整個圖像呈現出明顯的黑白效果),然後做邊緣提取;

第三步,直線擬合。

車道線檢測難點在於,對於某些車道線模糊或車道線被泥土覆蓋的情況、對於黑暗環境或雨雪天氣或者在光線不是特別好的情況下,它對攝像頭識別和提取都會造成一定的難度。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

另一個是障礙物檢測。上圖是我們在十字路口做的實驗,獲取到原始圖像後,通過深度學習框架對物體進行識別。在這當中,做訓練集其實是主要的難點。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

還有一個是道路標識的識別,這一部分的研究比較多,這裏不再贅述。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

3.激光雷達能夠完成什麼工作

第一是路沿檢測,也包括車道線檢測;第二是障礙物識別,對靜態物體和動態物體的識別;第三是定位以及地圖的創建。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

對於路沿檢測,分爲三個步驟:拿到原始點雲,地面點檢測、提取路沿點,通過路沿點的直線擬合,可以把路沿檢測出來。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

接下來是障礙物識別,識別諸如行人、卡車和私家車等以及將路障信息識別出來。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

障礙物的識別有這樣幾步,當激光雷達獲取三維點雲數據後,我們對障礙物進行一個聚類,如上圖紫色包圍框,就是識別在道路上的障礙物,它可能是動態也可能是靜態的。

最難的部分就是把道路上面的障礙物聚類後,提取三維物體信息。獲取到新物體之後,會把這個物體放到訓練集裏,然後用 SVM 分類器把物體識別出來。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

如上圖,左上角、左下角是車還是人?對於機器而言,它是不清楚的。右上角和右下角(上圖)是我們做的訓練集。做訓練集是最難的,相當於要提前把不同物體做人工標識,而且這些標識的物體是在不同距離、不同方向上獲取到的。

我們對每個物體,可能會把它的反射強度、橫向和縱向的寬度以及位置姿態作爲它的特徵,進行提取,進而做出數據集,用於訓練。最終的車輛、行人、自行車等物體的識別是由SVM分類器來完成。我們用這種方法做出來的檢測精確度還是不錯的。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

利用激光雷達進行輔助定位。定位理論有兩種:基於已知地圖的定位方法以及基於未知地圖的定位方法。

基於已知地圖定位方法,顧名思義,就是事先獲取無人駕駛車的工作環境地圖(高精度地圖),然後根據高精度地圖結合激光雷達及其它傳感器通過無人駕駛定位算法獲得準確的位置估計。現在大家普遍採用的是基於已知地圖的定位方法。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

製作高精度地圖也是一件非常困難的事情。舉個例子,探月車在月球上,原來不知道月球的地圖,只能靠機器人在月球上邊走邊定位,然後感知環境,相當於在過程中既完成了定位又完成了製圖,也就是我們在業界所說的 SLAM 技術。

激光雷達是獲取高精度地圖非常重要的傳感器。通過 GPS、IMU 和 Encoder 對汽車做一個初步位置的估計,然後再結合激光雷達和高精度地圖,通過無人駕駛定位算法最終得到汽車的位置信息。

高精地圖可分爲基礎層、道路信息層、周圍環境信息層和其他信息層。

比如基礎層,有車道的寬度、坡度、傾斜角、航向、高程、車道線信息、人行道和隔離帶等等。之後還有信息層,相當於告訴每一個道路上限速的標記、紅綠燈標記,還有一個就是環境信息層,相當於周圍建築物的三維模型。其他信息層,比如說天氣信息、施工信息等等,天氣信息非常重要,它提供一個場景信息,比如說天氣非常惡劣的時候,比如下雨天,如果高精度地圖能提供天氣信息,或者無人駕駛汽車車身所攜帶的傳感器,能夠感知到下雨信息,這時非常有利於指導無人駕駛汽車做一些決策。

現在對高精度地圖的定義,不同地圖廠家有不同定義的方式。做高精度地圖是爲了輔助無人駕駛,所謂高精度地圖就是相比之前的導航地圖,前者精確度更高,可以達到釐米級;另一個就是高精度地圖包含更多的信息量,比如說車道的寬度、傾斜度等信息。

4.激光雷達與攝像頭的融合

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

激光雷達與攝像頭融合,其實相當於是激光雷達發揮激光雷達的優勢,攝像頭髮揮攝像頭的優勢,他們在某些地方是做得不夠好,需要兩個傳感器甚至多個傳感器信息進行底層的融合。

在融合的時候,首先第一步,標定。比如說左上角(上圖),我看到凳子,左下角激光雷達也看到的是凳子,那麼我通過標定的方式告訴它,其實兩個是同一個物體。

其實攝像頭髮現同一個物體是非常容易的,比如做人的跟蹤或車的跟蹤。對於激光雷達而言, 要去識別前後幀是否同一輛車和同一個行人是非常困難的。

在無人駕駛中,激光雷達給攝像頭填了哪些坑?| 硬創公開課

激光雷達有一個好處:如果可以通過攝像頭告訴它前後兩幀是同一個物體,那麼通過激光雷達就可以知道物體在這前後兩幀間隔內:運動速度和運動位移是多少。這是非常關鍵的,因爲只有做運動物體的跟蹤才能做一些預測。

人在駕駛的過程中,他得時刻知道周圍物體的運動狀態。對於無人駕駛,除了對車輛進行位置的估計以及導航之外,其實還需要對周邊物體、運動物體的跟蹤和預測,這是非常有意義的。

5.算法

由相機捕獲的圖像數據由(U,V)表示,激光雷達捕獲的3維點陣雲用(X,Y,Z)表示,我們的目標是建立一個轉化矩陣M,將3維點(x,y,z)映射到2維點(u,v),即:


矩陣(fu,fv,u0,v0)是相機參數,fu以及fv是XY軸方向尺度因子(水平方向和垂直方向的有效焦距),u0,v0是像平面(image plane)的中心點,又稱主點座標。R爲旋轉矩陣,t爲平移矢量。



根據不同姿態下定標板平面,可得到一系列的線性方程,解得標定參數。

6.ros中的聯合校準包

這個包用於Velodyne激光雷達和相機聯合校準,適用於VLP-16及以上,依賴於aruco_ros包和輕微修改的aruco_mapping包

1)構建

clone代碼從https://github.com/ankitdhall/lidar_camera_calibration.git,把該代碼倉庫, dependencies/aruco_ros and dependencies/aruco_mapping 目錄放到 path/to/your/ros/workspace/src , 執行下面的命令:

catkin_make -DCATKIN_WHITELIST_PACKAGES="aruco_ros;aruco_mapping"
catkin_make -DCATKIN_WHITELIST_PACKAGES=""

如果,沒有安裝velodyne包需要先安裝該包,make aruco_ros時首先要先安裝aruco_msgs和aruco

2)開始

爲了相機與激光雷達進行聯合校準,兩個配置文件需要進行修改,配置文件在lidar_camera_calibration/conf目錄下。

config_file.txt

1280 720
-2.5 2.5
-4.0 4.0
0.0 2.5
0.05
2
0
611.651245 0.0 642.388357 0.0
0.0 688.443726 365.971718 0.0
0.0 0.0 1.0 0.0
1.57 -1.57 0.0

文件格式:

image_width image_height
x- x+
y- y+
z- z+ //去除點陣雲中不想要 的點
cloud_intensity_threshold
number_of_markers
use_camera_info_topic? //是否使用camera_info topic
fx 0 cx 0
0 fy cy 0
0 0 1 0

MAX_ITERS

initial_rot_x initial_rot_y initial_rot_z

3)使用

通過如下命令進行啓動:

roslaunch lidar_camera_calibration find_transform.launch

原文鏈接:https://blog.csdn.net/a2281965135/article/details/79785784

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章