程瀟雅 李 祿 李 萱 白雪雪 王指南
(西安科技大學(xué)自動化 陜西西安 710600)
1.系統(tǒng)框圖
圖1-1 系統(tǒng)框圖
基于Kmeans算法的自動打靶系統(tǒng)主要由攝像頭OV7725、STM32F407ZGT6、舵機、激光筆構(gòu)成。該系統(tǒng)建立直角坐標(biāo)系,舵機分為X軸和Y軸方向。攝像頭和激光筆安裝在舵機上,兩者同軸,皆隨舵機的轉(zhuǎn)動而轉(zhuǎn)動。采用激光筆紅點坐標(biāo)固定、靶面坐標(biāo)活動的方式,經(jīng)攝像頭圖像采集、控制器數(shù)據(jù)處理后,得到目標(biāo)和靶面的坐標(biāo)差,從而控制激光筆打向目標(biāo)中心點。[1]
采用180度旋轉(zhuǎn)舵機控制導(dǎo)軌的轉(zhuǎn)動。舵機為隨動系統(tǒng),轉(zhuǎn)動時可以外接較大的負(fù)載,輸出扭矩大,而且抗抖動性很好。180度旋轉(zhuǎn)舵機內(nèi)置驅(qū)動電路,用單片機輸出的信號可以直接驅(qū)動,接線方便,可以用PWM波占空比直接控制舵機旋轉(zhuǎn)角度,達到打靶角度控制目的。[2]
采用Kmeans聚類算法,理解容易,數(shù)據(jù)處理簡單。去噪效果好,可有效剔除離散式坐標(biāo),只取有效聚集坐標(biāo)。處理大數(shù)據(jù)集時,可保證較好的伸縮性和高效性。
1.打靶控制系統(tǒng)分析
自動打靶系統(tǒng)是一個多變量、非線性控制的控制系統(tǒng)。在顏色識別中,攝像頭噪聲會導(dǎo)致顏色誤判,普通加權(quán)平均得到的坐標(biāo)受噪聲影響和實際坐標(biāo)誤差較大,去噪成為顏色識別關(guān)鍵點之一。攝像頭將像素點RGB值傳遞給控制器轉(zhuǎn)化為HSL格式后,采用Kmeans聚類算法,可消除噪聲或離散點的干擾,篩選并聚集靶子坐標(biāo),精確地確定靶子的中心坐標(biāo)。具體算法步驟如下:
(1)隨機選取訓(xùn)練數(shù)據(jù)中的K個中心點。
(2)當(dāng)k值選定后,隨機計算n次,取得到最小函數(shù)值的k作為最終聚類結(jié)果,避免隨機引起的局部最優(yōu)解。
(3)繪制出k--顏色坐標(biāo)閃點圖,看到有明顯拐點(如下)的地方,設(shè)為k值,可以結(jié)合輪廓系數(shù)。
(4)重復(fù)2-3,直到這k個中線點不再變化(收斂了),或執(zhí)行了足夠多的迭代。由此得到靶子中心的坐標(biāo)。
而對于打靶控制系統(tǒng)來講,由于距離較遠,每一微小角度的改變,都會引起坐標(biāo)位置較大的改變,且呈非線性改變。所以在控制器設(shè)計中,引入PID反饋控制,使得控制能更加精確。
系統(tǒng)采用C語言編程實現(xiàn)各項功能。C語言本身帶有各種庫函數(shù),運算能力較強,本系統(tǒng)的軟件中算數(shù)運算比較多,利用C語言編程可以體現(xiàn)出一定優(yōu)勢。程序是在Window10環(huán)境下采用Keil uVision5軟件編寫的,可實現(xiàn)對激光筆的精確控制,對傳感器輸入信號的處理等功能。
自動打靶控制系統(tǒng)首先對靶面顏色識別,然后根據(jù)坐標(biāo)反饋信息,運用PID算法得到PWM值(脈沖寬度調(diào)制),然后輸出PWM波驅(qū)動舵機按照要求轉(zhuǎn)動。
程序設(shè)計的思路是通過攝像頭組件對靶子坐標(biāo)進行實時采集,把采集的兩種信息作為控制輸入,使用PID控制算法對各個控制參數(shù)進行優(yōu)化處理,然后把以優(yōu)化的參數(shù)(PWM值)作為電機的控制輸入,使得激光筆實現(xiàn)自動打靶功能。[3]
(1)硬件測試:分別對每個模塊做相應(yīng)的測試。
(2)軟件仿真測試:使用Keil MDK軟件進行仿真。
(3)硬件軟件聯(lián)調(diào):對打靶控制系統(tǒng)的測試是在一個符合要求的環(huán)境中測試的,逐步按要求進行測試。
在室溫條件下,測試所用儀器如下:
數(shù)字萬用表(MPD-3303);直流電源(UT39A);秒表;尺子。
在確定測試方案之后和測試儀器之后,得到了測試結(jié)果。系統(tǒng)分別按順序打向紅、綠、藍三個顏色的靶子,并對測試結(jié)果進行數(shù)據(jù)分析:具體結(jié)果由一下分析所示:
表5-1
測試結(jié)果表明,基于Kmeans算法的自動打靶系統(tǒng)準(zhǔn)確率高,去噪聲效果好、反應(yīng)速度快,能有效進行顏色識別和顏色數(shù)據(jù)處理篩選,運行性能穩(wěn)定。