曹立波 岳鵬宇 張正陽(yáng) 劉建國(guó) 黃梅珊
(1.湖南大學(xué),汽車(chē)車(chē)身先進(jìn)設(shè)計(jì)制造國(guó)家重點(diǎn)實(shí)驗(yàn)室,長(zhǎng)沙 410082;2.廣汽乘用車(chē)有限公司,廣州 511400)
主題詞:自動(dòng)泊車(chē) 車(chē)位檢測(cè) 路徑規(guī)劃 路徑跟蹤
自動(dòng)泊車(chē)系統(tǒng)(Automatic Parking System,APS)能夠自動(dòng)尋找車(chē)位并提前規(guī)劃路徑自主將車(chē)輛駛?cè)?,解決狹小車(chē)位的泊車(chē)問(wèn)題,提升駕駛體驗(yàn),減少事故的發(fā)生。
近年來(lái),國(guó)產(chǎn)汽車(chē)品牌逐步在其高檔汽車(chē)上搭載泊車(chē)輔助系統(tǒng):2018年,百度基于Apollo平臺(tái),在一輛搭載6 個(gè)攝像頭和12 個(gè)超聲波雷達(dá)的共享汽車(chē)上完成了自動(dòng)泊車(chē)試驗(yàn),利用布置在車(chē)身上的大量傳感器完成對(duì)周?chē)h(huán)境的探測(cè),進(jìn)而規(guī)避行人和障礙物,同時(shí)可以實(shí)現(xiàn)停車(chē)位自動(dòng)檢測(cè)、自主導(dǎo)航、自動(dòng)泊車(chē)入位和自動(dòng)還車(chē)功能。2019 年,小鵬推出搭載有多達(dá)20 個(gè)傳感器的車(chē)型,可以完成70%場(chǎng)景下的自動(dòng)泊車(chē),應(yīng)對(duì)有線(xiàn)框和無(wú)線(xiàn)框的垂直車(chē)位、平行車(chē)位以及有線(xiàn)框的斜車(chē)位。
目前,自動(dòng)泊車(chē)技術(shù)依然存在一些局限性,例如在泊車(chē)過(guò)程中難以應(yīng)對(duì)突然出現(xiàn)的行人和車(chē)輛,在復(fù)雜的場(chǎng)景中難以精確識(shí)別車(chē)位中的各種障礙物,尤其是低矮物體、電線(xiàn)或洞穴。相對(duì)完善的自動(dòng)泊車(chē)系統(tǒng)大多配置十余個(gè)攝像頭、雷達(dá)等各種傳感器及高算力芯片,成本高昂,影響了自動(dòng)泊車(chē)功能的普及與應(yīng)用,所以,研發(fā)成本低廉、效果穩(wěn)定的自動(dòng)泊車(chē)系統(tǒng)成為現(xiàn)實(shí)之需。
泊車(chē)過(guò)程可以分為環(huán)境感知與泊車(chē)控制2 個(gè)部分。環(huán)境感知用于搜索可用的停車(chē)位,判斷車(chē)輛是否停到合適的泊車(chē)位置,并在泊車(chē)過(guò)程中檢測(cè)障礙物。泊車(chē)控制包括路徑規(guī)劃、路徑跟蹤和控制車(chē)輛移動(dòng)。在環(huán)境感知過(guò)程中,駕駛員通??梢暂p松判斷車(chē)位是否可用,故由駕駛員完成車(chē)位最終判定和周?chē)h(huán)境的監(jiān)測(cè),車(chē)輛實(shí)現(xiàn)泊車(chē)過(guò)程控制,不失為一種明智的選擇。
基于以上分析,本文提出基于全景圖像與人機(jī)交互的自動(dòng)泊車(chē)系統(tǒng),采用環(huán)視圖像系統(tǒng)的4個(gè)攝像頭配合低成本控制器完成自動(dòng)泊車(chē)過(guò)程。
近年來(lái),基于全景圖像的視覺(jué)車(chē)位檢測(cè)方法可大致分為基于線(xiàn)的方法[1-3]、基于標(biāo)志點(diǎn)的方法[4-6]和基于語(yǔ)義分割的方法[7-8]?;诰€(xiàn)的方法都是基于原始線(xiàn)特征,因而對(duì)真實(shí)復(fù)雜的環(huán)境不具有魯棒性?;谡Z(yǔ)義分割的方法需要進(jìn)行后處理才能獲得車(chē)位,既耗時(shí)又不準(zhǔn)確。相比較而言,基于標(biāo)志點(diǎn)的方法更適于實(shí)際使用。
本文車(chē)位識(shí)別采用純視覺(jué)方案,基于空閑停車(chē)位網(wǎng)絡(luò)(Vacant Parking Slot-Net,VPS-Net)進(jìn)行車(chē)位檢測(cè)和車(chē)位占據(jù)分類(lèi)[9],VPS-Net的模型結(jié)構(gòu)如圖1所示。
圖1 VPS-Net結(jié)構(gòu)
YOLOv3[10]是優(yōu)秀的多目標(biāo)檢測(cè)器。VPS-Net在車(chē)位檢測(cè)階段,將全景圖像作為輸入,利用YOLOv3同時(shí)檢測(cè)圖像中的“T型”和“L型”標(biāo)志點(diǎn)及車(chē)位的頭部并直接分類(lèi)為直角、銳角或鈍角頭部,標(biāo)志點(diǎn)和頭部的示例如圖2所示。
圖2 不同類(lèi)型車(chē)位頭部和標(biāo)志點(diǎn)示例
考慮到實(shí)際應(yīng)用中對(duì)車(chē)位檢測(cè)實(shí)時(shí)性的要求,需要在檢測(cè)速度與精度之間達(dá)到較好的平衡。根據(jù)Hui[11]的研究,使用MobileNet 的單步多框目標(biāo)檢測(cè)(Single Shot MultiBox Detector,SSD)是在檢測(cè)速度和準(zhǔn)確率之間取得均衡的最優(yōu)方案。
因此,本文對(duì)VPS-Net 進(jìn)行改進(jìn),使用SSDMobileNet v1替換原網(wǎng)絡(luò)中車(chē)位檢測(cè)部分的YOLOv3網(wǎng)絡(luò),相比較而言,SSD-MobileNet v1 在滿(mǎn)足較小精度損失的前提下具有更快的推理速度。
本文使用文獻(xiàn)[9]中的方法對(duì)檢測(cè)到的車(chē)位標(biāo)志點(diǎn)與車(chē)位頭部進(jìn)行配對(duì),同時(shí)預(yù)測(cè)完整的車(chē)位。
2.2.1 車(chē)位標(biāo)志點(diǎn)配對(duì)
假設(shè)P1、P2為車(chē)位的2個(gè)標(biāo)志點(diǎn),矩形B為覆蓋車(chē)位頭部的檢測(cè)區(qū)域,B中檢測(cè)到的車(chē)位標(biāo)志點(diǎn)存在4種情形,如圖3所示。
圖3 車(chē)位標(biāo)志點(diǎn)與檢測(cè)區(qū)域的關(guān)系
對(duì)于圖3a的情形,P1、P2即為2個(gè)成對(duì)的標(biāo)志點(diǎn)。
對(duì)于圖3b 和圖3c 的情形,如果同時(shí)滿(mǎn)足車(chē)位頭部的預(yù)測(cè)置信度大于95%,則Pi的另一個(gè)配對(duì)車(chē)位標(biāo)志點(diǎn)的坐標(biāo)為:
式中,bj為B的4個(gè)頂點(diǎn)之一的坐標(biāo);~bj為bj的對(duì)角頂點(diǎn)坐標(biāo);Δw、Δh為控制B的寬、高的超參數(shù)。
對(duì)于圖3d的情形,先計(jì)算B的4個(gè)頂點(diǎn)區(qū)域的歸一化平均強(qiáng)度(Normalized Average Intensity Values,NAIV),將含有最大NAIV的一組對(duì)角頂點(diǎn)選為B中的成對(duì)標(biāo)志點(diǎn):
式中,Vi為以第i個(gè)頂點(diǎn)為中心,大小為10像素×10像素的區(qū)域Ri的NAIV;max(I)為圖像I的最大強(qiáng)度;N、(x,y)分別為Ri區(qū)域的像素?cái)?shù)量及其坐標(biāo)。
如果區(qū)域B中含有多于2 個(gè)的標(biāo)志點(diǎn),則最接近B的對(duì)角線(xiàn)頂點(diǎn)的2個(gè)標(biāo)志點(diǎn)為配對(duì)標(biāo)志點(diǎn)。
配對(duì)完成后需要對(duì)車(chē)位類(lèi)型進(jìn)行判斷。垂直車(chē)位和平行車(chē)位的頭部均為直角頭部,但是2種車(chē)位的2個(gè)標(biāo)志點(diǎn)間的距離不同,如果標(biāo)志點(diǎn)間的距離小于閾值t,則車(chē)位類(lèi)型為垂直車(chē)位,反之為平行車(chē)位;如果檢測(cè)到的車(chē)位頭部為鈍角或銳角類(lèi)型,則車(chē)位類(lèi)型為斜車(chē)位。
2.2.2 完整車(chē)位預(yù)測(cè)
在全景圖像中,大多數(shù)停車(chē)位并不能完整顯示,因此,需要對(duì)完整的車(chē)位進(jìn)行預(yù)測(cè)。完整車(chē)位可由4個(gè)頂點(diǎn)表示,P1、P2為已經(jīng)配對(duì)的2 個(gè)車(chē)位標(biāo)志點(diǎn),另外2 個(gè)標(biāo)志點(diǎn)P3、P4可計(jì)算為:
式中,αi、di分別為停車(chē)位的角度和深度。
計(jì)算出P3、P4后還須確定車(chē)位的方向,即標(biāo)志點(diǎn)是按順時(shí)針排列或逆時(shí)針排列,此時(shí),可以通過(guò)計(jì)算車(chē)輛自身形成的矩形框與車(chē)位形成的矩形框之間的交并比(Intersection Over Union,IOU)來(lái)判斷。正常行駛過(guò)程中,車(chē)輛一定不會(huì)與車(chē)位重疊,則IOU 為零,如圖4 所示;在泊車(chē)過(guò)程中,針對(duì)垂直車(chē)位或斜車(chē)位,車(chē)輛從入口線(xiàn)倒入車(chē)位,則車(chē)位方向向下,如圖5 所示。如果是平行車(chē)位,入口線(xiàn)的斜率為正,則車(chē)位位于車(chē)輛的右側(cè),否則位于左側(cè),如圖6所示。IOU的計(jì)算方法為:
圖4 正常行駛中車(chē)輛與車(chē)位的位置關(guān)系
圖5 泊車(chē)過(guò)程中判斷垂直車(chē)位(斜車(chē)位)方向的示意
圖6 泊車(chē)過(guò)程中判斷平行車(chē)位方向的示意
式中,A1為車(chē)輛自身形成的矩形框;A2為車(chē)位形成的矩形框。
車(chē)位占據(jù)分類(lèi)是一個(gè)二分類(lèi)問(wèn)題,主要判斷車(chē)位狀態(tài)是否為空。經(jīng)典的基于機(jī)器學(xué)習(xí)的方法使用人工設(shè)計(jì)的特征來(lái)表示停車(chē)位樣本,然后訓(xùn)練支持向量機(jī)(Support Vector Machine,SVM)分類(lèi)器模型實(shí)現(xiàn)分類(lèi)?;谏疃葘W(xué)習(xí)的方法直接使用停車(chē)位分類(lèi)樣本來(lái)訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Networks,DCNN)模型,可以應(yīng)對(duì)光照變化和不同環(huán)境的影響。VPS-Net[9]基于AlexNet[12]設(shè)計(jì)了DCNN 模型,由于模型加速時(shí)底層接口NNAPI(Android Neural Networks API)不支持只對(duì)圖像的一條邊進(jìn)行填充,所以本文對(duì)VPSNet的分類(lèi)網(wǎng)絡(luò)進(jìn)行了少量修改,網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。
表1 分類(lèi)網(wǎng)絡(luò)結(jié)構(gòu)
使用預(yù)先采集并標(biāo)注的車(chē)位分類(lèi)數(shù)據(jù)集對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,在訓(xùn)練迭代過(guò)程中網(wǎng)絡(luò)會(huì)逐漸學(xué)習(xí)圖像的特征,并輸出圖像是否為空的概率。分類(lèi)過(guò)程為:將上一步檢測(cè)到的車(chē)位從全景圖像中裁剪,并經(jīng)過(guò)透視變換將圖像統(tǒng)一正則化處理為120 像素×54 像素;將圖像輸入訓(xùn)練好的分類(lèi)卷積神經(jīng)網(wǎng)絡(luò),輸出車(chē)位的狀態(tài)。
在全景圖像生成過(guò)程中,可以很容易獲得從全景圖像坐標(biāo)系到以車(chē)輛為中心的世界坐標(biāo)系的轉(zhuǎn)換矩陣。這樣,一旦檢測(cè)到空閑車(chē)位,即可根據(jù)轉(zhuǎn)換矩陣求出其實(shí)際位置,并發(fā)送到路徑規(guī)劃模塊。路徑規(guī)劃模塊負(fù)責(zé)求解車(chē)輛到車(chē)位的最佳路徑;當(dāng)完成相應(yīng)的路徑規(guī)劃時(shí),需要控制車(chē)輛按照既定的路線(xiàn)行駛,正確地停在終點(diǎn),且保證車(chē)輛的位姿與規(guī)劃的位姿一致。此時(shí)需要路徑跟蹤的參與,實(shí)時(shí)調(diào)整前輪轉(zhuǎn)角與車(chē)速,控制車(chē)輛按照規(guī)劃好的路徑行駛。
本文采用圓弧與直線(xiàn)相連接的方法對(duì)3 種類(lèi)型的車(chē)位進(jìn)行泊車(chē)路徑規(guī)劃。為了方便不同車(chē)位的路徑規(guī)劃以及盡量減少對(duì)泊車(chē)空間的需求,針對(duì)3種不同的車(chē)位均以最小轉(zhuǎn)彎半徑進(jìn)行路徑規(guī)劃,保證在正常情況下能夠?qū)崿F(xiàn)不同車(chē)位的泊車(chē)。對(duì)于垂直車(chē)位和斜車(chē)位,根據(jù)車(chē)輛與車(chē)位入口線(xiàn)的不同橫向距離提出了不同的泊車(chē)路徑規(guī)劃。對(duì)于平行車(chē)位,同時(shí)考慮車(chē)輛與車(chē)位入口線(xiàn)的不同橫向距離和車(chē)位的不同長(zhǎng)度,本文提出了兩步式和四步式泊車(chē)路徑規(guī)劃方法,如圖7~圖10所示。
圖7 垂直車(chē)位路徑示意
圖8 斜車(chē)位路徑示意
圖9 兩步式平行泊車(chē)路徑示意
圖10 短平行車(chē)位下的四步式平行泊車(chē)路徑示意
模型預(yù)測(cè)控制[13](Model Predictive Control,MPC)作為一種基于模型的閉環(huán)控制策略,具有良好的控制效果和較強(qiáng)的魯棒性,能夠在一定程度上克服過(guò)程的不確定因素,處理過(guò)程中的各種約束。MPC 系統(tǒng)的結(jié)構(gòu)如圖11所示。
圖11 模型預(yù)測(cè)控制原理
路徑跟蹤控制器需要對(duì)MPC的控制器模塊進(jìn)行重新設(shè)計(jì),該模塊結(jié)合了預(yù)測(cè)模型、目標(biāo)函數(shù)和約束條件進(jìn)行最優(yōu)化求解:
a.泊車(chē)控制器的預(yù)測(cè)模型。首先需要將低速狀態(tài)下的車(chē)輛運(yùn)動(dòng)學(xué)模型線(xiàn)性化,以應(yīng)用于線(xiàn)性時(shí)變模型預(yù)測(cè)控制算法。線(xiàn)性化方法有很多種,主要分為精確線(xiàn)性化和近似線(xiàn)性化。精確線(xiàn)性化一般用于具體系統(tǒng),不具備普遍適用性。近似線(xiàn)性化具有較強(qiáng)的適用性,使用較為簡(jiǎn)單。本文選用近似線(xiàn)性化的方法。
b.泊車(chē)控制器的目標(biāo)函數(shù)。為了對(duì)每個(gè)采樣周期進(jìn)行控制增量的限制,避免被控系統(tǒng)的控制量發(fā)生突變,本文采用軟約束方法[14]。
c.泊車(chē)控制器的約束條件。為了實(shí)現(xiàn)路徑的準(zhǔn)確與平穩(wěn)跟蹤,需要對(duì)車(chē)輛的控制量和控制增量進(jìn)行約束??刂屏考s束和控制增量約束表達(dá)式分別為:
式中,u(t+k)為(t+k)時(shí)刻控制系統(tǒng)的輸出,包含前輪等效轉(zhuǎn)角和后軸中心速度;umin(t+k)、umax(t+k)分別為(t+k)時(shí)刻系統(tǒng)控制量的最小值和最大值集合;Δu(t+k)為(t+k)時(shí)刻的系統(tǒng)控制增量;Δumin(t+k)、Δumax(t+k)分別為(t+k)時(shí)刻系統(tǒng)控制增量的最小值和最大值集合;Nc為控制時(shí)域。
如圖12 所示,基于全景圖像與人機(jī)交互的自動(dòng)泊車(chē)系統(tǒng)的主要工作流程為:
圖12 基于全景圖像與人機(jī)交互的自動(dòng)泊車(chē)流程
a.駕駛員啟動(dòng)自動(dòng)泊車(chē)系統(tǒng)后,車(chē)輛在駕駛員的操作下開(kāi)始在全景圖像中自動(dòng)搜索停車(chē)位。
b.搜索到可能的停車(chē)位時(shí),系統(tǒng)在全景圖像中通過(guò)人機(jī)交互界面提示駕駛員確認(rèn)是否可以停車(chē)。
c.駕駛員確認(rèn)可以停車(chē)后,車(chē)輛進(jìn)行自動(dòng)泊車(chē)路徑規(guī)劃并開(kāi)始自動(dòng)泊車(chē),同時(shí)系統(tǒng)在全景圖像中提示駕駛員注意觀察車(chē)輛周?chē)h(huán)境。
d.遇到危險(xiǎn)時(shí),駕駛員踩下制動(dòng)踏板立即中止泊車(chē),系統(tǒng)通過(guò)人機(jī)交互界面詢(xún)問(wèn)是否繼續(xù)泊車(chē)。
e.駕駛員判斷危險(xiǎn)解除后,確認(rèn)繼續(xù)泊車(chē),系統(tǒng)將繼續(xù)完成后續(xù)操作。
本文使用一輛裝有全景影像系統(tǒng)的乘用車(chē)驗(yàn)證所提出系統(tǒng)的可行性,如圖13 所示,其在左右后視鏡、車(chē)頭和車(chē)尾各裝有1個(gè)魚(yú)眼攝像頭,用于采集車(chē)輛周?chē)沫h(huán)境并生成全景照片。
圖13 實(shí)車(chē)試驗(yàn)平臺(tái)
本文使用如圖14所示的NXP i.MX 8M Plus EVK作為實(shí)車(chē)運(yùn)算平臺(tái),其帶有的神經(jīng)處理單元(Neural Processing Unit,NPU)運(yùn)行速率最高可達(dá)2.3×1012次/s,可以大幅加快深度學(xué)習(xí)模型的推理速度,從而保證系統(tǒng)的實(shí)時(shí)運(yùn)行。
圖14 運(yùn)算平臺(tái)
本文使用前文所提出的實(shí)車(chē)平臺(tái)采集了訓(xùn)練數(shù)據(jù)。用于車(chē)位檢測(cè)模型訓(xùn)練的車(chē)位數(shù)據(jù)包括6 種環(huán)境條件,即室內(nèi)、室外白天、室外夜晚、室外雨天、室外陰影和室外路燈,3 種地面條件,即水泥路、柏油路和瓷磚路,3 種車(chē)位類(lèi)型,即垂直車(chē)位、平行車(chē)位和斜車(chē)位,足以覆蓋絕大多數(shù)的泊車(chē)環(huán)境。將車(chē)位數(shù)據(jù)集中的各車(chē)位裁剪制成了車(chē)位分類(lèi)數(shù)據(jù)集。其中,車(chē)位檢測(cè)數(shù)據(jù)集含有9 827 張訓(xùn)練照片、3 962 張測(cè)試照片,車(chē)位分類(lèi)的數(shù)據(jù)集含有8 921張訓(xùn)練照片和2 147張測(cè)試照片。
在裝有NVIDIA TITAN Xp 顯卡的計(jì)算機(jī)上進(jìn)行模型訓(xùn)練,量化后移植到開(kāi)發(fā)板。深度學(xué)習(xí)模型的量化可以大幅減小模型占用的存儲(chǔ)空間,同時(shí)提高計(jì)算速度。為盡量減少模型量化造成的精度損失,本文在訓(xùn)練時(shí)采用量化感知訓(xùn)練。圖15所示為算法訓(xùn)練并執(zhí)行量化的步驟。
圖15 模型量化流程
首先,在模型訓(xùn)練階段,量化感知訓(xùn)練會(huì)在網(wǎng)絡(luò)可識(shí)別的某些操作內(nèi)嵌入偽量化節(jié)點(diǎn),統(tǒng)計(jì)訓(xùn)練時(shí)流經(jīng)該節(jié)點(diǎn)的最大、最小值以備模型量化時(shí)使用。偽量化節(jié)點(diǎn)會(huì)參與模型訓(xùn)練的前向推理過(guò)程,同時(shí)獲得量化損失以減少模型量化造成的精度損失。
網(wǎng)絡(luò)訓(xùn)練收斂后,將訓(xùn)練好的網(wǎng)絡(luò)參數(shù)與模型結(jié)構(gòu)使用凍結(jié)工具(freeze_graph)凍結(jié)為一個(gè)帶參數(shù)的模型文件,最后使用TOCO 工具將模型量化為uint8 并轉(zhuǎn)換為NPU可以加速的tflite文件。
使用上述實(shí)車(chē)平臺(tái)試驗(yàn)驗(yàn)證本文所提出的系統(tǒng)的泊車(chē)效果,結(jié)果表2 所示。驗(yàn)證結(jié)果表明,該系統(tǒng)可以可靠地完成自動(dòng)泊車(chē)。
本文提出了一種基于全景圖像與人機(jī)交互的自動(dòng)泊車(chē)系統(tǒng):使用SSD-MobileNet v1進(jìn)行車(chē)位頭部和標(biāo)志點(diǎn)檢測(cè),再推理出完整車(chē)位,創(chuàng)建了一個(gè)分類(lèi)網(wǎng)絡(luò)用來(lái)判斷車(chē)位是否被占用;使用圓弧-直線(xiàn)法進(jìn)行路徑規(guī)劃,使用模型預(yù)測(cè)控制進(jìn)行路徑跟蹤;基于NXP i.MX 8M Plus EVK 運(yùn)算平臺(tái)完成了算法開(kāi)發(fā),使用量化感知訓(xùn)練在保證盡量減小量化損失的前提下提高模型推理速度。
本文提出的自動(dòng)泊車(chē)系統(tǒng)將駕駛員對(duì)環(huán)境的感知和判斷加入到自動(dòng)泊車(chē)過(guò)程中,可以大幅減少自動(dòng)泊車(chē)系統(tǒng)所用傳感器的數(shù)量,在降低成本的同時(shí)保證自動(dòng)泊車(chē)效果。