王政博,唐 勇,陳國(guó)棟,盧書軒,姚承志
(1.河北水利電力學(xué)院電氣自動(dòng)化系,河北省滄州市黃河西路49號(hào) 061001;2.江蘇省先進(jìn)機(jī)器人技術(shù)重點(diǎn)實(shí)驗(yàn)室,江蘇蘇州相城區(qū)濟(jì)學(xué)路8號(hào) 215123;3.河北省高校水利自動(dòng)化與信息化應(yīng)用技術(shù)研發(fā)中心,河北省滄州市黃河西路49號(hào) 061001)
視覺是人類獲取知識(shí)和經(jīng)驗(yàn)的主要感知來(lái)源,約占人體總媒介信息來(lái)源的80%,喪失視覺能力,意味著人們將失去最重要的信息與知識(shí)的感知來(lái)源。當(dāng)今生活環(huán)境日益復(fù)雜,這給盲人的生活帶來(lái)了更多的不便,甚至面臨危險(xiǎn)。視力有障礙的人都希望有一個(gè)輔助自己來(lái)到達(dá)目的地的機(jī)器人,讓他們像正常人一樣行走,或者說(shuō)能保證讓他們?cè)谛凶哌^(guò)程中感到安全。給盲人提供一個(gè)安全、可靠、智能、高效的出行方式,是彰顯人人平等、時(shí)代快速發(fā)展重要標(biāo)志?!笆奈濉币?guī)劃和2035年遠(yuǎn)景目標(biāo)明確指出要健全多層次社會(huì)保障體系。智能語(yǔ)音導(dǎo)盲機(jī)器人不僅能夠在導(dǎo)盲輔助設(shè)備研究中發(fā)揮優(yōu)勢(shì),也能在提高低視力人群生活質(zhì)量的同時(shí),為視覺障礙患者提供多種幫助。
當(dāng)前功能相對(duì)完善的導(dǎo)盲機(jī)器人大致可以劃分為三種類型:手杖類的導(dǎo)盲輔助工具、佩帶式的導(dǎo)盲輔助工具、運(yùn)動(dòng)型的導(dǎo)盲機(jī)器人。國(guó)內(nèi)外的機(jī)構(gòu)都得出了一些比較有說(shuō)服力的結(jié)論,日本Amemiya等人[1]自主開發(fā)的一種手持導(dǎo)航器“偽吸引”是利用了人類的特殊感知習(xí)慣,在二維平面上產(chǎn)生特殊的震蕩和振動(dòng),引導(dǎo)用戶在任意一個(gè)平面上、任意一個(gè)方向“推、拉”。西安交通大學(xué)朱愛斌[2]領(lǐng)導(dǎo)團(tuán)隊(duì)成功開發(fā)并自主設(shè)計(jì)了一款基于人類雙眼導(dǎo)盲視覺的全新的可穿戴型雙眼導(dǎo)盲檢測(cè)機(jī)器人,該導(dǎo)盲機(jī)器人用兩個(gè)成像傳感器來(lái)定位周圍的障礙物并建立三維模型,通過(guò)多個(gè)傳感器,使多個(gè)信息融合,獲得信息之后可以以振動(dòng)的形式傳遞給視覺障礙者。Borenstein j[3]提出的運(yùn)動(dòng)型的導(dǎo)盲機(jī)器人。視覺障礙者可以把牽引桿置于自己胸前,通過(guò)握住手柄,當(dāng)有牽引力的牽引時(shí),就開始轉(zhuǎn)向,這種導(dǎo)盲機(jī)器人可以方便地、安全地引導(dǎo)視覺障礙者到達(dá)目的地。日本山梨大學(xué)研制了一種智能手推車ROTA。這個(gè)手推車安裝了非常發(fā)達(dá)的視覺傳感器以及能辨別任何聲音的傳感器等,它對(duì)盲人出行提供了便捷。
文中主要是基于視聽相結(jié)合的智能導(dǎo)盲機(jī)器人的設(shè)計(jì),結(jié)合了計(jì)算機(jī)技術(shù)、傳感器、語(yǔ)音識(shí)別,通過(guò)現(xiàn)代圖像處理技術(shù)完成特定目標(biāo)對(duì)象的識(shí)別,通過(guò)控制機(jī)器人的運(yùn)動(dòng)解決導(dǎo)盲的問(wèn)題。
對(duì)機(jī)器人進(jìn)行方案設(shè)計(jì)以及軟硬件選擇時(shí),首先進(jìn)行的是要充分了解導(dǎo)盲機(jī)器人的功能。針對(duì)盲人視覺上的缺陷可以知道,盲人生活的周圍環(huán)境不會(huì)過(guò)于復(fù)雜,我們需要利用多個(gè)傳感器融合技術(shù)以及目前比較熱門的機(jī)器視覺相關(guān)算法來(lái)探測(cè)盲人前方的障礙物,進(jìn)而大大方便盲人的出行。
在目標(biāo)檢測(cè)與識(shí)別方面,采用基于Darknet網(wǎng)絡(luò)結(jié)構(gòu)的You Only Look Once(YOLO)算法對(duì)待測(cè)物體的圖像庫(kù)進(jìn)行訓(xùn)練和識(shí)別測(cè)試,從而實(shí)現(xiàn)對(duì)圖像中多個(gè)目標(biāo)的檢測(cè)與識(shí)別。機(jī)器人控制單元系統(tǒng)主要結(jié)構(gòu)包括了一個(gè)主控單元、檢測(cè)單元、運(yùn)動(dòng)控制處理單元、語(yǔ)音控制處理單元四大部分。主控單元主要功能是專門用來(lái)設(shè)計(jì)實(shí)現(xiàn)對(duì)一臺(tái)導(dǎo)盲機(jī)器人各運(yùn)動(dòng)模塊之間的運(yùn)動(dòng)協(xié)調(diào)控制,導(dǎo)盲機(jī)器人運(yùn)動(dòng)的原理計(jì)算和控制運(yùn)轉(zhuǎn)以及數(shù)據(jù)分析,檢測(cè)單元是利用超聲波檢測(cè)與障礙物的距離。運(yùn)動(dòng)控制單元主要負(fù)責(zé)對(duì)機(jī)器人運(yùn)動(dòng)狀態(tài)進(jìn)行實(shí)時(shí)運(yùn)動(dòng)控制,其中主要包括控制機(jī)器人左轉(zhuǎn)、右轉(zhuǎn)、直行。語(yǔ)音控制單元主要是通過(guò)語(yǔ)音識(shí)別模塊進(jìn)行識(shí)別。硬件方面,優(yōu)化避障效果,配備了單目攝像機(jī)、WIFI設(shè)備,完成信息采集和通信功能。該設(shè)計(jì)方案由硬件部分和軟件部分構(gòu)成,如圖1所示。
圖1 總體方案設(shè)計(jì)圖
本設(shè)計(jì)智能語(yǔ)音導(dǎo)盲機(jī)器人系統(tǒng)總體框圖,主要包括物體識(shí)別、單目測(cè)距,語(yǔ)音交互、運(yùn)動(dòng)控制四大模塊,如圖2所示。綜合軟硬件設(shè)計(jì),智能語(yǔ)音導(dǎo)盲機(jī)器人實(shí)現(xiàn)了精準(zhǔn)智能的語(yǔ)音播報(bào),以提示盲人前方物體的距離及方向,使盲人能夠準(zhǔn)確了解前方環(huán)境。
圖2 系統(tǒng)總體框圖
機(jī)器人對(duì)周圍環(huán)境的感知,精準(zhǔn)地對(duì)物體進(jìn)行檢測(cè)與識(shí)別是本系統(tǒng)的重點(diǎn),故要對(duì)于攝像機(jī)接收到的圖像信號(hào)中多物體進(jìn)行檢測(cè)并精準(zhǔn)識(shí)別出物體類別。目標(biāo)檢測(cè)的方法有很多種,常見的算法有Region-CNN(R-CNN)、Single Shot MultiBox Detector(SSD)以及YOLO。R-CNN模型不能快速的定位物體,在單一圖片處理上比較浪費(fèi)時(shí)間;SSD模型會(huì)隨著輸入圖片的規(guī)格擴(kuò)大,從而導(dǎo)致效率下降;YOLO算法的出現(xiàn)無(wú)疑是在目標(biāo)檢測(cè)的領(lǐng)域內(nèi)帶來(lái)了極大的便利,該算法進(jìn)行合理變換可以保證實(shí)時(shí)性的基礎(chǔ)上給特定物體的識(shí)別效果帶來(lái)很大的提升[4]。
文獻(xiàn)[5]中提到,YOLO是一種實(shí)時(shí)的且準(zhǔn)確的對(duì)象檢測(cè)算法,YOLO V1版本已可以檢測(cè)每秒四十多張圖片,隨著版本的更新?lián)Q代,YOLO算法已經(jīng)更新了4代,其中還伴隨更新了一些輕量級(jí)算法,文中選用的是目前兼具速度和檢測(cè)質(zhì)量的YOLO V3版本,YOLO算法是屬于卷積神經(jīng)網(wǎng)絡(luò),它是由卷積層、全連接層還有池化層組成的。其訓(xùn)練的樣本無(wú)需從樣本圖像中特意裁剪出,而是對(duì)整個(gè)圖像進(jìn)行訓(xùn)練和檢測(cè),提升了系統(tǒng)的穩(wěn)定性。需要檢測(cè)的圖像被分割為n×n個(gè)網(wǎng)格,每個(gè)格子都分別負(fù)責(zé)檢測(cè)是否有被測(cè)物體的中心落在了相應(yīng)的格子內(nèi),當(dāng)每一個(gè)小物體的網(wǎng)格需要檢測(cè)時(shí),自動(dòng)產(chǎn)生一個(gè)被檢測(cè)者所看到的中心框,每個(gè)被檢測(cè)的中心邊框都包括5維的物體信息(x,y,w,h,CObjct),x代表的是邊框中心的橫坐標(biāo),y代表的是縱坐標(biāo),w和h分別代表的整個(gè)被測(cè)照片的寬度、高度,CObjct代表的是包圍框的置信度,置信度如公式(1)所示:
(1)
YOLO算法在卷積層[6]中提取相應(yīng)特征,在全連接層進(jìn)行目標(biāo)預(yù)測(cè)功能。當(dāng)Pr(Object)的值為1的時(shí)候,這幅圖片的置信度如式(2)所示。
(2)
式(2)中Pr(Class∣Object)是待檢測(cè)目標(biāo)的分類條件概率。Pr(Class)是預(yù)測(cè)了某類別的概率。經(jīng)過(guò)上述計(jì)算后,設(shè)置被檢測(cè)包圍邊框的閾值,濾掉得分低于閾值的包圍邊框,并對(duì)被檢測(cè)包圍邊框中所有閾值以下的包圍邊框,進(jìn)行非極大閾值的抑制處理,即可獲得被檢測(cè)的結(jié)果。
文中物體檢測(cè)部分采用YOLO V3。YOLO V3是在2018年提出來(lái)的,該檢測(cè)系統(tǒng)基于Darknet-53[7]深度學(xué)習(xí)框架環(huán)境進(jìn)行物體識(shí)別,融合Feature Pyramid Networks(FPN)思想,預(yù)測(cè)三種尺度的框,解決了小目標(biāo)檢測(cè)算法上的效果不好的問(wèn)題。YOLO V3不僅可以實(shí)現(xiàn)圖片中的目標(biāo)檢測(cè),還可以實(shí)現(xiàn)對(duì)運(yùn)動(dòng)目標(biāo)的實(shí)時(shí)檢測(cè)。Darknet-53的網(wǎng)絡(luò)結(jié)構(gòu)共包含了53個(gè)卷積層。
5個(gè)殘差塊構(gòu)成了Darknet53的網(wǎng)絡(luò)結(jié)構(gòu),殘差神經(jīng)網(wǎng)絡(luò)[8]的思想在Darknet53的網(wǎng)絡(luò)結(jié)構(gòu)里有了充分的應(yīng)用。眾多的殘差單元構(gòu)成一個(gè)個(gè)的殘差塊,通過(guò)殘差單元輸入兩個(gè)數(shù)碼累計(jì)DBL來(lái)執(zhí)行操作,就這樣構(gòu)成了殘差單元,其中DBL單元包含了卷積層歸一化和leaky ReLU激活函數(shù)。YOLO V3對(duì)檢測(cè)的圖片進(jìn)行了5次降采樣[9],最后3次降采樣中對(duì)目標(biāo)進(jìn)行預(yù)測(cè)。YOLO V3算法主要由訓(xùn)練模塊、模型模塊、預(yù)測(cè)模塊、檢測(cè)模塊組成,其相關(guān)聯(lián)系如圖3。其中模型模塊是YOLO V3的核心,其作用就是根據(jù)給定的網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建對(duì)應(yīng)的模型,模型用于訓(xùn)練與檢測(cè)。
圖3 模塊間的相互聯(lián)系Fig.3 Interconnections between modules
當(dāng)今世界,準(zhǔn)確測(cè)量物體的空間位置是計(jì)算機(jī)視覺研究中的重點(diǎn)問(wèn)題。測(cè)量的方法分為單目標(biāo)定、雙目標(biāo)定、多目標(biāo)定。單目和雙目算法比較成熟,使用較多。針對(duì)兩者進(jìn)行比較,單目成本低,操作簡(jiǎn)單,但測(cè)距精度不高;雙目操作復(fù)雜,測(cè)距精度高。由于本設(shè)計(jì)對(duì)于測(cè)距精度的要求不高,綜合考慮成本和實(shí)現(xiàn)可能性,該導(dǎo)盲機(jī)器人采用單目標(biāo)定及測(cè)距完成機(jī)器人對(duì)最近物體距離的感知。
以被測(cè)物體的幾何中心為原點(diǎn),建立如圖4所示的世界坐標(biāo)系[10],選擇物體上除了原點(diǎn)之外的另外四個(gè)點(diǎn)并得到坐標(biāo),以便后續(xù)的計(jì)算。
圖4 世界坐標(biāo)系Fig.4 World coordinate system
下面對(duì)三種空間下的坐標(biāo)系進(jìn)行了簡(jiǎn)要說(shuō)明:
世界坐標(biāo)系:系統(tǒng)的絕對(duì)坐標(biāo)系,在沒(méi)有建立用戶坐標(biāo)系之前畫面上所有點(diǎn)的坐標(biāo)都是以該坐標(biāo)系的原點(diǎn)來(lái)確定各自的位置。
攝像機(jī)坐標(biāo)系:以相機(jī)的光心為坐標(biāo)原點(diǎn),X軸和Y軸分別平行于圖像坐標(biāo)系的X軸和Y軸,相機(jī)的光軸為Z軸,用(XCYCZC)來(lái)表示坐標(biāo)。
圖像坐標(biāo)系:圖像的左上角作為原點(diǎn)做為基準(zhǔn)建立的坐標(biāo)系,來(lái)描述圖像中被測(cè)物體的位置,如式(3)。
(3)
式(3)中,t是3×3的平移矩陣,R是單位正交矩陣。
為了簡(jiǎn)化處理,將其轉(zhuǎn)為平面坐標(biāo)系,當(dāng)圖像成像坐標(biāo)系中任意一點(diǎn)(x,y)在平面坐標(biāo)系對(duì)應(yīng)點(diǎn)為(m,n),則有式(5)的轉(zhuǎn)化關(guān)系。
(4)
其中,dx表示傳感器單個(gè)像素的寬,dy表示傳感器單個(gè)像素的高,s0代表攝像機(jī)坐標(biāo)系梁坐標(biāo)軸之間的傾斜因子,m0和n0表示實(shí)際成像的坐標(biāo)。
攝像機(jī)坐標(biāo)系中任意一點(diǎn)(XC,YC)在成像平面上對(duì)應(yīng)的坐標(biāo)為(x,y),則可以得到式(5)
(5)
根據(jù)上述所描述的三個(gè)坐標(biāo)系的轉(zhuǎn)換關(guān)系,利用單目攝像頭內(nèi)部參數(shù),可以大致的檢測(cè)到距離前面障礙物的距離。根據(jù)關(guān)于成像模型中透視幾何關(guān)系的推導(dǎo)[11],可以估算出于障礙物的距離。
將攝像頭與主控制器設(shè)備連接,操作系統(tǒng)選用的win10,編寫驅(qū)動(dòng)程序,圖像處理庫(kù)采用matlab2016進(jìn)行標(biāo)定,標(biāo)定過(guò)程大致分為六步:第一步,采集照片讓棋盤在照片中占據(jù)最大比例,這樣可以得到更多的信息,同時(shí)固定好相機(jī);第二通過(guò)多個(gè)角度拍攝,本次拍攝了10張圖片;第三步進(jìn)行Matlab camera calibration標(biāo)定工具箱進(jìn)行標(biāo)定;第四步導(dǎo)入預(yù)先拍好的照片,采用25mm的單元格;第五步設(shè)置校正參數(shù)為-0.2;第六步點(diǎn)擊Calibrate開始標(biāo)定,并導(dǎo)出計(jì)算結(jié)果,完成單目標(biāo)定。整體過(guò)程如圖5所示。
圖5 標(biāo)定Fig.5 Calibration
校正過(guò)程中,經(jīng)常會(huì)出現(xiàn)畸變現(xiàn)象,我們通常使用的相機(jī)焦距很小,可視為凸透鏡。當(dāng)光通過(guò)不同厚度的透鏡時(shí),光的折疊方式會(huì)不同,這稱為徑向畸變,其遠(yuǎn)離透鏡中心的光線比靠近透鏡中心的光線彎曲得更嚴(yán)重,不利于我們計(jì)算圖像物體的高度。除了徑向畸變外,還有一個(gè)非常重要的切向畸變,由于鏡頭本身與像面不平行所導(dǎo)致的。
在MATLAB中,校正比較方便,只需要點(diǎn)擊Calibrate開始標(biāo)定后,點(diǎn)擊Show Undistorted即可查看校正后的圖像,然后再點(diǎn)擊Export Camera Parameters即可保存參數(shù)。
單目測(cè)距一般有兩種方式,第一種是根據(jù)定位測(cè)量插值得到每個(gè)像素的坐標(biāo),第二種是根據(jù)相似三角比例計(jì)算出對(duì)應(yīng)像素點(diǎn)的坐標(biāo)。第一種必須固定攝像頭,輕微的移動(dòng)都會(huì)導(dǎo)致測(cè)量坐標(biāo)的誤差增大,本文利用第二種方式,利用相似三角形的幾何關(guān)系,也是利用了小孔成像原理,獲取圖像的深度信息。
如圖6所示,H為攝像頭光心,P是世界坐標(biāo)系中一點(diǎn),PX是P點(diǎn)在世界坐標(biāo)系XW軸上的投影,Py是P點(diǎn)在世界坐標(biāo)系XW上的投影。α是固定相機(jī)的俯仰角,h是實(shí)際測(cè)量獲取的攝像頭光心OC距離地面的距離。假設(shè)P點(diǎn)與攝像頭的水平距離為Dy,垂直方向距離Dx,則有
圖6 小孔成像模型Fig.6 Pinhole model
Dy=h×tan(∝+β)
(6)
設(shè)β為線段PyP與光軸OOw的夾角,由幾何關(guān)系可得
(7)
令OPy=Py,OOC=f,在△OOCPy中,可得
(8)
由式(7)、式(8)、式(9)可得
(9)
(10)
(11)
由式(9)、(10)、(11)可得
(12)
利用小孔成像模型,得到待測(cè)物體與成像平面的水平距離,即物體深度。
本文以Arduino為主控板,結(jié)合多種傳感器來(lái)完成機(jī)器人的運(yùn)動(dòng)。本設(shè)計(jì)可以控制導(dǎo)盲機(jī)器人在運(yùn)動(dòng)中如何進(jìn)行前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止。還能實(shí)現(xiàn)自主避障的功能。在設(shè)計(jì)中,運(yùn)用了超聲波舵機(jī)云平臺(tái)、避障傳感器進(jìn)行避障,用來(lái)檢測(cè)導(dǎo)盲機(jī)器人周圍的障礙物,運(yùn)用語(yǔ)音識(shí)別模塊進(jìn)行盲人與導(dǎo)盲機(jī)器人的交流。并結(jié)合WIFI模塊進(jìn)行通信。本論文初步設(shè)計(jì)的是障礙物距離導(dǎo)盲機(jī)器人10cm時(shí)候超聲波模塊傳給Arduino,然后避障傳感器進(jìn)行避障,并通過(guò)語(yǔ)音形式告訴盲人障礙物的位置,智能導(dǎo)盲機(jī)器人如圖7所示。
(a)前進(jìn)中發(fā)現(xiàn)障礙物 (b)導(dǎo)盲車后退
(c)導(dǎo)盲車左轉(zhuǎn) (d)導(dǎo)盲車右轉(zhuǎn)
如圖7所示,機(jī)器人完成了自身底盤控制,可以自主的進(jìn)行行走和避障,為導(dǎo)盲提供了基礎(chǔ)。
基于YOLO V3的物體檢測(cè)與識(shí)別,可以對(duì)一張圖片中多個(gè)物體進(jìn)行檢測(cè),并可以將物體的類別顯示出來(lái)。如圖8所示,對(duì)花和水杯進(jìn)行了識(shí)別。
圖8 YOLO V3檢測(cè)的物體Fig.8 Objects detected by YOLO V3
根據(jù)單目視覺的測(cè)距系統(tǒng),對(duì)不同距離進(jìn)行了各20次測(cè)距實(shí)驗(yàn)。如表1所示,對(duì)實(shí)際距離、測(cè)量距離、相對(duì)誤差進(jìn)行分析。
表1 測(cè)距結(jié)果
如表1所示,其中,實(shí)際距離是指相機(jī)距離待測(cè)物體的實(shí)際距離;單次估算距離指在20次測(cè)距實(shí)驗(yàn)中隨機(jī)挑選1次以示例顯示本設(shè)計(jì)單目測(cè)距的情況,根據(jù)實(shí)際測(cè)量可知,單目系統(tǒng)測(cè)距值會(huì)在實(shí)際值上下浮動(dòng);20次平均誤差是每次相對(duì)誤差的平均值,即單目測(cè)距系統(tǒng)平均相對(duì)誤差。
分析不同距離時(shí)的測(cè)距結(jié)果得知,單目視覺測(cè)距誤差稍大[12],但符合本系統(tǒng)的導(dǎo)盲要求,且成本較低。
結(jié)合Yolo識(shí)別結(jié)果和單目測(cè)距的結(jié)果,系統(tǒng)將自動(dòng)進(jìn)行語(yǔ)音播報(bào),舉例說(shuō)明語(yǔ)音播報(bào)內(nèi)容:前方發(fā)現(xiàn)障礙物凳子,距離您40厘米,請(qǐng)注意。
時(shí)代不斷進(jìn)步,科技不斷發(fā)展,AI程度也越來(lái)越高。盲人由于生理上有缺陷,不能像正常人一樣生活。本設(shè)計(jì)硬件部分完成了機(jī)器人本體的行走、避障等控制設(shè)計(jì),軟件部分完成了機(jī)器人搭載的視覺系統(tǒng),可實(shí)現(xiàn)物體的識(shí)別檢測(cè)、物體的測(cè)距和綜合信息的語(yǔ)音播報(bào)功能。經(jīng)過(guò)初步實(shí)驗(yàn),本設(shè)計(jì)的導(dǎo)盲機(jī)器人能為助盲設(shè)備的落地化提供一定思路。