程姜榮 宋芳



摘 ?要: 視覺跟隨是機器人領域中一個比較重要的部分,可以應用在倉儲搬運、安防、軍事等多種領域。由于傳統算法存在當背景比較復雜的情況下無法有效跟蹤目標、對跟蹤目標和外部環境的分辨率要求高所以只能進行輔助跟蹤、計算量大無法滿足實時性要求等問題。本文采用KCF算法設計,設計了基于ROS的移動機器人視覺跟隨系統,利用循環矩陣在傅里葉空間可對角化的性質,從而使得矩陣運算被轉化成元素的點乘,減少了計算量從而提高了運算速度,滿足了算法的實時性要求。經過實驗和數據分析,本移動機器人可以實時有效的跟隨指定目標實現視覺跟隨功能。
關鍵詞:?ROS;視覺跟隨;KCF算法;移動機器人
中圖分類號: TP399????文獻標識碼:?A????DOI:10.3969/j.issn.1003-6970.2020.02.005
本文著錄格式:程姜榮,宋芳. 基于ROS的移動機器人視覺跟隨系統設計[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??引言
由于互聯網和人工智能的飛速發展推動了機器人技術的高速發展[1]。機器人視覺跟隨技術作為應用非常廣泛且實用的關鍵技術越來越受到重視[2]。機器人在不斷的對我們的生活方式產生影響,視覺跟蹤機器人模仿了生物行為,使機器人可以通過傳感器獲取外界信息通過計算做出相應的判斷使得機器人更加智能化,使得機器人可以處理更加復雜的問題,比如醫療機器人、安防機器人、智能倉儲物
流機器人等,可以帶來更多的方便。
視覺跟隨機器人可以采用各種跟蹤算法,一般采用的跟蹤算法有以下幾種,首先是基于區域的跟蹤算法,這種算法是根據在圖像中運動的物體所引發的背景變化對物體進行跟蹤,這種算法存在的問題是如果當背景比較復雜的情況下無法滿足跟蹤的要求[3]。然后是基于跟蹤目標的外部輪廓進行跟蹤的算法,這種算法需要對跟蹤的目標進行邊緣檢測和圖像分割等處理后提取出被跟蹤目標的外部輪廓,根據被跟蹤目標物體的外部輪廓進行跟蹤[4]。而且該輪廓跟隨物體本身變化進行更新,這種算法相對基于區域的跟蹤算法減少了計算量[5],但是對跟蹤目標和外部環境的分辨率要求高,所以在實際的應用中只能作為一種輔助的跟蹤算法。此外,還有基于跟蹤目標所建立的模型進行跟蹤的算法[6],這種算法首先對跟蹤目標建立模型,模型的建立是通過對圖像中的數據信息在訓練階段學習后得到的,在建立好跟蹤目標的模型以后通過匹配的方式實現跟蹤,但是由于在圖像的不斷變化與更新過程中需要實時更新[7],導致計算量很大所以無法滿足移動機器人跟蹤目標的實時性需求。
本文設計的移動機器人視覺跟隨系統采用了KCF算法[8],對目標跟隨的正負樣本進行處理。該算法對目標周圍的區域采用循環矩陣去采集,目標檢測器的訓練采用脊回歸,由于在傅里葉空間可對循環矩陣進行對角化,從而使得矩陣運算被轉化成元素的點乘[9],大大減少計算量,從而提高運算速度,可滿足實時性要求。在系統軟件實現方面,本文采用ROS操作系統開發移動機器人。ROS操作系統可對底層設備的控制和硬件進行抽象化處理,同時由于各種開發中通用的功能被制作成獨立的功能包模塊,因此在開發機器人的過程中可以根據需要對各個模塊進行獨立開發,不但縮短了開發周期而且也方便開發人員對各個模塊進行維護升級[10]。在數據采集方面,本文采用Kinect攝像頭,對外部環境進行數據采集。Kinect作為一款深度攝像頭不但價格便宜而且可以在一定范圍內獲得比較準確的數據,甚至可以替代激光雷達和超聲波測距[11]。利用采集到數據,采用KCF算法,經過Raspberry Pi 3B+嵌入式計算機處理,實現移動機器人目標跟隨功能。
1??移動機器人系統
1.1??移動機器人硬件平臺
對于移動機器人硬件系統的設計,分為基于STM32F103底層控制系統、上層嵌入式計算系統Raspberry Pi 3B+和遠程的筆記本電腦,保證上層嵌入式系統和遠程筆記本在同一個局域網中,三者相互通信配合實現目標跟隨功能。其中底層的底盤控制系統主要組成部分有STM32、IMU 、電機、編碼器等,移動機器人左右輪的移動速度是通過編碼器來測量,IMU模塊主要作用是采集移動機器人在三維空間當中移動的姿態、方向和加速度等信息,通過STM32進行PID 控制[12],實現移動器人的精準移動。移動機器人實物圖如圖1所示。
上層的嵌入式計算系統,主要由Raspberry Pi 3+、Kinect 深度攝像頭組成,Raspberry Pi 3+ 搭載主頻為?1.4GHz、內含ARM Cortex-A53核心的處理器,配備1G內存和多種外設,通過上層嵌入式計算系統完成外界視頻信息獲取、圖像處理、數據處理、運動決策實現視覺跟隨算法、根據獲取信息發送跟隨指令,遠程的筆記電腦主要作用是可以實現移動機器人遠程控制與監測[13]。根據需求設計出的硬件整體設計結構如圖2所示。
1.2??移動機器人軟件系統
ROS作為開源的機器人操作系統,可以實現跨越各種機器人平臺的分布式網絡,從而簡化了復雜的任務[14],降低了機器人開發的周期和難度。根據設計需要,由于Kinetic版本的ROS操作系統支持的Ubuntu16.04,所以上層嵌入式計算系統安裝了UbuntuMate16.04,遠程的筆記本電腦安裝了Ubuntu16.04。在安裝過ROS后,ROS系統框架創建了一個連接所有進程的網絡。本文首先根據移動機器人視覺跟隨功能的具體要求,根據硬件平臺特點,設計出移動機器人視覺跟隨系統節點框圖,如圖3所示。
ROS是一個基于集中式拓撲的圖結構,可以處理每個節點與其他節點之間的通信問題。在ROS系統中的每一個節點都相當于一個進程,Kinect攝像頭主要作用是讀取外部視頻信息可以獨立的作為一個節點。移動機器人的底盤作為一個運動執行器,可根據系統經過處理的數據,發布消息控制底盤運動,所以也可以作為一個獨立的節點進行開發。運行在環境中的KCF視覺算法作為視覺跟蹤節點,每一個節點可以分開獨立的設計,大大降低了開發難度。不同的節點之間可以根據需要采用不同的通信方式,其中最常用的通信方式有兩種,單向消息發送和接收方式的話題(topic)通信和雙向消息請求和響應方式的服務(service)通信。
2??基于KCF算法的視覺跟隨系統
2.1??KCF算法的原理
KCF算法是一種通過鑒別進行跟蹤的算法,一般需要在跟蹤過程中訓練出一個對目標進行分類的檢測器,對于需要追蹤的目標通過目標分類檢測器進行判斷,目標分類檢測器的更新是使用新檢測結果去更新訓練集而得到的[15]。首先選取需要跟蹤的目標區域為正樣本,使用目標分類檢測器進行訓練,然后把跟蹤目標周圍的區域作為負樣本,在越靠近目標的區域的時候為正樣本的可能性就越大,目標和背景的區分是通過訓練目標檢測器得到的,從而可以得到目標位 ?置[16]。
(1)循環矩陣
一般采用稀疏采樣的方式的傳統檢測目標跟蹤算法會導致樣本之間存在冗余,使用KCF 算法可以有效避免這種問題,對于樣本的構造是在對跟蹤目標區域附近采用循環矩陣[17]進行循環位移操作。
2.2??視覺跟隨實現
由于Kinect攝像頭的RGB圖像大小為
像素。本文把RGB圖像的中心橫坐標320作為定值。負反饋與輸出值可以選取目標框的中心橫坐標值,從而可以形成閉環控制回路,然后將得到的給定值與反饋值的差值經過PD控制后作為旋轉角速度,通過訂閱移動機器人的速度話題獲取速度信息,可實現移動機器人左右轉向控制。為了實現對移動機器人前后運動的控制,首先需要提前設定一個固定值,讓移動機器人和被跟蹤的目標之間保持這個值,(本文設定這個固定值為1?m)。為了得到跟蹤目標和移動機器人之間實時的距離信息,需要訂閱深度圖話題上的深度信息,在深度圖中選取與它所對應的RGB圖中目標框的中心點為中心坐標,選取中心點為坐標點的
區范圍內的25個像素,并求出他們的中值。將該值作為跟蹤目標與移動機器人之間的測量距離,將測量值與設定值的差值經過PI控制后,作為移動機器人前后移動的直線速度,最后將直線速度信息發布出來,通過訂閱速度話題來控制機器人前后移動。具體的流程如下:
第一步:首先在系統中訂閱Kinect攝像頭發布的RGB圖像話題,當筆記本屏幕上出現實時的彩色視頻,然后拖動鼠標選擇需要跟蹤的目標用矩形框包圍,把選中的矩形框的坐標信息與RGB圖像信息發送給目標跟蹤算法進行初始化。
第二步:對于接收到的RGB圖像信息采用目標跟蹤算法進行迭代更新,為了后面步驟的進行,需要一個話題將深度圖的深度信息和RGB圖像的目標框坐標信息和發布出來。對以后的每一幀RGB圖像重復執行第二步中的操作。
第三步:為了控制移動機器人的左右轉動,需要訂閱第二步中發布的話題,在第二步發布的話題中可以獲取到RGB圖像和與它對應的目標框的坐標信息,移動機器人在獲取到這個信息后控制角速度ω,發送角速度信息到底盤控制節點,控制底盤的左右移動,使移動機器人始終對正需要跟蹤的目標。
第四步:為了控制移動機器人的前后移動需要得到深度信息和與之對應目標框的坐標信息,所以訂閱第二步中發布的話題,通過獲取的信息來控制移動機器人前后移動的直線移動速度v,保證移動機器人與跟蹤目標的安全距離,保持在1?m左右。
如圖4所示,在視頻中用矩形框選中目標后,根據彩色圖像中目標框的坐標信息可以控制移動機器人轉動,根據深度信息可以控制移動機器人的直線速度,從而可以有效跟蹤選中的目標,實現視覺跟隨功能。
3??移動機器人實驗
移動機器人跟隨系統由于相機水平視野小等存在一些難點,當跟蹤目標行走速度過快或者轉彎的時候會走出視野[22],從而導致跟蹤的失敗。為了對移動機器人視覺跟隨系統的效果進行驗證,設計了跟隨實驗,實驗示意圖如圖5所示。
在圖5中位置?1 是實驗所用的移動機器人,被跟蹤的人作為跟蹤目標從位置2出發在3
4m的區域內以0.5m/s 的平均速度任意走動,實驗設定的跟蹤安全距離為1m。使用Kinect相機采集到的RGB圖像和深度圖像的信息,就可以啟動跟蹤節點,由KCF算法對獲取的信息進行處理后,發送控制指令到底盤節點從而實現對實驗中的人物的跟蹤,實驗場景圖如圖6所示。
采樣移動機器人和跟隨目標的位置信息,然后計算跟隨目標與移動機器人運動軌跡和跟隨誤差[23],通過數據分析得出,本課題設計的移動機器人跟隨誤差在x方向可以控制在17?cm以內,在y方向可以控制在11?cm以內。x方向跟隨誤差如圖7所示,y方向跟隨誤差如圖8所示。
4??結論
本文通過搭建的基于ROS的移動機器人平臺,采用KCF跟蹤算法進行視覺跟隨實驗,記錄實驗現場的移動機器人和被跟蹤人的位置信息,通過計算被跟蹤人與移動機器人的運動軌跡誤差后,經過實驗分析得出本移動機器人跟隨誤差在x方向可以控制在17?cm以內,在y方向可以控制在11?cm以內,實驗證明本移動機器人視覺跟隨系統可以準確快速跟隨選中目標達到預期目標。雖然移動機器人跟隨系統可以成功跟隨目標,但由于ROS機器人操作系統本身也存在一些問題,列如上層嵌入式計算系統和筆記本電腦需要在同一個局域網下,這是ROS機器人操作系統的局限性,所以還有改進的空間。
參考文獻
牟思. 淺談物聯網的關鍵技術及計算機物聯網的應用[J]. 軟件, 2018, 39(6): 189-191.
柴婷婷, 丁言露. 機器人仿真及其自動化研究進展[J]. 制造業自動化, 2011, 33(12): 87-89.
史心雨. 基于興趣點和形狀特征的動作識別[D]. 南京理工大學, 2011.
陶飛. 基于稀疏表示的視頻目標跟蹤算法研究[D]. 湖南大學, 2014.
蔡雄峰, 艾麗華, 丁丁. 一種緩解協同過濾算法數據稀疏性的方法[J]. 軟件, 2015, 36(3): 41-47.
朱文青, 劉艷, 卞樂, 等. 基于生成式模型的目標跟蹤方法綜述[J]. 微處理機, 2017, 38(1) : 41-47.
胡雨豪, 劉波. 基于機器視覺的四軸飛行器自主巡航算法改進[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.
謝濤, 吳恩斯. 一種魯棒的基于集成學習的核相關紅外目標跟蹤算法[J]. 電子與信息學報, 2018, 40(03): 602-609.
何洋. 基于最大熵多移動機器人氣味源定位[D]. 杭州電子科技大學, 2015.
賀超, 劉華平, 孫富春, 等. 采用kinect的移動機器人目標跟隨與避障[J]. 智能系統學報, 2013, 8(5): 426-432.
胡安琪. PID 控制在地面輪式機器人中的運用?[J]. ?河北電力技術, 2018, 37(05): 62-66.
岳立言, 歐陽昇, 翟寶蓉. 嵌入式Linux遠程監控系統的設計與開發[J]. 軟件, 2018, 39(6): 20-22.
黃武陵. 基于ROS構建無人駕駛車輛環境感知系統[J]. 單片機與嵌入式系統應用, 2016, 16(11): 5-9.
張禮雄, 張忠林. 視頻中多目標車輛的檢測與跟蹤方法研究[J]. 計算機技術與發展, 2018, 28(07): 125-129.
宗偉偉. 基于PTZ攝像機的運動目標跟蹤算法研究與實現[D]. 東北大學, 2011.
邵博, 熊惠霖, 郁文賢. 基于核相關濾波器的無人機目標跟蹤算法[J]. 信息技術, 2017(11): 150-156.
余禮楊, 范春曉, 明悅. 改進的核相關濾波器目標跟蹤算法[J]. 計算機應用, 2015, 35(12): 3550-3554.
楊德東, 蔡玉柱, 毛寧, 楊福才. 采用核相關濾波器的長期目標跟蹤[J]. 光學精密工程, 2016, 24(08): 2037-2049.
常芳, 尚振宏, 劉輝, 李潤鑫. 一種基于顏色特征的自適應目標跟蹤算法[J]. 信息技術, 2018(03): 10-14.
楊德東, 蔡玉柱, 毛寧, 楊福才. 采用核相關濾波器的長期目標跟蹤[J]. 光學精密工程, 2016, 24(08): 2037-2049.
姜雪原. 基于動態規劃算法的軌跡地圖匹配軟件設計與實現[J]. 軟件, 2015, 36(5): 108-112.
李慧霞, 高梓豪. 室內智能移動機器人規則物體識別與抓取[J]. 軟件, 2016, 37(02): 89-92.