自動(dòng)駕駛中基于地圖的視覺(jué)定位方法
摘要
本文引用地址:http://2s4d.com/article/202503/468063.htm本論文是在高級(jí)駕駛員輔助系統(tǒng),特別是自動(dòng)駕駛車輛的背景下進(jìn)行的。其目的是提出一種增強(qiáng)道路車輛定位的方法。提出的方法是使用攝像頭檢測(cè)車道線,并將其與地圖匹配,以定位車輛的正確位置。本文分為三個(gè)部分:地圖、直線檢測(cè)器和定位,該地圖基于OpenStreetMap數(shù)據(jù),線檢測(cè)器是基于邊緣檢測(cè)的,將結(jié)果與迭代最近點(diǎn)算法進(jìn)行了比較,使用了諸如ROS(用于數(shù)據(jù)同步)和CUDA(用于并行化)等技術(shù)。
介紹
本文的目的是實(shí)現(xiàn)一種使用視覺(jué)信息和地圖來(lái)改進(jìn)車輛定位的方法。我們還希望驗(yàn)證以下限制:
?實(shí)時(shí)處理
?適合車輛使用的廉價(jià)設(shè)備
?嵌入在車輛上。方法如圖1.1所示。
它分為三個(gè)部分:
?OpenStreetMap地圖的處理
?車道線檢測(cè)
?定位,包括與ICP算法的比較
圖1.1:該方法的三個(gè)部分:地圖生成、邊緣檢測(cè)和與ICP算法配準(zhǔn)
OpenStreetMap數(shù)據(jù)
為了改進(jìn)定位方法,我們需要精確的地圖,此外,由于我們的成本限制,我們希望它是免費(fèi)和開(kāi)源的。因此,OpenStreetMap看起來(lái)是一個(gè)很好的解決方案,因?yàn)樗敲赓M(fèi)的、開(kāi)源的和用戶自制的,這意味著它易于使用并適應(yīng)我們的需求。
OpenStreetMap數(shù)據(jù)由三個(gè)基本原語(yǔ)組成:
?節(jié)點(diǎn)
?路線
?關(guān)系
節(jié)點(diǎn)用其緯度和經(jīng)度定義地理點(diǎn),這可以是真實(shí)的物理對(duì)象,例如公共汽車站,也可以是定義道路形狀的假想點(diǎn)。路線定義更復(fù)雜的特征,如道路和邊界,它們包含在節(jié)點(diǎn)的有序列表中,節(jié)點(diǎn)列表定義特征的形狀。如果道路的第一個(gè)節(jié)點(diǎn)和最后一個(gè)節(jié)點(diǎn)相同,則這是一條可以定義區(qū)域的封閉道路,關(guān)系描述節(jié)點(diǎn)、路線和/或路線關(guān)系之間的其他約束。如圖3.1所示
圖3.1:在自頂向下視圖上表示OpenStreetMap數(shù)據(jù)
車道線生成
OpenStreetMap的一個(gè)問(wèn)題是它缺少車道線數(shù)據(jù),因此,必須在地圖上添加車道標(biāo)記,這是使用道路和車道數(shù)據(jù)半自動(dòng)完成的,我們創(chuàng)建了一個(gè)新的OpenStreetMap地圖標(biāo)簽來(lái)識(shí)別車道標(biāo)記,標(biāo)記的鍵是“標(biāo)記”,其值是“中間”或“邊框”,具體取決于線的位置。
然后,對(duì)于每條道路,我們創(chuàng)建了道路上車道數(shù)加上一條的線,邊界線的“標(biāo)記”標(biāo)記值為“border”,其他線的值為“middle”。如圖3.2所示,這一部分由我們所稱的線生成器自動(dòng)完成。線生成器對(duì)每條道路進(jìn)行迭代,然后對(duì)道路的每個(gè)節(jié)點(diǎn)進(jìn)行迭代,以將節(jié)點(diǎn)復(fù)制所需的次數(shù),從而創(chuàng)建表示車道標(biāo)記的新道路。由于車道相對(duì)于節(jié)點(diǎn)坐標(biāo)的位置沒(méi)有約定,我們決定將坐標(biāo)設(shè)置為道路的中心,并在道路兩側(cè)分割車道。
圖3.2:車道線生成器從數(shù)據(jù)庫(kù)中獲取原始數(shù)據(jù)以生成線并將其放回?cái)?shù)據(jù)庫(kù),在手動(dòng)校正之前,它是離線完成的。
圖3.3:車道標(biāo)記生成的表示
最終手動(dòng)糾正了一些地方,主要是十字路口,這是使用專用軟件完成的,用戶可以使用衛(wèi)星視圖作為參考,獨(dú)立地移動(dòng)每個(gè)節(jié)點(diǎn)和路徑,這部分是離線完成的,然后數(shù)據(jù)庫(kù)可以被其他算法使用。這是一個(gè)漫長(zhǎng)而挑剔的過(guò)程,這顯示了OpenStreetMap對(duì)于全面實(shí)現(xiàn)的另一個(gè)好處,因?yàn)槿绻覀儼l(fā)布新標(biāo)簽,所有貢獻(xiàn)者都可以做到這一點(diǎn)。圖3.3顯示了數(shù)據(jù)轉(zhuǎn)換的結(jié)果,圖3.4顯示了帶有衛(wèi)星圖像的十字路口的詳細(xì)視圖。
圖3.4:對(duì)十字路口等復(fù)雜區(qū)域的數(shù)據(jù)進(jìn)行了校正,這里是帶有衛(wèi)星視圖的校正十字路口的詳細(xì)視圖。
主要內(nèi)容
邊緣檢測(cè)器
這部分描述了用于檢測(cè)車道標(biāo)記的方法。它基于López提出的方法,并使用邊緣作為特征來(lái)檢測(cè)線條。
該方法使用圖像的拉普拉斯值來(lái)檢測(cè)邊緣,如Tran和Lux提出的,對(duì)于每個(gè)圖像,算法遵循以下步驟:
1.使用攝像機(jī)相對(duì)于車輛的位置、車輛相對(duì)于地面的橫滾角和俯仰角將圖像投影到水平面中。
2.拉普拉斯算子的計(jì)算。
3.消除拉普拉斯算子低于閾值的像素。
4.梯度的計(jì)算以及拉普拉斯算子與梯度之間的比率。
5.消除比率低于其他閾值的像素。
6.海森矩陣、其特征值及其特征向量的計(jì)算。
7.消除特征值幾乎相等的像素。
第一步允許我們?cè)谂c地圖相同的平面上工作,并使用相機(jī)校準(zhǔn)信息以及車輛的橫搖角和俯仰角進(jìn)行投影,使用橫搖角和俯仰角可以校正投影,它們由慣性測(cè)量單元(IMU)給出。然后,通過(guò)保持像素具有較高的拉普拉斯值,我們只保持亮的對(duì)象被對(duì)應(yīng)于邊緣的較暗區(qū)域包圍。拉普拉斯算子的定義如下:
在圖3.5中,我們可以看到圖像的拉普拉斯算子,需要進(jìn)一步的步驟來(lái)提取車道標(biāo)記。
圖3.5:拉普拉斯計(jì)算結(jié)果
拉普拉斯算子和梯度范數(shù)之間的比率允許移除這些對(duì)象的邊緣,從而只允許保留每個(gè)邊緣的中心部分。事實(shí)上,在明亮物體的中間,梯度幾乎為零,而在邊緣,梯度將非常高。因此,通過(guò)除以梯度的范數(shù),我們?nèi)コ伺c明亮對(duì)象邊界相對(duì)應(yīng)的像素。
在圖3.6中,我們可以看到算法的結(jié)果。圖像3.6a是來(lái)自照相機(jī)的圖像,圖像3.6b是該圖像在俯視圖上的投影,圖像3.6c示出了檢測(cè)到的線。
圖3.6 車道線邊緣線檢測(cè)
ICP算法
在這部分我們描述了ICP算法,該算法用于配準(zhǔn)地圖和檢測(cè)到的車道線,然后校正車輛的定位,該算法包括將檢測(cè)到的線與地圖中存儲(chǔ)的線進(jìn)行匹配,找到校正地圖中車輛位置的變換,并在應(yīng)用變換后進(jìn)行迭代。
車道線匹配
匹配的輸入是被視為車道標(biāo)記的像素點(diǎn)云,以及從GPS給出的位置周圍的地圖中提取的局部路段列表,對(duì)于點(diǎn)云中的每個(gè)點(diǎn),我們搜索與預(yù)定義范圍內(nèi)的點(diǎn)最近的線,該方向與赫森矩陣的主分量一致,這允許在不同方向上存在線時(shí)進(jìn)行更好的匹配,定義范圍是為了避免將點(diǎn)與距離太遠(yuǎn)的線匹配,一開(kāi)始不超過(guò)一條車道,如果沒(méi)有像素匹配,則范圍會(huì)增加,然后使用該匹配來(lái)找到校正的位置,通過(guò)最小化以下誤差的變換給出校正位置:
平臺(tái)和測(cè)試環(huán)境
平臺(tái)測(cè)試已使用雷克薩斯LS600h完成,如圖4.1所示,配備了以下傳感器:
?GPS
?IMU
?單目RGB攝像頭
?立體視覺(jué)攝像頭
?激光雷達(dá)
?CAN總線
在我們的實(shí)驗(yàn)中,我們只使用GPS、IMU和單目攝像頭。
環(huán)境測(cè)試
環(huán)境由不同類型的道路組成,包括十字路口和環(huán)島,但主要是公路。預(yù)定義路線見(jiàn)圖4.2,長(zhǎng)11.3公里。它由公路、帶有十字路口和環(huán)形交叉口的居民道路組成,測(cè)試主要在天氣條件良好的白天進(jìn)行。
圖4.2 測(cè)試路線
圖8,E形序列算法的結(jié)果,(a) 軌跡結(jié)果,其他算法由于假回環(huán)而不準(zhǔn)確,(b) 我們算法的拒絕回環(huán)的結(jié)果,具有低權(quán)重(紅線)的約束對(duì)優(yōu)化軌跡沒(méi)有貢獻(xiàn)
車道線檢測(cè)
實(shí)現(xiàn)該檢測(cè)在C++中完成,使用OpenCV庫(kù)進(jìn)行圖像處理,并使用ROS管理所有傳感器和平臺(tái)部件之間的交互,尤其是圖像和慣性數(shù)據(jù)之間的同步。因此,輸入是來(lái)自攝像機(jī)的圖像以及車輛的橫搖角和俯仰角,輸出是被視為車道標(biāo)記的像素點(diǎn)云。為了提高性能,使用CUDA和GPU并行化拉普拉斯、梯度和海森矩陣計(jì)算。這允許使用實(shí)時(shí)算法,因?yàn)閳D像處理速度更快。
結(jié)果在圖3.6和4.3中,我們可以看到公路線路檢測(cè)的結(jié)果,結(jié)果很好,因?yàn)樗械木€都被檢測(cè)到了,而在沒(méi)有線的地方?jīng)]有檢測(cè)到,然而,太細(xì)的線并不總是被檢測(cè)到或僅部分被檢測(cè)到,但這并不是一個(gè)真正的問(wèn)題,因?yàn)橐粭l線具有更多的像素不會(huì)顯著增加ICP的結(jié)果,我們也可以在長(zhǎng)線上看到一些混疊,事實(shí)上它們并不總是對(duì)齊的,這是因?yàn)槲覀冎槐A粢粋€(gè)像素寬的線,在住宅道路上,檢測(cè)也適用于線路,但也有很多檢測(cè)不是車道標(biāo)記,例如,人行道、電桿或樹(shù)木通常被檢測(cè)為直線,因?yàn)樗鼈兊募?xì)長(zhǎng)形狀和顏色比背景更亮。我們可以在圖4.4中看到,檢測(cè)到了線條,但也檢測(cè)到了背景中的物體,如安全欄桿或樹(shù)木。環(huán)島的結(jié)果甚至是最糟糕的,因?yàn)閿z像機(jī)看不到太多道路,事實(shí)上,當(dāng)進(jìn)入環(huán)島時(shí),道路會(huì)超出攝像機(jī)的視野。
圖4.3:公路上的車道線檢測(cè)
圖4.4:環(huán)島道路上的車道線檢測(cè)
討論
車道線檢測(cè)器在高速公路場(chǎng)景中有很好的結(jié)果,但在其他類型的道路上則有更多的混合結(jié)果。這些結(jié)果主要是由于這樣一個(gè)事實(shí),即在高速公路上,圖像的大部分被道路覆蓋,但在居民區(qū),攝像機(jī)看到更多的背景,因此圖像包含更多無(wú)用信息。改進(jìn)這些結(jié)果的一種方法可以是使檢測(cè)器適于檢測(cè)不同尺寸的線,而不是在這里針對(duì)平均尺寸的線校準(zhǔn)檢測(cè)器。此外,更好的相機(jī)方向也可以改善結(jié)果,因?yàn)閷?duì)于這種應(yīng)用,我們只需要看到道路,并且在投影圖像時(shí)會(huì)導(dǎo)致更少的誤差。
ICP
實(shí)現(xiàn)這一部分也在C++中實(shí)現(xiàn),并使用ROS處理不同幀之間的點(diǎn)云和轉(zhuǎn)換。
ICP改善定位的結(jié)果高度依賴于車道線檢測(cè)器的結(jié)果,事實(shí)上,當(dāng)車道線檢測(cè)器返回良好的結(jié)果時(shí),我們可以期望ICP獲得良好的結(jié)果,但如果檢測(cè)不好,ICP最有可能出現(xiàn)偏差。因此,結(jié)果對(duì)于高速公路場(chǎng)景來(lái)說(shuō)是好的,這意味著定位得到了很好的修正,因?yàn)槠嚤粰z測(cè)到在右側(cè)車道上,而對(duì)于有很多十字路口和環(huán)形交叉口的道路來(lái)說(shuō)則不太好。在圖4.5中,我們可以看到公路情景下的ICP結(jié)果。
圖4.5:公路上的ICP修正
它發(fā)生在一條兩車道的道路上,然后與另一條雙車道的道路匯合,在右下角,我們可以看到攝像機(jī)的視圖,因此我們位于最右邊的車道上,綠色線條與地圖的線條相對(duì)應(yīng),紅點(diǎn)對(duì)應(yīng)于檢測(cè)到的線,紅色箭頭與GPS給出的位置相對(duì)應(yīng),GPS將汽車置于最左側(cè)車道的左側(cè),白色矩形表示汽車處于正確的位置,它位于最右側(cè)車道的中間,即正確的位置。在車道數(shù)較多的道路上,如高速公路,幾條車道的匹配可能會(huì)出錯(cuò),實(shí)際上,車道的相對(duì)位置幾乎總是正確的,但車道數(shù)的偏移有時(shí)可能會(huì)出錯(cuò),它取決于初始位置,初始位置在開(kāi)始時(shí)設(shè)置為GPS位置,當(dāng)初始位置距離實(shí)際位置不太遠(yuǎn)時(shí),或者當(dāng)車道不太多時(shí),如在高速公路入口道路上,校正效果很好。在住宅道路上,如果車道線探測(cè)器工作良好,則結(jié)果相當(dāng)。但是,當(dāng)?shù)竭_(dá)十字路口或環(huán)形交叉路口時(shí),結(jié)果的質(zhì)量會(huì)下降,因?yàn)樵谀抢?,由于線路檢測(cè)不良,ICP最有可能偏離,只有當(dāng)匹配次數(shù)較低時(shí),算法才會(huì)收斂到GPS位置,這相當(dāng)于重置位置。
討論
ICP運(yùn)行良好,但仍有一些改進(jìn),由于未濾波,有時(shí)位置會(huì)出現(xiàn)一些跳躍,因此,可以添加濾波以平滑校正位置的變化,從而避免一些不連續(xù)性,改進(jìn)該算法的另一種方法是根據(jù)車道線檢測(cè)器的結(jié)果對(duì)每個(gè)點(diǎn)的誤差進(jìn)行加權(quán)。另一個(gè)需要修正的問(wèn)題是縱向修正,即道路方向的修正。事實(shí)上,在直線道路上,橫向位置得到了很好的校正,但改變車輛的縱向位置不會(huì)影響匹配,因?yàn)槲覀儗Ⅻc(diǎn)與線匹配,因此也不會(huì)影響結(jié)果。糾正這種情況的一種方法是考慮汽車的速度,并使用它來(lái)糾正縱向位置。我們還簡(jiǎn)要測(cè)試了與ICP不同的方法,以改進(jìn)居住道路上的算法結(jié)果,我們實(shí)現(xiàn)了一個(gè)粒子濾波器,其中使用車道線檢測(cè)器的結(jié)果和匹配來(lái)評(píng)估每個(gè)粒子。它改善了住宅道路上的結(jié)果,因?yàn)橛捎诰€路檢測(cè)不良導(dǎo)致的結(jié)果被過(guò)濾,但也惡化了公路上的結(jié)果??傮w結(jié)果稍好一點(diǎn),但缺乏準(zhǔn)確性,因此,它不是一個(gè)可行的解決方案,但這兩種解決方案可以結(jié)合起來(lái),以改進(jìn)全局方法。
總結(jié)
我們提出了一種使用視覺(jué)信息和開(kāi)源地圖在道路上定位車輛的方法,該方法根據(jù)開(kāi)發(fā)的軟件的不同模塊分為三個(gè)部分,第一部分對(duì)地圖進(jìn)行了處理,分析了OpenStreetMap中的現(xiàn)有數(shù)據(jù),并用車道標(biāo)記數(shù)據(jù)對(duì)其進(jìn)行了擴(kuò)展,第二部分對(duì)應(yīng)于使用攝像機(jī)和車道檢測(cè)方法的車道標(biāo)記檢測(cè),第三部分也是最后一部分實(shí)現(xiàn)了ICP算法,將檢測(cè)到的線路與地圖中存儲(chǔ)的線路進(jìn)行比較,然后返回車輛的更新定位,我們的結(jié)果表明,該方法是可行的,事實(shí)上,我們?cè)诟咚俟飞先〉昧瞬诲e(cuò)的成績(jī),而在其他類型的道路上取得了更多喜憂參半的成績(jī),這主要是由于道路的質(zhì)量以及攝像機(jī)看到的有用數(shù)據(jù)的數(shù)量。
評(píng)論