周旭華 伍懿美 賴?yán)碇? 黃宇俊
【摘? 要】本文主要設(shè)計(jì)一款利用深度攝像頭搭配KCF算法實(shí)現(xiàn)對指定目標(biāo)跟隨的四驅(qū)小車。小車以Jetson Nano為核心控制器、Arduino驅(qū)動板為輔控制器、深度攝像頭為主要傳感器、ROS為控制系統(tǒng),采取KCF算法對圖像進(jìn)行分析處理。經(jīng)過反復(fù)測試,小車能平穩(wěn)順暢地跟隨指定目標(biāo),同時深度攝像頭也采集出具有清晰鮮艷并且對比度高的環(huán)境信息。
【關(guān)鍵詞】KCF算法;目標(biāo)跟隨;四驅(qū)小車;ROS系統(tǒng)
中圖分類號:U463.63? ? 文獻(xiàn)標(biāo)志碼:A? ? 文章編號:1003-8639( 2023 )05-0027-03
【Abstract】A Four-wheel drive car is designed that uses a depth camera and KCF algorithm to follow a specified target. The car uses Jetson Nano as the core controller,Arduino driver board as the auxiliary controller,the depth camera as the main sensor,the ROS system as the control system,and the KCF algorithm is used to analyze and process the image. After repeated tests,the car can follow the designated target smoothly and smoothly,and the depth camera collects clear,vivid and high-contrast environmental information.
【Key words】KCF algorithm;target following;4WD car;ROS system
作者簡介
伍懿美(1985—),碩士,主要研究方向?yàn)槿斯ぶ悄?、樓宇智能化(通訊作者)?/p>
隨著汽車數(shù)量的不斷增加和科技的飛速發(fā)展,汽車行業(yè)迎來了自動駕駛的熱潮。中國政府對自動駕駛技術(shù)的支持力度也是非常大的,《中國制造2025》明確指出,中國要在2025年掌握自動駕駛的總體技術(shù)以及各項(xiàng)關(guān)鍵技術(shù),建立起比較完善的智能網(wǎng)聯(lián)汽車自主研發(fā)體系、生產(chǎn)配套體系以及產(chǎn)業(yè)群,要基本完成汽車產(chǎn)業(yè)的轉(zhuǎn)型升級。在政策和市場的共同作用下,中國的自動駕駛技術(shù)得到了迅猛發(fā)展。自動駕駛汽車是指能夠通過車載傳感器感知道路環(huán)境、自動規(guī)劃行車路線并控制車輛到達(dá)預(yù)定目標(biāo)的一種智能汽車。本文主要通過研究深度攝像頭所采集的數(shù)據(jù)包括深度信息也就是距離的感知,把深度信息和圖像信息傳送到ROS上利用算法分析處理,實(shí)現(xiàn)對目標(biāo)保持一定距離的跟隨[1]。
1? 自動跟隨四驅(qū)小車的總體設(shè)計(jì)
本文設(shè)計(jì)的自動跟隨四驅(qū)小車以Jetson Nano為核心控制器、Arduino驅(qū)動板為輔控制器、深度攝像頭為主要傳感器,以ROS為控制系統(tǒng),采取KCF算法對圖像進(jìn)行分析處理,其主要工作原理是將深度攝像頭采集到的深度信息和圖像數(shù)據(jù)通過ROS系統(tǒng)進(jìn)行匯集并通過KCF算法分析處理,然后信號傳輸?shù)诫姍C(jī)驅(qū)動板上來控制4個電機(jī)以不同的轉(zhuǎn)速旋轉(zhuǎn),讓小車?yán)棉D(zhuǎn)速差進(jìn)行直走、轉(zhuǎn)向動作,最終實(shí)現(xiàn)智能四驅(qū)小車保持一定距離跟隨目標(biāo)[2-3]。
四驅(qū)小車的設(shè)計(jì)主要分為硬件設(shè)計(jì)和軟件設(shè)計(jì)。硬件設(shè)計(jì)主要包括硬件電路的設(shè)計(jì)、硬件的選擇、硬件的搭建和調(diào)試,硬件電路包括Jetson Nano與深度攝像頭和Arduino 2560控制板的連接、Arduino 2560控制板與電機(jī)驅(qū)動板和編碼器的連接、電機(jī)驅(qū)動板和電機(jī)的連接;軟件設(shè)計(jì)包括Ubuntu 18.04系統(tǒng)和ROS系統(tǒng)的下載和安裝、KCF算法的使用和適配、四驅(qū)底盤控制程序等,系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
2? 硬件設(shè)計(jì)
2.1? 硬件結(jié)構(gòu)設(shè)計(jì)
KCF跟隨的智能四驅(qū)小車的硬件設(shè)計(jì)包括Jetson Nano、深度攝像頭、Arduino 2560控制板、降壓穩(wěn)壓模塊、24V鋰電池、雙路直流電機(jī)驅(qū)動板、擴(kuò)展板和光電編碼器電機(jī)等,系統(tǒng)的硬件設(shè)計(jì)框圖如圖2所示。
2.2? 硬件電路設(shè)計(jì)
硬件部分包括電源模塊設(shè)計(jì)、下位機(jī)外圍電路模塊、深度攝像頭信息采集模塊、電機(jī)驅(qū)動模塊、上位機(jī)及操作系統(tǒng)、下位機(jī)-底盤控制模塊等。
2.2.1? 電源模塊的設(shè)計(jì)
電源模塊是整個硬件系統(tǒng)的核心,決定了小車能不能穩(wěn)定地工作。智能小車硬件模塊電壓需求情況見表1。由于每個硬件系統(tǒng)的電壓需求不一樣,使用壓降穩(wěn)壓模塊使電源模塊可以給使用低電壓的硬件供電。為了滿足各個硬件系統(tǒng)的用電要求,采用規(guī)格為24V、20000mAh的鋰離子充電電池。在使用時,給電池充滿電時電壓能達(dá)到24V。電池直接向電機(jī)驅(qū)動板供電,下位機(jī)Arduino 2560和攝像頭通過USB線與Jeston Nano連接,實(shí)現(xiàn)硬件之間的通信并且間接給Arduino板和深度攝像頭供電。上位機(jī)Jeston Nano的工作電壓為5V,因此在給Jeston Nano供電時必須先通過降壓模塊把電壓降至5V。電源與各模塊的連接如圖3所示。
2.2.2? 下位機(jī)外圍電路模塊
下位機(jī)Arduino 2560接收到Jeston Nano傳輸來的指令后向電機(jī)驅(qū)動板發(fā)送信號,電機(jī)驅(qū)動板可通過下位機(jī)Arduino 2560上的PWM端口單獨(dú)控制左右電機(jī)的速度。電機(jī)驅(qū)動板的IN1、IN2和ENA1控制左電機(jī)的正反轉(zhuǎn)和速度,IN3、IN4和ENA2控制右電機(jī)的正反轉(zhuǎn)和速度。下位機(jī)外圍電路模塊連接示意圖如圖4所示。
電機(jī)編碼器與下位機(jī)Arduino 2560連接,可以測量電機(jī)的速度并調(diào)整,還能讓電機(jī)更迅速達(dá)到目標(biāo)速度。下位機(jī)Arduino 2560與編碼器的連接如圖5所示。
2.2.3? 深度攝像頭信息采集模塊
深度攝像頭信息采集模塊采用的是奧比中光的Astra Pro深度攝像頭,它包含彩色攝像頭(RGB)、紅外相機(jī)(IR Camera)、紅外投影儀(LDM)、深度計(jì)算處理器(Depth Processor)、麥克風(fēng)拾音(MIC)、激光保護(hù)裝置(LDP)、USB2.0。此模塊的深度范圍為0.6~8m,彩色圖分辨率為1280×720,深度圖分辨率為1280×1024。采用Class 1激光,供電方式USB。其功耗2.5W MAX,峰值電流小于500mA。深度攝像頭特點(diǎn)在于除了能夠獲取平面圖像以外,還可以獲得拍攝對象的深度信息(Z軸),即位置和距離信息。深度攝像頭實(shí)時獲取環(huán)境物體深度信息、三維尺寸以及空間信息,為跟隨的KCF算法提供了足夠和穩(wěn)定的數(shù)據(jù)。此模塊通過深度攝像頭采集深度信息和圖像信息經(jīng)USB串口反饋到Jeston Nano上。
2.2.4? 電機(jī)驅(qū)動模塊
電機(jī)驅(qū)動采用雙路直流電機(jī)驅(qū)動板,可同時驅(qū)動2臺直流電機(jī),單路有7A大功率,光耦隔離輸入信號,帶有欠壓保護(hù),穩(wěn)定可靠。驅(qū)動板上的+5V引腳可以接5V或者3.3V,為信號端提供電源,ENA1和ENA2為電機(jī)使能端,可接Arduino驅(qū)動板上的PWM來調(diào)節(jié)電機(jī)的轉(zhuǎn)速,IN1、IN2、IN3、IN4可控制電機(jī)的正反轉(zhuǎn)和制動,見表2。
2.2.5? 上位機(jī)及操作系統(tǒng)
自主跟隨的四驅(qū)小車的上位機(jī)選用Jeston Nano,是一臺新一代且只有盒子大小的微型計(jì)算機(jī),采用4核64位ARM CPU和128核集成NVIDIA GPU,可提供472 GFLOPS的計(jì)算性能,并在其上安裝運(yùn)行了Ubuntu 18.04操作系統(tǒng)和ROS[1]。Jeston Nano主要負(fù)責(zé)接收深度攝像頭傳輸來的信息,然后再利用KCF算法分析處理,將KCF算法分析處理的結(jié)果,即小車的行進(jìn)方向等指令信息下發(fā)給下位機(jī)Arduino 2560。
2.2.6? 下位機(jī)-底盤控制模塊
底盤的控制平臺采用Arduino 2560為核心,Arduino 2560內(nèi)置了54路數(shù)字輸入/輸出口(其中15路可作為PWM輸出),15路模擬輸入,4路UART接口,支持USART和其他通信模式,適合需要大量IO接口的設(shè)計(jì)。處理器核心是ATmega 2560,一個16MHz晶體振蕩器。Arduino 2560通過USB線與Jeston Nano連接,接收J(rèn)eston Nano傳來的指令,以此發(fā)給與電機(jī)驅(qū)動板相連接的端口信號,帶動電機(jī)驅(qū)動。
3? 軟件設(shè)計(jì)
軟件系統(tǒng)主要有KCF算法處理和運(yùn)動控制層兩部分。軟件整體設(shè)計(jì)流程如圖6所示。
3.1? KCF算法處理
KCF是一種鑒別式追蹤方法,在追蹤過程中訓(xùn)練一個目標(biāo)檢測器,使用目標(biāo)檢測器去檢測下一幀預(yù)測位置是否是目標(biāo),然后再使用新檢測結(jié)果去更新訓(xùn)練集,進(jìn)而更新目標(biāo)檢測器,而在訓(xùn)練目標(biāo)檢測器時,一般選取目標(biāo)區(qū)域?yàn)檎龢颖?,目?biāo)的周圍區(qū)域?yàn)樨?fù)樣本,當(dāng)然越靠近目標(biāo)的區(qū)域?yàn)檎龢颖镜目赡苄栽酱?。算法中使用輪轉(zhuǎn)矩陣對樣本進(jìn)行采集,把圖像向上、向下分別移動不同的像素得到新的樣本圖像,這就是循環(huán)之后的樣本,直接增加了樣本的數(shù)量,然后用這些樣本去訓(xùn)練一個判別分類器,判斷跟蹤到的是目標(biāo)還是周圍的背景信息,并且通過離散傅里葉變換的推導(dǎo),通過對下位機(jī)下發(fā)移動指令從而實(shí)現(xiàn)對指定目標(biāo)跟隨[4-5]。KCF算法部分源代碼如圖7所示。
3.2? 運(yùn)動控制層
運(yùn)動控制層主要包括底盤控制程序。底盤控制程序采用ROS_arduino_bridge功能包,負(fù)責(zé)Arduino與上位機(jī)ROS系統(tǒng)的通信,將上位機(jī)發(fā)布的速度話題解析成小車底盤左右輪的速度和轉(zhuǎn)向,同時將小車底盤的里程計(jì)信息收集,并通過話題發(fā)布,供上位機(jī)中傳感器融合節(jié)點(diǎn)使用,進(jìn)而實(shí)現(xiàn)小車自身位置的定位。控制部分源程序部分源代碼如圖8所示。
4? 測試
測試時,將小車放在測試場地上,測試小車如圖9所示。運(yùn)行KCF跟隨功能,然后框選需要跟隨的目標(biāo),移動目標(biāo),觀察小車的跟隨情況。在目標(biāo)直線前后勻速移動時可以很好地跟隨,距離保持在設(shè)定的范圍內(nèi)。目標(biāo)在橫向移動時出現(xiàn)小車跟丟目標(biāo)的情況,經(jīng)過多次調(diào)整目標(biāo)的移動速度,對比發(fā)現(xiàn)小車的角速度滿足不了目標(biāo)橫向移動時的跟隨要求,通過調(diào)整KCF算法下發(fā)給下位機(jī)跟隨目標(biāo)的角速度,對于跟隨橫向移動的目標(biāo)時,目標(biāo)丟失率大大降低。
5? 結(jié)論
本文設(shè)計(jì)了一個利用深度攝像頭搭配KCF算法實(shí)現(xiàn)對指定目標(biāo)跟隨的四驅(qū)小車。小車以Jetson Nano為上位機(jī)控制器,Arduino控制板作為下位機(jī)控制器,深度攝像頭為主要傳感器,以ROS為控制系統(tǒng),采取KCF算法對圖像進(jìn)行分析處理。經(jīng)過調(diào)試,該自動跟隨四驅(qū)小車能夠較為準(zhǔn)確地跟隨目標(biāo)行走。
參考文獻(xiàn):
[1] 金志熙,王宏遠(yuǎn),勾尤旭,等. 基于ROS目標(biāo)跟蹤移動機(jī)器人設(shè)計(jì)與實(shí)驗(yàn)[J]. 電腦知識與技術(shù),2021,17(2):1-3.
[2] 杜玉紅,劉賢超,劉大維,等. 基于高置信度更新KCF的移動機(jī)器人行人跟隨[J]. 天津工業(yè)大學(xué)學(xué)報(bào),2020,39(5):67-74.
[3] 戴浩. 一種基于ROS的室內(nèi)跟隨機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)[D]. 西安:西京學(xué)院,2020.
[4] 程姜榮,宋芳. 基于ROS的移動機(jī)器人視覺跟隨系統(tǒng)設(shè)計(jì)[J]. 軟件,2020,41(2):23-27,43.
[5] 陳丹,姚伯羽,吳欣. 基于ROS的移動機(jī)器人核相關(guān)目標(biāo)跟蹤方法的優(yōu)化設(shè)計(jì)[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2020,32(12):1967-1975.
(編輯? 凌? 波)