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