諶海云, 袁杰敏
(西南石油大學(xué) 南充校區(qū),四川 南充 637000)
目前,大多數(shù)盲人和視力障礙者在日常生活中所使用的導(dǎo)盲工具為功能簡單的手杖,少部分能夠使用到專業(yè)的導(dǎo)盲犬,而如今公共道路環(huán)境變得越來越復(fù)雜,路上的行人和車輛越來越多,許多公共場所的盲道、盲人輔助裝置不完善,依靠簡單的手杖已經(jīng)難以為盲人提供安全可靠的幫助。李子康等人[1]設(shè)計了一種視聽融合的導(dǎo)盲機器人,通過多傳感器融合算法實現(xiàn)環(huán)境探測,實現(xiàn)了盲道、斑馬線的識別,但存在探測距離短、探測精度低的技術(shù)不足;俞國華等人[2]設(shè)計了基于多傳感器技術(shù)的智能導(dǎo)盲杖,依靠積水傳感器、超聲波測距傳感器的設(shè)備實現(xiàn)如積水探測和障礙物探測,但該設(shè)備對環(huán)境適應(yīng)能力不強,容易受到環(huán)境變化的影響;朱愛斌等人[3]設(shè)計了基于雙目視覺方法的可穿戴導(dǎo)盲機器人,能夠?qū)崿F(xiàn)障礙物定位以及場景三維重建,但技術(shù)路線過于繁重,不利于實際使用。因此,借助于智能化、信息化的導(dǎo)盲設(shè)備便成為解決盲人出行困難的一大利器,通過視覺檢測、語音提示等手段,智能導(dǎo)盲系統(tǒng)能夠很好服務(wù)于廣大的盲人群體。本文設(shè)計了一種基于RGB-D深度相機的輔助導(dǎo)盲系統(tǒng)。
如圖1所示,系統(tǒng)通過RGB-D深度相機采集環(huán)境信息,以個人電腦(personal computer,PC)上位機和51單片機下位機組成的控制系統(tǒng)進行信息接收、處理與指令輸出,以RGB-D相機為環(huán)境信息采集傳感器,通過增強型計算機視覺提供高分辨率和高幀頻的圖像輸出為本系統(tǒng)提供可靠的環(huán)境信息,以音頻和振動模塊組成指引和提示系統(tǒng),以電池和直流穩(wěn)壓電源組成電源供應(yīng)系統(tǒng),本系統(tǒng)以穿戴式背心為搭載平臺實現(xiàn)了設(shè)備集成和可穿戴功能。
圖1 導(dǎo)盲背心系統(tǒng)框圖
深度相機向目標(biāo)點連續(xù)發(fā)射光脈沖信號,傳感器接收由物體反射回的光后根據(jù)探測光脈沖信號的往返時間計算得到目標(biāo)物距離。得到目標(biāo)物距離后,上位機程序構(gòu)建出環(huán)境點云地圖和激光地圖,通過這兩個地圖能夠得到前向視角180°,0.5~5m內(nèi)的障礙物與傳感器間的距離,同時,計算機程序通過均分為6個區(qū)塊的180°前向視角能夠得到這6個區(qū)塊與傳感器間的距離,并以此判斷障礙物的方位和距離。之后,系統(tǒng)通過調(diào)用開放數(shù)字地圖應(yīng)用程序編程接口(application programming interface,API)生成起始點到目標(biāo)點的粗略路徑,路徑由經(jīng)緯度坐標(biāo)值表示,通過轉(zhuǎn)換程序能夠與局部坐標(biāo)系耦合生成相應(yīng)的優(yōu)化路徑[9]。生成優(yōu)化路徑后,計算機程序根據(jù)設(shè)定好的距離閾值發(fā)出相應(yīng)的指令控制不同方向的振動模塊工作,揚聲器系統(tǒng)根據(jù)設(shè)定好的程序播報障礙物、前行轉(zhuǎn)向、呼叫求救等信息。
針孔相機是一種常見的模型,其把相機簡化成小孔成像進行信息處理與環(huán)境識別,其基于投影成像的方法,其中投影變換方法中的關(guān)鍵部分是正交變換和透視變換[10]。正交變換是被投影的物體上的點全都平行地投射到投影面,沒有遠(yuǎn)近的區(qū)別,即沒有透視效果,而透視變換則相反,被投影物體處于一個四棱臺區(qū)域中,物體被投影到離相機較近的平面上,此時相機被抽象為一個點,而投影點是物體上的點和相機的連線與投影平面的交點,由于投影的路徑不再相互平行,因此會產(chǎn)生透視效果[8]。
現(xiàn)假設(shè)現(xiàn)有關(guān)鍵幀圖像Ik,圖像坐標(biāo)系中點Pi的像素坐標(biāo)為(u,v),深度值z由RGB-D相機中的深度相機獲得,根據(jù)針孔相機模型原理可得,若將RGB圖中的每個像素點投影到3D空間,則像素點Pi對應(yīng)的3D點Pi=[X,Y,Z]有
(1)
式中fx,fy分別為相機在x,y方向上的焦距;cx,cy為像素坐標(biāo)系中心。3D坐標(biāo)系中的點與相機坐標(biāo)系中的點之間的關(guān)系[7]可表示為
(2)
通過以三原色(red green blue,RGB)圖和深度圖作為輸入數(shù)據(jù),使用機器人操作系統(tǒng)(robot operating system,ROS)中的點云庫對每一關(guān)鍵幀生成點云而形成點云圖,運用式1可將相機坐標(biāo)系中所有的像素點pi=(u,v)變換到世界坐標(biāo)系下的點為Pi=[X,Y,Z]。
如圖2所示,RGB圖和深度圖生成點云圖后,對任意給定的一個深度圖像點m(u,v,z),可以通過以下方式將其轉(zhuǎn)換為激光圖:
1)將深度圖像的點m(u,v,z)轉(zhuǎn)換到深度相機坐標(biāo)系下的坐標(biāo)點M(u,v,z)。
2)計算直線AO和CO的夾角AOC
θ=atan(x/z)
(3)
將角AOC影射到相應(yīng)的激光數(shù)據(jù)槽中,已知激光的范圍為[α,β],激光束共分為N部分,用數(shù)組laser[N]表示激光數(shù)據(jù)。則點M投影到數(shù)組laser中的索引值n的計算為
n=(θ-α)/((β-α)/N)=N(θ-α)/(β-α)
(4)
laser[n]的值為M在x軸上投影的點C到相機光心O的距離r,即
(5)
圖2 點云圖轉(zhuǎn)換激光圖示意
在導(dǎo)盲系統(tǒng)的工作過程中,系統(tǒng)需要根據(jù)環(huán)境、人為主觀約束等信息規(guī)劃出一條最優(yōu)化無障礙、效率高、可通過的路徑。A*算法是一種在靜態(tài)路網(wǎng)中求解最短路徑最有效的直接搜索方法,也是解決許多搜索問題的有效算法。
A*算法的關(guān)鍵在于引入了路網(wǎng)信息用于在擴展下一個節(jié)點時對當(dāng)前節(jié)點到目標(biāo)節(jié)點進行距離評估[4]。算法基于代價函數(shù)f(n)選擇節(jié)點進行擴展,代價函數(shù)為擴展到下一節(jié)點的成本估算,當(dāng)代價函數(shù)返回值為期望最小值時則可擴展該節(jié)點為下一節(jié)點。其代價函數(shù)為
f(n)=g(n)+h(n)
(6)
式中f(n)為從起始節(jié)點到當(dāng)前節(jié)點n的狀態(tài)估計成本,g(n)為從起始節(jié)點到當(dāng)前節(jié)點n的實際成本,h(n)為啟發(fā)式函數(shù),表示從當(dāng)前節(jié)點n到目標(biāo)節(jié)點最佳路徑的估計成本[5]
h(n)=|nx-gx|+|ny-gy|
(7)
式中nx,ny,gx,gy分別為當(dāng)前節(jié)點和目標(biāo)節(jié)點位置坐標(biāo)[6]。
A*算法計算步驟:1)將搜索區(qū)域劃分為網(wǎng)格,創(chuàng)建起始節(jié)點start、目標(biāo)節(jié)點goal、開啟列表open list、關(guān)閉列表close list,并初始化close list。2)將起始節(jié)點start加入到open list中。3)查找本節(jié)點相鄰8個方格,忽略不可達或close list中的節(jié)點。 4)將可達的節(jié)點放入open list中,并設(shè)置前節(jié)點為父節(jié)點。5)遍歷open list,f(n)=g(n)+h(n),計算f(n)最小的節(jié)點放入close list中。6)判斷當(dāng)前節(jié)點是否為目標(biāo)節(jié)點goal,是則結(jié)束搜索并輸出路徑,否則返回步驟(3)繼續(xù)。
如圖3所示,圖(a)中的一個方框中顯示的是相機實時采集到的彩色圖像,另一方框中白線是由點云圖轉(zhuǎn)換得到的激光圖。圖3(a)右側(cè)存在一把椅子,這對應(yīng)著激光圖中右側(cè)部分明顯靠近相機的一條線。圖3(b)方框里面分別顯示了5個數(shù)據(jù),這5個數(shù)據(jù)分別代表從左到右5個區(qū)域的平均深度,這些數(shù)據(jù)中最右邊的數(shù)據(jù)僅有0.6 m,與實際椅子距離較近的情況相符合,此驗證了本設(shè)計的障礙物檢測算法可以有效檢測出視野中障礙物的距離及方位。
圖3 障礙物距離檢測和測定結(jié)果
通過設(shè)置障礙物并使用檢測算法測量與實際距離對比的方式得出了表1,通過表中數(shù)據(jù)分析可得,視覺障礙物檢測方法具有誤差小、可靠性高的特點。
表1 障礙物距離測定及誤差
為了測試系統(tǒng)的局部路徑規(guī)劃能力,本文通過MATLAB軟件編寫A*算法程序進行仿真測試。如圖4所示,測試地圖中隨機設(shè)置了一些形狀、大小不同的黑色障礙物,算法通過啟發(fā)式搜索規(guī)避圖中障礙物。由圖4可知,距離目標(biāo)點(右上角白方塊)越近的節(jié)點顏色越深,目標(biāo)節(jié)點周圍顏色為最深,距離初始節(jié)點(左下角白方塊)越近的節(jié)點顏色越深,初始節(jié)點周圍顏色為最深。
圖4 A*算法路徑規(guī)劃MATLAB仿真測試效果
GPS全局規(guī)劃部分設(shè)計了一個實際任務(wù)來測試規(guī)劃效果,選取了學(xué)校正門到教學(xué)樓之間規(guī)劃了一條路徑進行測試。首先利用某地圖開放平臺規(guī)劃出一條粗略路徑,然后通過API將導(dǎo)航信息發(fā)送到上位機中,由上位機讀取導(dǎo)航信息文件,在行進過程中通過算法融合實現(xiàn)障礙物規(guī)避并通過下位機系統(tǒng)提示測試者。如圖5(a)所示,一位志愿者身穿導(dǎo)盲背心,戴上眼袋模擬無法看見路面的情況,圖5(b)所示為系統(tǒng)實時輸出的激光圖,圖5(c)所示為起始點到目標(biāo)點的粗略路徑。
圖5 GPS規(guī)劃及效果測試
本系統(tǒng)在實際測試中表現(xiàn)出了精準(zhǔn)的定位效果和良好的障礙物規(guī)避能力,語音提示和振動提示清晰準(zhǔn)確。通過上述實例測試,驗證了本系統(tǒng)在真實場景下的可行性。
在實際測試環(huán)節(jié),本系統(tǒng)經(jīng)過實際場景測試后發(fā)現(xiàn)設(shè)計功能都得到了良好驗證,系統(tǒng)運行效果良好,能夠適應(yīng)一定環(huán)境下的導(dǎo)盲工作需求。接下來,本系統(tǒng)的改進方向是實現(xiàn)簡單障礙物的識別及加入超聲波傳感器來解決復(fù)雜環(huán)境信息帶來的問題,同時還將優(yōu)化控制器能耗以提升背心續(xù)航能力。