侯英婷,白貴垚,袁海鑫,尚禹
中北大學 信息與通信工程學院,山西 太原 030051
盲人出行問題一直是社會關注的重要問題,且現代城鎮的道路日漸復雜,如何輔助盲人安全出行成為社會各界關注的焦點[1-2]。目前市面上存在的智能導盲杖和機械導盲犬大多基于牽引、語音播報和震動等方式實現導盲[3-5],其傳遞信息的方式不直接、不迅速,同時,大多數產品的避障方式均基于紅外檢測、超聲波傳感等技術實現,該導盲方式的測量精度低且安全性差。
觸覺是人類最敏感、最直接、最真實的感覺方式。生物電信號傳遞的速度遠大于聲音傳播速度,因此觸覺導盲優于聽覺導盲,其傳導效率更高、人機交互性更強[6-8]。目前國內外基于虛擬觸覺交互和人工智能技術的研究正在不斷發展,該技術的目標是通過模擬觸覺感受,使用戶能夠與虛擬環境或機器人進行更自然、更直觀的交互[9-10]。其中一項重要研究是使用力反饋裝置或震動反饋裝置來模擬觸覺感受,使用戶能夠感受到虛擬物體的質地、形狀和重量[11-12]。視覺識別技術主要采用深度學習方法。深度學習是一種基于人工神經網絡的模型,通過訓練大量的圖像數據,可自動學習和提取圖像特征。深度學習在視覺識別中取得了很大的成功,尤其是在圖像分類、目標檢測、人臉識別等任務中表現出色,對障礙物的識別與躲避更加精準[13-17]。將視覺技術利用到導盲中,可更好地彌補傳統傳感器避障的不足。
為了更好地解決視障人群的出行問題,本文提出并設計了一種基于虛擬觸覺交互和人工智能等技術的導盲手套,通過手套對手指的限位作用實現虛擬觸覺,再結合實際路況和導航構建一個看不見但摸得著的虛擬欄桿,用觸覺代替視覺為盲人群體提供導盲服務,將視覺識別和飛行時間(Time of Flight,TOF)技術相結合,實現避障和測距功能,為盲人出行保駕護航。
本文設計開發的基于虛擬觸覺的導盲手套由尼龍手套、手指連接件、STM32F103C8T6、五路sg90 舵機、舵機控制板、TOF 相機、PyAI-V831 模塊、北斗4G 導航模塊、LD3320A 語音識別模塊、7.4 V 供電電源以及電源控制板構成。其中,STM32F103C8T6 作為主控單元,PyAI-V831 作為視覺單元,用來檢測道路上的行人和障礙物,TOF 相機用來測量障礙物距離;北斗4G 導航模塊作為導航單元,將手套的實時坐標路線發送給STM32F103C8T6 單片機,同時結合視覺識別情況躲避障礙物,規劃最優路線;五路舵機作為觸覺單元,由視覺部分將采集到的信息發送給STM32,STM32 處理后將命令傳遞給舵機控制板以控制舵機拉動細繩,并通過其對手指進行限位達成觸覺的模擬。
系統硬件設計主要包括主控單元、視覺單元、導航單元、觸覺單元和供電單元。視覺單元和導航單元負責規劃路線、得出信息并傳遞給主控單元;主控單元負責利用綜合得到的信息規劃出最優路徑,并將指令發送給觸覺單元;觸覺單元負責實現觸覺導盲。整體系統單元框圖如圖1 所示。

圖1 整體系統單元框圖
主控單元作為整體系統的信息處理模塊,負責障礙物識別信息的處理、障礙物的距離計算處理和對觸覺單元的控制。因此,主控芯片需要具有高集成度、低功耗、高運算能力等特點。STM32F103C8T6 單片機是基于ARM-Cortex-M3 處理器內核的32 位閃存微控制器,其性能較好、易于開發且成本較低,是本設計的首選主控。
視覺單元承擔測距和障礙物識別兩個功能,其中測距功能由深圳矽速科技的MaixSense-TOF 相機實現,障礙物識別功能由深圳01 Studio 公司的Linux 開發版PyAI-V831 實現。本設計將TOF 相機和PyAI-V831 做成了頭帶部分,固定在用戶的頭部,方便識別物體和測距,并通過無線串口模塊與主控STM32 進行通信。同時,盲人用戶可自主選擇識別任一方向上的物體并進行距離測量,讓用戶對障礙物進行精準躲避。
2.2.1 測距單元
系統需要對盲人可能遇到的障礙物進行探測,以便及時改變路線。TOF 相機利用飛行時間進行距離成像,是一種新興的3D 檢測和成像技術。首先,相機對目標點連續發射激光脈沖信號,之后傳感器接收由物體反射回的光,并根據激光脈沖信號的往返時間計算得出傳感器與目標物之間的距離。目前,TOF 相機被廣泛應用于虛擬現實、三維重建和掃描、自動駕駛、工業自動化、醫療影像等領域,其測量范圍為0.2~3.4 m,測量誤差≤1 cm。深度計算不受物體表面灰度和特征影響,具有成本低、精度高、功耗小、可靠性好等優點,可滿足對障礙距離檢測的要求[18-19]。
2.2.2 障礙物識別單元
對于障礙物的檢測,本文采用PyAI-V831 開發板,對障礙物、公交站牌、紅綠燈等進行識別,通過運行YOLO-v2[20],實現對物體的目標檢測。YOLO-v2是一種目標檢測算法,不同于傳統的目標檢測算法,YOLO-v2 采用單個神經網絡模型直接預測圖像中所有物體的位置和類別。將輸入的圖像分成S×S 個網絡,每個網絡分別檢測該區域中是否存在目標,如果圖像中某一物體的中心恰好落在任一網格中,該網格就需要對這個物體進行檢測。每個候選邊框需要進行5 個值的預測:中心點橫縱坐標x和y、寬度w和高度h以及置信度C。其中,x和y為候選邊框的中心點位置;w和h為候選邊框的寬度和高度;置信度C用于評估該候選邊框是否包含目標物體,其值取決于預測為目標物體的概率,同時還需乘以一個固定的縮放因子。該方法可降低重復率,提高目標檢測的準確性。根據這一原理,本文建立了20 余種物體的近2000 張照片的數據庫。使用V831 并通過Python 進行編程,利用在線模型訓練平臺Maixhub,通過對不同照片中特定物體的框選以及驗證集的驗證獲取訓練好的模型,并將模型及識別程序下載到PyAI-V831 中。通過上述方法可實現20 余種的物體檢測,能夠完美承擔對障礙物識別的任務。
2.3.1 定位獲取
基于4G 的北斗導航定位模塊,具有延遲低,精度高等優點。采用北斗衛星定位技術進行的定位服務,結合工業級4G 模塊,其魯棒性高[21]。導盲手套在導盲的同時也要兼顧導航,對數據傳輸速率有所要求,同時還要實現定位的遠程發送。因此,選擇通過4G 網絡實現消息隊列遙測傳輸(Message Queuing Telemetry Transport,MQTT)通信可將用戶的實時定位傳輸至阿里云端。
2.3.2 定位糾偏
導盲手套的用戶使用場景大多在室外,在做室外出行軌跡記錄時,往往因為基站切換等因素,導致定位點偏差過大,因此進行定位糾偏很有必要。在定位獲取中手套已經將用戶的實時定位上傳到了阿里云端,在收集到定位信息后可與百度地圖應用程序編程接口(Application Programming Interface,API)連接進行定位糾偏。目前常用的糾偏方法有3 種,分別是使用控件、百度地圖接口和本地數據庫。其中,控件由于權限因素不能使用,百度地圖接口雖然方便,但由于受網速、百度服務器等影響,在處理大量數據方面存在明顯不足。相比之下,考慮到盲人用戶群體的出行范圍較小,在保證安全的前提下可對特定地區進行本地糾偏庫的構建。針對導盲手套的同一地區糾偏,可將全國按全球定位系統(Global Positioning System,GPS)坐標分成很多小塊,查出需要小塊的偏移量,并將數據保存到數據庫中。待需要糾偏時,根據GPS 坐標取出的對應區域偏移量,反算出地圖坐標。
2.3.3 路線規劃
通過定位糾偏,獲取較為精確的用戶定位,此時需要開始規劃盲人用戶的行走路線。實現路線規劃需要4個步驟,分別是地圖導入、起始點和終止點的輸入、出行方式的選擇和最近路線的選擇。其中地圖導入可以選擇調用百度地圖的數據庫;起始點是用戶的起始定位地點;終止點則需要在識別盲人用戶的語音命令后獲取存儲;導盲手套的出行方式主要為步行,而最近路線的規劃則是通過對所有可行路線的行程距離進行比較,選出一個最近的路線進行導航。
2.4.1 機械結構設計
考慮到手套的安全性和觸覺模擬的有效性,應提供給手指大小適宜的拉力,既不能拉傷手指,也要讓手指感覺到有拉力的拉動。為了滿足上述條件,選用sg90舵機,sg90 舵機的體積較小、拉力適中、功耗低且供電電壓較低。此外,拉動手指需要拉力方向與手指運動方向在同一水平線上,即需要將sg90 舵機在圓周切線方向上的力轉變為直線方向上的拉力,因此選用易形變材料如細尼龍線作為拉力的傳導材料。
2.4.2 手套安裝
在手套的安裝過程中,要用到連接件和固定件,其結構圖如圖2 所示。連接件1、2 用于與尼龍線連接以保證尼龍線的直線運動。連接件3、4、5 和尼龍線連接組成了力傳導模塊,見圖3。力傳導模塊可以將圓周切線方向上的力轉變為直線方向上的拉力,并將尼龍線的直線運動與電位器的電壓變化聯系起來,有助于直觀觀察虛擬觸覺的模擬效果。固定件1、2、3 用于將舵機和舵機控制板固定在手套上。安裝完畢后,可用多級控制板進行簡單調試,觸覺單元結構圖如圖4 所示。

圖2 連接件、固定件結構圖

圖3 力傳導模塊結構圖

圖4 觸覺單元結構圖
各種模塊對于電壓的要求各不相同,若分開供電,則會造成很大的不便性,因此需要設計一個電源管理電路,以同時滿足各種模塊的供電需求。其中,總電源由7.4 V 鋰電池供電,通過降壓穩壓模塊將7.4 V 降為5 V和3.3 V;舵機控制板由7.4 V 電壓直接供電;語言識別和V831 由5 V 電壓供電;主控STM32 單片機由3.3 V電壓供電。
盲人用戶需要將目的地告知語音識別模塊,語音識別模塊接受語音后傳輸至主控單元,使導航單元獲取盲人用戶的當前位置和目的地,再通過MQTT 通信協議將其發送到阿里云端,云端調取百度地圖API 并選取最優步行導航路線,再將路線信息發送給主控單元開始導航。前進過程中TOF 相機和V831 視覺模塊進行障礙物識別并測距。如果識別到障礙物,且距離d≤0.6 m,則提醒盲人躲避障礙物,并幫其規劃出最佳路線,反之繼續保持原路線,并根據得出的路線信息控制舵機生成虛擬欄桿。導盲過程中,導航單元會將盲人位置與目的地位置相比較,如果相同則視為到達目的地。到達目的地則提醒盲人停止前行,未到達目的地則會重新進行上述步驟,系統軟件工作流程如圖5 所示。

圖5 軟件工作流程
系統集成展示如圖6 所示,模塊A 為視覺單元,模塊B 為觸覺單元,模塊C 為供電單元,模塊D 為主控單元及導航單元。

圖6 系統集成展示
各模塊所需供電電壓經測試為+3.3~7.4 V,供電正常。主控單元、視覺單元、導航單元、觸覺單元和供電單元輸出、引腳連接均導通,實現預期功能,系統可正常工作。視覺單元功能展示如圖7~8 所示。

圖7 物體識別展示

圖8 TOF測距展示
為獲取實驗數據,選擇城市的盲道作為場地進行導盲效果測試,并選擇電位器電壓、舵機旋轉角度、測量距離和障礙物識別結果作為目標數據。采用STM32 的ADC 進行多通道采集,獲取手套上5 個電位器的電壓值同時舵機控制板發送給上位機舵機旋轉角度數據。導盲準確率方面,選取10 種行人步行途中經常會遇到的物體進行測試,保存對不同距離下的不同障礙物的測量距離和障礙物識別結果。
為驗證設計的性能,分析電位器電壓和舵機旋轉角度的關系,根據舵機旋轉角和旋轉速度計算出運行時間。舵機由180°旋轉到23°,速度為36 °/s,由此可得出手指運動一次的時間為4.36 s,本實驗進行了4 次手指伸縮運動,共計34.88 s。根據上述數據繪制手指彎曲度——時間相關函數曲線,見圖9,手指張開時電壓值線性勻速上升,手指收縮時電壓值線性勻速下降,曲線平滑,表明手套觸覺導盲功能運行穩定。

圖9 手指彎曲度相關曲線
不同障礙物的識別結果與平均幀率如表1 所示,可以看出視覺單元對不同物體的平均識別率均大于89%,幀率大于14.5 fps,說明系統具有較強的可靠性。

表1 不同障礙物識別結果
在不同距離下,使用TOF 相機對不同障礙物的距離進行多次測量,得出的平均值數據如表2 所示。TOF對不同物體的測距誤差均小于5 cm,且保證盲人與障礙物距離在0.6 m 以上。

表2 不同障礙物測量距離結果(m)
測距準確率由對真實距離的測量數據與獲取的測量數據進行誤差分析得出,3 類障礙物的測距誤差均小于1.5%(墻體的測距誤差為1.29%,垃圾桶的測距誤差為1.17%,人的測距誤差為0.69%),在可控范圍之內。
國內外對導盲設備的研究都在加大投入,目前市面上主要的導盲設備為導盲杖。于琳等[22]提出一種以STM32 為控制核心,利用超聲波模塊進行障礙物檢測,利用GPS 定位模塊實現對盲人定位的多功能導盲杖,方便家屬和醫護人員快速確定盲人位置,該設備具有一定的應用場景,但僅能防止盲人走失以及摔倒報警,未將盲人出行的目的地考慮進去,無法實現路線規劃與導航;方艷紅等[23]提出一種基于改進VE 的算法來檢測障礙物并利用透視投影變換計算深度信息,同時將算法整合至樹莓派開發板上完成設計,對比本文研究設計的導盲系統,該設計在計算深度信息方面誤差較大,易受外界因素影響。本設計的創新點在于提出一種新的設計思路,將TOF 相機與PyAI-V831 結合,實現對障礙物的識別與測距,并利用觸覺提示信息構建一個看不見但摸得著的虛擬欄桿以輔助盲人出行,與傳統導盲相比,檢測精度更高,檢測方式新穎且直接,體積輕巧,穿戴方便。
本設計通過北斗衛星信號進行路線規劃和路徑糾偏,并結合TOF 相機的測距和人工智能技術實現路況的障礙識別,最后通過舵機實現手指限位產生虛擬觸覺,從而構建虛擬扶手進行導盲。
實際評測表明,該導盲手套系統在障礙物識別和測距精度方面均滿足設計要求,對道路上的各類障礙物可進行精確識別并測距。各個模塊的協調工作能夠把障礙物距離信息轉換成觸感提示,使盲人根據觸覺模擬的虛擬欄桿的走向來判斷有無障礙物以及障礙物的距離,從而實現虛擬觸覺和路線導引的功能,滿足盲人的正常出行需求。