劉勝金 周海燕 楊溢凡 張雨婕 黃銘志 張怡杰



摘要:隨著社會的發展,盲人的生活狀態也漸漸被人們所關注,尤其是在出行方面,實際可供盲人使用的盲道非常少,要么盲道被其他物品占用等,造成盲人出行的障礙大大加重。針對這種情況,設計了一個,調用科大訊飛云服務接口實現在Android上進行語音識別與合成,接收盲人的語音信息,調用高德地圖進行位置信息獲取,再根據機器視覺識別路況和超聲波識別路障,通過樹莓派的控制,語音震動提醒盲人的智能小車系統。基于樹莓派的智能小車系統,實現了語音指令控制、語音播報結合握柄震動,有效幫助視覺障礙者安全便捷出行。
關鍵詞:樹莓派;訊飛開放平臺;機器視覺;智能避障;高德地圖
中圖分類號:TP242.6 ? ? ? ?文獻標識碼: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
隨著社會的發展與進步,設備“智能”化已然成為社會發展的一個潮流。智能設備在實際中運用,代替人們去完成各種各樣的任務,可以大大的節省時間,釋放勞動力,創造更多的價值。
在國內,視覺障礙者出行主要是靠拐杖和盲道,但是盲道仍存在很多問題,如盲道少,盲道被占用等等問題,同時,安全保障也是一個大問題。綜合國內外研究情況,隨著導盲儀器的研發不斷深入,也有不少成品已經投入使用,其中一些儀器設備功能單一,智能化低,不能滿足視覺障礙者安全出行的要求,另一類導盲儀器設備價格昂貴,對于絕大部分的視覺障礙者來說,沒有雄厚的經濟能力,根本負擔不起。
利用物聯網比較流行的樹莓派模塊作為主控制器[1],連接Android獲取地理位置信息,
對于視覺障礙者來說,急需一種便捷、安全可靠,價格又能適中的導盲輔助設備。多功能的智能導盲工具,對危險路況進行分析和警示,實現語音指令控制、語音播報結合握柄震動,幫助視覺障礙者安全便捷出行[2]。
1 設計方案
系統的設計主要分為兩大步驟,第一步對Android端進行設計,第二步對樹莓派控制端進行設計。
Android端采用后臺服務的狀態運行,并通過藍牙與樹莓派主控芯片進行實時信息交流;調用科大訊飛語音接口,完成語音識別合成編程;利用高德地圖實時獲取當前經緯度,并通過地理反編碼解析出目的地的經緯度,一并發到主控芯片進行處理;通過Sensor獲取手機當前的方向,用作于當前航向,同樣是通過藍牙傳送到樹莓派端進行處理。
樹莓派控制端,通過藍牙模塊接收Android端傳來的信息,并進行字符串解析,恢復出想要的信息或者指令,并通過當前經緯度與終點經緯度計算出目標航向,將目標航向與當前航向對比,決定導盲車的行走方式;對L298N驅動模塊進行控制車的行動速度;握把震動提醒采用1027微型震動馬達,將馬達放在握把的不同方位,來提醒使用者當前狀態。使用OpenMV Cam攝像頭對導盲車行駛路徑進行路況處理,依托OpenMV Cam上的處理器,運行機器視覺算法,并通過超聲避障模塊來判斷前方是否有障礙物。整體系統框圖如圖1所示。
2硬件設計
2.1驅動模塊
L298N 是雙H橋驅動芯片,每個H橋可以提供穩定的2A的電流,瞬間峰值電流最大可達3A,可以直接用樹莓派處理器的IO口提供信號,這樣就可以保證導盲車驅動正常。本設計需要驅動擁有四個電機馬達導盲車,所以驅動模塊采用的是擁有兩塊L298N芯片雙L298N驅動模塊。
2.2避障模塊
采用機器視覺進行導盲的優點是檢測范圍廣,識別的信息多,然而缺點就是檢測路況速度慢、對軟硬件要求很高。在實際的路況信息采集過程中還需要輔助另外的傳感器。使用超聲波測距模塊,模塊預留了4個管腳,分別是接5V的電源VCC管腳、接電源地GND管腳、與樹莓派處理器IO口連接的電平觸發腳和信號接收腳。
2.3微型振動馬達
微型震動馬達的主要用途是:通過震動提醒使用者,車的動作,如左轉,右轉,直行還是停止等。方案中采用的是1027微型直流震動馬達,其驅動簡單,震動力足,性能穩定。1027馬達的額定電流為70mA,最大啟動電流為90mA;它的額定電壓為直流3.0伏,工作電壓范圍為直流2.5伏-4.0伏;轉速約為12000加減2500。五個震動馬達在握把上的放置位置如圖3所示。
3 軟件設計
3.1航向角的計算
航向角主要有兩個,一個是當前航向角,一個是終點航向角。當前航向角由Android端獲取,即手機當前的航向角,通過藍牙傳輸給樹莓派接收處理。終點航向角需要根據當前的經緯度和終點的經緯度計算得出,這一步的操作在樹莓派程序中計算完成。
通過計算緯度漸長率差(目標點的緯度漸長率與當前緯度漸長率之間的差值,所謂的緯度漸長率是:某一點的緯度線到赤道的距離/1赤道海里長度),結合反正切等三角函數轉換計算得出相對角度,也就是一點相對于另一點的方向即航向角。
還需要注意的是正北方向為0度,順時針為正方向,逆時針為反方向,最終需要角度的范圍是0度-360度。
設終點航向為end_angle,當前航向為now_angle,D_angle= now_angle-end_angle,則車行走時的方向判斷如下:
車左轉: (D_angle>=15&&D_angle<=180)||(D_angle<=-180);
車右轉:(D_angle<=-15&&D_angle>-180)||(D_angle>180);
車直行:(-15 3.2獲取方向 獲取的手機方向當做車當前的行走方向,通過藍牙傳輸給樹莓派處理。對于方向獲取,采用了地磁傳感器和加速度傳感器共同獲取的方法。需要對如下幾個類進行操作。Sonser:傳感器;SonserManager:傳感器管理類;SensorEvent:傳感器事件,SensorEventListener:傳感器事件監聽接口。 當獲取到地磁傳感器的數據和加速度傳感器的數據時,通過SensorManager中的getRotationMatrix方法將magnetic和acceler計算出旋轉矩陣存入方法里的第一個參數中。再通過SensorManager中的getOrientation()方法讀取到手機的方向存入value1浮點型數組中,取數組的第一個數值就是航向角。 3.3避障程序設計 避障設計方法是初始化GPIO以及超聲波,發送觸發電平,讀取返回電平,然后計算障礙物的距離,計算的距離大于0.5米,則前方有障礙物,否則無障礙物。本部分通過對樹莓派進行編程,實現利用超聲波模塊進行避障程序算法的實現。 樹莓派處理器先設置一IO口輸出為高電平,發送一段持續時間為10us的高脈沖電平,送到避障模塊的觸發端口,再將樹莓派處理器的IO口設置為低電平[5]。這時,避障模塊就通過數據輸出端口返回一個信號,再通過樹莓派處理器接收從避障模塊返回的信息。由于導盲車一直在運行,發射端的位置一直在改變,為了使得所測得的數據可靠性更高,取五次所測得收發過程所需的時間,通過音速在空氣中為固定的參數,取五次的平均值,就可以得到非常準確的距離。 3.4機器視覺算法 OpenMV Cam是一個可編程的攝像頭,模塊內置了一些圖像處理算法,通過使用MicroPython語言進行編程,通過調用現成的函數庫,不需要自己編寫解碼函數,可以實現機器視覺的邏輯,非常適合本系統設計的機器視覺算法實現。 3.4.1 交通燈識別算法實現 通過對OpenMV Cam進行程序設計,完成對交通燈識別算法的實現。 從人類的眼睛的視覺效果來說,可以將顏色通過RGB,CMYK,Lab色域,HSB來描述。相比較其他顏色來說,不像RGB和CMYK,Lab顏色被設計用來更接近人類視覺[6]。 本部分識別算法采用Lab色域,在機器視覺算法處理中通過改變L的值調整亮度對比,通過修改a的值或者b的值來改變色階來做的顏色的精準平衡。 在算法程序運行前,需要設置圖像格式與像素大小,然后跳過10幀所采集的圖片為了獲得穩定的圖像,避免干擾,關閉OpenMV Cam的白平衡。 在設置完這些參數之后,就需要OpenMV Cam不停地尋找交通燈的顏色,在找到目標顏色之后,在判斷是否是交通燈的形狀,直到尋找到交通燈[7]。 3.4.2 人行橫道識別算法實現 眾多周知行人在通過車道時,行人應該沿著人行橫道通過,盲人也不例外。實現了對人行橫道的識別算法實現,通過將整個畫面分割為若干的檢測區域將人行橫道斑馬線分成很多部分檢測,并分析設定出每個區域不同權值。距離導盲車越遠的,所設定的檢測人行橫道區域重要性越高,根據所需求來設定不同的權值,然后調用OpenMV Cam內置的函數,找出每個區域是否都有斑馬線存在,從而判斷出前方是否為人行橫道。 4 結語 基于樹莓派的智能小車系統,可以通過Android平臺,接收語音信息,進行語音的識別,同時調用高德地圖進行GPS位置信息獲取,然后將信息發送給控制器。控制器通過攝像獲取路況信息以及超聲波識別障礙物信息,計算出航向以及路線,通過語音反饋給用戶,然后語音加震動提醒用戶安全行走,起到了智能導盲的作用,為盲人的出行提供方便,具有較好的實用性。 參考文獻: [1] 何海燕.基于樹莓派的智能家居系統設計與實現[J].中國高新技術企業,2016(17). [2] 盧天增. 基于Android的智能機器人交互技術研究[D].中國海洋大學,2015. [3] 飔.語音識別技術:人機交互方式3.0時代[J].軟件工程師,2010(10). [4] 蔣東國. 基于Android平臺語音識別系統的研究與實現[D].廣東工業大學,2016. [5] 戈惠梅,徐曉慧,顧志華,等.基于Arduino的智能小車避障系統的設計[J].現代電子技術,2014(11). [6] 谷明琴,蔡自興,李儀.應用圓形度和顏色直方圖的交通信號燈識別[J].計算機工程與設計,2012(1):243-247. [7] 王鵬,鄭光宇,宋開亮.一種新的基于圖像識別技術的信號燈識別算法[J].兵工自動化,2009(3):73-75. 【通聯編輯:唐一東】