王德鑫,常發(fā)亮
山東大學(xué) 控制科學(xué)與工程學(xué)院,濟南250061
自從計算機視覺技術(shù)發(fā)展以來,動態(tài)目標(biāo)檢測就一直是研究熱點之一。動態(tài)目標(biāo)檢測的核心問題是如何在一段連續(xù)的圖像中檢測出運動的物體,而不受運動背景的影響。一旦運動物體被檢測到,諸如目標(biāo)分類[1]、行人重識別[2]、車輛重識別[3]等技術(shù)就可進行后續(xù)應(yīng)用。目前,動態(tài)目標(biāo)檢測在智能交通、安全監(jiān)控、醫(yī)學(xué)和機器人視覺導(dǎo)航等領(lǐng)域都已經(jīng)有了非常廣泛的應(yīng)用。然而,目前的運動目標(biāo)檢測技術(shù)依然存在兩個關(guān)鍵問題:首先,用于安全監(jiān)控領(lǐng)域的運動目標(biāo)檢測幾乎都通過固定在支架上的攝像機拍攝視頻[4-5],即使攝像機可以繞固定點運動,單個攝像機可監(jiān)控的場景也局限于其所在的小區(qū)域,使得安全監(jiān)控的成本相當(dāng)大。其次,應(yīng)用于運動機器人領(lǐng)域的運動目標(biāo)檢測技術(shù)多搭載在輪式機器人上[6-7],如車站的電子巡警等,這就使得類似的機器人必須按照設(shè)計好的路線進行移動,一旦遇到崎嶇不平的路面或樓梯,就幾乎無法運行。為了解決第一個問題,需要讓攝像頭動起來,機器人載體是首選。為了解決第二個問題,機器人必須能夠在崎嶇的路面平穩(wěn)運行,足式機器人是首選。足式移動機器人憑借連桿構(gòu)型的腿使得足地接觸點非連續(xù),在非結(jié)構(gòu)化的地表行走,具有良好的地形適應(yīng)性,并且連桿結(jié)構(gòu)的末端活動空間大,因此足式機器人的越障能力強,通過性好[8-9]。綜上,基于六足機器人設(shè)計了動態(tài)目標(biāo)檢測與跟蹤系統(tǒng),并針對實驗過程中出現(xiàn)的六足機器人機體抖動、圖像場景變化大的問題,提出區(qū)域合并算法,實現(xiàn)在六足機器人運動過程中對運動目標(biāo)的精確檢測。
在六足機器人運動過程中,可能會產(chǎn)生機體抖動、圖像場景運動較大的問題,需要更加精確的動態(tài)目標(biāo)檢測方法。傳統(tǒng)的動態(tài)目標(biāo)檢測主要基于運動補償法[10]和光流法[11]。以往的運動補償方法都存在將非剛體運動目標(biāo)檢測為多分散區(qū)域的問題。光流法不需要對圖像進行預(yù)處理,且能處理運動目標(biāo)重疊、遮擋等問題,但是計算量大。Wang等[12]通過結(jié)合頻域和時域的思想來優(yōu)化時域運動目標(biāo)檢測算法的速度和準(zhǔn)確性,但是對復(fù)雜場景中的運動目標(biāo)檢測精度較差。Wang等[13]采用首尾相接的金字塔形LK光流法對快速、大型運動目標(biāo)進行檢測,但是存在計算量較大的問題。Zuo等[14]采用改進的高斯混合背景減法,在改善運動目標(biāo)檢測的同時,降低噪聲和動態(tài)背景干擾。
算法首先通過對稱匹配和自適應(yīng)外點濾除來提高運動補償?shù)木龋⑼ㄟ^區(qū)域合并方法實現(xiàn)了對非剛體運動目標(biāo)檢測的精確檢測。其次,對比了目前經(jīng)典的目標(biāo)跟蹤算法,設(shè)計了基于KCF(Kernel Correlation Filter)的六足機器人自適應(yīng)跟蹤算法,結(jié)合無線通信、人機交互等技術(shù),開發(fā)了一套具有感知能力、執(zhí)行能力的運動目標(biāo)檢測與跟蹤系統(tǒng)。
六足機器人在運動過程中無法精確保持機體平穩(wěn),導(dǎo)致所拍攝的圖像場景變化劇烈,而運動目標(biāo)的整體位置變化較小,目標(biāo)容易被檢測為多個離散小區(qū)域,影響動態(tài)目標(biāo)檢測精度。針對此問題,首先提出區(qū)域合并算法將多個離散小區(qū)域合并為一個整體,并結(jié)合對稱匹配、自適應(yīng)外點濾除算法,保證機器人在機體不穩(wěn)定的情況下仍能達到對運動目標(biāo)的精確檢測。
通過SURF(Speeded Up Robust Features)特征[15]檢測相鄰兩幀圖像中的特征點,使用KNN(K-Nearest Neighbor)[16]對連續(xù)兩幀中的特征點進行對稱匹配,篩除大部分錯誤的匹配點對。篩選后的特征點對包含靜止背景點和運動前景點,運動的前景點會使運動補償產(chǎn)生較大誤差,使用自適應(yīng)外點濾除[17]篩除前景點對,只保留背景點進行單應(yīng)矩陣變換。高斯濾波后,通過幀差法粗略去除背景,并使用形態(tài)學(xué)操作去除部分離群點和較小的噪點。
當(dāng)場景中存在運動的非剛體目標(biāo)時,目標(biāo)不同部分的運動存在差異性,使得一個目標(biāo)被檢測為多個分散區(qū)域,且當(dāng)多個運動目標(biāo)距離較近時無法區(qū)分。使用區(qū)域合并算法解決上述問題。
(1)幀內(nèi)合并。若同一幀內(nèi)的兩個區(qū)域質(zhì)心小于閾值th1且HSV顏色空間的歐氏距離小于閾值th2,則將這兩個區(qū)域設(shè)置為連通域。
(2)幀間合并。若相鄰幀內(nèi)兩個目標(biāo)的質(zhì)心距離小于閾值th3且HSV空間歐式距離小于閾值th4,設(shè)這兩個區(qū)域為等價區(qū)域?qū)?。迭代后可在連續(xù)兩幀內(nèi)獲得多組等價區(qū)域?qū)榈葍r區(qū)域?qū)?shù)。迭代計算任意兩對等價區(qū)域?qū)Φ倪\動一致性(Motion Consistency,MC),若兩區(qū)域?qū)χ性诋?dāng)前幀的區(qū)域質(zhì)心距離小于閾值th5且運動一致性小于閾值th6,則將這兩個等價區(qū)域?qū)χ性诋?dāng)前幀的區(qū)域連接為連通域。
運動一致性的計算公式如下:
其中,i,j=0,1,…,I,dx和dy分別為等價區(qū)域?qū)Φ馁|(zhì)心從第n-1幀到第n幀在x方向和y方向的移動像素距離。
區(qū)域合并的偽代碼如圖1。
圖1 區(qū)域合并算法偽代碼
區(qū)域合并算法結(jié)果如圖2,運動目標(biāo)在區(qū)域合并前被檢測為多個離散區(qū)域,經(jīng)區(qū)域合并后的結(jié)果為一個完整的目標(biāo)。算法內(nèi)的閾值參數(shù)全部由VTB-100數(shù)據(jù)集[18]中的視頻測試得到(th1=30,th2=3 000,th3=30,th4=8 000,th5=50,th6=30),動態(tài)目標(biāo)檢測流程如圖3。
圖2 區(qū)域合并結(jié)果對比
圖3 動態(tài)目標(biāo)檢測流程
與輪式機器人的運動步態(tài)規(guī)劃不同,六足機器人的移動存在步態(tài)周期,即腿足的抬起、轉(zhuǎn)動和落下,耗時較長且控制復(fù)雜。在三角步態(tài)的基礎(chǔ)上,設(shè)計了自適應(yīng)跟蹤方法,根據(jù)偏移距離自適應(yīng)調(diào)整跟蹤速度,始終保持目標(biāo)在視野中央附近。
表1對比了目標(biāo)跟蹤的經(jīng)典算法,測試對象為VTB-100數(shù)據(jù)集。視頻1(V1)背景簡單,目標(biāo)較大且特征明顯;視頻2(V2)背景簡單,目標(biāo)較小且與背景顏色接近;視頻3(V3)背景與目標(biāo)顏色相近,有多個目標(biāo),目標(biāo)較小且存在遮擋;視頻4(V4)背景簡單,目標(biāo)特征明顯,但形狀和尺度變化較大;視頻5(V5)背景復(fù)雜,目標(biāo)較多且存在目標(biāo)遮擋。1表示在跟蹤過程中無跟丟現(xiàn)象,0表示有跟丟現(xiàn)象。結(jié)果顯示,KCF算法[19]對形狀和尺度變化具有較強的魯棒性,且?guī)瘦^高,符合六足機器人跟蹤運動目標(biāo)的需求。
表1 經(jīng)典跟蹤算法比較
為保證六足機器人在爬行過程中穩(wěn)定,六足機器人的機體框架采用菱形結(jié)構(gòu),具有以下優(yōu)點:(1)有效減少了各腿足在行走時的碰撞;(2)提高了機器人整體結(jié)構(gòu)的穩(wěn)定性;(3)增大了機器人腿部的轉(zhuǎn)動空間。同時為降低機器人總體重量,采用高強度鋁合金材料。6個腿部結(jié)構(gòu)在機體兩側(cè)對稱安裝,機器人腿部為三自由度關(guān)節(jié),各關(guān)節(jié)由舵機驅(qū)動。數(shù)字舵機可實現(xiàn)關(guān)節(jié)在正負90°范圍內(nèi)運動,使腿部有較大的靈活性。通過控制相應(yīng)關(guān)節(jié)上舵機的動作,可使機器人完成前行、轉(zhuǎn)彎等動作。腿部結(jié)構(gòu)和機體一樣采用高強度鋁合金。除主要硬件結(jié)構(gòu)以外,攝像頭、云臺、控制器、電源等模塊全部安裝在機體中心軸上,使機器人重心位于機體中心軸上,最大程度保證機器人在爬行過程中的穩(wěn)定。六足機器人結(jié)構(gòu)如圖4所示。
圖4 六足機器人
綜合考慮六足機器人的運動速度和穩(wěn)定性,采用占地系數(shù)為0.5的三角步態(tài)[20],即每條腿的接觸地面時間占步態(tài)周期的1/2。將機器人的6個腿部結(jié)構(gòu)分為R和L兩組,步態(tài)周期分為R抬升、L前移、R落下、L抬升、R前移、L落下6個步驟。首先將上述6組動作在實驗環(huán)境中分別編程實現(xiàn)并保存為函數(shù),按順序組合后運行可實現(xiàn)六足機器人的直行。轉(zhuǎn)彎步態(tài)包括沿中心轉(zhuǎn)彎和沿外點轉(zhuǎn)彎。采用沿中心轉(zhuǎn)彎,即機器人直行停止后再轉(zhuǎn)彎,實現(xiàn)過程與直行步態(tài)類似。
設(shè)置偏移閾值區(qū)域,區(qū)域中心為圖像中心,區(qū)域長寬均為圖像長寬的1/4,跟蹤目標(biāo)出現(xiàn)在閾值區(qū)域以外時,六足機器人和攝像頭云臺開始運動。建立機器人與攝像頭云臺單次運動的轉(zhuǎn)角與軸向偏移量,當(dāng)跟蹤目標(biāo)位于閾值區(qū)域邊緣時,轉(zhuǎn)角弧度為0,當(dāng)跟蹤目標(biāo)在圖像邊緣時,轉(zhuǎn)角弧度為。圖5為跟蹤偏移示意圖,圖中的取值范圍(單位:像素)分別是(-320~320,-240~240)。
圖5 跟蹤偏移示意圖
六足機器人一次轉(zhuǎn)彎的弧度dθ與x軸偏移量dx的關(guān)系如式(2)所示:
攝像頭云臺一次轉(zhuǎn)動的弧度dα與y軸偏移量dy的關(guān)系如式(3)所示:
系統(tǒng)結(jié)構(gòu)如圖6所示?;诹銠C器人的動態(tài)目標(biāo)檢測與完整跟蹤系統(tǒng)結(jié)構(gòu)由操作人員、處理器和六足機器人組成。
圖6 系統(tǒng)結(jié)構(gòu)
系統(tǒng)架構(gòu)如圖7,主要包括操作系統(tǒng)層、驅(qū)動層和硬件層三部分。
圖7 系統(tǒng)總體架構(gòu)
硬件層由六足機器人主體、相機、電機和電源組成。主體采用菱形結(jié)構(gòu),驅(qū)動關(guān)節(jié)采用20個MG995舵機,包括18個腿部關(guān)節(jié)和2個攝像頭云臺關(guān)節(jié)。
驅(qū)動層作為連通操作系統(tǒng)層與硬件層的中間環(huán)節(jié),主要完成傳感器信息的傳輸以及控制指令的轉(zhuǎn)達??紤]到不涉及復(fù)雜運動控制的研究,機器人處理器采用STM32F103RCT6單片機,采用24路舵機控制板作為舵機驅(qū)動控制器。
操作系統(tǒng)層是控制核心,集成了機器人的功能模塊,負責(zé)圖像采集、圖像處理、人機交互等。
軟件結(jié)構(gòu)采用模塊化設(shè)計方式,如圖8所示。
圖8 系統(tǒng)軟件結(jié)構(gòu)
處理器內(nèi)的軟件系統(tǒng)由頂層的人機交互和底層的智能算法組成。人機交互模塊負責(zé)顯示各項數(shù)據(jù)、手動發(fā)出控制指令(由鍵盤操控)等任務(wù)。智能算法模塊進行各項圖像處理、保存數(shù)據(jù)以及將控制指令轉(zhuǎn)碼為自定義的RCP(Robot Communication Protocol)通信協(xié)議。RCP通信協(xié)議如圖9所示。
圖9 RCP通信協(xié)議
RCP通信協(xié)議由21位二進制數(shù)組成。轉(zhuǎn)動標(biāo)志位1和2分別表示是否轉(zhuǎn)彎和是否轉(zhuǎn)動攝像頭云臺,標(biāo)志位為1時有效。dx和dy用10位二進制數(shù)表示,其中最高位為符號位,置1表示右轉(zhuǎn),置0表示左轉(zhuǎn),可表示的偏移范圍為(-512~512)。
六足機器人內(nèi)的軟件系統(tǒng)由數(shù)據(jù)解碼模塊、運動控制模塊和圖像采集模塊組成。數(shù)據(jù)解碼模塊將處理器發(fā)送的RCP數(shù)據(jù)解碼得到運動控制數(shù)據(jù),運動控制模塊則直接控制電機轉(zhuǎn)動。無線通信模塊由基于ESP8266的WIFI通信和5.8 GHz圖像傳輸模塊組成。
人機交互界面由視頻監(jiān)視模塊、運動控制模塊、狀態(tài)顯示模塊、無線通信模塊和參數(shù)設(shè)置模塊組成。操作人員可實時查看機器人的運行狀態(tài)、無線通信狀態(tài)、切換圖像模式以及手動控制機器人的運動。人機交互界面如圖10。若算法默認參數(shù)在當(dāng)前場景下不適用,操作人員可重新設(shè)置參數(shù)優(yōu)化算法。
圖10 人機交互界面
實驗環(huán)境如下所示:
硬件:Intel Skull,Core i7-6770HQ,2.6~3.5 GHz。
操作系統(tǒng):Windows 10。
編程環(huán)境:Visual Studio 2017,Keil v5,C++,opencv3.4.0,opencv-contrib3.4.0。
測試六足機器人在移動過程中對運動目標(biāo)的檢測性能。測試環(huán)境背景復(fù)雜度適中,六足機器人運動速度和目標(biāo)運動速度均在每幀10像素以內(nèi)。控制六足機器人在場景內(nèi)隨機移動,多個運動目標(biāo)由視野外進入機器人視野并相對行走。檢測結(jié)果如圖11,檢測幀率如表2。結(jié)果顯示,運動目標(biāo)均被完整地檢測并標(biāo)注,存在少量背景誤檢測,在當(dāng)前場景下檢測幀率為17.5 frame/s。
圖11 動態(tài)目標(biāo)檢測結(jié)果
圖12 目標(biāo)跟蹤
六足機器人跟蹤運動目標(biāo)結(jié)果如圖12。圖13繪制了連續(xù)330幀跟蹤過程中的x軸和y軸方向的像素偏移,目標(biāo)在第0幀出現(xiàn)在視野邊緣,在第120幀向視野邊緣運動,在第250幀開始反向運動。從圖13中可以看出,當(dāng)目標(biāo)與視野中央的偏差大于80像素時,機器人快速轉(zhuǎn)動,使目標(biāo)保持在視野中央附近。
圖13 目標(biāo)跟蹤偏移
系統(tǒng)響應(yīng)的實時性由數(shù)據(jù)傳輸時間和檢測時間同時決定。由于將機器人與算法處理器獨立設(shè)計,目標(biāo)跟蹤過程主要包括六部分:機器人向處理器發(fā)送圖像,目標(biāo)跟蹤,處理器向WIFI模塊發(fā)送控制命令,WIFI模塊向單片機轉(zhuǎn)發(fā)控制命令,單片機向舵機控制器發(fā)送命令,舵機控制器驅(qū)動舵機關(guān)節(jié)。其中機器人使用5.8 GHz圖傳模塊向處理器發(fā)送圖像數(shù)據(jù),延時約為200 ms;舵機控制器驅(qū)動舵機關(guān)節(jié)部分延時約為300 ms;其余部分的延時共50 ms。因此從目標(biāo)運動到機器人跟蹤其開始運動,延時約為550 ms。檢測過程由于只包括機器人向處理器發(fā)送圖像和運動目標(biāo)檢測兩部分,延時約為250 ms??梢钥闯觯饕难訒r部分為無線圖像傳輸與驅(qū)動舵機關(guān)節(jié)部分。更換傳輸速度更快的無線傳輸設(shè)備和舵機對降低延時有幫助,在后續(xù)研究過程中將對其進行改進。
表2展示了運動目標(biāo)檢測與跟蹤算法在不同場景下的幀率。跟蹤幀率在不同復(fù)雜程度的場景下并沒有較大差距,而檢測幀率相差6.8,原因是算法在復(fù)雜場景下檢測了更多特征點進行運動補償。
表2 檢測與跟蹤幀率frame/s
為探索動態(tài)目標(biāo)檢測與跟蹤算法與機器人的交叉應(yīng)用,基于六足機器人平臺,結(jié)合人機交互、智能算法、無線通信等開發(fā)了一套完整的檢測與跟蹤系統(tǒng)。其中,針對以往動態(tài)目標(biāo)檢測算法易將非剛體運動目標(biāo)檢測為多個分散區(qū)域的問題,通過區(qū)域合并與運動補償法相結(jié)合,使六足機器人在運動過程中可以精確檢測非剛體運動目標(biāo),幀率達到17.5 frame/s。采用基于KCF的目標(biāo)跟蹤算法,通過自適應(yīng)調(diào)整跟蹤速度,使目標(biāo)保持在距視野中心100像素以內(nèi)。后續(xù)研究將改進圖像抖動下的動態(tài)目標(biāo)檢測效果以及提高六足機器人運行過程中的穩(wěn)定性。