王思杰,程鐘鑫,郭志欣,毛旭陽,向安軍,高宏峰
(河南科技大學(xué)信息工程學(xué)院,河南 洛陽 471023)
隨著人們生活水平的提升,家居生活越來越舒適,但由于人們對(duì)家居生活安全方面的忽視,安全隱患總是層出不窮。據(jù)統(tǒng)計(jì),我國(guó)每年由于空氣質(zhì)量、火災(zāi)隱患、煤氣泄漏而引發(fā)的事故不少于數(shù)十萬起。目前,國(guó)內(nèi)大多數(shù)室內(nèi)環(huán)境檢測(cè)系統(tǒng)還是較為傳統(tǒng)的定點(diǎn)式設(shè)計(jì)[1],已經(jīng)無法滿足目前對(duì)于環(huán)境監(jiān)測(cè)的需求。
為了解決目前居家生活的安全隱患問題,并對(duì)于傳統(tǒng)式的環(huán)境監(jiān)測(cè)設(shè)備加以改進(jìn),本文設(shè)計(jì)了一種基于圖像識(shí)別的家用安防智能車。該智能車在居家環(huán)境中,根據(jù)Sobel邊緣檢測(cè)算法[2],融合紅外補(bǔ)償算法,實(shí)現(xiàn)自動(dòng)導(dǎo)航,同時(shí)監(jiān)測(cè)周圍環(huán)境,并利用互聯(lián)網(wǎng)技術(shù),將檢測(cè)信息上傳至用戶手機(jī)端。此外,車載智能燈光系統(tǒng),可根據(jù)周圍環(huán)境亮暗自動(dòng)調(diào)光,即使在較暗環(huán)境下也可正常運(yùn)行,若遇家中停電,該車還可作為移動(dòng)照明燈使用,安全環(huán)保。
系統(tǒng)總體框圖如圖1所示。該系統(tǒng)采用雙線并行的方式運(yùn)行:智能車自動(dòng)導(dǎo)航系統(tǒng)與車載環(huán)境感知系統(tǒng),兩個(gè)子系統(tǒng)通過通信聯(lián)合在一起,構(gòu)成整個(gè)智能車安防系統(tǒng)。
線程一:首先對(duì)攝像頭獲取到的圖像進(jìn)行處理,使用Sobel邊緣檢測(cè)算法,將圖像邊緣化。由于攝像頭存在視野盲區(qū),使用兩個(gè)紅外測(cè)距傳感器進(jìn)行補(bǔ)償,綜合信息后,解算出路徑,將加工后的信息傳達(dá)至CPU進(jìn)行運(yùn)動(dòng)控制決策,再反饋給電機(jī)進(jìn)行處理,實(shí)現(xiàn)自動(dòng)導(dǎo)航。
線程二:各空氣質(zhì)量傳感器對(duì)周圍環(huán)境進(jìn)行周期性檢測(cè),將數(shù)據(jù)實(shí)時(shí)上傳云端,并與用戶設(shè)置閾值比對(duì),當(dāng)測(cè)量值超過閾值時(shí),開啟語音播報(bào)提醒用戶,通過WiFi模塊使用戶手機(jī)振動(dòng)予以提醒,同時(shí)與智能車系統(tǒng)通信,使其停止導(dǎo)航,停在危險(xiǎn)發(fā)生處。同時(shí),車載燈光根據(jù)光敏傳感器獲取到的光照強(qiáng)度,通過PWM調(diào)光實(shí)現(xiàn)光照越暗,燈光越亮的效果。
系統(tǒng)硬件主要包括兩部分(如圖2所示),分別為智能車和環(huán)境感知系統(tǒng)硬件設(shè)計(jì)。智能車系統(tǒng)采用MM32F3277G9P單片機(jī)作為主控制器,電機(jī)驅(qū)動(dòng)采用H橋電路。圖像識(shí)別使用MT9V034攝像頭,導(dǎo)航及通信所用傳感器有編碼器、陀螺儀ICM20602、紅外測(cè)距模塊、顯示屏、2.4 G無線通信模塊等;環(huán)境感知系統(tǒng)采用STM32F103ZET6單片機(jī)作為主控制器,外部傳感器有溫濕度傳感器、有害氣體傳感器、PM2.5濃度傳感器、語音模塊JQ8900-16P、ESP8266WiFi模塊等。兩個(gè)系統(tǒng)之間通過2.4 G無線模塊進(jìn)行通信。
圖1 系統(tǒng)總體框圖
圖2 系統(tǒng)硬件原理圖
攝像頭與單片機(jī)通過排線連接。攝像頭將圖像以8位二進(jìn)制數(shù)據(jù)為一組返至單片機(jī)。MT9V034具有CMOS全局快門:在曝光前整個(gè)圖像重置,像素可在曝光時(shí)間積累電荷;曝光結(jié)束后每個(gè)像素積累的電荷同時(shí)傳送到屏蔽光的存儲(chǔ)區(qū)域,然后信號(hào)從此區(qū)域讀出[3]。因所有像素同時(shí)重置,曝光積分同樣的間隔,同時(shí)傳輸?shù)焦馄帘未鎯?chǔ)區(qū)域,對(duì)移動(dòng)物體沒有形變。
圖3所示為ESP8266模塊電路。ESP8266預(yù)留6個(gè)引腳供用戶使用:VCC、GND、TXD、RXD、RESET、GPIO0。將模塊的VCC、GND分別與STM32F103ZET6的對(duì)應(yīng)引腳連接,RXD與TXD和單片機(jī)的TXD與RXD引腳連接即可,其中RESET引腳為復(fù)位引腳,低電平復(fù)位,GPIO0為程序下載引腳,將該引腳拉低時(shí)ESP8266模塊進(jìn)入程序下載模式。
圖3 ESP8266模塊電路
軟件設(shè)計(jì)主要包括:基于攝像頭的圖像導(dǎo)航算法,紅外測(cè)距補(bǔ)償算法,直流電機(jī)的運(yùn)動(dòng)控制,環(huán)境數(shù)據(jù)上傳云端。
MT9V034是灰度攝像頭,采集到的像素點(diǎn)根據(jù)灰度值在[0,255]之間,其中純黑色灰度值為0,純白色灰度值為255?;叶葓D像的信息量過大,不利于圖像處理,只需要得到像素點(diǎn)的黑白狀況即可。采用Sobel邊緣檢測(cè)算法[4],對(duì)圖像進(jìn)行邊緣化處理。根據(jù)像素點(diǎn)上下、左右鄰點(diǎn)灰度加權(quán)差,在邊緣處達(dá)到極值這一現(xiàn)象檢測(cè)邊緣。經(jīng)過邊緣檢測(cè)后,圖像變?yōu)楹诎讏D像,但存在一些噪點(diǎn),再利用高斯濾波算法[5],對(duì)圖像進(jìn)行降噪處理,可去除大部分噪點(diǎn)。
一幀大小為188*120的圖像,經(jīng)過Sobel邊緣檢測(cè)和高斯濾波后,可得到適合處理的圖像。圖像可以反映出遠(yuǎn)近關(guān)系,在物體等大的條件下,遠(yuǎn)處物體在圖像上的像素點(diǎn)少,近處物體像素點(diǎn)多。將整幅圖像分割成兩部分,上半部分是距離較遠(yuǎn)的圖像,下半部分是距離較近的圖像。倘若圖像中未出現(xiàn)疑似障礙物,則整幅圖像僅有最左與最右兩條邊緣,路徑L的計(jì)算式為:
.
(1)
式中XLi為第i行路徑左邊緣x坐標(biāo),XRi為第i行路徑右邊緣x坐標(biāo)。
當(dāng)視野中出現(xiàn)疑似障礙物時(shí),計(jì)算障礙物的像素點(diǎn)面積,若大于閾值,則判定其為障礙物。若障礙物在左側(cè),則設(shè)置其右邊緣為路徑左邊緣XLi;若在右側(cè),則設(shè)置其左邊緣為路徑右邊緣XRi;若在正中間,設(shè)置其左邊緣為路徑右邊緣XRi,將XLi與XRi帶入式(1),即可求得路徑L。流程圖如圖4所示。
圖4 圖像導(dǎo)航算法流程圖
由于攝像頭只能觀測(cè)到正前方130°的范圍,存在50°的視野盲區(qū)。在車體的前方兩側(cè)各安裝一個(gè)紅外測(cè)距模塊,與攝像頭的夾角為70°左右,可以消除視野盲區(qū)。左右兩側(cè)紅外模塊周期性檢測(cè)距離值,設(shè)置障礙物存在的閾值為50 cm,當(dāng)距離大于50 cm時(shí),則判斷為無障礙物,反之,則判斷為有障礙物,路徑偏移量△為:
(2)
式中,K為比例系數(shù),x為紅外測(cè)距值,單位(cm)。
融合后的總路徑M=L+△。紅外測(cè)距補(bǔ)償算法流程圖如圖5所示。
圖5 紅外測(cè)距補(bǔ)償算法
電機(jī)控制采用經(jīng)典的PID算法:
PIDout=Kp×err+Ki×∑err+Kd×(err-errlast).
(3)
式中Kp、Ki、Kd均為系數(shù);errlast為上一次的偏差值;PIDout為輸出結(jié)果;err為路徑偏差值。路徑偏差值err為:
err=M-Xm
.
(4)
式中,M為自動(dòng)導(dǎo)航算法得到的總路徑;Xm為攝像頭中心坐標(biāo)。
小車轉(zhuǎn)向時(shí)可能由于慣性轉(zhuǎn)向過大而失控,或出現(xiàn)轉(zhuǎn)向抽搐、甩尾。車體在甩尾的瞬間,Z軸方向會(huì)產(chǎn)生較大的角速度,通過抑制這個(gè)角速度的產(chǎn)生,即在Z軸方向產(chǎn)生一個(gè)阻尼,可避免以上現(xiàn)象的發(fā)生。通過陀螺儀可以直接得到Z軸的角速度,使其作為附加項(xiàng)Kz×Gyro,融合進(jìn)PID中,使得轉(zhuǎn)向平滑并抑制車體甩尾與抽搐。
改進(jìn)后的PID算法為:
PIDout=Kp×err+Ki×∑err+Kd×(err-errlast)+Kz×Gyro.
(5)
為了讓用戶可以實(shí)時(shí)接收到環(huán)境信息并控制智能車,需要通過MQTT協(xié)議將數(shù)據(jù)上傳至云端[6]。MQTT客戶端之間實(shí)現(xiàn)通信,必須連接MQTT服務(wù)器。首先使ESP8266向服務(wù)端發(fā)送連接請(qǐng)求,即在程序上發(fā)送一個(gè)含有連接請(qǐng)求的數(shù)據(jù)包CONNECT,之后ESP8266與單片機(jī)STM32F103ZET6之間通過串口通信,單片機(jī)將采集到的環(huán)境信息,如溫濕度、有害氣體濃度、PM2.5濃度等數(shù)據(jù)打包,加入幀頭與幀尾,構(gòu)成與ESP8266通信所需的數(shù)據(jù)包,發(fā)送給ESP8266,ESP8266將串口接收到的數(shù)據(jù)包進(jìn)行解析,即可得到環(huán)境信息,將環(huán)境信息以報(bào)文的形式上傳至云端即可。
本文設(shè)計(jì)了基于圖像識(shí)別的家用安防智能車,在車體結(jié)構(gòu)、自動(dòng)導(dǎo)航算法、電機(jī)運(yùn)動(dòng)控制等方面提出了方案。將傳統(tǒng)的定點(diǎn)式空氣質(zhì)量檢測(cè)改進(jìn)為移動(dòng)式空氣質(zhì)量檢測(cè),將自動(dòng)導(dǎo)航與環(huán)境監(jiān)測(cè)融為一體,且可作為移動(dòng)照明燈使用,并實(shí)時(shí)將監(jiān)測(cè)的數(shù)據(jù)上傳至云端,一舉多得,可以解決目前居家生活的一些安全隱患問題。