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

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

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

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

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

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

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

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

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