任恒樂,徐 方,邸 霈,田大吉
(1.中國科學院沈陽自動化研究所 機器人學國家重點實驗室,遼寧 沈陽 110016; 2.中國科學院機器人與智能制造創(chuàng)新研究院,遼寧 沈陽 110016; 3.中國科學院大學,北京 100049;4.沈陽新松機器人自動化 股份有限公司 中央研究院,遼寧 沈陽 110168)
由于深度相機既能采集顏色信息,又能采集深度信息,所以其可以作為移動機器人完成自主跟隨任務的感知輸入。自主跟隨的核心技術(shù)就是對目標行人的準確檢測與識別,即在判斷出不同圖像幀中的行人是否是同一個人。檢測-跟蹤框架是目前一種主流的方法[1]。其思想是先在每幀圖像中檢測出行人,然后對不同圖像幀中的行人進行數(shù)據(jù)關(guān)聯(lián)來確認身份。Munaro等提出的方法通過將無跡卡爾曼濾波和行人的顏色直方圖相結(jié)合來關(guān)聯(lián)不同圖像幀中的行人[2]。Wang等將粒子濾波與社會力模型結(jié)合來跟蹤行人[3]。Liu等則將均值偏移融入粒子濾波算法來進行多個行人的跟蹤。文獻[5]利用卡爾曼濾波彌補均值漂移算法沒有利用行人運動信息的缺點來進行行人識別。文獻[6-8]則是利用神經(jīng)網(wǎng)絡對多個行人進行跟蹤。但以上的算法在行人距離機器人較近時效果都不太理想,無法滿足移動機器人自主跟隨的需求。
本文利用華碩的Xtion PRO LIVE深度相機來獲取RGB圖和深度圖。然后利用提出的行人模型對行人進行檢測與識別。接著依據(jù)得到的目標行人及干擾行人的位置來規(guī)劃一條跟隨路徑,最后將速度指令發(fā)送給全向移動平臺底盤控制器,從而使移動機器人在有行人干擾或距離行人較近的復雜環(huán)境下能夠順利完成跟隨任務。
全向移動平臺沒有非完整性約束,可向任意方向移動[9]。這一優(yōu)點可使機器人在跟隨時始終朝向目標行人。圖1為本文搭建的全向移動平臺。
圖1 全向移動平臺實物
該平臺采用3個全向輪,輪子軸向兩兩間的夾角均為120度,如圖2所示。δ為全向輪與y軸夾角。vθ為平臺繞幾何中心的轉(zhuǎn)速,l為全向輪中心到平臺幾何中心的距離。由式(1),式(2)可知v為移動平臺的實際速度,ψ為其與x軸夾角,文中的粗體表示矢量。vx,vy分別為移動平臺沿x軸和y軸的速度分量。根據(jù)式(3)可以分別求出3個全向輪的線速度v1,v2,v3
(1)
(2)
(3)
圖2 全向輪移動平臺運動學模型
在機器人進行自主跟隨的過程中,當機器人與行人的距離太近時,由于相機視野范圍的限制,其只能獲取行人的局部信息,此時傳統(tǒng)的方法很容易識別丟失。此外,當兩個行人交叉行走出現(xiàn)相互遮擋的情況時,行人的身份也極易出現(xiàn)誤匹配的問題。為了解決上述問題,本文提出了一種行人模型來進行行人檢測與識別。首先對當前圖像幀提取方向梯度直方圖信息來檢測當前幀中可能是行人的位置。然后結(jié)合深度圖中的相應深度獲得行人的實際三維坐標。接著利用社會力模型預測上一圖像幀中每個待匹配行人的期望位置。另外,對每個行人分段提取顏色直方圖。將以上信息作為行人模型的輸入,利用這些信息,行人模型將當前幀與上一幀圖像中的行人相匹配來完成行人的檢測與識別。
(4)
(5)
社會力模型的主要組成部分是來自他人的排斥力
(6)
其中,A表示排斥力的大小,B表示力的范圍,di,j是行人i之間的距離矢量的大小。vi/ti假定行人想要在ti停下來。另外,由于行人視場有限,排斥力可能不是各向同性的。ω是社會力模型的各向異性因子,具體可由式(7)得出,其中,λ是各向異性系數(shù),θi,j是行人j相對于行人i的位置與其運動速度vi方向的夾角
(7)
傳統(tǒng)的行人檢測方法只有在獲取人體大部分信息時才能有效的檢測行人。然而,當行人距離機器人較近時,由于攝像頭視野范圍的限制只能采集到行人的部分信息。此時,如果傳統(tǒng)的方法就難以對行人進行檢測,行人的身份更是無法確定。
針對以上問題,本文首先分段記錄每個行人的顏色信息。如圖3所示,將檢測到的行人區(qū)域平均分成4份,頂部的亮色部分占總面積的1/4,主要用來記錄人體胸部以上的信息。中間的灰色區(qū)域占整體區(qū)域面積的1/2,能夠統(tǒng)計人體大腿與胸部之間部分的信息。底部1/4的深色區(qū)域則用來統(tǒng)計人體大腿以下的信息。在每段區(qū)域中分別對紅色、綠色和藍色3個通道進行信息統(tǒng)計。每個通道按照值從0~255平均分為5個區(qū)間,統(tǒng)計每個區(qū)間點云所占的比例。
圖3 分段顏色直方圖劃分
當某個行人的位置距離機器人較近時,由于機器人視野的問題只獲取該行人身體的中間區(qū)域信息,此時,該行人未能被檢測到。依據(jù)2.1部分的社會力模型可以預測該行人在圖像中可能出現(xiàn)的區(qū)域。對該區(qū)域進行分段顏色直方圖統(tǒng)計,然后將此信息作為行人模型的輸入。
在此,本文提出了一種行人模型來解決機器人在自主跟隨時出現(xiàn)的相互遮擋及視野太小的問題。對于每一幀圖像,我們通過提取方向梯度直方圖來得到檢測子,把這些檢測子作為識別部分的輸入。這些檢測子會出現(xiàn)有假陰性和假陽性的結(jié)果,因此本文將檢測出的行人劃分為兩類:候選行人和真實行人。候選行人為待確認的行人,可能是誤檢測造成的。真實行人為實際存在的行人。兩者可通過歷史記錄增減相互轉(zhuǎn)化。利用社會力模型預測每個人在下一幀中的估計位置,結(jié)合顏色直方圖信息,計算出當前幀檢測出的行人與下一幀圖像中檢測子的距離,這里指的是加權(quán)距離。最后,依據(jù)距離矩陣利用匈牙利算法進行數(shù)據(jù)關(guān)聯(lián),從而進行行人跟蹤識別。
每個行人都有身份編號、歷史記錄、位置、期望位置、速度、分段顏色直方圖屬性。身份編號代表當前行人的身份,歷史記錄包含過去幾幀該行人的位置,期望位置是用社會力模型估算出的該行人在下一幀中的位置。分段顏色直方圖可增強每個行人的區(qū)分度。兩種類型行人之間可依據(jù)各自的歷史記錄進行相互轉(zhuǎn)換。具體過程如圖4所示。當前幀的兩種類型行人都需要與下一幀中的檢測子進行匹配,距離越近,匹配度就越高。每成功匹配一次,若該行人的歷史記錄沒有達到預設的歷史記錄上限htop,就將該歷史記錄加1,若超過了真實行人歷史記錄的下線hreal,則該行人為真實行人。如果沒匹配成功,其歷史記錄就減1。若該歷史記錄小于預設的歷史記錄下線hdel,則認為該行人是噪聲引起的誤檢測,刪除該行人。
圖4 行人身份轉(zhuǎn)化過程
接著將檢測子與行人數(shù)據(jù)關(guān)聯(lián)。首先是計算當前幀中的行人與下一幀中的檢測子之間的距離。距離定義如下
d=w·(pped-pdet)
(8)
其中,d是當前幀行人和下一幀檢測子之間的距離,而w是距離的權(quán)重。pped和pdet分別是當前幀行人的位置和下一幀檢測子的位置。然后,本文利用基于距離矩陣的匈牙利算法并獲得初步關(guān)聯(lián)。但如果兩者顏色直方圖差異超過設定的閾值,則關(guān)聯(lián)無效。此外,當檢測子與候選行人相關(guān)聯(lián),并且其與真實行人的距離小于最大距離dmax時,優(yōu)先將其與真實行人相關(guān)聯(lián)。如果檢測子不與所有行人相關(guān)聯(lián),我們將其添加為候選行人。但是,當真實的行人與檢測子相關(guān)聯(lián)并且另一個檢測子與該行人之間的距離小于最小距離dmin時,則不能將該檢測子添加為候選行人。這一步可以有效剔除圖中重疊檢測的行人。
借助人工勢場法的思想,假設機器人處在一個人為構(gòu)造的虛擬引力和斥力勢場中,通過計算移動機器人所受到的合力來確定其運動軌跡[11]。引導者對機器人有吸引力,其大小與機器人和引導者的距離成正比。另外環(huán)境中的障礙物及其他行人會對機器人產(chǎn)生排斥力,其大小與機器人和各自間的距離成反比。
為了使機器人能夠更有效地自主跟隨,本文使用2.1部分社會力模型預測的行人的期望位置代替實際位置來計算虛擬力,這樣使機器人能夠更加及時躲避障礙及跟隨行人。令Uatt為引力勢函數(shù),Katt為引力場系數(shù),d為機器人與引導者之間的距離,p為機器人的坐標,pgoal為預測的引導者的期望坐標。引導者對機器人的引力勢函數(shù)可用式(9)表示。而此引力場函數(shù)的負梯度就是引導者對機器人的引力,如式(10)所示
(9)
(10)
同樣,對于環(huán)境中其他的行人或障礙物產(chǎn)生的斥力場也可表示為距離的函數(shù)。令Urep為斥力勢函數(shù),Krep為斥力場系數(shù),d為機器人與其他行人或障礙物之間的距離,p為機器人的坐標,pother為預測的其他行人的期望坐標。周圍其他行人的斥力勢函數(shù)可用式(11)表示。而此斥力場函數(shù)的負梯度就是機器人所受的斥力
(11)
(12)
實驗環(huán)境為普通的車間廠房,引導者在引導機器人時會有加速、減速、左轉(zhuǎn)和右轉(zhuǎn)等運動。在整個過程中會有其他行人在廠房內(nèi)隨意走動進行干擾。
圖5展示了機器人在有其他行人遮擋時的實驗結(jié)果。圖中每個行人上方分別有兩個數(shù)字,左邊的數(shù)字表示該行人的身份編號,右邊代表存儲的每個行人的歷史記錄。此外,每個行人會被一個不同顏色的長方體包圍。從圖中可以看出,在0號行人走到1號行人身后的過程中,其歷史記錄在不斷減小。這是由0號行人被1號行人遮擋面積過大造成的。此時,只利用方向梯度直方圖法無法直接從圖像中檢測出0號行人。而本文提出的行人模型并沒有刪除0號行人,而是依據(jù)社會力模型預測該行人可能運動到的位置,假設該行人運動到這個位置,并將其歷史記錄減1。當從1號行人的身后走出時,由于利用方向梯度直方圖能檢測到該行人并且匹配正確,所以其歷史記錄又會增大。但在整個過程中兩個行人各自的身份編號均未發(fā)生變化。這說明了在行人由于交叉行人而短期被遮擋時,本文的方法也能有效識別出行人。
由于攝像頭視野范圍的限制,當行人不斷向機器人走進時,攝像頭能看到的人體區(qū)域逐漸減小,只能看到人體中間的一小部分信息。僅依靠這部分信息傳統(tǒng)無法檢測出行人,而本文的方法此時會結(jié)合社會力模型及分段顏色直方圖信息。從圖6中可以看出,本文提出的方法在行人距離機器人較近時依然能夠有效檢測出行人。
圖5 行人相互遮擋識別過程
圖6 近距離識別過程
圖6近距離識別過程從圖7中可以看出在跟隨的過程中機器人與引導者的夾角一直小于15度,機器人能夠及時跟隨引導者轉(zhuǎn)向。而圖8顯示出機器人與引導者的距離雖有波動,但始終保持在1.5 m附近,能夠順利完成跟隨任務。
圖7 機器人與目標的夾角曲線
圖8 機器人與目標的距離曲線
本文以全向移動平臺為硬件環(huán)境,基于深度相機提出了一種移動機器人自主跟隨方法。其中,行人模型以方向梯度直方圖的檢測結(jié)果為輸入,結(jié)合深度信息獲取行人三維坐標,利用社會力模型來預測行人的運動狀態(tài),通過分段顏色直方圖匹配來增加每個行人的區(qū)分度。最終利用人工勢場法進行跟隨時的路徑規(guī)劃。通過實驗驗證了本文方法的有效性,能夠在機器人與引導者距離較近或者在行人間相互遮擋時準確地識別行人,進而能夠有效地完成跟隨任務。