于 洋,王天歌,王 淼
(沈陽理工大學(xué) 自動(dòng)化與電氣工程學(xué)院,沈陽 110159)
無人駕駛車輛,在目前的機(jī)器人領(lǐng)域中是非常熱門的研究方向。自主導(dǎo)航技術(shù)是車輛實(shí)現(xiàn)無人駕駛的關(guān)鍵技術(shù)之一[1]。自主導(dǎo)航系統(tǒng)主要包括GPS導(dǎo)航、INS導(dǎo)航和激光雷達(dá)導(dǎo)航等。其中,GPS導(dǎo)航優(yōu)點(diǎn)很多,但是存在數(shù)據(jù)丟失、可靠性低的缺點(diǎn)[2]。車輛行駛中,GPS信息可能會(huì)因障礙物或一些緊急情況而失去,這種情況下在車輛感知周圍的環(huán)境信息就會(huì)需要用到激光雷達(dá)。激光雷達(dá)的遠(yuǎn)距離檢測(cè)、識(shí)別能夠獲取目標(biāo)距離以及識(shí)別目標(biāo)等優(yōu)點(diǎn),能夠彌補(bǔ)GPS的缺點(diǎn)[3]。
為了實(shí)現(xiàn)無人車的自主導(dǎo)航,本文設(shè)計(jì)了一種基于GPS和四線激光雷達(dá)的無人車自主導(dǎo)航系統(tǒng)。整個(gè)導(dǎo)航系統(tǒng)分為全局導(dǎo)航和局部導(dǎo)航[4],相互配合,實(shí)現(xiàn)無人車自主導(dǎo)航。
在系統(tǒng)的整體方案上,將系統(tǒng)分為全局導(dǎo)航和局部導(dǎo)航兩個(gè)部分。使用GPS信息結(jié)合百度地圖實(shí)現(xiàn)全局導(dǎo)航,在無人車按照全局導(dǎo)航規(guī)劃的線路行進(jìn)時(shí),利用四線激光雷達(dá)檢測(cè)識(shí)別周圍的路面環(huán)境信息,完成停車等待、避障,實(shí)現(xiàn)局部導(dǎo)航。底層無人車的主控制器為Atmega128單片機(jī)系統(tǒng),車載電腦通過RS232接口與單片機(jī)相連進(jìn)行數(shù)據(jù)通信,控制無人車的動(dòng)作。系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)的總體結(jié)構(gòu)框圖
所設(shè)計(jì)的系統(tǒng)GPS信息獲取所采用的是SIMPAK系列接收機(jī),SIMPAK系列接收機(jī)是北京諾耕科技發(fā)展有限公司公司自行研制開發(fā)的一款性能價(jià)格比非常高的GPS接收機(jī)。在封裝上,SIMPAK系列接收機(jī)選用鋁合金的外殼,具有體積小、重量輕、安裝、攜帶方便等特點(diǎn)。該機(jī)有兩個(gè)串口,一個(gè)以太網(wǎng)口可以與外部設(shè)備進(jìn)行通訊,同時(shí)還能輸出高精度的定位信息和時(shí)間信息。該產(chǎn)品可用于需要導(dǎo)航定位和時(shí)間同步的各個(gè)領(lǐng)域,如船舶航行、車輛定位、監(jiān)測(cè)、科研及電力故障檢測(cè)等領(lǐng)域該機(jī)有兩個(gè)串口,一個(gè)以太網(wǎng)口可以與外部設(shè)備進(jìn)行通訊,同時(shí)還能輸出高精度的定位信息和時(shí)間信息,SIMPAK電源接口采用LEMO接頭,RS232串口采用DB9接口,以太網(wǎng)采用RJ45接口,可以通過RS-232串口或者以太網(wǎng)與計(jì)算機(jī)通訊。
本次設(shè)計(jì)所選激光雷達(dá)為IBEO LUX四線激光雷達(dá)。此款激光雷達(dá)是IBEO公司生產(chǎn)的一款多功能車載智能傳感器IBEO LUX不僅可以檢測(cè)障礙物,而且可以對(duì)部分常見的路面目標(biāo)進(jìn)行識(shí)別。表1是該激光雷達(dá)的主要性能參數(shù)。
表1 IBEOLUX激光雷達(dá)的性能參數(shù)
與單線激光雷達(dá)相比,IBEO LUX具有探測(cè)精度高、探測(cè)距離遠(yuǎn)、數(shù)據(jù)量大、可識(shí)別路面目標(biāo)的優(yōu)點(diǎn);與64線激光雷達(dá)相比,雖然數(shù)據(jù)量不占優(yōu)勢(shì),但四線激光雷達(dá)對(duì)于智能車來說具有更高的性價(jià)比,更重要的是,數(shù)據(jù)越小,越可以滿足智能車要求的實(shí)時(shí)性[5]。因此所設(shè)計(jì)的系統(tǒng)將它作為局部路徑規(guī)劃的傳感器。
無人車的導(dǎo)航控制分為全局導(dǎo)航和局部導(dǎo)航。無人車自主導(dǎo)航是針對(duì)檢測(cè)到前方的障礙物時(shí),可以根據(jù)檢測(cè)到的信息,進(jìn)行有效避障[6],使無人車按照的初始狀態(tài)規(guī)劃的路徑行駛至目的地。本文設(shè)計(jì)的無人車的自主導(dǎo)航采用的是GPS/四線激光雷達(dá)導(dǎo)航方法,結(jié)合百度地圖對(duì)無人車進(jìn)行路徑規(guī)劃。首先根據(jù)初始起點(diǎn)位置和目標(biāo)終點(diǎn)位置的經(jīng)緯度坐標(biāo),來確定無人車行駛的方位,然后利用百度地圖進(jìn)行全局路徑規(guī)劃,控制無人車沿設(shè)定路線行駛。在行駛的過程中,當(dāng)系統(tǒng)檢測(cè)到前方有障礙物的時(shí)候,利用四線激光雷達(dá)對(duì)路面信息檢測(cè)和識(shí)別,進(jìn)行等待或者避障,完成無人車局部路徑規(guī)劃,恢復(fù)到之前的行駛路線。
通過串口通信獲取GPS的數(shù)據(jù)信息,將經(jīng)緯度顯示在百度地圖中,同樣給出終點(diǎn)的經(jīng)緯度坐標(biāo),然后利用百度地圖API的路徑規(guī)劃方法,規(guī)劃出全局路徑。
2.1.1 坐標(biāo)系轉(zhuǎn)換
SIMPAK GPS信號(hào)接收機(jī)給出的坐標(biāo)是基于測(cè)地坐標(biāo)的經(jīng)緯度值(B,L),而實(shí)際使用的是平面坐標(biāo)系(x,y),所以要在百度地圖上顯示GPS信號(hào),必須將高斯投影轉(zhuǎn)換成平面坐標(biāo)[7],(B,L)→(x,y),從而實(shí)現(xiàn)導(dǎo)航功能。
根據(jù)高斯投影方法,得到其轉(zhuǎn)化結(jié)果。計(jì)算公式如下。
(1)
y=Nm+(1-t2+η2)Nm3+(5-18t2+t4+14η2-58η2t2)Nm5
(2)
式中:X0為赤道至緯度B的子午線的弧長(zhǎng),求法為公式(4);N為卯酉圈半徑。
轉(zhuǎn)化公式中的具體參數(shù)求法如下。
(3)
式(3)中的四個(gè)參數(shù)是為了讓式(1)、(2)轉(zhuǎn)化公式更簡(jiǎn)潔而人為設(shè)置的參數(shù),代替復(fù)雜的表達(dá)式,其中e為自然底數(shù),約等于2.718。
X0=[β0B+(β2cosB+β4cos3B+β6cos5B+β8cos7B)sinB]
(4)
式中參數(shù)β分別為
(5)
至此,通過高斯變換得到(x,y)坐標(biāo)。
2.1.2 將經(jīng)緯度坐標(biāo)顯示在地圖上
本系統(tǒng)實(shí)現(xiàn)地圖顯示所采用的開發(fā)框架是Qt,使用runJavaScript()函數(shù)實(shí)現(xiàn)界面和百度地圖的交互,利用Qt提供的控件來設(shè)計(jì)界面顯示數(shù)據(jù),將經(jīng)緯度呈現(xiàn)在百度地圖demo上。如圖2所示,其中左側(cè)地圖中的標(biāo)記為無人車當(dāng)前位置;右側(cè)文本框中分別顯示無人車當(dāng)前所在位置的經(jīng)緯度坐標(biāo)。
圖2 經(jīng)緯度信息在百度地圖上的顯示
2.1.3 基于百度地圖的路徑規(guī)劃
對(duì)百度地圖提供的基本地圖demo進(jìn)行修改,設(shè)置鼠標(biāo)監(jiān)聽事件,在地圖上單擊選擇起點(diǎn)和終點(diǎn)并將獲取到的經(jīng)緯度坐標(biāo)賦到輸入框中,之后在按鈕點(diǎn)擊事件觸發(fā)后,從輸入框中取出起始點(diǎn)的經(jīng)緯度坐標(biāo),使用new Bmap.point()方法創(chuàng)建起始點(diǎn)之后,用Bmap.DrivingRoute(map)創(chuàng)建出行駛路線,再使用driving.search()方法進(jìn)行路線搜索,即可實(shí)現(xiàn)全局路徑規(guī)劃。
本文所研究的無人車局導(dǎo)航,是對(duì)無人車行進(jìn)過程中遇到會(huì)干擾全局路徑規(guī)劃的路面目標(biāo)時(shí)的路徑再規(guī)劃問題。局部路徑規(guī)劃的實(shí)現(xiàn)是利用IBEO LUX四線激光雷達(dá)傳感器對(duì)路面目標(biāo)進(jìn)行檢測(cè)和識(shí)別,根據(jù)所得信息進(jìn)行避障,完成后再恢復(fù)到避障之前的路線,繼續(xù)向前行行進(jìn),最終到達(dá)目的地,完成無人車自主導(dǎo)航。具體規(guī)劃方案如下:
2.2.1 障礙物的檢測(cè)
系統(tǒng)利用IBEO四線激光雷達(dá)來檢測(cè)識(shí)別障礙物。為了讓四線激光雷達(dá)更能夠充分感知車輛周圍環(huán)境信息,在檢測(cè)道路信息方面取得更好的效果,同時(shí)兼顧車輛安全等方面的考慮,本文將四線激光雷達(dá)的底部垂直于地面,安裝在正前方距離地面高約0.8m的位置,以便能夠更準(zhǔn)確的檢測(cè)出路面目標(biāo)。將激光雷達(dá)和工控機(jī)用網(wǎng)線分別插入各自的網(wǎng)口,通過以太網(wǎng)的TCP/IP通信協(xié)議實(shí)現(xiàn)無人車和激光雷達(dá)通信。從而可以利用IBEO公司提供的ILV軟件對(duì)障礙物進(jìn)行進(jìn)行檢測(cè)識(shí)別,當(dāng)連接到單個(gè)傳感器或融合系統(tǒng)時(shí),來自IBEO傳感器或IBEO融合系統(tǒng)的所有輸入數(shù)據(jù)都可以存儲(chǔ)到磁盤上,進(jìn)行離線分析。
IBEO LUX不僅可以檢測(cè)障礙物,而且還可以對(duì)一些常見的路面信息如汽車、自行車、人等進(jìn)行識(shí)別。圖3所示為激光雷達(dá)對(duì)小汽車的識(shí)別。
圖3 激光雷達(dá)對(duì)小汽車的識(shí)別
圖3中的每一個(gè)掃描點(diǎn)是一個(gè)單一的原始激光飛行時(shí)間測(cè)量數(shù)據(jù),具有徑向距離、水平角等特性;背景是按照一定比例的等高線,方便判斷與車體的距離;圖上標(biāo)注的1、2個(gè)兩條線組成的角代表激光雷達(dá)約110°的視場(chǎng)角,分別在左右兩個(gè)方向?qū)π∑囘M(jìn)行檢測(cè)識(shí)別;將每個(gè)疑似的小汽車用矩形框圍起來,便于人的觀察,每一個(gè)小汽車矩形框突出的直線代表著它們相對(duì)于無人車的運(yùn)動(dòng)方向,同時(shí)隨機(jī)分配給每一個(gè)小汽車一個(gè)編號(hào),在矩形框旁,便于追蹤。
2.2.2 基于四線激光雷達(dá)的避障
本文所用的IBEO LUX四線激光雷達(dá)支持行人保護(hù)、自動(dòng)巡航、航線偏離警告、自動(dòng)緊急制動(dòng)、預(yù)碰撞處理、交通擁堵輔助以及低速防撞這七個(gè)ADAS應(yīng)用,其本身可以處理部分緊急情況,對(duì)于移動(dòng)的物體會(huì)等待其影響不到無人車的規(guī)定線路行駛之后才會(huì)繼續(xù)行駛,本次實(shí)驗(yàn)的環(huán)境是在校園內(nèi),所以還需補(bǔ)充設(shè)計(jì)的是對(duì)全局規(guī)劃路徑上無法識(shí)別的障礙物的合理避障。主要的設(shè)計(jì)思路如下。
障礙物在車體左側(cè),也就是激光雷達(dá)檢測(cè)界面中心線的左側(cè)時(shí),右轉(zhuǎn),直到四線激光雷達(dá)檢測(cè)到障礙物處于安全位置時(shí)停止右轉(zhuǎn)。重復(fù)執(zhí)行前進(jìn)指令直到障礙物完全避開,之后執(zhí)行左轉(zhuǎn)命令,調(diào)整車的姿態(tài),然后執(zhí)行前進(jìn)指令,再根據(jù)此刻GPS的信息,按照規(guī)劃的全局路徑行駛,障礙物在右側(cè)同理。
無人車的局部路徑規(guī)劃以及程序流程圖如圖4所示。
圖4 無人車的局部路徑規(guī)劃圖
本文是在沈陽理工大學(xué)校園中的一段道路進(jìn)行試驗(yàn),根據(jù)GPS經(jīng)緯度信息規(guī)劃的路徑向目標(biāo)位置行駛。在行駛的過程中,利用四線激光雷達(dá)對(duì)障礙物進(jìn)行檢測(cè)識(shí)別,根據(jù)獲取的信息,做出判斷使無人車能夠避開障礙物,準(zhǔn)確的停在目的地,實(shí)現(xiàn)無人車自主導(dǎo)航。全局路徑規(guī)劃如圖5所示;激光雷達(dá)雷達(dá)檢測(cè)到的前方障礙物識(shí)別情況如圖6所示;無人車自主導(dǎo)航程序流程圖如圖7所示。
圖5 全局路徑規(guī)劃在百度地圖上的顯示
圖6 激光雷達(dá)的障礙物檢測(cè)
圖7 無人車自主導(dǎo)航程序流程圖
圖5中左側(cè)標(biāo)記為起點(diǎn)兵器博物館,右側(cè)標(biāo)記為終點(diǎn)藝帆館,二者之間的連線為路徑。在界面中可通過在地圖中單擊位置獲取起點(diǎn)終點(diǎn)經(jīng)緯度,將其顯示在左上方的文本框,單擊“go”顯示規(guī)劃的路徑。
圖6中兩個(gè)斜線為激光雷達(dá)的視場(chǎng)角,約110°;其交點(diǎn)處為雷達(dá)所在距離為“0”的原點(diǎn)位置。方格為等距線,可隨著查看比例的大小而改變。圖6表示的是激光雷達(dá)檢測(cè)到的障礙物的點(diǎn)云數(shù)據(jù)在離原點(diǎn)約1.5m(三個(gè)方格)處。
本文選用的實(shí)驗(yàn)平臺(tái)為“探索家1號(hào)”多傳感器智能無人平臺(tái),車載電腦配置WIN7操作系統(tǒng),使用Microsoft Visual Studio 2017進(jìn)行軟件開發(fā),通過實(shí)際環(huán)境測(cè)試,無人車的自主導(dǎo)航避障實(shí)驗(yàn)效果如圖8所示。
如圖8所示,圖8a為無人車在按預(yù)定路線正常行駛的過程中檢測(cè)到障礙物,開始執(zhí)行避障程序。圖8b為無人車向右轉(zhuǎn)向行駛,躲避障礙物。圖8c為無人車向右躲避障礙物成功后向左回轉(zhuǎn),調(diào)整行駛方向。圖8d為無人車調(diào)整行駛方向后,回到預(yù)定路線行駛。
圖8 無人車自主導(dǎo)航效果圖
通過實(shí)際環(huán)境實(shí)驗(yàn),無人車成功實(shí)現(xiàn)自主避障導(dǎo)航,驗(yàn)證了導(dǎo)航系統(tǒng)和避障方法的有效性。
本文設(shè)計(jì)的無人車導(dǎo)航系統(tǒng)所用的傳感器是GPS/四線激光雷達(dá)。其中四線激光雷達(dá)的使用是無人車導(dǎo)航系統(tǒng)的關(guān)鍵因素。利用四線激光雷達(dá)障礙物識(shí)別功能可以使得導(dǎo)航系統(tǒng)更加智能化。全局導(dǎo)航利用GPS信息,輔以百度地圖規(guī)劃全局導(dǎo)航路線,當(dāng)車輛沿路線行走時(shí),通過激光雷達(dá)不間斷掃描周圍物體,對(duì)障礙物進(jìn)行檢測(cè)和識(shí)別,通過獲得的數(shù)據(jù)實(shí)現(xiàn)基本的行駛決策,實(shí)現(xiàn)局部導(dǎo)航。通過實(shí)驗(yàn)驗(yàn)證,本文設(shè)計(jì)的無人車自主導(dǎo)航系統(tǒng)實(shí)現(xiàn)了預(yù)期效果,可以使無人車安全地在指定路線上行走,完成無人車的自主導(dǎo)航。