1. 程式人生 > >無人駕駛-鐳射雷達與相機聯合校準(Lidar Camera Calibration)

無人駕駛-鐳射雷達與相機聯合校準(Lidar Camera Calibration)

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 , 執行下面的命令:

  1. catkin_make -DCATKIN_WHITELIST_PACKAGES="aruco_ros;aruco_mapping"

  2. 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

參考文獻

【1】在無人駕駛中,鐳射雷達給攝像頭填了哪些坑*https://www.leiphone.com/news/201611/qffizZw13gxoND6Z.html

【2】Calibration between Color Camera and 3D LIDAR Instrumentswith a Polygonal Planar Board

【4】ros聯合校準包*https://github.com/ankitdhall/lidar_camera_calibration

相關推薦

無人駕駛-鐳射雷達相機聯合校準Lidar Camera Calibration

1.鐳射雷達與攝像頭效能對比 在無人駕駛環境感知裝置中,鐳射雷達和攝像頭分別有各自的優缺點。 攝像頭的優點是成本低廉,用攝像頭做演算法開發的人員也比較多,技術相對比較成熟。攝像頭的劣勢,第一,獲取準確三維資訊非常難(單目攝像頭幾乎不可能,也有人提出雙目或三目攝像頭去做);另

一文讀懂鐳射雷達毫米波雷達的區別

說起鐳射雷達和毫米波雷達,相信業內人士並不陌生,鐳射雷達是以發射鐳射束探測目標的位置、速度等特徵量的雷達系統。而毫米波雷達是指工作在毫米波波段探測的雷達。毫米波實質上就是電磁波。毫米波的頻段比較特殊,其頻率高於無線電,低於可見光和紅外線,頻率大致範圍是10GHz—200GHz。這是一個非常適合車載領

鐳射雷達毫米波雷達有哪些區別?

      說起鐳射雷達和毫米波雷達,相信業內人士並不陌生,鐳射雷達是以發射鐳射束探測目標的位置、速度等特徵量的雷達系統。而毫米波雷達是指工作在毫米波波段探測的雷達。毫米波實質上就是電磁波。毫米波的頻段比較特殊,其頻率高於無線電,低於可見光和紅外線,頻率大致範圍是10GHz—20

三角測距鐳射雷達TOF鐳射雷達大比拼

        鐳射雷達廣泛應用於服務機器人、無人駕駛、無人機、AGV叉車等領域,已成為眾多智慧裝置的核心感測器,它的重要性也是不言而喻。就目前市面上的主流鐳射雷達產品而言,用於環境探測和地圖構建的雷達,按技術路線大體可以分為兩類,一類是三角測距鐳射雷達,另一類是TO

KITTI數據集的使用——雷達相機的數據融合

變換 灰度 point 圖片尺寸 觸發 完整 大致 read 得出 目錄 目的 如何實現 KITTI數據集簡介 kitti數據集的raw_data 利用kitti提供的devkit以及相應數據集的calib文件 目的 使用雷達點雲提供的深度信息 如何實現 將雷達的三維點雲投

Java靜態方法 非靜態方法實例方法的區別

外部類 允許 靜態成員 靜態 成員 訪問 靜態成員變量 ava 實例方法 靜態方法與實例方法的異同   1.在外部類 調用靜態方法時,有兩種方式:(1)類名.靜態方法()(2)類的對象.靜態方法() ;也就是說調用靜態方法時可以不用創建對象。      調用實例

轉:【Java並發編程】之十九:並發新特性—Executor框架線程池含代碼

接口類 容易 20px 了解 大小 執行c 生命周期 schedule p s Executor框架簡介 在Java 5之後,並發編程引入了一堆新的啟動、調度和管理線程的API。Executor框架便是Java 5中引入的,其內部使用了線程池機制,它在java.

程序包管理程序編譯安裝第九章

程序包管理1. 程序包管理工具1.1 dpkg包管理工具 dpkg為基於debian發行版中的程序包管理工具,例如Ubuntu、linxu mint。 aptitude:軟件包管理系統,直接輸入此命令可進入包管理的視圖 dpkg -L Package_Name:列出指定軟件包所包含的全部文件 dpkg -

二叉樹數據結構

二叉樹 n+1 -s 不能 完美性 -1 平衡二叉樹 編號 大於 (1)樹的基本性質 1.樹中的結點數等於所有結點的度數+1。 2.樹中結點的最大度數稱為樹的度。 3.度為m的樹中第i層上至多有mi-1個結點。 4.高度為h的m叉樹至多有(mh-1)/(m-1)個結點。

時間戳 Date 的轉換帶實例

lose end res 轉換 exception while clas util tin 數據表結構: 1、實例:生成時間戳數據 package com.test; import java.sql.Connection; import java.sql.Dr

Sharding-Sphere 3.X springmybatis集成分庫分表demo

sharding jdbc 分庫分表最近在弄這個sharding-sphere,公司內部分庫分表是在此業務代碼上進行邏輯分庫分表,但是這種總是不好,也調研了幾款分庫分表中間件、mycat、網易cetus、阿裏DRDS、這幾種就是背景強大,大公司經過大量的實戰,成熟度很高,而框架sharding-sphere比

Swift - 反射Reflection的介紹使用樣例附KVC介紹

comment 人員 BE display java pri ex18 pla 是否 1,反射(Reflection) 對於C#、Java開發人員來說,肯定都對反射這個概念相當熟悉。所謂反射就是可以動態獲取類型、成員信息,同時在運行時(而非編譯時)可以動態調用任意方法、屬性

Nodejs學習筆記MySQL交互felixge/node-mysql

ted iss eid 所在 err password soc deb 大連 簡介和安裝   Node.js與MySQL交互操作有很多庫,具體可以在 https://www.npmjs.org/search?q=mysql 查看。   我選擇了felixge/node-m

全網最詳細的Windows裏下載安裝Sublime Text *圖文詳解

博客 software 微信公眾 分析 研究 挖掘 wid 公眾 info   不多說,直接上幹貨! 前言     這是代碼編程軟件,可以性感編程自己代碼,有著非常豐富的插件,界面整潔清爽。第一次使用可能不習慣,當你使用一段時間之後,你就會

MybatisSpring集成易百教程

bean oca factor nod mysql java代碼 init sql rem 整個Mybatis與Spring集成示例要完成的步驟如下: 1、示例功能描述 2、創建工程 3、數據庫表結構及數據記錄 4、實例對象 5、配置文件 6、測試執行,輸出結果 1、示例功

QQ聯合登入使用JAVA SDKWAP端瀏覽器不能正常使用JS SDK

    關於QQ聯合登入官方文件提供了很方便的JS SDK ,但是在手機WAP網站使用JS SDK時,大多數瀏覽器調起QQ登入後不能正常回調,只有極個別的瀏覽器能正常使用,比如我試了手機谷歌瀏覽器可以使用,但是譬如qq瀏覽器,Safari瀏覽器都不能正常回調。   &

C/C++ 演算法分析設計:貪心排隊接水

題目描述 N個人同時提水到一個水龍頭前提水因為大家的水桶大小不一,所以水龍頭注滿第i(i=1,2,3......N)個人所需要的時間是T(i) 編寫一個程式,對這N個人使他們花費的時間總和最小,並求出這個時間。 例如有三個人a,b,c,用時分別是2,1,3 排隊順序為c,b,a的時候,c要等

C/C++ 演算法分析設計:貪心守望者的逃離

題目描述 惡魔獵手尤迫安野心勃勃.他背叛了暗夜精靈,率深藏在海底的那加企圖叛變:守望者在與尤迪安的交鋒中遭遇了圍殺.被困在一個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去,到那時,刀上的所有人都會遇難:守望者的跑步速度,為17m/s, 以這樣的速度是無法逃離荒島的

泛函變分初步Euler-lagrange條件

1.前言 若偏微分方程複雜或邊界條件不規則時,則方程難以求得解析解,不得不求滿足近似程度要求的近似解。變分法是常用的近似方法之一,而且,變分法的原理和應用遍及物理學的各個領域。所謂變分法即為泛函的極值問題。 2.泛函與泛函的極值

Linux內核設計實現 總結筆記第四章進程調度

什麽 原則 好的 nic 調度系統 相交 中間 使用 就是 進程調度 調度程序負責決定將哪個進程投入運行,何時運行以及運行多長時間。 調度程序沒有太復雜的原理,最大限度地利用處理器時間的原則是,只要有可以執行的進程,那麽就總會有進程正在執行。 多任務 多任務系統可以劃分