左炳輝,范志文,邱 宇
(青島理工大學(xué)信息與控制工程學(xué)院,山東 青島 266500)
根據(jù)衛(wèi)生部統(tǒng)計(jì),中國(guó)的盲人數(shù)量近一千五百萬(wàn),數(shù)量位居世界之首[1],且近幾年隨著電子產(chǎn)品的普及,紫外光對(duì)人眼的損害加快了盲人數(shù)量的上升速度,如何讓盲人平安出行成為困擾人們的難題。目前國(guó)內(nèi)市面上流行的導(dǎo)盲杖大多僅僅具有障礙物提示功能,即當(dāng)導(dǎo)盲杖觸碰到障礙物時(shí)會(huì)進(jìn)行報(bào)警或發(fā)出震動(dòng),這種導(dǎo)盲杖功能過(guò)于單一,不具備障礙物識(shí)別功能和通訊功能。且傳統(tǒng)的導(dǎo)盲杖僅僅檢測(cè)盲道上的障礙物,而忽視了使用者臉部高度處的障礙物,導(dǎo)致使用者撞到廣告標(biāo)牌的現(xiàn)象屢屢發(fā)生。為了解決視力障礙人群的出行問(wèn)題,有必要研制一款集障礙物識(shí)別、障礙物檢測(cè)、定位、報(bào)警提示及通訊功能于一體的智能導(dǎo)盲杖,該導(dǎo)盲杖有望為盲人患者的出行帶來(lái)福音。
本文所提出的基于機(jī)器視覺(jué)的智能導(dǎo)盲杖,其設(shè)計(jì)思想來(lái)源于實(shí)際生活,本研究旨在更好地為盲人服務(wù)。導(dǎo)盲杖主體結(jié)構(gòu)可分為障礙物識(shí)別、障礙物檢測(cè)、GPS定位、報(bào)警提示以及應(yīng)急求助五大部分。對(duì)于障礙物的識(shí)別,我們采用OpenCV 技術(shù),并借助樹(shù)莓派4B 實(shí)現(xiàn)與圖像識(shí)別相關(guān)的基本功能。在進(jìn)行識(shí)別之前,我們需要通過(guò)樹(shù)莓派進(jìn)行WIFI 聯(lián)網(wǎng),以便訪問(wèn)百度AI 圖像識(shí)別平臺(tái),運(yùn)行已經(jīng)訓(xùn)練好的識(shí)別模型。此外,我們還通過(guò)超聲波測(cè)距模塊和紅外光電傳感器模塊來(lái)檢測(cè)使用者附近的障礙物,包括懸空的障礙物,使用蜂鳴器報(bào)警的方式提醒使用者。利用串口通訊的方式,使單片機(jī)與SIM800C 模塊通訊,實(shí)現(xiàn)了使用者與家人的聯(lián)系。導(dǎo)盲杖主體控制結(jié)構(gòu)如圖1所示。
圖1 導(dǎo)盲杖主體控制結(jié)構(gòu)
Raspberry Pi(樹(shù)莓派)是一款基于ARM 的微型電腦主板,相比于單片機(jī),樹(shù)莓派在性能上占有絕對(duì)優(yōu)勢(shì),能夠滿足導(dǎo)盲杖使用過(guò)程中圖像傳輸及圖像處理等相關(guān)需求。在安裝有Linux操作系統(tǒng)的樹(shù)莓派上運(yùn)行Python開(kāi)發(fā)平臺(tái),為本設(shè)計(jì)提供了良好的編程環(huán)境。本設(shè)計(jì)以樹(shù)莓派4B作為主控制器,其配置有4GB大小的RAM,可實(shí)現(xiàn)圖像的高速處理,并配備了千兆以太網(wǎng)以及板載無(wú)線網(wǎng)絡(luò)和藍(lán)牙,可十分方便地進(jìn)行網(wǎng)絡(luò)接入。樹(shù)莓派4B總共有40 個(gè)GPIO,提供了I2C,SPI,UART 等功能。樹(shù)莓派4B及攝像頭的連接如圖2所示。本設(shè)計(jì)需要用到普通GPIO 口進(jìn)行開(kāi)關(guān)控制,通過(guò)程序import RPi.GPIO as GPIO 導(dǎo)入GPIO 庫(kù),并將GPIO26 號(hào)管腳設(shè)置成下拉輸入。利用邊緣檢測(cè)函數(shù)GPIO.wait_for_edge(26,GPIO_RISING)捕捉上升沿信號(hào),當(dāng)開(kāi)關(guān)打開(kāi)后,便可執(zhí)行與障礙物的識(shí)別及語(yǔ)音播報(bào)功能相關(guān)的程序。
圖2 樹(shù)莓派及攝像頭的連接
為了實(shí)現(xiàn)緊急情況下使用者與家人快速取得聯(lián)系的需求,在導(dǎo)盲杖的設(shè)計(jì)過(guò)程中我們選用SIM800C 模塊。該模塊由SIMCOM公司推出,其板載的工業(yè)級(jí)四頻GSM/GPRS 模塊的工作頻率為850/900/1800/1900MHz,可以提供語(yǔ)音、SMS(短信)、MMS(彩信)、藍(lán)牙數(shù)據(jù)傳輸?shù)裙δ躘2]。在導(dǎo)盲杖的設(shè)計(jì)中,我們選用了SIM800C的短信發(fā)送功能,當(dāng)使用者遇到緊急情況需要與家人取得聯(lián)系時(shí),按下導(dǎo)盲杖上相應(yīng)的開(kāi)關(guān)即可將求救信息發(fā)送到預(yù)先設(shè)置好的聯(lián)系人手機(jī)上。
SIM800C 通過(guò)使用AT 指令建立終端設(shè)備與終端適配器的聯(lián)系,AT指令必須以“AT”或“at”開(kāi)頭,以回車(chē)(
表1 涉及到的AT指令
在對(duì)障礙物的檢測(cè)環(huán)節(jié)中,本設(shè)計(jì)采用了HC-SR04超聲波測(cè)距模塊和E18-D80NK 漫反射式紅外光電開(kāi)關(guān)傳感器模塊相搭配的設(shè)計(jì)方案。對(duì)于使用者兩側(cè)的障礙物,通過(guò)紅外光電傳感器進(jìn)行粗略檢測(cè)即可,當(dāng)障礙物與使用者的距離小于設(shè)定的閾值時(shí),蜂鳴器開(kāi)始報(bào)警提示;對(duì)于使用者前方和側(cè)上方的障礙物則使用了超聲波測(cè)距模塊進(jìn)行精準(zhǔn)測(cè)量,在程序中通過(guò)設(shè)定不同的測(cè)量值范圍,來(lái)使蜂鳴器發(fā)出不同的報(bào)警聲,以達(dá)到障礙物檢測(cè)的目的。
盲人在使用導(dǎo)盲杖的過(guò)程中,難免會(huì)遇到諸如障礙物檢測(cè)模塊失靈或者走丟等不可控情況,為應(yīng)對(duì)突發(fā)事件的發(fā)生并保障使用者的人身安全,本設(shè)計(jì)集成了GPS定位功能。當(dāng)發(fā)生緊急情況時(shí),使用者先按下相關(guān)開(kāi)關(guān),使上文提到的SIM800C 模塊工作,將求救信息發(fā)送給家人。此時(shí),家人只需將相關(guān)指令發(fā)送到盲人使用者的手機(jī)號(hào)中,便可根據(jù)手機(jī)接收到的回饋短信,通過(guò)相關(guān)APP實(shí)時(shí)顯示使用者的當(dāng)前位置。經(jīng)測(cè)試,本導(dǎo)盲杖定位精度≤10米,基本滿足使用者的要求。
圖像識(shí)別的過(guò)程包括數(shù)據(jù)獲取、圖像預(yù)處理、特征提取、分類(lèi)器選擇與決策[4],而普通單片機(jī)的性能基本不可能達(dá)到預(yù)期效果,為此我們選用了樹(shù)莓派4B作為圖像識(shí)別部分的主處理器。首先,需要在樹(shù)莓派中刷入樹(shù)莓派鏡像,并配置WIFI 功能(本設(shè)計(jì)的圖像識(shí)別功能及語(yǔ)言播報(bào)功能均需要用到網(wǎng)絡(luò)),在Raspi-config中開(kāi)啟SSH與VNC(提供遠(yuǎn)程調(diào)試環(huán)境)。最后,使用pip install x指令安裝所依賴(lài)的庫(kù)文件,并確保OpenCV-Python 的正確安裝。安裝完成后,可在命令行輸入import cv2,回車(chē)后如果沒(méi)有報(bào)錯(cuò),即可表示OpenCV已經(jīng)成功安裝。
插入CSI排線將樹(shù)莓派與攝像頭連接起來(lái),輸入import cv2來(lái)導(dǎo)入OpenCV庫(kù),使用cv2.VideoCapture(0)調(diào)用攝像頭錄像,參數(shù)0 表示板載攝像頭視頻輸入。img_str=cv2.imencode('.jpg',frame)[1].tostring()可將圖片格式編碼成流數(shù)據(jù),并賦值到內(nèi)存緩存中,用于圖像數(shù)據(jù)格式的壓縮,方便傳輸至百度服務(wù)器。
由于硬件性能的局限性,本地訓(xùn)練模型達(dá)不到預(yù)期標(biāo)準(zhǔn),于是我們采用了百度AI開(kāi)放平臺(tái)提供的通用物體和場(chǎng)景識(shí)別服務(wù),使得障礙物識(shí)別精度更高、范圍更廣、使用更便捷。
除圖像識(shí)別外,百度AI開(kāi)放平臺(tái)還提供了文字識(shí)別、語(yǔ)音合成等技術(shù)。本設(shè)計(jì)還用到了其中的語(yǔ)音合成服務(wù)。通過(guò)使用百度AI 開(kāi)放平臺(tái)提供的API(Application Programming Interface,應(yīng)用程序編程接口),實(shí)現(xiàn)圖像識(shí)別與語(yǔ)音合成功能。使用前需要下載Python 版本的SDK,安裝baidu-api 庫(kù)。通過(guò)from aip import Aip-ImageClassify 在程序中導(dǎo)入百度API 庫(kù),輸入對(duì)應(yīng)的APP_ID,API_KEY,SECRET_KEY 參數(shù),并通過(guò)程序client=AipImageClassify(APP_ID,API_KEY,SECRET_CRET_KEY)使其能夠成功訪問(wèn)百度AI開(kāi)放平臺(tái)。圖像數(shù)據(jù)上傳并得到的返回結(jié)果由程序p=client.advanced-General(img_str)來(lái)實(shí)現(xiàn)。語(yǔ)音合成功能的使用流程與圖像識(shí)別一致,可將得到的合成語(yǔ)音以MP3 格式保存在本地,當(dāng)需要語(yǔ)音播報(bào)時(shí),通過(guò)調(diào)用預(yù)先封裝好的to_mp3_play(TEXT,a)函數(shù)即可實(shí)現(xiàn)語(yǔ)音播報(bào)功能。
考慮到導(dǎo)盲杖的結(jié)構(gòu)與便攜性,導(dǎo)盲杖的使用過(guò)程中需要“脫機(jī)”工作,也即需要將多余的顯示器部分刪除掉。我們可以依靠樹(shù)莓派中的腳本實(shí)現(xiàn)程序的自啟動(dòng),確保樹(shù)莓派開(kāi)機(jī)后便可以運(yùn)行障礙物識(shí)別的相關(guān)程序。使用Shell 進(jìn)行腳本的編寫(xiě),將運(yùn)行Python 文件的代碼放在testboot.sh 中,運(yùn)行命令sudo nano/etc/rc.local并進(jìn)入rc.local,把supi-c"exec/home/pi/testboot.sh"加在exit 0之前,便會(huì)實(shí)現(xiàn)開(kāi)機(jī)時(shí)執(zhí)行腳本的效果,至此自啟動(dòng)腳本部分完成。
為了讓超聲波測(cè)距模塊工作,至少需要提供給該模塊10us 以上的脈沖觸發(fā)信號(hào),此時(shí)模塊內(nèi)部將會(huì)自動(dòng)發(fā)送8個(gè)40kHz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回[5-6]。當(dāng)有信號(hào)返回時(shí),模塊的ECHO端口會(huì)發(fā)出高電平信號(hào),此高電平信號(hào)的持續(xù)時(shí)間與所測(cè)距離成正比,距離計(jì)算公式為:
式中:L為所測(cè)距離;v為信號(hào)傳輸速度,取其值為聲速,即v=340m/s;t為ECHO端口高電平持續(xù)時(shí)間。
考慮到導(dǎo)盲杖使用過(guò)程中可能存在人為因素導(dǎo)致的“余震”現(xiàn)象,故采用加權(quán)平均濾波算法,即在測(cè)距離時(shí)連續(xù)采集多組數(shù)據(jù)并求和取平均[7],以此來(lái)消除“余震”現(xiàn)象。
根據(jù)前兩節(jié)所述辦法,設(shè)計(jì)的導(dǎo)盲杖如圖3所示。導(dǎo)盲杖全身長(zhǎng)約1.2m,杖身通過(guò)3D打印機(jī)制作而成,并采用中空的方法,即減輕了總體重量,又有利于將導(dǎo)線布于其中。圖3中I所表示的障礙物檢測(cè)環(huán)節(jié)可對(duì)使用者前方及側(cè)上方的障礙物進(jìn)行檢測(cè),并可通過(guò)VI所示的蜂鳴器模塊提醒使用者;II所示的控制開(kāi)關(guān)可實(shí)現(xiàn)對(duì)導(dǎo)盲杖進(jìn)行上電及啟動(dòng)各模塊工作的功能,使用者可以通過(guò)控制開(kāi)關(guān)決定環(huán)節(jié)I、III、IV、V 是否工作,大大降低了導(dǎo)盲杖的功耗,有利于增加續(xù)航時(shí)間;IV 作為導(dǎo)盲杖的核心,用來(lái)存放相應(yīng)的程序,并實(shí)現(xiàn)既定功能。為了盡可能降低使用者的勞動(dòng)負(fù)擔(dān),我們?cè)趯?dǎo)盲杖的下面加了滑輪,使導(dǎo)盲杖的使用過(guò)程更加便捷。
圖3 導(dǎo)盲杖簡(jiǎn)圖
本文設(shè)計(jì)了一款基于機(jī)器視覺(jué)的智能導(dǎo)盲杖。該導(dǎo)盲杖通過(guò)OpenCV 技術(shù)實(shí)現(xiàn)障礙物的識(shí)別,使用者可通關(guān)按鍵自主決定是否識(shí)別障礙物;導(dǎo)盲杖還具有多方向障礙物檢測(cè)、GPS 定位、短信息發(fā)送等功能;發(fā)音頻率不同的蜂鳴器更是向使用者提供了具體的報(bào)警信息。經(jīng)在盲道上實(shí)地測(cè)試,我們發(fā)現(xiàn),該導(dǎo)盲杖在復(fù)雜環(huán)境下仍然具有較穩(wěn)定的導(dǎo)盲性能。因此,此導(dǎo)盲杖應(yīng)用前景廣泛,具有較強(qiáng)的市場(chǎng)價(jià)值,有望得到廣泛推廣。
自動(dòng)化技術(shù)與應(yīng)用2022年3期