王運峰,何 勇,田旭飛
(貴州大學 計算機科學與技術(shù)學院,貴州 貴陽 550025)
在機械化、信息化、智能化融合發(fā)展的背景下,室外實彈打靶訓練是射擊訓練必不可少的訓練項目。傳統(tǒng)的射擊訓練只是實現(xiàn)單一的性能,如單一的移動固定打靶功能、單一的升降固定打靶功能;傳統(tǒng)射擊訓練采用的是人工報靶的方式,存在一定的安全隱患,射擊訓練效率低。
當今對訓練設(shè)備的信息化、智能化、網(wǎng)絡(luò)化要求越來越高[1-2]。為了提高射擊訓練質(zhì)量和訓練效率,該系統(tǒng)是基于ARM的射擊訓練控制系統(tǒng)的軟件系統(tǒng)[3]和硬件系統(tǒng)[4]進行研發(fā),通過對靶機自動化控制實現(xiàn)靶機設(shè)備多模式移動的訓練方式,提高了訓練質(zhì)量;軟件系統(tǒng)部分充分利用圖像處理技術(shù),完成設(shè)計訓練控制系統(tǒng)的自動報靶功能來代替?zhèn)鹘y(tǒng)人工檢靶,能夠遠程自動報靶來避免傳統(tǒng)人工檢靶帶來的安全風險,自動報靶方式還可以降低人為因素和環(huán)境因素帶來的誤差和影響,極大提高了打靶射擊訓練的效率;射擊訓練控制系統(tǒng)還可以實現(xiàn)對采集數(shù)據(jù)和射擊訓練成績數(shù)據(jù)的存儲、查詢和管理。此外,該射擊訓練控制系統(tǒng)能夠通過4G無線通信方式與上位機進行數(shù)據(jù)交互和靶機設(shè)備的狀態(tài)反饋,實現(xiàn)對靶機設(shè)備的遠程數(shù)據(jù)傳輸和遠程實時控制。
射擊訓練控制系統(tǒng)主要由ARM-Linux系統(tǒng)控制器、電機控制模塊、通信模塊、數(shù)據(jù)采集模塊和上位機模塊等五個模塊組成。其中,ARM-Linux系統(tǒng)控制器為主控制器,電機控制模塊主要負責控制靶機的移動和靶面的舉靶和倒靶,通信模塊主要實現(xiàn)上位機和靶機設(shè)備之間的數(shù)據(jù)通信,數(shù)據(jù)采集模塊負責靶機位置定位、靶機距離檢測和射擊訓練圖像數(shù)據(jù),上位機模塊負責系統(tǒng)射擊訓練數(shù)據(jù)存儲和可視化展示、靶機控制指令發(fā)送和射擊訓練圖像處理。系統(tǒng)總體框圖如圖1所示。

圖1 射擊訓練控制系統(tǒng)總體框圖
在控制系統(tǒng)工作時,上位機利用無線通信方式發(fā)送驅(qū)動控制指令到ARM-Linux系統(tǒng)控制器,然后通過電機控制模塊對靶機電機和靶桿電機的控制操作,控制靶機設(shè)備移動、調(diào)速、變向和剎車,控制靶桿的舉靶和倒靶。數(shù)據(jù)采集模塊對靶機設(shè)備位置定位、靶機兩側(cè)障礙物距離檢測和射擊訓練打靶圖像等數(shù)據(jù)進行實時采集,然后將數(shù)據(jù)采集模塊采集的數(shù)據(jù)由ARM-Linux系統(tǒng)控制器通過無線通信模塊上傳到上位機進行存儲和數(shù)據(jù)處理。同時,上位機控制端可向下位機發(fā)送驅(qū)動控制指令使下位機靶機設(shè)備執(zhí)行相應(yīng)的控制操作。
射擊訓練控制系統(tǒng)以ARM-MYD-Y6ULX作為系統(tǒng)的主控制器,外圍硬件模塊包括電機控制模塊、無線通信模塊和數(shù)據(jù)采集模塊。
電機控制模塊[5]通過ARM-Linux系統(tǒng)控制器的IO口控制靶桿電機和靶機電機。射擊訓練控制系統(tǒng)ZDM-2HA865作為DSP數(shù)字式步進閉環(huán)驅(qū)動控制器,經(jīng)測試,使用5 V~24 V的電源可通過DSP數(shù)字式步進閉環(huán)驅(qū)動控制器來驅(qū)動靶桿電機和靶機電機。該電機控制模塊主要用來實現(xiàn)靶機底層驅(qū)動控制,完成靶桿的舉靶和倒靶等動作以及靶機的移動、變向、變速和剎車等動作。ARM-MYD-Y6ULX和閉環(huán)步進電機相連接,發(fā)送控制指令,高低電平控制閉環(huán)步進電機的正反轉(zhuǎn),串口輸出脈沖數(shù)調(diào)整轉(zhuǎn)速。該模塊用于接收用戶控制信號和圖像數(shù)據(jù)信號并進行處理,靶機狀態(tài)參數(shù)的設(shè)定及修改。
電機驅(qū)動采用ARM-MYD-Y6ULX引腳CSI_DATA7連接DSP數(shù)字式步進閉環(huán)驅(qū)動控制器控制信號端口PU,系統(tǒng)使用一個5 V電源引腳和一個ARM-MYD-Y6ULX的CSI_DATA7和CSI_DATA4引腳作為DSP數(shù)字式步進閉環(huán)驅(qū)動控制器的輸入引腳。當CSI_DATA7和CSI_DATA4引腳輸出高電平,DSP數(shù)字式步進閉環(huán)驅(qū)動控制器控制端的控制信號端口為PWM脈沖[6-7]輸入,控制電機順時針旋轉(zhuǎn);反之,CSI_DATA7和CSI_DATA4輸出低電平時,DSP數(shù)字式步進閉環(huán)驅(qū)動控制器控制端的控制信號端口為PWM脈沖輸入,控制電機逆時針旋轉(zhuǎn)。電機接口原理如圖2所示。

圖2 電機接口原理
數(shù)據(jù)采集模塊[8]采用ARM-MYD-Y6ULX芯片作為主控制器,主要實現(xiàn)對數(shù)據(jù)的采集和發(fā)送,主要包括靶機位置檢測、靶機距離檢測和靶紙圖像采集。靶機位置檢測使用的是單路灰度尋跡傳感器,靶機距離檢測使用的是AJ-SR04M距離傳感器,靶紙圖像采集使用的是IMX274無畸變數(shù)字攝像頭。
射擊訓練控制系統(tǒng)的單路灰度傳感器是通過把模擬信號經(jīng)過LM339或LM393這兩個電壓比較器將電信號分為高電平和低電平,而且可以通過電位器來調(diào)節(jié)這個高低電平變化的分界線。單路灰度傳感器通過下降沿觸發(fā),ARM-MYD-Y6ULX的CSI_DATA5引腳輸出高電平,靶機移動后退;ARM-MYD-Y6ULX的CSI_DATA5引腳輸出低電平,靶機移動前進。
射擊訓練控制系統(tǒng)的AJ-SR04M距離傳感器是通過ARM單片機連接到J14接口GPIO1引腳,MCU接受指令將測量命令發(fā)到對應(yīng)的GPIO控制引腳,距離傳感器輸出測量信號進行測量,讀取收到的16進制數(shù)據(jù),轉(zhuǎn)換成10進制數(shù)據(jù),將測量數(shù)據(jù)通過MCU上傳到上位機。
射擊訓練控制系統(tǒng)的IMX274無畸變數(shù)字攝像頭是通過ARM單片機的USB Host端口連接到J6接口B2和B3引腳,分配緩存buffers,將采集的yuyv格式轉(zhuǎn)換成rgb格式,rgb格式壓縮成jpeg格式數(shù)據(jù)發(fā)送到MCU。
通信模塊采用了4G無線通信方式來保證靶機設(shè)備下位機與上位機控制端的數(shù)據(jù)通信[9-10],4G模塊選取了USR-G770 DTU模塊,ARM-Linux系統(tǒng)控制器與4G DTU之間設(shè)計了數(shù)據(jù)通信接口電路,用以上位機發(fā)送到靶機設(shè)備的指令進行不同指令信號類型之間的轉(zhuǎn)換。ARM-Linux系統(tǒng)控制器在與4G DTU進行通信時,首先通過ARM-MYD-Y6ULX芯片將串口輸出的TTL信號轉(zhuǎn)換成對應(yīng)的RS232信號,然后發(fā)送給4G數(shù)據(jù)傳輸單元,最后由4G數(shù)據(jù)傳輸單元將采集到的數(shù)據(jù)轉(zhuǎn)發(fā)到上位機控制端,同時ARM-Linux系統(tǒng)控制器通過無線通信模塊接收上位機控制端的驅(qū)動控制指令。數(shù)據(jù)通信接口原理如圖3所示。

圖3 數(shù)據(jù)通信接口原理
最小系統(tǒng)采用基于四核Cortex-A7架構(gòu)的ARM-MYD-Y6ULX核心板[11]作為MCU,CPU采用MCIMX6G2CVM05AB,NAND Flash采用512 MB的存儲器,可擴展出的主要功能有LCD、攝像頭、USB、WIFI、4G模塊、音頻、CAN、RTC、IO等擴展功能。
該模塊作為射擊訓練控制系統(tǒng)的核心處理器,主要用來實現(xiàn)控制系統(tǒng)任務(wù)的調(diào)度、傳輸數(shù)據(jù)、發(fā)送控制指令等操作。ARM-MYD-Y6ULX核心板通過IO串口連接靶機電機和靶桿電機來控制靶機的移動、變向、變速和剎車,IO串口連接單路灰度尋跡傳感器和AJ-SR04M距離傳感器進行對靶機的位置定位和靶機兩側(cè)測距,USB連接IMX274無畸變數(shù)字攝像頭進行射擊訓練圖像的采集,4G模塊負責射擊訓練控制系統(tǒng)的數(shù)據(jù)傳輸和指令收發(fā)。
射擊訓練控制系統(tǒng)軟件設(shè)計主要是靶機設(shè)備下位機硬件控制的軟件設(shè)計和上位機圖像處理的軟件設(shè)計,其中主要包括電機控制程序、數(shù)據(jù)通信程序和彈孔圖像處理程序。
射擊訓練控制系統(tǒng)的下位機為Linux操作系統(tǒng),Linux操作系統(tǒng)支持創(chuàng)建多個線程,通過利用多核處理器間進行調(diào)度的靈活性,首先可以將其中對系統(tǒng)敏感的線程綁定到特定的處理器上面,而同時將運行的其他不敏感的線程綁定在其余的處理器上進行調(diào)度,利用多線程的調(diào)度協(xié)同完成系統(tǒng)的控制任務(wù)。
電機控制具體的軟件設(shè)計流程是系統(tǒng)進行上電后,進行系統(tǒng)初始化操作、系統(tǒng)硬件自檢和系統(tǒng)故障上報。系統(tǒng)監(jiān)聽上位機發(fā)送的命令,分析不同命令的指令類別,判斷命令類別是否滿足系統(tǒng)控制指令類別。根據(jù)命令控制靶桿進行控制舉靶、倒靶,然后,同時反饋舉靶倒靶狀態(tài);當出現(xiàn)拍照上傳的命令時,根據(jù)命令控制攝像頭進行拍照上傳圖片,然后,同時反饋攝像桿狀態(tài)。最后根據(jù)命令的反饋狀態(tài)和執(zhí)行情況進行上報,來判斷每條命令的完成或失敗。電機控制程序流程如圖4所示。

圖4 電機控制程序流程
彈孔圖像處理首先對采集到的射擊訓練靶面圖像進行Canny邊緣檢測[12-13]。Canny邊緣檢測算法有可以適應(yīng)各種環(huán)境的特點,該邊緣檢測算法可以通過改變平滑參數(shù)和閾值來識別分辨出不同特性的邊緣。其中算法的參數(shù)包括:使用高斯濾波平滑圖像時,平滑參數(shù)σ的值;使用滯后閾值處理邊緣,高閾值Th,低閾值T1。平滑參數(shù)σ的值可以決定頻帶的寬度大小,σ越大,頻帶越窄,平滑效果越好,但會出現(xiàn)丟失細節(jié)的現(xiàn)象,σ越小,頻帶越寬,保留細節(jié)的效果明顯,但是沒辦法達到降低噪聲的目的。當高閾值Th越大時,邊緣檢測可以去除越多的假邊緣,但會使檢測后的邊緣出現(xiàn)不連續(xù)現(xiàn)象。當?shù)烷撝礣l越小時,邊緣檢測連接的邊緣就會越多,但是沒辦法去除假邊緣。
在進行邊緣檢測取平滑參數(shù)σ=0.5,高閾值Th=0.83,低閾值Tl=0.3時,進行邊緣檢測的邊緣連接效果最好,邊緣檢測過程中的圖像噪聲小,且邊緣線條能夠達到連續(xù)完整。然后需要去除靶面圖像的噪聲,通過掃描全圖,對掃描的每一個像素點,當有像素點的周圍白色像素點總數(shù)小于4時,則將這個像素點識別為噪聲,把它置為背景色;最后對去除噪聲后得到的圖像進行填充,得到有效區(qū)域邊界灰度區(qū)域的范圍。
隨后在預處理的基礎(chǔ)上,對打靶前后的圖像作比較,根據(jù)比較兩幅圖像各個區(qū)域的灰度[14-15]值的差異,設(shè)置灰度差異β參數(shù),當取β=0.5時,打靶前后的圖像比較后的灰度差異區(qū)域大于設(shè)定的β參數(shù)值時,得到彈孔所在的區(qū)域范圍。
最后通過泛洪填充算法(flood fill algorithm)[16]對彈孔的區(qū)域進行八鄰域像素填充,尋找像素點p(x,y)的上下左右四個臨近像素點,在此基礎(chǔ)上增加了左上,左下,右上,右下四個相鄰像素,進行填充得到彈孔的區(qū)域;根據(jù)填充區(qū)域的坐標與環(huán)線的范圍進行比較判斷,得到彈孔位置對應(yīng)的環(huán)線數(shù)值。圖像處理結(jié)果如圖5所示。

圖5 圖像處理結(jié)果(前兩幅圖是訓練前后圖像,后兩幅是識別結(jié)果)
射擊訓練控制系統(tǒng)中通信協(xié)議實現(xiàn)下位機底層核心處理器與上位機的通信。該射擊訓練控制系統(tǒng)設(shè)計的數(shù)據(jù)幀由幀起始符、設(shè)備編號、動作編號、數(shù)據(jù)長度域、數(shù)據(jù)域、幀信息校驗域和幀結(jié)束符等組成。幀格式如表1所示。

表1 通信協(xié)議中的幀格式
STA表示通信協(xié)議的幀起始符,用作標識一幀信息的開始。FID表示靶機設(shè)備編號,標識當前靶機設(shè)備收(發(fā))的編號。AID表示靶機動作編號,代表要求靶機執(zhí)行的動作。LEN表示長度,代表通信協(xié)議數(shù)據(jù)域中的字節(jié)總數(shù)。DATA表示數(shù)據(jù)域,代表需要傳輸?shù)臄?shù)據(jù)和指令類型,DATA數(shù)據(jù)域采用JSON包進行封裝。CRC表示校驗碼,采用CRC-16循環(huán)冗余校驗,校驗內(nèi)容為FID、AID、LEN和DATA。END表示幀結(jié)束符。
射擊訓練控制系統(tǒng)的控制分為底層靶機電機控制和數(shù)據(jù)采集控制,設(shè)置控制模塊(PC,平板)包括系統(tǒng)的認證、查詢狀態(tài)、回傳結(jié)果、狀態(tài)反饋、配置網(wǎng)絡(luò)等,設(shè)置靶機的移動、調(diào)速、變向和剎車等動作,設(shè)置靶桿的舉靶和倒靶等動作,設(shè)置攝像頭的拍照動作。命令功能碼如表2所示。

表2 通信協(xié)議中的命令功能碼
通信協(xié)議采用套接字方式,通信協(xié)議族為AF_INET,流式套接字,IP地址加端口號。通信協(xié)議的命令類型分為認證、控制、狀態(tài)反饋和心跳四種基本類型。DATA數(shù)據(jù)域的JSON包中Sender表示發(fā)送方,命令I(lǐng)D由命令類型和時間戳構(gòu)成,Type表示命令類型,Content表示命令內(nèi)容解析,Time表示時間戳。
本系統(tǒng)測試的MCU將以ARM系列的ARM-MYD-Y6ULX芯片為例,通過該核心處理器連接好底層硬件系統(tǒng),把驅(qū)動電機模塊和數(shù)據(jù)采集模塊的程序下載到ARM-MYD-Y6ULX的MCU中,再結(jié)合后臺服務(wù)器及系統(tǒng)軟件進行現(xiàn)場測試,測試內(nèi)容為實現(xiàn)對靶機的移動、調(diào)速、剎車、變向等控制和對射擊訓練圖像進行圖像處理得到實現(xiàn)自動報靶功能。現(xiàn)場應(yīng)用和射擊訓練控制界面如圖6所示。

圖6 現(xiàn)場應(yīng)用和射擊訓練控制系統(tǒng)控制界面
文中重點介紹了基于ARM的射擊訓練控制系統(tǒng)的下位機部分和上位機控制界面與靶面圖像處理部分,系統(tǒng)包括下位機的電機控制模塊、無線通信模塊、數(shù)據(jù)采集模塊和上位機模塊。射擊訓練控制系統(tǒng)以ARM-MYD-Y6ULX作為核心處理器,研究設(shè)計了基于ARM的射擊訓練控制系統(tǒng),解決了傳統(tǒng)射擊訓練單一的訓練模式和射擊訓練效率低的問題。主要體現(xiàn)在以下兩個方面:一是研究設(shè)計了對靶機的多種驅(qū)動控制指令,通過不同的控制指令來控制靶機不同的運動模式,同時控制靶機設(shè)備完成調(diào)速、變向、剎車等動作,控制靶桿的舉靶和倒靶,同時也很大程度上提高了訓練強度和訓練質(zhì)量。二是上位機射擊訓練靶面圖像處理方面,對射擊訓練前的圖像和射擊訓練后的彈孔圖像進行比較,對每個彈孔進行定位和計算射擊訓練成績,實現(xiàn)自動報靶功能。