程姜榮 宋芳
摘 ?要: 視覺跟隨是機(jī)器人領(lǐng)域中一個比較重要的部分,可以應(yīng)用在倉儲搬運(yùn)、安防、軍事等多種領(lǐng)域。由于傳統(tǒng)算法存在當(dāng)背景比較復(fù)雜的情況下無法有效跟蹤目標(biāo)、對跟蹤目標(biāo)和外部環(huán)境的分辨率要求高所以只能進(jìn)行輔助跟蹤、計(jì)算量大無法滿足實(shí)時性要求等問題。本文采用KCF算法設(shè)計(jì),設(shè)計(jì)了基于ROS的移動機(jī)器人視覺跟隨系統(tǒng),利用循環(huán)矩陣在傅里葉空間可對角化的性質(zhì),從而使得矩陣運(yùn)算被轉(zhuǎn)化成元素的點(diǎn)乘,減少了計(jì)算量從而提高了運(yùn)算速度,滿足了算法的實(shí)時性要求。經(jīng)過實(shí)驗(yàn)和數(shù)據(jù)分析,本移動機(jī)器人可以實(shí)時有效的跟隨指定目標(biāo)實(shí)現(xiàn)視覺跟隨功能。
關(guān)鍵詞:?ROS;視覺跟隨;KCF算法;移動機(jī)器人
中圖分類號: TP399????文獻(xiàn)標(biāo)識碼:?A????DOI:10.3969/j.issn.1003-6970.2020.02.005
本文著錄格式:程姜榮,宋芳. 基于ROS的移動機(jī)器人視覺跟隨系統(tǒng)設(shè)計(jì)[J]. 軟件,2020,41(02):23-27+43
【Abstract】: Visual following is an important part in the field of robot, which can be used in many fields such as storage and transportation, security, military and so on. Because the traditional algorithm can not track the target effectively when the background is complex, the resolution of the target and the external environment is high, so it can only do auxiliary tracking, and the computation is too large to meet the real-time requirement. In this paper, a ROS-based mobile robot visual following system is designed by using KCF Algorithm, which makes use of the property that circulant matrix can be diagonalized in Fourier space, so that the matrix operation can be transformed into the dot product of elements the computation is reduced and the computation speed is increased, which can meet the real-time requirement of the algorithm. Through experiments and data analysis, the mobile robot can follow the specified target effectively in real-time to achieve visual follow function.
【Key words】: ROS; Visual following; KCF algorithm; Mobile robot
0??引言
由于互聯(lián)網(wǎng)和人工智能的飛速發(fā)展推動了機(jī)器人技術(shù)的高速發(fā)展[1]。機(jī)器人視覺跟隨技術(shù)作為應(yīng)用非常廣泛且實(shí)用的關(guān)鍵技術(shù)越來越受到重視[2]。機(jī)器人在不斷的對我們的生活方式產(chǎn)生影響,視覺跟蹤機(jī)器人模仿了生物行為,使機(jī)器人可以通過傳感器獲取外界信息通過計(jì)算做出相應(yīng)的判斷使得機(jī)器人更加智能化,使得機(jī)器人可以處理更加復(fù)雜的問題,比如醫(yī)療機(jī)器人、安防機(jī)器人、智能倉儲物
流機(jī)器人等,可以帶來更多的方便。
視覺跟隨機(jī)器人可以采用各種跟蹤算法,一般采用的跟蹤算法有以下幾種,首先是基于區(qū)域的跟蹤算法,這種算法是根據(jù)在圖像中運(yùn)動的物體所引發(fā)的背景變化對物體進(jìn)行跟蹤,這種算法存在的問題是如果當(dāng)背景比較復(fù)雜的情況下無法滿足跟蹤的要求[3]。然后是基于跟蹤目標(biāo)的外部輪廓進(jìn)行跟蹤的算法,這種算法需要對跟蹤的目標(biāo)進(jìn)行邊緣檢測和圖像分割等處理后提取出被跟蹤目標(biāo)的外部輪廓,根據(jù)被跟蹤目標(biāo)物體的外部輪廓進(jìn)行跟蹤[4]。而且該輪廓跟隨物體本身變化進(jìn)行更新,這種算法相對基于區(qū)域的跟蹤算法減少了計(jì)算量[5],但是對跟蹤目標(biāo)和外部環(huán)境的分辨率要求高,所以在實(shí)際的應(yīng)用中只能作為一種輔助的跟蹤算法。此外,還有基于跟蹤目標(biāo)所建立的模型進(jìn)行跟蹤的算法[6],這種算法首先對跟蹤目標(biāo)建立模型,模型的建立是通過對圖像中的數(shù)據(jù)信息在訓(xùn)練階段學(xué)習(xí)后得到的,在建立好跟蹤目標(biāo)的模型以后通過匹配的方式實(shí)現(xiàn)跟蹤,但是由于在圖像的不斷變化與更新過程中需要實(shí)時更新[7],導(dǎo)致計(jì)算量很大所以無法滿足移動機(jī)器人跟蹤目標(biāo)的實(shí)時性需求。
本文設(shè)計(jì)的移動機(jī)器人視覺跟隨系統(tǒng)采用了KCF算法[8],對目標(biāo)跟隨的正負(fù)樣本進(jìn)行處理。該算法對目標(biāo)周圍的區(qū)域采用循環(huán)矩陣去采集,目標(biāo)檢測器的訓(xùn)練采用脊回歸,由于在傅里葉空間可對循環(huán)矩陣進(jìn)行對角化,從而使得矩陣運(yùn)算被轉(zhuǎn)化成元素的點(diǎn)乘[9],大大減少計(jì)算量,從而提高運(yùn)算速度,可滿足實(shí)時性要求。在系統(tǒng)軟件實(shí)現(xiàn)方面,本文采用ROS操作系統(tǒng)開發(fā)移動機(jī)器人。ROS操作系統(tǒng)可對底層設(shè)備的控制和硬件進(jìn)行抽象化處理,同時由于各種開發(fā)中通用的功能被制作成獨(dú)立的功能包模塊,因此在開發(fā)機(jī)器人的過程中可以根據(jù)需要對各個模塊進(jìn)行獨(dú)立開發(fā),不但縮短了開發(fā)周期而且也方便開發(fā)人員對各個模塊進(jìn)行維護(hù)升級[10]。在數(shù)據(jù)采集方面,本文采用Kinect攝像頭,對外部環(huán)境進(jìn)行數(shù)據(jù)采集。Kinect作為一款深度攝像頭不但價(jià)格便宜而且可以在一定范圍內(nèi)獲得比較準(zhǔn)確的數(shù)據(jù),甚至可以替代激光雷達(dá)和超聲波測距[11]。利用采集到數(shù)據(jù),采用KCF算法,經(jīng)過Raspberry Pi 3B+嵌入式計(jì)算機(jī)處理,實(shí)現(xiàn)移動機(jī)器人目標(biāo)跟隨功能。
1??移動機(jī)器人系統(tǒng)
1.1??移動機(jī)器人硬件平臺
對于移動機(jī)器人硬件系統(tǒng)的設(shè)計(jì),分為基于STM32F103底層控制系統(tǒng)、上層嵌入式計(jì)算系統(tǒng)Raspberry Pi 3B+和遠(yuǎn)程的筆記本電腦,保證上層嵌入式系統(tǒng)和遠(yuǎn)程筆記本在同一個局域網(wǎng)中,三者相互通信配合實(shí)現(xiàn)目標(biāo)跟隨功能。其中底層的底盤控制系統(tǒng)主要組成部分有STM32、IMU 、電機(jī)、編碼器等,移動機(jī)器人左右輪的移動速度是通過編碼器來測量,IMU模塊主要作用是采集移動機(jī)器人在三維空間當(dāng)中移動的姿態(tài)、方向和加速度等信息,通過STM32進(jìn)行PID 控制[12],實(shí)現(xiàn)移動器人的精準(zhǔn)移動。移動機(jī)器人實(shí)物圖如圖1所示。
上層的嵌入式計(jì)算系統(tǒng),主要由Raspberry Pi 3+、Kinect 深度攝像頭組成,Raspberry Pi 3+ 搭載主頻為?1.4GHz、內(nèi)含ARM Cortex-A53核心的處理器,配備1G內(nèi)存和多種外設(shè),通過上層嵌入式計(jì)算系統(tǒng)完成外界視頻信息獲取、圖像處理、數(shù)據(jù)處理、運(yùn)動決策實(shí)現(xiàn)視覺跟隨算法、根據(jù)獲取信息發(fā)送跟隨指令,遠(yuǎn)程的筆記電腦主要作用是可以實(shí)現(xiàn)移動機(jī)器人遠(yuǎn)程控制與監(jiān)測[13]。根據(jù)需求設(shè)計(jì)出的硬件整體設(shè)計(jì)結(jié)構(gòu)如圖2所示。
1.2??移動機(jī)器人軟件系統(tǒng)
ROS作為開源的機(jī)器人操作系統(tǒng),可以實(shí)現(xiàn)跨越各種機(jī)器人平臺的分布式網(wǎng)絡(luò),從而簡化了復(fù)雜的任務(wù)[14],降低了機(jī)器人開發(fā)的周期和難度。根據(jù)設(shè)計(jì)需要,由于Kinetic版本的ROS操作系統(tǒng)支持的Ubuntu16.04,所以上層嵌入式計(jì)算系統(tǒng)安裝了UbuntuMate16.04,遠(yuǎn)程的筆記本電腦安裝了Ubuntu16.04。在安裝過ROS后,ROS系統(tǒng)框架創(chuàng)建了一個連接所有進(jìn)程的網(wǎng)絡(luò)。本文首先根據(jù)移動機(jī)器人視覺跟隨功能的具體要求,根據(jù)硬件平臺特點(diǎn),設(shè)計(jì)出移動機(jī)器人視覺跟隨系統(tǒng)節(jié)點(diǎn)框圖,如圖3所示。
ROS是一個基于集中式拓?fù)涞膱D結(jié)構(gòu),可以處理每個節(jié)點(diǎn)與其他節(jié)點(diǎn)之間的通信問題。在ROS系統(tǒng)中的每一個節(jié)點(diǎn)都相當(dāng)于一個進(jìn)程,Kinect攝像頭主要作用是讀取外部視頻信息可以獨(dú)立的作為一個節(jié)點(diǎn)。移動機(jī)器人的底盤作為一個運(yùn)動執(zhí)行器,可根據(jù)系統(tǒng)經(jīng)過處理的數(shù)據(jù),發(fā)布消息控制底盤運(yùn)動,所以也可以作為一個獨(dú)立的節(jié)點(diǎn)進(jìn)行開發(fā)。運(yùn)行在環(huán)境中的KCF視覺算法作為視覺跟蹤節(jié)點(diǎn),每一個節(jié)點(diǎn)可以分開獨(dú)立的設(shè)計(jì),大大降低了開發(fā)難度。不同的節(jié)點(diǎn)之間可以根據(jù)需要采用不同的通信方式,其中最常用的通信方式有兩種,單向消息發(fā)送和接收方式的話題(topic)通信和雙向消息請求和響應(yīng)方式的服務(wù)(service)通信。
2??基于KCF算法的視覺跟隨系統(tǒng)
2.1??KCF算法的原理
KCF算法是一種通過鑒別進(jìn)行跟蹤的算法,一般需要在跟蹤過程中訓(xùn)練出一個對目標(biāo)進(jìn)行分類的檢測器,對于需要追蹤的目標(biāo)通過目標(biāo)分類檢測器進(jìn)行判斷,目標(biāo)分類檢測器的更新是使用新檢測結(jié)果去更新訓(xùn)練集而得到的[15]。首先選取需要跟蹤的目標(biāo)區(qū)域?yàn)檎龢颖?,使用目?biāo)分類檢測器進(jìn)行訓(xùn)練,然后把跟蹤目標(biāo)周圍的區(qū)域作為負(fù)樣本,在越靠近目標(biāo)的區(qū)域的時候?yàn)檎龢颖镜目赡苄跃驮酱?,目?biāo)和背景的區(qū)分是通過訓(xùn)練目標(biāo)檢測器得到的,從而可以得到目標(biāo)位 ?置[16]。
(1)循環(huán)矩陣
一般采用稀疏采樣的方式的傳統(tǒng)檢測目標(biāo)跟蹤算法會導(dǎo)致樣本之間存在冗余,使用KCF 算法可以有效避免這種問題,對于樣本的構(gòu)造是在對跟蹤目標(biāo)區(qū)域附近采用循環(huán)矩陣[17]進(jìn)行循環(huán)位移操作。
2.2??視覺跟隨實(shí)現(xiàn)
由于Kinect攝像頭的RGB圖像大小為像素。本文把RGB圖像的中心橫坐標(biāo)320作為定值。負(fù)反饋與輸出值可以選取目標(biāo)框的中心橫坐標(biāo)值,從而可以形成閉環(huán)控制回路,然后將得到的給定值與反饋值的差值經(jīng)過PD控制后作為旋轉(zhuǎn)角速度,通過訂閱移動機(jī)器人的速度話題獲取速度信息,可實(shí)現(xiàn)移動機(jī)器人左右轉(zhuǎn)向控制。為了實(shí)現(xiàn)對移動機(jī)器人前后運(yùn)動的控制,首先需要提前設(shè)定一個固定值,讓移動機(jī)器人和被跟蹤的目標(biāo)之間保持這個值,(本文設(shè)定這個固定值為1?m)。為了得到跟蹤目標(biāo)和移動機(jī)器人之間實(shí)時的距離信息,需要訂閱深度圖話題上的深度信息,在深度圖中選取與它所對應(yīng)的RGB圖中目標(biāo)框的中心點(diǎn)為中心坐標(biāo),選取中心點(diǎn)為坐標(biāo)點(diǎn)的區(qū)范圍內(nèi)的25個像素,并求出他們的中值。將該值作為跟蹤目標(biāo)與移動機(jī)器人之間的測量距離,將測量值與設(shè)定值的差值經(jīng)過PI控制后,作為移動機(jī)器人前后移動的直線速度,最后將直線速度信息發(fā)布出來,通過訂閱速度話題來控制機(jī)器人前后移動。具體的流程如下:
第一步:首先在系統(tǒng)中訂閱Kinect攝像頭發(fā)布的RGB圖像話題,當(dāng)筆記本屏幕上出現(xiàn)實(shí)時的彩色視頻,然后拖動鼠標(biāo)選擇需要跟蹤的目標(biāo)用矩形框包圍,把選中的矩形框的坐標(biāo)信息與RGB圖像信息發(fā)送給目標(biāo)跟蹤算法進(jìn)行初始化。
第二步:對于接收到的RGB圖像信息采用目標(biāo)跟蹤算法進(jìn)行迭代更新,為了后面步驟的進(jìn)行,需要一個話題將深度圖的深度信息和RGB圖像的目標(biāo)框坐標(biāo)信息和發(fā)布出來。對以后的每一幀RGB圖像重復(fù)執(zhí)行第二步中的操作。
第三步:為了控制移動機(jī)器人的左右轉(zhuǎn)動,需要訂閱第二步中發(fā)布的話題,在第二步發(fā)布的話題中可以獲取到RGB圖像和與它對應(yīng)的目標(biāo)框的坐標(biāo)信息,移動機(jī)器人在獲取到這個信息后控制角速度ω,發(fā)送角速度信息到底盤控制節(jié)點(diǎn),控制底盤的左右移動,使移動機(jī)器人始終對正需要跟蹤的目標(biāo)。
第四步:為了控制移動機(jī)器人的前后移動需要得到深度信息和與之對應(yīng)目標(biāo)框的坐標(biāo)信息,所以訂閱第二步中發(fā)布的話題,通過獲取的信息來控制移動機(jī)器人前后移動的直線移動速度v,保證移動機(jī)器人與跟蹤目標(biāo)的安全距離,保持在1?m左右。
如圖4所示,在視頻中用矩形框選中目標(biāo)后,根據(jù)彩色圖像中目標(biāo)框的坐標(biāo)信息可以控制移動機(jī)器人轉(zhuǎn)動,根據(jù)深度信息可以控制移動機(jī)器人的直線速度,從而可以有效跟蹤選中的目標(biāo),實(shí)現(xiàn)視覺跟隨功能。
3??移動機(jī)器人實(shí)驗(yàn)
移動機(jī)器人跟隨系統(tǒng)由于相機(jī)水平視野小等存在一些難點(diǎn),當(dāng)跟蹤目標(biāo)行走速度過快或者轉(zhuǎn)彎的時候會走出視野[22],從而導(dǎo)致跟蹤的失敗。為了對移動機(jī)器人視覺跟隨系統(tǒng)的效果進(jìn)行驗(yàn)證,設(shè)計(jì)了跟隨實(shí)驗(yàn),實(shí)驗(yàn)示意圖如圖5所示。
在圖5中位置?1 是實(shí)驗(yàn)所用的移動機(jī)器人,被跟蹤的人作為跟蹤目標(biāo)從位置2出發(fā)在34m的區(qū)域內(nèi)以0.5m/s 的平均速度任意走動,實(shí)驗(yàn)設(shè)定的跟蹤安全距離為1m。使用Kinect相機(jī)采集到的RGB圖像和深度圖像的信息,就可以啟動跟蹤節(jié)點(diǎn),由KCF算法對獲取的信息進(jìn)行處理后,發(fā)送控制指令到底盤節(jié)點(diǎn)從而實(shí)現(xiàn)對實(shí)驗(yàn)中的人物的跟蹤,實(shí)驗(yàn)場景圖如圖6所示。
采樣移動機(jī)器人和跟隨目標(biāo)的位置信息,然后計(jì)算跟隨目標(biāo)與移動機(jī)器人運(yùn)動軌跡和跟隨誤差[23],通過數(shù)據(jù)分析得出,本課題設(shè)計(jì)的移動機(jī)器人跟隨誤差在x方向可以控制在17?cm以內(nèi),在y方向可以控制在11?cm以內(nèi)。x方向跟隨誤差如圖7所示,y方向跟隨誤差如圖8所示。
4??結(jié)論
本文通過搭建的基于ROS的移動機(jī)器人平臺,采用KCF跟蹤算法進(jìn)行視覺跟隨實(shí)驗(yàn),記錄實(shí)驗(yàn)現(xiàn)場的移動機(jī)器人和被跟蹤人的位置信息,通過計(jì)算被跟蹤人與移動機(jī)器人的運(yùn)動軌跡誤差后,經(jīng)過實(shí)驗(yàn)分析得出本移動機(jī)器人跟隨誤差在x方向可以控制在17?cm以內(nèi),在y方向可以控制在11?cm以內(nèi),實(shí)驗(yàn)證明本移動機(jī)器人視覺跟隨系統(tǒng)可以準(zhǔn)確快速跟隨選中目標(biāo)達(dá)到預(yù)期目標(biāo)。雖然移動機(jī)器人跟隨系統(tǒng)可以成功跟隨目標(biāo),但由于ROS機(jī)器人操作系統(tǒng)本身也存在一些問題,列如上層嵌入式計(jì)算系統(tǒng)和筆記本電腦需要在同一個局域網(wǎng)下,這是ROS機(jī)器人操作系統(tǒng)的局限性,所以還有改進(jìn)的空間。
參考文獻(xiàn)
牟思. 淺談物聯(lián)網(wǎng)的關(guān)鍵技術(shù)及計(jì)算機(jī)物聯(lián)網(wǎng)的應(yīng)用[J]. 軟件, 2018, 39(6): 189-191.
柴婷婷, 丁言露. 機(jī)器人仿真及其自動化研究進(jìn)展[J]. 制造業(yè)自動化, 2011, 33(12): 87-89.
史心雨. 基于興趣點(diǎn)和形狀特征的動作識別[D]. 南京理工大學(xué), 2011.
陶飛. 基于稀疏表示的視頻目標(biāo)跟蹤算法研究[D]. 湖南大學(xué), 2014.
蔡雄峰, 艾麗華, 丁丁. 一種緩解協(xié)同過濾算法數(shù)據(jù)稀疏性的方法[J]. 軟件, 2015, 36(3): 41-47.
朱文青, 劉艷, 卞樂, 等. 基于生成式模型的目標(biāo)跟蹤方法綜述[J]. 微處理機(jī), 2017, 38(1) : 41-47.
胡雨豪, 劉波. 基于機(jī)器視覺的四軸飛行器自主巡航算法改進(jìn)[J]. 軟件, 2018, 39(2): 52-56.
Henriques J F, Rui C, Martins P, et al. High-SpeedTracking with Kernelized Correlation Filters [J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015, 37(37)3): 583-596.
謝濤, 吳恩斯. 一種魯棒的基于集成學(xué)習(xí)的核相關(guān)紅外目標(biāo)跟蹤算法[J]. 電子與信息學(xué)報(bào), 2018, 40(03): 602-609.
何洋. 基于最大熵多移動機(jī)器人氣味源定位[D]. 杭州電子科技大學(xué), 2015.
賀超, 劉華平, 孫富春, 等. 采用kinect的移動機(jī)器人目標(biāo)跟隨與避障[J]. 智能系統(tǒng)學(xué)報(bào), 2013, 8(5): 426-432.
胡安琪. PID 控制在地面輪式機(jī)器人中的運(yùn)用?[J]. ?河北電力技術(shù), 2018, 37(05): 62-66.
岳立言, 歐陽昇, 翟寶蓉. 嵌入式Linux遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與開發(fā)[J]. 軟件, 2018, 39(6): 20-22.
黃武陵. 基于ROS構(gòu)建無人駕駛車輛環(huán)境感知系統(tǒng)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2016, 16(11): 5-9.
張禮雄, 張忠林. 視頻中多目標(biāo)車輛的檢測與跟蹤方法研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2018, 28(07): 125-129.
宗偉偉. 基于PTZ攝像機(jī)的運(yùn)動目標(biāo)跟蹤算法研究與實(shí)現(xiàn)[D]. 東北大學(xué), 2011.
邵博, 熊惠霖, 郁文賢. 基于核相關(guān)濾波器的無人機(jī)目標(biāo)跟蹤算法[J]. 信息技術(shù), 2017(11): 150-156.
余禮楊, 范春曉, 明悅. 改進(jìn)的核相關(guān)濾波器目標(biāo)跟蹤算法[J]. 計(jì)算機(jī)應(yīng)用, 2015, 35(12): 3550-3554.
楊德東, 蔡玉柱, 毛寧, 楊福才. 采用核相關(guān)濾波器的長期目標(biāo)跟蹤[J]. 光學(xué)精密工程, 2016, 24(08): 2037-2049.
常芳, 尚振宏, 劉輝, 李潤鑫. 一種基于顏色特征的自適應(yīng)目標(biāo)跟蹤算法[J]. 信息技術(shù), 2018(03): 10-14.
楊德東, 蔡玉柱, 毛寧, 楊福才. 采用核相關(guān)濾波器的長期目標(biāo)跟蹤[J]. 光學(xué)精密工程, 2016, 24(08): 2037-2049.
姜雪原. 基于動態(tài)規(guī)劃算法的軌跡地圖匹配軟件設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2015, 36(5): 108-112.
李慧霞, 高梓豪. 室內(nèi)智能移動機(jī)器人規(guī)則物體識別與抓取[J]. 軟件, 2016, 37(02): 89-92.