西北民族大學(xué)電氣工程學(xué)院 趙瀟雪 銀 俊 孫新然 譚奇建 周思丹
本項(xiàng)目的汽車安全駕駛輔助系統(tǒng)由STM32單片機(jī)、疲勞檢測(cè)模塊、語音播報(bào)模塊、輔助測(cè)試模塊(包含小車驅(qū)動(dòng)模塊、傳感器、紅外循跡模塊、藍(lán)牙模塊、超聲波模塊等)組成。其中,以STM32單片機(jī)為核心實(shí)現(xiàn)控制,采用Adaboost算法進(jìn)行人臉檢測(cè)并通過OpenMV的瞳孔識(shí)別功能進(jìn)行實(shí)時(shí)監(jiān)測(cè)駕駛員疲勞狀態(tài),系統(tǒng)通過判斷結(jié)果進(jìn)行語音提醒并采取相應(yīng)駕駛輔助措施,確保駕駛員駕駛安全。
根據(jù)道路交通行業(yè)調(diào)查數(shù)據(jù)統(tǒng)計(jì)顯示,疲勞駕駛在引發(fā)交通事故事件中占20%的比例,是酒駕的8倍,更占到重特大交通事故40%,在引發(fā)交通事故死亡事件中所占比例高達(dá)21%。為切實(shí)防控駕駛員疲勞駕駛等安全隱患,我們以此為出發(fā)點(diǎn),本系統(tǒng)針對(duì)不同情況具備多方案處理功能,加上自己的創(chuàng)新,研究了一個(gè)更加完善的安全駕駛系統(tǒng)。
本項(xiàng)目基于單片機(jī)理論進(jìn)行疲勞駕駛的汽車安全行駛及輔助系統(tǒng)的研究,利用攝像頭Openmv進(jìn)行瞳孔識(shí)別,實(shí)現(xiàn)對(duì)駕駛員的狀態(tài)判定(是否為疲勞),并在完成自主導(dǎo)航任務(wù)時(shí),能夠自主躲避障礙物。
本汽車安全行駛輔助系統(tǒng)由STM32單片機(jī)、GPS定位模塊、疲勞檢測(cè)模塊、WIFI模塊、語音播報(bào)模塊、輔助駕駛模塊、紅外循跡模塊、藍(lán)牙模塊、傳感器等組成,其中以STM32單片機(jī)為核心實(shí)現(xiàn)控制,基本的實(shí)施目標(biāo)如圖1所示。
圖1 基本的系統(tǒng)實(shí)施框圖
(1)單片機(jī)控制:從各個(gè)模塊中獲得當(dāng)前的信息,對(duì)汽車行駛過程的狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè),然后對(duì)獲取的信息進(jìn)行處理,把不同編碼的信息通過藍(lán)牙通信發(fā)送給汽車,汽車接收信息的同時(shí)語音報(bào)警警示駕駛員,這樣能夠控制整個(gè)系統(tǒng)功能的正常運(yùn)行。
(2)GPS定位:使用GPS定位模塊準(zhǔn)確定位駕駛員實(shí)時(shí)行駛位置,以便于當(dāng)有突發(fā)事件發(fā)生時(shí)救援人員及時(shí)到達(dá)現(xiàn)場(chǎng)。
(3)疲勞監(jiān)測(cè):通過寫Openmv的算法,讓其先找到人眼,然后利用find_eye函數(shù)找到瞳孔,捕捉眨眼次數(shù),根據(jù)眼臉閉合時(shí)間占一段時(shí)間的百分比,計(jì)算出駕駛員當(dāng)前的狀態(tài)(是否疲勞)。當(dāng)接近極限時(shí)系統(tǒng)給出報(bào)警警示,同時(shí)語音報(bào)警(此時(shí)單片機(jī)開啟GPS定位,實(shí)時(shí)記錄當(dāng)前位置用于突發(fā)狀況的處理)。
(4)語音播報(bào):本模塊主要根據(jù)單片機(jī)返回的不同信息發(fā)出語音提示,對(duì)駕駛員進(jìn)行相應(yīng)的警示,使駕駛員做出相應(yīng)的調(diào)整,做到安全駕駛。
(5)輔助駕駛:在駕駛員過度疲勞且沒有做出相應(yīng)調(diào)整的情況下自動(dòng)開啟,此時(shí)汽車開啟循跡避障功能,并開始減速行駛,實(shí)時(shí)監(jiān)測(cè)前方的路況,在汽車前方遇到障礙物時(shí),實(shí)現(xiàn)事故預(yù)警和相應(yīng)的處理。
人臉識(shí)別主要采用了Adaboost算法對(duì)人臉進(jìn)行檢測(cè)。Adaboost算法的基本原理是通過訓(xùn)練訓(xùn)練集,從而得到一些弱分類器;然后,再將弱分類器集合起來形成一個(gè)強(qiáng)分類器,而且這個(gè)強(qiáng)分類器具有比較強(qiáng)的分類能力;最后,通過將若千個(gè)強(qiáng)分類器級(jí)聯(lián)得到級(jí)聯(lián)分類器。用該算法實(shí)現(xiàn)人臉識(shí)別會(huì)受到許多因素的影響,主要表現(xiàn)為下面幾個(gè)方面。
2.1.1 對(duì)于圖像的預(yù)處理
先定位好人臉圖像,然后用一個(gè)矩形框?qū)z測(cè)到的人臉進(jìn)行標(biāo)記。根據(jù)人臉的面部特征進(jìn)行相應(yīng)的處理,操作如圖2所示。
圖2 人臉的面部識(shí)別
2.1.2 人眼定位
(1)膨脹處理:在圖像的邊緣添加像素值,使得整體的像素值擴(kuò)張,進(jìn)而達(dá)到圖像的膨脹效果,對(duì)邊緣圖像進(jìn)行閾值分割,之后再進(jìn)行膨脹處理。由于圓形模板的對(duì)稱性,所以應(yīng)采用圓形的結(jié)構(gòu)進(jìn)行處理。
(2)檢測(cè)邊緣:針對(duì)上圖中所框出的人眼區(qū)域,我們采用Sobe算子,對(duì)圖像進(jìn)行處理。
(3)區(qū)域連通性分析:需要進(jìn)行連通性分析來處理這個(gè)問題,我們運(yùn)用了區(qū)域生長(zhǎng)法。區(qū)域生長(zhǎng)法是從最初的區(qū)域開始,將具有相似特性的像素點(diǎn)合并到一起,直到?jīng)]有可以合并的像素點(diǎn)或者沒有可以合并的小區(qū)域?yàn)橹埂.?dāng)區(qū)域像素點(diǎn)的個(gè)數(shù)大于某值的時(shí)候,這個(gè)區(qū)域可以被認(rèn)為是人眼區(qū)域,從而可以進(jìn)行人眼定位。
2.1.3 瞳孔定位
(1)進(jìn)行區(qū)域投影:對(duì)瞳孔區(qū)域定位,我們需要采用基于RPF的方法。首先把眼睛窗口分別在垂直和水平方向上進(jìn)行均分分割,假定水平分割的個(gè)數(shù)和垂直分割的個(gè)數(shù)分別為n和m。分割以后垂直方向的高為h,水平方向的區(qū)域?qū)挾葹閣,則第i區(qū)域的垂直投影函數(shù)和第j區(qū)域的水平投影函數(shù)分別為公式(1)和公式(2):
定位瞳孔中心:因?yàn)橥妆戎車难郯椎幕叶戎档停钥衫猛椎幕叶忍匦?,精確得到瞳孔中心的坐標(biāo)。詳細(xì)操作過程:(a)確定濾波的窗口函數(shù),完成線性濾波;(b)對(duì)區(qū)域進(jìn)行分塊,完成它的二值化;(c)進(jìn)行邊界跟蹤,從圖片的中心點(diǎn)開始獲得瞳孔范圍;(d)計(jì)算瞳孔中心點(diǎn)的坐標(biāo),可使用重心法。
圖3 Open MV
我們用Python語言進(jìn)行編寫,可以結(jié)合Openmv,OpenMV上有許多算法我們可以使用。比如:查尋色塊進(jìn)行人臉檢測(cè)或者眼球追蹤、邊緣的檢測(cè),還有跟蹤標(biāo)志等算法。我們可以用這些算法結(jié)合Openmv來完成各種機(jī)器視覺所需完成的任務(wù)。
GPS模塊是集成三個(gè)芯片(RF射頻芯片、基帶芯片、核心CPU),再加上相關(guān)外圍電路組成的一個(gè)集成式電路。GPS通過串行通信口進(jìn)行傳輸,不斷輸出輔助信息和定位信息,然后讓接收者選擇并應(yīng)用。它屬于低功率消耗、支持準(zhǔn)確1pps輸出信號(hào)、接軌GPS校準(zhǔn)、支持標(biāo)準(zhǔn)的NMEA-0183和SIRF二進(jìn)制協(xié)議、多路徑減緩的硬件、易于集成到的手持式設(shè)備,能夠廣泛應(yīng)用于許多系統(tǒng)。
Wi-Fi模塊屬于物聯(lián)網(wǎng)的傳輸層,又可以叫做串口Wi-Fi模塊,它的作用是將TTL電平或者串口轉(zhuǎn)換為能夠適合無線網(wǎng)絡(luò)通信的標(biāo)準(zhǔn)嵌入式模塊,傳統(tǒng)的硬件設(shè)備嵌入的Wi-Fi模塊可以直接利用Wi-Fi接入互聯(lián)網(wǎng),內(nèi)置TCP/IP協(xié)議棧、無線網(wǎng)絡(luò)協(xié)議IEEE802.11b.g.n協(xié)議棧,它是許多通信系統(tǒng)的重要組成部分,在本系統(tǒng)中也起重要的作用。
(1)新穎性。目前市場(chǎng)上也有防止疲勞駕駛的車載設(shè)備,但相關(guān)的防疲勞駕駛系統(tǒng)并沒有廣泛應(yīng)用。主要原因如下:一是其中的關(guān)鍵技術(shù)并沒完全成熟,對(duì)于駕駛員的疲勞狀況的判定也各種各樣,并沒有很高的準(zhǔn)確度;二是造價(jià)昂貴,難以實(shí)現(xiàn)普遍推廣,且功能以預(yù)防疲勞為主,對(duì)于過度疲勞后駕駛員陷入睡眠的情況處理不完善。對(duì)此,我們研究了一個(gè)更加完善的安全駕駛系統(tǒng),我們以基于單片機(jī)理論設(shè)計(jì)一個(gè)集判斷和處理于一身的完善的安全駕駛系統(tǒng)。首先,我們采用PERCLOS理論作為判斷駕駛員是否疲勞的關(guān)鍵,在對(duì)傳統(tǒng)的疲勞檢測(cè)方式上,此理論判斷的準(zhǔn)確性是最高的。其次,在攝像頭方面,我們采用了低成本并且功能強(qiáng)大的OpenMV機(jī)器視覺模塊進(jìn)行瞳孔識(shí)別,在STM32單片機(jī)上搭載安裝攝像頭或者用樹莓派搭載攝像頭,與此同時(shí)采集人臉的信息,然后調(diào)用face++的API與OpenCV對(duì)所需要照片進(jìn)行識(shí)別和對(duì)比,OpenMV會(huì)更加便捷。
(2)優(yōu)勢(shì)。相比于其他的預(yù)防疲勞解決方法,我們做到了快速和實(shí)時(shí)判斷,可以實(shí)時(shí)檢測(cè)駕駛員的狀態(tài),并給出及時(shí)的判斷結(jié)果,并充分考慮了駕駛員的各種意外情況后,系統(tǒng)對(duì)駕駛員的駕駛情況進(jìn)行判斷來采取完善的措施,把駕駛員的生命安全放在處理原則的第一位。我們將以為切入點(diǎn)主,認(rèn)真做好標(biāo)準(zhǔn)的輔助系統(tǒng),直到可行性等達(dá)到要求。
本項(xiàng)目在基于單片機(jī)的控制系統(tǒng)上加載的汽車安全行駛輔助系統(tǒng),具備以下特點(diǎn):
(1)結(jié)合STM32單片機(jī)的中心控制理論。通過運(yùn)用STM32單片機(jī)分別對(duì)汽車運(yùn)動(dòng)系統(tǒng)和檢測(cè)系統(tǒng)的單獨(dú)控制和數(shù)據(jù)處理后,做到了汽車運(yùn)動(dòng)和實(shí)時(shí)檢測(cè)的有機(jī)結(jié)合與處理。
(2)利用Open MV能夠?qū)崿F(xiàn)人眼識(shí)別。Open MV是一個(gè)功能強(qiáng)大、成本較低的模塊,有廣泛的應(yīng)用前景,我們?cè)趯W(xué)習(xí)Adaboost算法后通過PERCLOS理論作為編程判斷的核心框架,通過編寫Python算法實(shí)現(xiàn)實(shí)現(xiàn)人眼瞳孔的定位,從而達(dá)到精確檢測(cè)駕駛員的疲勞狀況。
(3)運(yùn)用GPS技術(shù)實(shí)時(shí)定位以確保行車安全。在緊急情況下,開啟自主導(dǎo)航的汽車可以實(shí)現(xiàn)避障功能和實(shí)時(shí)定位,因此具備良好的安全性。
(4)使用WIFI模塊實(shí)現(xiàn)遠(yuǎn)距離數(shù)據(jù)信息傳輸。在汽車安全行駛輔助系統(tǒng)運(yùn)行時(shí),其具備完整的TCP/IP協(xié)議棧,能夠有效地進(jìn)行點(diǎn)對(duì)點(diǎn)數(shù)據(jù)傳輸,因此具備遠(yuǎn)距離傳輸及擁有較大的調(diào)整范圍。
(5)具有人工智能、高拓展等特點(diǎn)。Python語言具有適合人工智能開發(fā)的特點(diǎn),可自動(dòng)對(duì)駕駛員的駕駛情況進(jìn)行判斷,可將其廣泛應(yīng)用于服務(wù)業(yè)、快遞業(yè)、運(yùn)輸業(yè)等領(lǐng)域。
當(dāng)今物流持續(xù)增長(zhǎng),需要強(qiáng)大的運(yùn)輸支持。對(duì)于貨車司機(jī)來說,長(zhǎng)時(shí)間的工作會(huì)很容易造成疲憊駕駛,在此情況下會(huì)導(dǎo)致高速路上的事故率增加,造成財(cái)產(chǎn)損失、人身意外,以及交通擁堵的情況。在這樣的條件下,汽車安全駕駛輔助系統(tǒng)能夠降低損失以及對(duì)駕駛?cè)藛T的安全有一定的保障,順應(yīng)了當(dāng)代汽車行業(yè)的發(fā)展。
用生物學(xué)的環(huán)境和容納量曲線來說,目前安全駕駛輔助系統(tǒng)正處于S型曲線的下端,安全駕駛輔助系統(tǒng)還處在對(duì)環(huán)境適應(yīng)的階段。在將來技術(shù)越發(fā)成熟的情況下,隨著人們對(duì)駕駛安全性要求的提高,安全駕駛輔助系統(tǒng)將會(huì)有指數(shù)型的增長(zhǎng),并且達(dá)到一定的數(shù)量級(jí)后趨于飽和狀態(tài)。就目前而言,汽車安全駕駛輔助系統(tǒng)還存在相當(dāng)大的空間,其市場(chǎng)價(jià)值將取決于技術(shù)的成熟程度,技術(shù)發(fā)展越成熟,市場(chǎng)價(jià)值增長(zhǎng)越快。