劉勝金 周海燕 楊溢凡 張雨婕 黃銘志 張怡杰
摘要:隨著社會的發(fā)展,盲人的生活狀態(tài)也漸漸被人們所關(guān)注,尤其是在出行方面,實(shí)際可供盲人使用的盲道非常少,要么盲道被其他物品占用等,造成盲人出行的障礙大大加重。針對這種情況,設(shè)計(jì)了一個,調(diào)用科大訊飛云服務(wù)接口實(shí)現(xiàn)在Android上進(jìn)行語音識別與合成,接收盲人的語音信息,調(diào)用高德地圖進(jìn)行位置信息獲取,再根據(jù)機(jī)器視覺識別路況和超聲波識別路障,通過樹莓派的控制,語音震動提醒盲人的智能小車系統(tǒng)?;跇漭傻闹悄苄≤囅到y(tǒng),實(shí)現(xiàn)了語音指令控制、語音播報結(jié)合握柄震動,有效幫助視覺障礙者安全便捷出行。
關(guān)鍵詞:樹莓派;訊飛開放平臺;機(jī)器視覺;智能避障;高德地圖
中圖分類號:TP242.6 ? ? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)14-0158-03
Abstract: With the development of society, the blind life has gradually been concerned by people. Especially in terms of travel, the number of road that can be used for the blind is becoming less and less, or the blind road is occupied by other items, causing the blind travel greatly with heavy obstacles. In order to solve this problem, one is designed. The speech recognition and synthesis on Android is realized by HKDA ,receiving the voice information of the blind. The location information is obtained by calling the Auto Navi Map. And then the traffic status is identified according to the machine vision recognition and the ultrasonic wave recognize the roadblock. Through the control of raspberry pie, voice and vibration alert blind. Intelligent car system based on raspberry pie, realizes the combination of voice command control, voice broadcast and handle shake, which can help blind to travel safely and conveniently.
Key words:raspberry pie; Xunfei open platform; Navi Map; machine vision; Intelligent obstacle avoidance
隨著社會的發(fā)展與進(jìn)步,設(shè)備“智能”化已然成為社會發(fā)展的一個潮流。智能設(shè)備在實(shí)際中運(yùn)用,代替人們?nèi)ネ瓿筛鞣N各樣的任務(wù),可以大大的節(jié)省時間,釋放勞動力,創(chuàng)造更多的價值。
在國內(nèi),視覺障礙者出行主要是靠拐杖和盲道,但是盲道仍存在很多問題,如盲道少,盲道被占用等等問題,同時,安全保障也是一個大問題。綜合國內(nèi)外研究情況,隨著導(dǎo)盲儀器的研發(fā)不斷深入,也有不少成品已經(jīng)投入使用,其中一些儀器設(shè)備功能單一,智能化低,不能滿足視覺障礙者安全出行的要求,另一類導(dǎo)盲儀器設(shè)備價格昂貴,對于絕大部分的視覺障礙者來說,沒有雄厚的經(jīng)濟(jì)能力,根本負(fù)擔(dān)不起。
利用物聯(lián)網(wǎng)比較流行的樹莓派模塊作為主控制器[1],連接Android獲取地理位置信息,
對于視覺障礙者來說,急需一種便捷、安全可靠,價格又能適中的導(dǎo)盲輔助設(shè)備。多功能的智能導(dǎo)盲工具,對危險路況進(jìn)行分析和警示,實(shí)現(xiàn)語音指令控制、語音播報結(jié)合握柄震動,幫助視覺障礙者安全便捷出行[2]。
1 設(shè)計(jì)方案
系統(tǒng)的設(shè)計(jì)主要分為兩大步驟,第一步對Android端進(jìn)行設(shè)計(jì),第二步對樹莓派控制端進(jìn)行設(shè)計(jì)。
Android端采用后臺服務(wù)的狀態(tài)運(yùn)行,并通過藍(lán)牙與樹莓派主控芯片進(jìn)行實(shí)時信息交流;調(diào)用科大訊飛語音接口,完成語音識別合成編程;利用高德地圖實(shí)時獲取當(dāng)前經(jīng)緯度,并通過地理反編碼解析出目的地的經(jīng)緯度,一并發(fā)到主控芯片進(jìn)行處理;通過Sensor獲取手機(jī)當(dāng)前的方向,用作于當(dāng)前航向,同樣是通過藍(lán)牙傳送到樹莓派端進(jìn)行處理。
樹莓派控制端,通過藍(lán)牙模塊接收Android端傳來的信息,并進(jìn)行字符串解析,恢復(fù)出想要的信息或者指令,并通過當(dāng)前經(jīng)緯度與終點(diǎn)經(jīng)緯度計(jì)算出目標(biāo)航向,將目標(biāo)航向與當(dāng)前航向?qū)Ρ?,決定導(dǎo)盲車的行走方式;對L298N驅(qū)動模塊進(jìn)行控制車的行動速度;握把震動提醒采用1027微型震動馬達(dá),將馬達(dá)放在握把的不同方位,來提醒使用者當(dāng)前狀態(tài)。使用OpenMV Cam攝像頭對導(dǎo)盲車行駛路徑進(jìn)行路況處理,依托OpenMV Cam上的處理器,運(yùn)行機(jī)器視覺算法,并通過超聲避障模塊來判斷前方是否有障礙物。整體系統(tǒng)框圖如圖1所示。
2硬件設(shè)計(jì)
2.1驅(qū)動模塊
L298N 是雙H橋驅(qū)動芯片,每個H橋可以提供穩(wěn)定的2A的電流,瞬間峰值電流最大可達(dá)3A,可以直接用樹莓派處理器的IO口提供信號,這樣就可以保證導(dǎo)盲車驅(qū)動正常。本設(shè)計(jì)需要驅(qū)動擁有四個電機(jī)馬達(dá)導(dǎo)盲車,所以驅(qū)動模塊采用的是擁有兩塊L298N芯片雙L298N驅(qū)動模塊。
2.2避障模塊
采用機(jī)器視覺進(jìn)行導(dǎo)盲的優(yōu)點(diǎn)是檢測范圍廣,識別的信息多,然而缺點(diǎn)就是檢測路況速度慢、對軟硬件要求很高。在實(shí)際的路況信息采集過程中還需要輔助另外的傳感器。使用超聲波測距模塊,模塊預(yù)留了4個管腳,分別是接5V的電源VCC管腳、接電源地GND管腳、與樹莓派處理器IO口連接的電平觸發(fā)腳和信號接收腳。
2.3微型振動馬達(dá)
微型震動馬達(dá)的主要用途是:通過震動提醒使用者,車的動作,如左轉(zhuǎn),右轉(zhuǎn),直行還是停止等。方案中采用的是1027微型直流震動馬達(dá),其驅(qū)動簡單,震動力足,性能穩(wěn)定。1027馬達(dá)的額定電流為70mA,最大啟動電流為90mA;它的額定電壓為直流3.0伏,工作電壓范圍為直流2.5伏-4.0伏;轉(zhuǎn)速約為12000加減2500。五個震動馬達(dá)在握把上的放置位置如圖3所示。
3 軟件設(shè)計(jì)
3.1航向角的計(jì)算
航向角主要有兩個,一個是當(dāng)前航向角,一個是終點(diǎn)航向角。當(dāng)前航向角由Android端獲取,即手機(jī)當(dāng)前的航向角,通過藍(lán)牙傳輸給樹莓派接收處理。終點(diǎn)航向角需要根據(jù)當(dāng)前的經(jīng)緯度和終點(diǎn)的經(jīng)緯度計(jì)算得出,這一步的操作在樹莓派程序中計(jì)算完成。
通過計(jì)算緯度漸長率差(目標(biāo)點(diǎn)的緯度漸長率與當(dāng)前緯度漸長率之間的差值,所謂的緯度漸長率是:某一點(diǎn)的緯度線到赤道的距離/1赤道海里長度),結(jié)合反正切等三角函數(shù)轉(zhuǎn)換計(jì)算得出相對角度,也就是一點(diǎn)相對于另一點(diǎn)的方向即航向角。
還需要注意的是正北方向?yàn)?度,順時針為正方向,逆時針為反方向,最終需要角度的范圍是0度-360度。
設(shè)終點(diǎn)航向?yàn)閑nd_angle,當(dāng)前航向?yàn)閚ow_angle,D_angle= now_angle-end_angle,則車行走時的方向判斷如下:
車左轉(zhuǎn): (D_angle>=15&&D_angle<=180)||(D_angle<=-180);
車右轉(zhuǎn):(D_angle<=-15&&D_angle>-180)||(D_angle>180);
車直行:(-15 3.2獲取方向 獲取的手機(jī)方向當(dāng)做車當(dāng)前的行走方向,通過藍(lán)牙傳輸給樹莓派處理。對于方向獲取,采用了地磁傳感器和加速度傳感器共同獲取的方法。需要對如下幾個類進(jìn)行操作。Sonser:傳感器;SonserManager:傳感器管理類;SensorEvent:傳感器事件,SensorEventListener:傳感器事件監(jiān)聽接口。 當(dāng)獲取到地磁傳感器的數(shù)據(jù)和加速度傳感器的數(shù)據(jù)時,通過SensorManager中的getRotationMatrix方法將magnetic和acceler計(jì)算出旋轉(zhuǎn)矩陣存入方法里的第一個參數(shù)中。再通過SensorManager中的getOrientation()方法讀取到手機(jī)的方向存入value1浮點(diǎn)型數(shù)組中,取數(shù)組的第一個數(shù)值就是航向角。 3.3避障程序設(shè)計(jì) 避障設(shè)計(jì)方法是初始化GPIO以及超聲波,發(fā)送觸發(fā)電平,讀取返回電平,然后計(jì)算障礙物的距離,計(jì)算的距離大于0.5米,則前方有障礙物,否則無障礙物。本部分通過對樹莓派進(jìn)行編程,實(shí)現(xiàn)利用超聲波模塊進(jìn)行避障程序算法的實(shí)現(xiàn)。 樹莓派處理器先設(shè)置一IO口輸出為高電平,發(fā)送一段持續(xù)時間為10us的高脈沖電平,送到避障模塊的觸發(fā)端口,再將樹莓派處理器的IO口設(shè)置為低電平[5]。這時,避障模塊就通過數(shù)據(jù)輸出端口返回一個信號,再通過樹莓派處理器接收從避障模塊返回的信息。由于導(dǎo)盲車一直在運(yùn)行,發(fā)射端的位置一直在改變,為了使得所測得的數(shù)據(jù)可靠性更高,取五次所測得收發(fā)過程所需的時間,通過音速在空氣中為固定的參數(shù),取五次的平均值,就可以得到非常準(zhǔn)確的距離。 3.4機(jī)器視覺算法 OpenMV Cam是一個可編程的攝像頭,模塊內(nèi)置了一些圖像處理算法,通過使用MicroPython語言進(jìn)行編程,通過調(diào)用現(xiàn)成的函數(shù)庫,不需要自己編寫解碼函數(shù),可以實(shí)現(xiàn)機(jī)器視覺的邏輯,非常適合本系統(tǒng)設(shè)計(jì)的機(jī)器視覺算法實(shí)現(xiàn)。 3.4.1 交通燈識別算法實(shí)現(xiàn) 通過對OpenMV Cam進(jìn)行程序設(shè)計(jì),完成對交通燈識別算法的實(shí)現(xiàn)。 從人類的眼睛的視覺效果來說,可以將顏色通過RGB,CMYK,Lab色域,HSB來描述。相比較其他顏色來說,不像RGB和CMYK,Lab顏色被設(shè)計(jì)用來更接近人類視覺[6]。 本部分識別算法采用Lab色域,在機(jī)器視覺算法處理中通過改變L的值調(diào)整亮度對比,通過修改a的值或者b的值來改變色階來做的顏色的精準(zhǔn)平衡。 在算法程序運(yùn)行前,需要設(shè)置圖像格式與像素大小,然后跳過10幀所采集的圖片為了獲得穩(wěn)定的圖像,避免干擾,關(guān)閉OpenMV Cam的白平衡。 在設(shè)置完這些參數(shù)之后,就需要OpenMV Cam不停地尋找交通燈的顏色,在找到目標(biāo)顏色之后,在判斷是否是交通燈的形狀,直到尋找到交通燈[7]。 3.4.2 人行橫道識別算法實(shí)現(xiàn) 眾多周知行人在通過車道時,行人應(yīng)該沿著人行橫道通過,盲人也不例外。實(shí)現(xiàn)了對人行橫道的識別算法實(shí)現(xiàn),通過將整個畫面分割為若干的檢測區(qū)域?qū)⑷诵袡M道斑馬線分成很多部分檢測,并分析設(shè)定出每個區(qū)域不同權(quán)值。距離導(dǎo)盲車越遠(yuǎn)的,所設(shè)定的檢測人行橫道區(qū)域重要性越高,根據(jù)所需求來設(shè)定不同的權(quán)值,然后調(diào)用OpenMV Cam內(nèi)置的函數(shù),找出每個區(qū)域是否都有斑馬線存在,從而判斷出前方是否為人行橫道。 4 結(jié)語 基于樹莓派的智能小車系統(tǒng),可以通過Android平臺,接收語音信息,進(jìn)行語音的識別,同時調(diào)用高德地圖進(jìn)行GPS位置信息獲取,然后將信息發(fā)送給控制器??刂破魍ㄟ^攝像獲取路況信息以及超聲波識別障礙物信息,計(jì)算出航向以及路線,通過語音反饋給用戶,然后語音加震動提醒用戶安全行走,起到了智能導(dǎo)盲的作用,為盲人的出行提供方便,具有較好的實(shí)用性。 參考文獻(xiàn): [1] 何海燕.基于樹莓派的智能家居系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中國高新技術(shù)企業(yè),2016(17). [2] 盧天增. 基于Android的智能機(jī)器人交互技術(shù)研究[D].中國海洋大學(xué),2015. [3] 飔.語音識別技術(shù):人機(jī)交互方式3.0時代[J].軟件工程師,2010(10). [4] 蔣東國. 基于Android平臺語音識別系統(tǒng)的研究與實(shí)現(xiàn)[D].廣東工業(yè)大學(xué),2016. [5] 戈惠梅,徐曉慧,顧志華,等.基于Arduino的智能小車避障系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2014(11). [6] 谷明琴,蔡自興,李儀.應(yīng)用圓形度和顏色直方圖的交通信號燈識別[J].計(jì)算機(jī)工程與設(shè)計(jì),2012(1):243-247. [7] 王鵬,鄭光宇,宋開亮.一種新的基于圖像識別技術(shù)的信號燈識別算法[J].兵工自動化,2009(3):73-75. 【通聯(lián)編輯:唐一東】