高 麗,張 輝,孫 洋
(安徽師范大學(xué) 皖江學(xué)院,安徽 蕪湖 241000)
電磁彈射技術(shù)是一種新興的直線推進技術(shù),采用電磁產(chǎn)生的能量推動物體向外運動,與傳統(tǒng)的機械彈射、能量彈射相比更加穩(wěn)定、可控、環(huán)保[1-3]。目前的電磁彈射裝置大多需要人工調(diào)節(jié)發(fā)射軌道,操作繁瑣且誤差較大[4,5]。測量方式一般使用超聲波、激光等。測量維度單一,容易受環(huán)境影響且只能測算固定目標的位置[6-8]。本文設(shè)計的電磁彈射系統(tǒng)支持鍵盤輸入距離和角度值,自動調(diào)節(jié)發(fā)射軌道,可以減少人為因素帶來的操作誤差。同時,支持攝像頭和紅外測距模塊作為測量工具來實時測算目標的距離和角度,可在運動中鎖定并擊中目標。
基于圖像處理的全自動電磁彈射系統(tǒng)需實現(xiàn)按鍵輸入、顯示控制量、紅外光測量距離、攝像頭找尋目標、云臺輸出方向、電磁彈射發(fā)射等功能[9]。選擇矩陣鍵盤、LCD 顯示、紅外測距、攝像頭、二維舵機云臺、電磁彈射等模塊進行硬件電路設(shè)計。為整合所有設(shè)計模塊之間數(shù)據(jù)的處理,選擇STM32作為主控MCU。系統(tǒng)設(shè)計總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
全自動電磁彈射系統(tǒng)主要由3部分組成,即:主控部分、數(shù)據(jù)采集及電磁彈射部分。其中,主控模塊選用STM32F103ZET6,負責(zé)數(shù)據(jù)的處理、控制指令的生成和協(xié)調(diào)其他模塊。
數(shù)據(jù)采集主要由攝像頭傳感器、紅外測距傳感器組成。攝像頭選擇openMV,openMV 上搭載了Micro Python 解釋器,方便在機器視覺算法中處理復(fù)雜的數(shù)據(jù)或執(zhí)行算法,在圖像處理方面有著高效快速的處理運算機制。紅外測距模塊選擇TFmini Plus。
二維舵機云臺由兩個RDS3115 舵機、一個正副金屬舵盤、一個正切U 型支架以及若干底座支架構(gòu)成。主控運算數(shù)據(jù)輸出PWM 波到舵機云平臺計算彈射軌道。
系統(tǒng)的硬件電路主要包括電磁彈射電路、穩(wěn)壓電路及升壓電路。穩(wěn)壓電路穩(wěn)定系統(tǒng)的輸入電壓,便于整個控制系統(tǒng)數(shù)據(jù)的采集和輸出數(shù)據(jù)的穩(wěn)定。升壓電路可以提升彈射電路的輸入電壓,彈射模塊獲得更高的能量,從而被彈射物體的初速度更大以提高整個裝置的彈射距離。彈射電路將從升壓電路獲得的電能轉(zhuǎn)化為被彈射物體的動能,從而彈射目標。
電磁彈射按照加速原理可分為線圈型、導(dǎo)軌型兩大類。其中導(dǎo)軌加速型體量大、不易控制且成本較高。本系統(tǒng)選擇線圈加速型,將銅絲繞成線圈構(gòu)成彈射軌道,銅絲的兩端接入儲能電路,當(dāng)銅絲上電流瞬間變化時會引起線圈軌道內(nèi)磁通量的變化,此時線圈內(nèi)的導(dǎo)體產(chǎn)生電動勢從而獲得加速動能[10]。因此實現(xiàn)電磁彈射需要彈射電路且具備瞬間放電的能力。如圖2 所示,選擇1000uf 大電容作為儲能元件,開始充電時穩(wěn)壓電路工作,電容C1 開始儲存電能,直到被充滿,按下按鍵使得加速線圈中的電流急劇增大,最終物體被彈出。
圖2 彈射電路
整個彈射系統(tǒng)需要用到兩種不同的供電,且總的實際供電電壓值會有波動,為保證整個系統(tǒng)每次采集的數(shù)據(jù)受到的硬件電路影響降低,使用下列兩種穩(wěn)壓方式進行穩(wěn)定輸出電壓操作。
(1)7.2V 轉(zhuǎn)5V 電壓:通過AMS1086-5.0 穩(wěn)壓芯片進行轉(zhuǎn)化,用于攝像頭、電磁彈射模塊和測距模塊,如圖3(a)所示。
(2)轉(zhuǎn)3.3V 電壓:使用AMS1086-3.3 穩(wěn)壓芯片進行轉(zhuǎn)化,用于單片機的供電,如圖3(b)所示。
圖3 穩(wěn)壓電路
由于被彈射物體彈射出一定距離需要足夠的電能,系統(tǒng)最大只能提供5V 電壓,因此需要升壓。如圖4,SX1308 是一種實用的貼片升壓芯片,電路最高升壓可達28V,輸出電流最大為2A,并且可以在過流、過熱時保護電路。SX1308可以為彈射模塊提供足夠的驅(qū)動能力。調(diào)節(jié)電阻的阻值可以控制電路實際電壓,具有一定的開放設(shè)計范圍,利于整體結(jié)構(gòu)的調(diào)整。
圖4 升壓電路
系統(tǒng)的軟件設(shè)計主要包括圖像位置控制算法及發(fā)射控制部分,整體軟件流程如圖5所示。
圖5 系統(tǒng)程序流程圖
系統(tǒng)完成初始化且各模塊能正常返回測量數(shù)據(jù)后,主控通過調(diào)節(jié)云臺方向角的變化控制攝像頭采集圖像,尋找目標位置。同時利用算法處理,找到目標后立即觸發(fā)中斷。進入中斷后,首先測量目標位置,然后計算并輸出云臺舵機仰角,控制舵機完成輸出的仰角數(shù)值并啟動彈射裝置。將攝像頭找尋到目標作為中斷觸發(fā)條件,距離測算和彈射仰角運算放在中斷服務(wù)函數(shù)中執(zhí)行,將其作為整體軟件控制框架結(jié)構(gòu),并且可以通過節(jié)約MCU 的運算資源來增強單個模塊數(shù)據(jù)處理的精度和速度。
實現(xiàn)自動電磁彈射的第一步就是能夠?qū)崟r檢測到目標的所在位置并控制彈射對準目標方向,因此需要提高攝像頭的數(shù)據(jù)采集速度、目標位置鎖定的準確性以及對輸出控制量的平穩(wěn)輸出。本系統(tǒng)采用邊緣檢測、腐蝕膨脹處理、PID 控制3 種算法來實現(xiàn)。
4.2.1 邊緣檢測算法
當(dāng)系統(tǒng)初始化完成后云臺開始旋轉(zhuǎn),便于攝像頭找尋目標,程序開始進入圖像處理部分。當(dāng)攝像頭采集圖像并傳回后,對采集到的整體圖像進行顏色識別和形狀識別找尋目標,與此同時在找尋目標過程中加入邊緣檢測算法來提高攝像頭對目標的反應(yīng)速度。
4.2.2 圖像腐蝕膨脹處理
為盡量減小環(huán)境光線對數(shù)據(jù)的影響以提高系統(tǒng)對目標位置鎖定的準確性,使用腐蝕、膨脹手段先后處理攝像頭掃描到的視野數(shù)據(jù),對目標外的地方腐蝕處理,對目標進行膨脹處理。腐蝕處理可以將圖像的高亮部分減小,突出目標區(qū)域。而膨脹會在目標圖像的邊緣添加像素值,進而達到突出目標的目的,使結(jié)果更為準確。
4.2.3 PID控制算法
利用位置PID算法來實時控制彈射對準目標方向,輸出PWM 波控制舵機偏轉(zhuǎn)角度,系統(tǒng)輸出的PWM 波也代表了位置PID處理后的數(shù)學(xué)期望,其時域表達式如下:
T0表示PID 控制器的采樣周期,利用millis()函數(shù)得到開機以來的毫秒數(shù),通過dalta_time()函數(shù)得到當(dāng)前時間,從而得到采樣周期。因為在實際控制中攝像頭每一次掃描到目標需要的時間不同,所以需要實時測量實際的采樣周期,以達到精確控制的目的。
控制彈射模塊發(fā)射物體且準確擊中目標,首先需測得目標與彈射裝置的距離,分析云臺仰角與彈射距離對應(yīng)關(guān)系。通過紅外測距模塊測得離目標的距離值并利用多次測量的數(shù)據(jù)推導(dǎo)出距離-仰角的對應(yīng)關(guān)系。
4.3.1 數(shù)據(jù)幀格式設(shè)計
當(dāng)攝像頭視野中心與目標中心位置一致后開啟距離中斷,TFmini Plus測距模塊開始測量目標與攝像頭之間的距離,通過飛行時間原理計算出距離數(shù)據(jù),使用USART 發(fā)送給主控。由紅外測距模塊發(fā)送主控的數(shù)據(jù)信息如表1所示。
表1 數(shù)據(jù)幀格式
數(shù)據(jù)格式為十六進制。每一個數(shù)據(jù)幀的前兩個字節(jié)都為0X59,主控在接收數(shù)據(jù)幀時需要分析數(shù)據(jù)幀頭部并解析數(shù)據(jù),若數(shù)據(jù)幀的頭部為兩個0X59,則為有效數(shù),否則丟棄。解析出正確數(shù)據(jù)幀后,提取距離、信號強度信息。查詢數(shù)據(jù)幀協(xié)議可知,需要將高八位左移八位,在加上低八位才是正確的數(shù)據(jù),其中Dist 為距離信息,Str 為信號強度信息,范圍為0-65535,一般信號強度越低代表目標物反射率越低,只有Str 值位于100-65535 時,此次的距離測量值有效。
4.3.2 距離-仰角函數(shù)擬合設(shè)計
仰角采用舵機控制,因此需要建立目標距離-仰角-PWM占空比之間的函數(shù)。
假設(shè)電磁彈射裝置每次發(fā)射時給被彈射物的動能不變,則物體獲得的初速度不變定義為V,云臺的仰角為α,整個裝置的水平高度為H,在忽略空氣阻力的基礎(chǔ)下結(jié)合自由落體數(shù)學(xué)公式得到如下距離角度公式。
組裝舵機云臺,固定攝像頭支架,將測距模塊中心點與攝像頭焦點對齊,將電磁彈射裝置固定于仰角舵機上。為了測量整個彈射系統(tǒng)的準確性及速度,設(shè)置如圖6 所示的不同距離和不同角度的測試點。將電磁彈射裝置放置在坐標定點處,目標位置為圖中ABCDEFG7點。
圖6 測試點位置
利用圖像處理算法、控制算法、通信協(xié)議等,對實驗數(shù)據(jù)進行了多次采集擬合。為加快整個系統(tǒng)的反應(yīng)速度,通過以下3 種測量方式對整個系統(tǒng)的運行狀況進行測量。
(1)通過矩陣鍵盤輸入距離d值與中心軸線的偏離角度α,一鍵啟動后,電磁彈射裝置自動瞄準射擊,取得輸入射擊數(shù)據(jù)表,測量準確性。
表2 所示為輸入射擊數(shù)據(jù)表,其中,P 為輸入角度(°),S為輸入距離(cm),D為5次的誤差(cm),AD為里中心點的平均誤差。通過矩陣鍵盤輸入固定的角度及固定的距離得出誤差不超過6cm??梢娤到y(tǒng)的精確系數(shù)較高,且目標距離越遠,彈射裝置的精度越差。
表2 輸入射擊數(shù)據(jù)表
(2)選取半徑為30cm 的圓形靶作為目標,電磁彈射裝置與環(huán)形靶的位置示意如圖7所示。電磁彈射裝置放在指定位置(定標點),所有參數(shù)全部為初始值即水平方向夾角為0°、垂直方向夾角為0°。環(huán)形靶水平放置在地面,靶心位置在與定標點距離200-300cm。通過引導(dǎo)標識確定輸出量并計算軌道。
圖7 電磁彈射裝置與環(huán)形靶的位置示意圖
選擇固定住電磁彈射裝置,并將攝像頭偏轉(zhuǎn)角的初始值設(shè)為0°,然后選擇將標靶隨機移動到圖6的7 個測試點,并在標靶到達測試點固定不動且一鍵啟動裝置后開始計時,測量系統(tǒng)的反應(yīng)時間。表3 所示為瞄準射擊數(shù)據(jù)表,測量系統(tǒng)整體的反應(yīng)速度,其中,T 為5 次的時間誤差(s),AT 為平均時間誤差(s)。
表3 搜尋瞄準射擊數(shù)據(jù)表
由表3 的實驗數(shù)據(jù)可以得出,在前方180°的水平偏轉(zhuǎn)角度的范圍內(nèi),系統(tǒng)的搜尋目標的時間不會超過21s。系統(tǒng)裝置在進行目標搜尋時,先進行向左5°的偏轉(zhuǎn)角偏轉(zhuǎn)到左極限,若沒有發(fā)現(xiàn)目標則由左極限向右極限方向以5°的偏轉(zhuǎn)角偏轉(zhuǎn)到右極限依次循環(huán)。實驗結(jié)果表明按照此方法運行,系統(tǒng)的總體反映速度較快。
(3)將電磁彈射裝置固定不動,將目標放置在E點即正對攝像頭中心距離為260cm 的點,將攝像頭進行左右勻速偏轉(zhuǎn)45°角并做往復(fù)偏轉(zhuǎn)運動,在運動中對目標進行位置鎖定并彈射出去,得出運動瞄準射擊數(shù)據(jù),如表4 所示,用來測量系統(tǒng)的整體穩(wěn)定性。
表4 運動瞄準射擊數(shù)據(jù)表
本文設(shè)計并實現(xiàn)了一種基于圖像處理的全自動電磁彈射系統(tǒng),解決了傳統(tǒng)電磁彈射裝置需要人工調(diào)整角度的問題,實現(xiàn)了自動掃描鎖定目標位置的功能。設(shè)計了整個硬件電路,編寫了控制系統(tǒng)的圖像處理算法,位置控制算法,各模塊之間的通信數(shù)據(jù)處理等。實驗結(jié)果基本上實現(xiàn)了本文理論設(shè)計的功能。但文中提出的設(shè)計還有不足之處,如彈射電路的儲能大電容的能量無法一次釋放等,后期將繼續(xù)改進。