金志熙 王宏遠 勾尤旭 郝佳鑫



摘要:目標跟蹤技術在機器人領域中占據非常重要的一部分,可應用于日常生活、軍事工業等多個領域。該文采用改進的KCF算法,基于ROS(Robot Operating System)搭建目標跟蹤移動機器人。該機器人主要由驅動執行系統、傳感系統和控制系統組成。利用Kinect深度攝像頭和hector_slam算法建立環境地圖,再利用KCF算法進行目標識別與跟蹤,獲取目標位置,利用move_base功能包實現機器人的導航。
關鍵詞:目標跟蹤技術;KCF算法
中圖分類號:TP3? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)02-0001-03
近年來,由于機器人技術的高速發展,使得機器人進入了我們生活中的方方面面,改變了我們的生活方式。當機器人加上視覺傳感器實現目標跟蹤功能,可以使得機器人的應用更加的廣泛,可以完成更為復雜的任務,例如應用于服務業的各種服務型機器人、應用于物流管理的倉儲機器人、應用于軍事領域的巡邏機器人等,都可以為我們的生活帶來更多的便利。
2014年,Henriques等人提出了一種精度高、速度快的運動目標跟蹤算法,即KCF (Kernel Correlation Filter)算法[1]。但KCF算法也有不足,如提取外觀特征單一,不能自適應尺度變化和模型更新因子,當運動物體被嚴重遮擋的時候會導致跟蹤失敗[2]。針對這兩個不足,本文設計的移動機器人的視覺跟蹤使用了改進的KCF算法,該算法借鑒快速分類尺度空間跟蹤器(FDSST)進行尺度估計,從而達到目標尺寸的準確估計;同時采用Kalman濾波器,使用預測位置進行跟蹤[3]。本文設計的移動機器人是基于ROS平臺,相當于一個“機器人框架”,是一個功能實現平臺。其兼容性強,支持多種編程語言接口,使得ROS系統中的代碼復用率高,為機器人操作系統的開發和后續維護提供了方便。在傳感系統方面,我們采用了Kinect深度攝像頭,可以在一定的范圍內采集到深度信息,可替代一般的激光雷達完成地圖的建立;利用采集到的信息,使用改進過的KCF算法,通過計算機的處理,得到跟蹤目標的位置,實現移動機器人目標跟蹤的功能。
1 移動機器人硬件部分
移動機器人硬件部分的設計分為了傳感器層、執行層和控制層。其中傳感器層包含Kinect深度攝像頭,完成圖像和深度位置信息的獲取工作。執行層包括DC24V的直流電機、電機驅動器和獲取里程計信息的編碼器。控制層包括Arduino控制板和PC機。Arduino控制板用于獲取編碼器信號來計算里程計信息,同時接收PC機的速度信息控制電機工作。PC機利用得到的圖像信息和深度信息,通過使用改進過的KCF算法進行目標的追蹤,得出目標的位置,然后運用move_base功能包得出移動機器人的速度,發送到Arduino控制板從而控制電機實現移動機器人目標跟蹤的工作。
本文的移動機器人使用的是兩個驅動輪的差動輪式設計,由兩個DC24V的電機控制機器人運動,為實現機器人的運動控制,建立機器人差動驅動模型,機器人的幾何模型圖如圖1所示。
以中心點C為參考點描述下的機器人運動學建模如下:
2 移動機器人軟件部分
ROS作為一個開源的機器人操作系統,它的運行架構是一種使用ROS通信模塊實現各個節點之間的通信,包括基于同步通信方式的服務、基于異步通信的話題等多種通信方式。它支持多種編程語言,方便了更多的使用者[4],官方提供給開發者各種實用的工具和功能包,而且在網絡上還有全球機器人軟件開發者發布的特殊功能包[5],提高了代碼的復用率,為機器人開發節約了不少時間和精力,提高了開發效率。根據設計要求,設計出了本文的移動機器人系統的節點框圖,如圖2所示,可更直觀地了解系統中各個節點之間的通信關系。
本文設計的移動機器人追蹤系統就是基于ROS平臺,利用Kinect深度攝像頭獲取節點云信息,利用hector_slam算法功能包建立環境的柵格地圖;利用Kinect獲取圖像和深度位置信息,使用改進的KCF進行對目標的跟蹤,得出目標位置,然后運用導航功能包得出移動機器人的速度,發送信息到Arduino控制功能包來控制機器人的移動。目標跟蹤這一部分的內容在ROS自帶的gazebo物理仿真程序中進行仿真。
3 改進的KCF算法
3.1 KCF跟蹤算法
KCF全稱為Kernel Correlation Filter 核相關濾波算法,提出時轟動一時,取得了巨大的成功,其核心步驟有采樣、訓練、檢測和更新。為了增強核濾波器的穩定器,需要大量的訓練數據集,KCF算法采用目標樣本循環位構建訓練數據集[xi(i∈{0,...,m-1}×{0,...,n-1})]和跟蹤目標標簽[yi]。其中m和n為圖像x方向和y方向像素點的數量。
但是傳統的KCF算法不能根據跟蹤目標的尺度變化對初始化跟蹤矩陣進行大小改變使得模型的特征丟失、偏移,和當目標被嚴重遮擋會使模型被破壞,[3]這兩種情況都會使得跟蹤失敗。所以該算法需要進行改進。
3.2 KCF算法改進
將尋找的對象進行一定比例的放縮,生成M組目標(本文的實驗中M=33),使用3.1的基本KCF跟蹤算法來生成[wm(m=1,...,M)],分別使用[wm]計算最大響應位置。取[max(wmX)],作為計算結果,得出目標所在位置以及目標縮放比例。
3.3 卡爾曼濾波算法
卡爾曼濾波是由消息過程、測量過程和濾波過程組成,是一套線性無偏最小均方誤差的遞推公式,該濾波算法利用前一刻的估計值和當前時刻的觀測值,進行預測當前時刻目標出現的位置。
通過結合該算法,可解決當跟蹤目標被嚴重遮擋時跟蹤失敗的問題。
3.4 改進KCF整體流程
針對KCF算法難以應對尺寸變化、目標完全遮擋等問題,使用基于改進核相關濾波的運動目標跟蹤算法。
首先融合FDSST算法的尺度濾波器,增強算法對目標尺寸變化的適應能力。然后融合卡爾曼濾波器對人物目標下一幀的位置進行預測,結合遮擋判斷,當目標被遮擋時,停止KCF算法的模型更新和尺度更新,使用卡爾曼濾波的預測位置進行跟蹤,當目標重新回到視野當中時,繼續使用KCF算法進行跟蹤。
改進的KCF目標跟蹤算法的流程圖如圖3所示。
4 視覺跟隨工作流程
本文的視覺跟隨移動機器人基于ROS平臺,各部分的工作由不同的節點完成,各節點通過通信發布信息或訂閱信息完成整體的視覺跟隨工作。具體步驟如下:
第一步:在系統中訂閱Kinect深度攝像頭發布的色彩圖像話題,使得在筆記本屏幕上顯示當前的攝像頭拍攝的視頻,然后使用鼠標對跟蹤目標進行框選,獲取框的坐標信息和圖像信息,使目標跟蹤算法進行初始化;
第二步:利用攝像頭發布的圖像信息,目標跟蹤算法開始工作。為了實現機器人移動追蹤功能,需要使用一個話題將圖像的深度信息和框坐標信息進行分析后獲得的坐標位置進行發布。對攝像頭發布的每一幀圖像重復執行第二步的操作;
第三步:為了實現機器人的跟蹤導航及避障移動,需要第二步中話題發布的位置信息,當move_base功能包獲取位置信息后,會進行全局路徑規劃(global planner)和本地實時規劃(local planner),最后得出機器人所需的移動速度和方向并進行發布;
第四步:對于移動機器人的執行部分,會由ROS_arduino_bridge功能包進行控制。該功能包接收move_base功能包發布的速度信息,進行對電機控制,使得機器人進行移動。
5 實驗結果
圖4為選擇背景圖片和目標對象。
圖5為正常的跟蹤所執行的效果,正常捕捉到了目標對象。
圖6為我們將目標遠離攝像頭時,改進的KCF同樣正常的捕捉了目標對象,同時捕捉框變小,和目標大小基本一致,實驗效果良好。
圖7為我們將目標靠近攝像頭時,改進的KCF同樣正常的捕捉了目標對象,同時捕捉框變大,和目標大小基本一致,實驗效果良好。
6 結論
本文設計的目標跟蹤移動機器人,利用Kinect深度攝像頭進行數據采集,使用改進的KCF跟蹤算法對目標進行追蹤,利用move_base進行路徑的規劃,完成目標跟蹤的功能。在仿真實驗中,本文設計的目標跟蹤機器在攝像頭跟蹤效果中可以很好地完成對目標的跟蹤,實現了預期的目標任務。目前完成了機器人的仿真實驗,接下來就對機器人進行實物的搭建,完成實物的組裝,繼續改進。
參考文獻:
[1] Henriques Jo?o F, Caseiro Rui, Martins Pedro, et al. High-Speed Tracking with Kernelized Correlation Filters,2015, 37(3):583-596.
[2] 周正松,陳虹君,周紅.基于多特征融合的尺度自適應KCF目標跟蹤算法[J].四川大學學報(自然科學版),2020,57(4):697-703.
[3] 王林,胥中南.改進的KCF算法在車輛跟蹤中的應用[J].計算機測量與控制,2019,27(7):195-199.
[4] 曹正萬,平雪良,陳盛龍,等.基于ROS的機器人模型構建方法研究[J].組合機床與自動化加工技術,2015(8):51-54.
[5] 李賀喜,李富強,牛童立,等.基于ROS系統移動機器人SLAM算法的研究與實現[J].技術與市場,2020,27(7):97,99.
【通聯編輯:代影】