王運(yùn)峰,何 勇,田旭飛
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025)
在機(jī)械化、信息化、智能化融合發(fā)展的背景下,室外實(shí)彈打靶訓(xùn)練是射擊訓(xùn)練必不可少的訓(xùn)練項(xiàng)目。傳統(tǒng)的射擊訓(xùn)練只是實(shí)現(xiàn)單一的性能,如單一的移動(dòng)固定打靶功能、單一的升降固定打靶功能;傳統(tǒng)射擊訓(xùn)練采用的是人工報(bào)靶的方式,存在一定的安全隱患,射擊訓(xùn)練效率低。
當(dāng)今對(duì)訓(xùn)練設(shè)備的信息化、智能化、網(wǎng)絡(luò)化要求越來(lái)越高[1-2]。為了提高射擊訓(xùn)練質(zhì)量和訓(xùn)練效率,該系統(tǒng)是基于ARM的射擊訓(xùn)練控制系統(tǒng)的軟件系統(tǒng)[3]和硬件系統(tǒng)[4]進(jìn)行研發(fā),通過(guò)對(duì)靶機(jī)自動(dòng)化控制實(shí)現(xiàn)靶機(jī)設(shè)備多模式移動(dòng)的訓(xùn)練方式,提高了訓(xùn)練質(zhì)量;軟件系統(tǒng)部分充分利用圖像處理技術(shù),完成設(shè)計(jì)訓(xùn)練控制系統(tǒng)的自動(dòng)報(bào)靶功能來(lái)代替?zhèn)鹘y(tǒng)人工檢靶,能夠遠(yuǎn)程自動(dòng)報(bào)靶來(lái)避免傳統(tǒng)人工檢靶帶來(lái)的安全風(fēng)險(xiǎn),自動(dòng)報(bào)靶方式還可以降低人為因素和環(huán)境因素帶來(lái)的誤差和影響,極大提高了打靶射擊訓(xùn)練的效率;射擊訓(xùn)練控制系統(tǒng)還可以實(shí)現(xiàn)對(duì)采集數(shù)據(jù)和射擊訓(xùn)練成績(jī)數(shù)據(jù)的存儲(chǔ)、查詢和管理。此外,該射擊訓(xùn)練控制系統(tǒng)能夠通過(guò)4G無(wú)線通信方式與上位機(jī)進(jìn)行數(shù)據(jù)交互和靶機(jī)設(shè)備的狀態(tài)反饋,實(shí)現(xiàn)對(duì)靶機(jī)設(shè)備的遠(yuǎn)程數(shù)據(jù)傳輸和遠(yuǎn)程實(shí)時(shí)控制。
射擊訓(xùn)練控制系統(tǒng)主要由ARM-Linux系統(tǒng)控制器、電機(jī)控制模塊、通信模塊、數(shù)據(jù)采集模塊和上位機(jī)模塊等五個(gè)模塊組成。其中,ARM-Linux系統(tǒng)控制器為主控制器,電機(jī)控制模塊主要負(fù)責(zé)控制靶機(jī)的移動(dòng)和靶面的舉靶和倒靶,通信模塊主要實(shí)現(xiàn)上位機(jī)和靶機(jī)設(shè)備之間的數(shù)據(jù)通信,數(shù)據(jù)采集模塊負(fù)責(zé)靶機(jī)位置定位、靶機(jī)距離檢測(cè)和射擊訓(xùn)練圖像數(shù)據(jù),上位機(jī)模塊負(fù)責(zé)系統(tǒng)射擊訓(xùn)練數(shù)據(jù)存儲(chǔ)和可視化展示、靶機(jī)控制指令發(fā)送和射擊訓(xùn)練圖像處理。系統(tǒng)總體框圖如圖1所示。
圖1 射擊訓(xùn)練控制系統(tǒng)總體框圖
在控制系統(tǒng)工作時(shí),上位機(jī)利用無(wú)線通信方式發(fā)送驅(qū)動(dòng)控制指令到ARM-Linux系統(tǒng)控制器,然后通過(guò)電機(jī)控制模塊對(duì)靶機(jī)電機(jī)和靶桿電機(jī)的控制操作,控制靶機(jī)設(shè)備移動(dòng)、調(diào)速、變向和剎車,控制靶桿的舉靶和倒靶。數(shù)據(jù)采集模塊對(duì)靶機(jī)設(shè)備位置定位、靶機(jī)兩側(cè)障礙物距離檢測(cè)和射擊訓(xùn)練打靶圖像等數(shù)據(jù)進(jìn)行實(shí)時(shí)采集,然后將數(shù)據(jù)采集模塊采集的數(shù)據(jù)由ARM-Linux系統(tǒng)控制器通過(guò)無(wú)線通信模塊上傳到上位機(jī)進(jìn)行存儲(chǔ)和數(shù)據(jù)處理。同時(shí),上位機(jī)控制端可向下位機(jī)發(fā)送驅(qū)動(dòng)控制指令使下位機(jī)靶機(jī)設(shè)備執(zhí)行相應(yīng)的控制操作。
射擊訓(xùn)練控制系統(tǒng)以ARM-MYD-Y6ULX作為系統(tǒng)的主控制器,外圍硬件模塊包括電機(jī)控制模塊、無(wú)線通信模塊和數(shù)據(jù)采集模塊。
電機(jī)控制模塊[5]通過(guò)ARM-Linux系統(tǒng)控制器的IO口控制靶桿電機(jī)和靶機(jī)電機(jī)。射擊訓(xùn)練控制系統(tǒng)ZDM-2HA865作為DSP數(shù)字式步進(jìn)閉環(huán)驅(qū)動(dòng)控制器,經(jīng)測(cè)試,使用5 V~24 V的電源可通過(guò)DSP數(shù)字式步進(jìn)閉環(huán)驅(qū)動(dòng)控制器來(lái)驅(qū)動(dòng)靶桿電機(jī)和靶機(jī)電機(jī)。該電機(jī)控制模塊主要用來(lái)實(shí)現(xiàn)靶機(jī)底層驅(qū)動(dòng)控制,完成靶桿的舉靶和倒靶等動(dòng)作以及靶機(jī)的移動(dòng)、變向、變速和剎車等動(dòng)作。ARM-MYD-Y6ULX和閉環(huán)步進(jìn)電機(jī)相連接,發(fā)送控制指令,高低電平控制閉環(huán)步進(jìn)電機(jī)的正反轉(zhuǎn),串口輸出脈沖數(shù)調(diào)整轉(zhuǎn)速。該模塊用于接收用戶控制信號(hào)和圖像數(shù)據(jù)信號(hào)并進(jìn)行處理,靶機(jī)狀態(tài)參數(shù)的設(shè)定及修改。
電機(jī)驅(qū)動(dòng)采用ARM-MYD-Y6ULX引腳CSI_DATA7連接DSP數(shù)字式步進(jìn)閉環(huán)驅(qū)動(dòng)控制器控制信號(hào)端口PU,系統(tǒng)使用一個(gè)5 V電源引腳和一個(gè)ARM-MYD-Y6ULX的CSI_DATA7和CSI_DATA4引腳作為DSP數(shù)字式步進(jìn)閉環(huán)驅(qū)動(dòng)控制器的輸入引腳。當(dāng)CSI_DATA7和CSI_DATA4引腳輸出高電平,DSP數(shù)字式步進(jìn)閉環(huán)驅(qū)動(dòng)控制器控制端的控制信號(hào)端口為PWM脈沖[6-7]輸入,控制電機(jī)順時(shí)針旋轉(zhuǎn);反之,CSI_DATA7和CSI_DATA4輸出低電平時(shí),DSP數(shù)字式步進(jìn)閉環(huán)驅(qū)動(dòng)控制器控制端的控制信號(hào)端口為PWM脈沖輸入,控制電機(jī)逆時(shí)針旋轉(zhuǎn)。電機(jī)接口原理如圖2所示。
圖2 電機(jī)接口原理
數(shù)據(jù)采集模塊[8]采用ARM-MYD-Y6ULX芯片作為主控制器,主要實(shí)現(xiàn)對(duì)數(shù)據(jù)的采集和發(fā)送,主要包括靶機(jī)位置檢測(cè)、靶機(jī)距離檢測(cè)和靶紙圖像采集。靶機(jī)位置檢測(cè)使用的是單路灰度尋跡傳感器,靶機(jī)距離檢測(cè)使用的是AJ-SR04M距離傳感器,靶紙圖像采集使用的是IMX274無(wú)畸變數(shù)字?jǐn)z像頭。
射擊訓(xùn)練控制系統(tǒng)的單路灰度傳感器是通過(guò)把模擬信號(hào)經(jīng)過(guò)LM339或LM393這兩個(gè)電壓比較器將電信號(hào)分為高電平和低電平,而且可以通過(guò)電位器來(lái)調(diào)節(jié)這個(gè)高低電平變化的分界線。單路灰度傳感器通過(guò)下降沿觸發(fā),ARM-MYD-Y6ULX的CSI_DATA5引腳輸出高電平,靶機(jī)移動(dòng)后退;ARM-MYD-Y6ULX的CSI_DATA5引腳輸出低電平,靶機(jī)移動(dòng)前進(jìn)。
射擊訓(xùn)練控制系統(tǒng)的AJ-SR04M距離傳感器是通過(guò)ARM單片機(jī)連接到J14接口GPIO1引腳,MCU接受指令將測(cè)量命令發(fā)到對(duì)應(yīng)的GPIO控制引腳,距離傳感器輸出測(cè)量信號(hào)進(jìn)行測(cè)量,讀取收到的16進(jìn)制數(shù)據(jù),轉(zhuǎn)換成10進(jìn)制數(shù)據(jù),將測(cè)量數(shù)據(jù)通過(guò)MCU上傳到上位機(jī)。
射擊訓(xùn)練控制系統(tǒng)的IMX274無(wú)畸變數(shù)字?jǐn)z像頭是通過(guò)ARM單片機(jī)的USB Host端口連接到J6接口B2和B3引腳,分配緩存buffers,將采集的yuyv格式轉(zhuǎn)換成rgb格式,rgb格式壓縮成jpeg格式數(shù)據(jù)發(fā)送到MCU。
通信模塊采用了4G無(wú)線通信方式來(lái)保證靶機(jī)設(shè)備下位機(jī)與上位機(jī)控制端的數(shù)據(jù)通信[9-10],4G模塊選取了USR-G770 DTU模塊,ARM-Linux系統(tǒng)控制器與4G DTU之間設(shè)計(jì)了數(shù)據(jù)通信接口電路,用以上位機(jī)發(fā)送到靶機(jī)設(shè)備的指令進(jìn)行不同指令信號(hào)類型之間的轉(zhuǎn)換。ARM-Linux系統(tǒng)控制器在與4G DTU進(jìn)行通信時(shí),首先通過(guò)ARM-MYD-Y6ULX芯片將串口輸出的TTL信號(hào)轉(zhuǎn)換成對(duì)應(yīng)的RS232信號(hào),然后發(fā)送給4G數(shù)據(jù)傳輸單元,最后由4G數(shù)據(jù)傳輸單元將采集到的數(shù)據(jù)轉(zhuǎn)發(fā)到上位機(jī)控制端,同時(shí)ARM-Linux系統(tǒng)控制器通過(guò)無(wú)線通信模塊接收上位機(jī)控制端的驅(qū)動(dòng)控制指令。數(shù)據(jù)通信接口原理如圖3所示。
圖3 數(shù)據(jù)通信接口原理
最小系統(tǒng)采用基于四核Cortex-A7架構(gòu)的ARM-MYD-Y6ULX核心板[11]作為MCU,CPU采用MCIMX6G2CVM05AB,NAND Flash采用512 MB的存儲(chǔ)器,可擴(kuò)展出的主要功能有LCD、攝像頭、USB、WIFI、4G模塊、音頻、CAN、RTC、IO等擴(kuò)展功能。
該模塊作為射擊訓(xùn)練控制系統(tǒng)的核心處理器,主要用來(lái)實(shí)現(xiàn)控制系統(tǒng)任務(wù)的調(diào)度、傳輸數(shù)據(jù)、發(fā)送控制指令等操作。ARM-MYD-Y6ULX核心板通過(guò)IO串口連接靶機(jī)電機(jī)和靶桿電機(jī)來(lái)控制靶機(jī)的移動(dòng)、變向、變速和剎車,IO串口連接單路灰度尋跡傳感器和AJ-SR04M距離傳感器進(jìn)行對(duì)靶機(jī)的位置定位和靶機(jī)兩側(cè)測(cè)距,USB連接IMX274無(wú)畸變數(shù)字?jǐn)z像頭進(jìn)行射擊訓(xùn)練圖像的采集,4G模塊負(fù)責(zé)射擊訓(xùn)練控制系統(tǒng)的數(shù)據(jù)傳輸和指令收發(fā)。
射擊訓(xùn)練控制系統(tǒng)軟件設(shè)計(jì)主要是靶機(jī)設(shè)備下位機(jī)硬件控制的軟件設(shè)計(jì)和上位機(jī)圖像處理的軟件設(shè)計(jì),其中主要包括電機(jī)控制程序、數(shù)據(jù)通信程序和彈孔圖像處理程序。
射擊訓(xùn)練控制系統(tǒng)的下位機(jī)為L(zhǎng)inux操作系統(tǒng),Linux操作系統(tǒng)支持創(chuàng)建多個(gè)線程,通過(guò)利用多核處理器間進(jìn)行調(diào)度的靈活性,首先可以將其中對(duì)系統(tǒng)敏感的線程綁定到特定的處理器上面,而同時(shí)將運(yùn)行的其他不敏感的線程綁定在其余的處理器上進(jìn)行調(diào)度,利用多線程的調(diào)度協(xié)同完成系統(tǒng)的控制任務(wù)。
電機(jī)控制具體的軟件設(shè)計(jì)流程是系統(tǒng)進(jìn)行上電后,進(jìn)行系統(tǒng)初始化操作、系統(tǒng)硬件自檢和系統(tǒng)故障上報(bào)。系統(tǒng)監(jiān)聽(tīng)上位機(jī)發(fā)送的命令,分析不同命令的指令類別,判斷命令類別是否滿足系統(tǒng)控制指令類別。根據(jù)命令控制靶桿進(jìn)行控制舉靶、倒靶,然后,同時(shí)反饋舉靶倒靶狀態(tài);當(dāng)出現(xiàn)拍照上傳的命令時(shí),根據(jù)命令控制攝像頭進(jìn)行拍照上傳圖片,然后,同時(shí)反饋攝像桿狀態(tài)。最后根據(jù)命令的反饋狀態(tài)和執(zhí)行情況進(jìn)行上報(bào),來(lái)判斷每條命令的完成或失敗。電機(jī)控制程序流程如圖4所示。
圖4 電機(jī)控制程序流程
彈孔圖像處理首先對(duì)采集到的射擊訓(xùn)練靶面圖像進(jìn)行Canny邊緣檢測(cè)[12-13]。Canny邊緣檢測(cè)算法有可以適應(yīng)各種環(huán)境的特點(diǎn),該邊緣檢測(cè)算法可以通過(guò)改變平滑參數(shù)和閾值來(lái)識(shí)別分辨出不同特性的邊緣。其中算法的參數(shù)包括:使用高斯濾波平滑圖像時(shí),平滑參數(shù)σ的值;使用滯后閾值處理邊緣,高閾值Th,低閾值T1。平滑參數(shù)σ的值可以決定頻帶的寬度大小,σ越大,頻帶越窄,平滑效果越好,但會(huì)出現(xiàn)丟失細(xì)節(jié)的現(xiàn)象,σ越小,頻帶越寬,保留細(xì)節(jié)的效果明顯,但是沒(méi)辦法達(dá)到降低噪聲的目的。當(dāng)高閾值Th越大時(shí),邊緣檢測(cè)可以去除越多的假邊緣,但會(huì)使檢測(cè)后的邊緣出現(xiàn)不連續(xù)現(xiàn)象。當(dāng)?shù)烷撝礣l越小時(shí),邊緣檢測(cè)連接的邊緣就會(huì)越多,但是沒(méi)辦法去除假邊緣。
在進(jìn)行邊緣檢測(cè)取平滑參數(shù)σ=0.5,高閾值Th=0.83,低閾值Tl=0.3時(shí),進(jìn)行邊緣檢測(cè)的邊緣連接效果最好,邊緣檢測(cè)過(guò)程中的圖像噪聲小,且邊緣線條能夠達(dá)到連續(xù)完整。然后需要去除靶面圖像的噪聲,通過(guò)掃描全圖,對(duì)掃描的每一個(gè)像素點(diǎn),當(dāng)有像素點(diǎn)的周圍白色像素點(diǎn)總數(shù)小于4時(shí),則將這個(gè)像素點(diǎn)識(shí)別為噪聲,把它置為背景色;最后對(duì)去除噪聲后得到的圖像進(jìn)行填充,得到有效區(qū)域邊界灰度區(qū)域的范圍。
隨后在預(yù)處理的基礎(chǔ)上,對(duì)打靶前后的圖像作比較,根據(jù)比較兩幅圖像各個(gè)區(qū)域的灰度[14-15]值的差異,設(shè)置灰度差異β參數(shù),當(dāng)取β=0.5時(shí),打靶前后的圖像比較后的灰度差異區(qū)域大于設(shè)定的β參數(shù)值時(shí),得到彈孔所在的區(qū)域范圍。
最后通過(guò)泛洪填充算法(flood fill algorithm)[16]對(duì)彈孔的區(qū)域進(jìn)行八鄰域像素填充,尋找像素點(diǎn)p(x,y)的上下左右四個(gè)臨近像素點(diǎn),在此基礎(chǔ)上增加了左上,左下,右上,右下四個(gè)相鄰像素,進(jìn)行填充得到彈孔的區(qū)域;根據(jù)填充區(qū)域的坐標(biāo)與環(huán)線的范圍進(jìn)行比較判斷,得到彈孔位置對(duì)應(yīng)的環(huán)線數(shù)值。圖像處理結(jié)果如圖5所示。
圖5 圖像處理結(jié)果(前兩幅圖是訓(xùn)練前后圖像,后兩幅是識(shí)別結(jié)果)
射擊訓(xùn)練控制系統(tǒng)中通信協(xié)議實(shí)現(xiàn)下位機(jī)底層核心處理器與上位機(jī)的通信。該射擊訓(xùn)練控制系統(tǒng)設(shè)計(jì)的數(shù)據(jù)幀由幀起始符、設(shè)備編號(hào)、動(dòng)作編號(hào)、數(shù)據(jù)長(zhǎng)度域、數(shù)據(jù)域、幀信息校驗(yàn)域和幀結(jié)束符等組成。幀格式如表1所示。
表1 通信協(xié)議中的幀格式
STA表示通信協(xié)議的幀起始符,用作標(biāo)識(shí)一幀信息的開(kāi)始。FID表示靶機(jī)設(shè)備編號(hào),標(biāo)識(shí)當(dāng)前靶機(jī)設(shè)備收(發(fā))的編號(hào)。AID表示靶機(jī)動(dòng)作編號(hào),代表要求靶機(jī)執(zhí)行的動(dòng)作。LEN表示長(zhǎng)度,代表通信協(xié)議數(shù)據(jù)域中的字節(jié)總數(shù)。DATA表示數(shù)據(jù)域,代表需要傳輸?shù)臄?shù)據(jù)和指令類型,DATA數(shù)據(jù)域采用JSON包進(jìn)行封裝。CRC表示校驗(yàn)碼,采用CRC-16循環(huán)冗余校驗(yàn),校驗(yàn)內(nèi)容為FID、AID、LEN和DATA。END表示幀結(jié)束符。
射擊訓(xùn)練控制系統(tǒng)的控制分為底層靶機(jī)電機(jī)控制和數(shù)據(jù)采集控制,設(shè)置控制模塊(PC,平板)包括系統(tǒng)的認(rèn)證、查詢狀態(tài)、回傳結(jié)果、狀態(tài)反饋、配置網(wǎng)絡(luò)等,設(shè)置靶機(jī)的移動(dòng)、調(diào)速、變向和剎車等動(dòng)作,設(shè)置靶桿的舉靶和倒靶等動(dòng)作,設(shè)置攝像頭的拍照動(dòng)作。命令功能碼如表2所示。
表2 通信協(xié)議中的命令功能碼
通信協(xié)議采用套接字方式,通信協(xié)議族為AF_INET,流式套接字,IP地址加端口號(hào)。通信協(xié)議的命令類型分為認(rèn)證、控制、狀態(tài)反饋和心跳四種基本類型。DATA數(shù)據(jù)域的JSON包中Sender表示發(fā)送方,命令I(lǐng)D由命令類型和時(shí)間戳構(gòu)成,Type表示命令類型,Content表示命令內(nèi)容解析,Time表示時(shí)間戳。
本系統(tǒng)測(cè)試的MCU將以ARM系列的ARM-MYD-Y6ULX芯片為例,通過(guò)該核心處理器連接好底層硬件系統(tǒng),把驅(qū)動(dòng)電機(jī)模塊和數(shù)據(jù)采集模塊的程序下載到ARM-MYD-Y6ULX的MCU中,再結(jié)合后臺(tái)服務(wù)器及系統(tǒng)軟件進(jìn)行現(xiàn)場(chǎng)測(cè)試,測(cè)試內(nèi)容為實(shí)現(xiàn)對(duì)靶機(jī)的移動(dòng)、調(diào)速、剎車、變向等控制和對(duì)射擊訓(xùn)練圖像進(jìn)行圖像處理得到實(shí)現(xiàn)自動(dòng)報(bào)靶功能?,F(xiàn)場(chǎng)應(yīng)用和射擊訓(xùn)練控制界面如圖6所示。
圖6 現(xiàn)場(chǎng)應(yīng)用和射擊訓(xùn)練控制系統(tǒng)控制界面
文中重點(diǎn)介紹了基于ARM的射擊訓(xùn)練控制系統(tǒng)的下位機(jī)部分和上位機(jī)控制界面與靶面圖像處理部分,系統(tǒng)包括下位機(jī)的電機(jī)控制模塊、無(wú)線通信模塊、數(shù)據(jù)采集模塊和上位機(jī)模塊。射擊訓(xùn)練控制系統(tǒng)以ARM-MYD-Y6ULX作為核心處理器,研究設(shè)計(jì)了基于ARM的射擊訓(xùn)練控制系統(tǒng),解決了傳統(tǒng)射擊訓(xùn)練單一的訓(xùn)練模式和射擊訓(xùn)練效率低的問(wèn)題。主要體現(xiàn)在以下兩個(gè)方面:一是研究設(shè)計(jì)了對(duì)靶機(jī)的多種驅(qū)動(dòng)控制指令,通過(guò)不同的控制指令來(lái)控制靶機(jī)不同的運(yùn)動(dòng)模式,同時(shí)控制靶機(jī)設(shè)備完成調(diào)速、變向、剎車等動(dòng)作,控制靶桿的舉靶和倒靶,同時(shí)也很大程度上提高了訓(xùn)練強(qiáng)度和訓(xùn)練質(zhì)量。二是上位機(jī)射擊訓(xùn)練靶面圖像處理方面,對(duì)射擊訓(xùn)練前的圖像和射擊訓(xùn)練后的彈孔圖像進(jìn)行比較,對(duì)每個(gè)彈孔進(jìn)行定位和計(jì)算射擊訓(xùn)練成績(jī),實(shí)現(xiàn)自動(dòng)報(bào)靶功能。