魏義虎+陳雷
摘 要: 為提高激光模擬射擊的報(bào)靶指示精度,降低命中位置坐標(biāo)的采集難度,采用傳感器正六邊形分布陣列靶面,各行、列傳感器組分別并聯(lián)輸出,以開(kāi)關(guān)量輸入方式采集行與列布爾數(shù)組來(lái)確定命中點(diǎn)坐標(biāo),通過(guò)串口通信無(wú)線傳送坐標(biāo)信息,以極坐標(biāo)顯示命中位置和環(huán)數(shù),程序采用LabVIEW編寫(xiě)。試驗(yàn)表明,該方法簡(jiǎn)單有效,達(dá)到了設(shè)計(jì)要求。
關(guān)鍵詞: 傳感器陣列; 坐標(biāo)定位; 串口通信; LabVIEW
中圖分類號(hào): TN205?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)20?0114?03
Research on LabVIEW?based automatic target?scoring system of laser simulation shooting
WEI Yihu, CHEN Lei
(Department of Ammunition Engineering, Ordnance Engineering College, Shijiazhuang 050003, China )
Abstract: To improve the target?scoring indication precision of laser simulation shooting, and reduce the acquisition difficulty of hitting coordinate position, the target surface with regular hexagon sensors array is adopted. The sensor group of each row and line are output respectively in parallel. The coordinates of hitting points are determined by acquiring Boole array of row and line inswitching value input mode. The coordinate information is transmitted through serial port communication in wireless. The hitting location and number are displayed with polar coordinates. The program is compiled with LabVIEW. The experimental results show that this method is simple and effective, and achieved the design requirements.
Keywords: sensor array; coordinate location; serial port communication; LabVIEW
激光模擬射擊的一般原理是:在武器適當(dāng)位置安裝激光器,發(fā)射激光代替彈丸指向彈丸理論落點(diǎn)。報(bào)靶系統(tǒng)對(duì)激光命中點(diǎn)位置信息進(jìn)行采集,傳輸?shù)缴涫侄耍M(jìn)而計(jì)算、顯示射擊成績(jī),基本劃分為采集、傳輸、顯示3個(gè)流程。報(bào)靶系統(tǒng)一般在靶面設(shè)置光電傳感器陣列或拍攝圖像識(shí)別激光照射位置。基于圖像處理方式需要激光處于可見(jiàn)光頻段,并配備相機(jī),處理數(shù)據(jù)量大,算法復(fù)雜;基于光電探測(cè)方式則系統(tǒng)組成簡(jiǎn)單,使用方便,本文針對(duì)后者進(jìn)行研究。通常,傳感器陣列分布為n×m矩陣形式,任一傳感器單元與周圍單元距離不完全相等,影響命中點(diǎn)指示精度。同時(shí),為了提高精度需要增加傳感器數(shù)量,傳感器數(shù)量的增加與信號(hào)采集設(shè)備管腳數(shù)量沖突,使得采集困難、布線復(fù)雜[1?2]。針對(duì)此問(wèn)題,對(duì)傳感器分布陣列和命中點(diǎn)坐標(biāo)采集方式進(jìn)行了優(yōu)化,使用LabVIEW編寫(xiě)報(bào)靶系統(tǒng)程序。
1 命中點(diǎn)位置信息的采集
1.1 靶面?zhèn)鞲衅髡呅侮嚵蟹植?/p>
傳感器陣列采取n×m矩陣分布情況下,如圖1(a)所示,傳感器“0”與周圍“1~8”距離不完全相等。按照?qǐng)D1(b)正六邊形分布情況下,傳感器“0”與周圍“1~6”距離完全相等。在此模式下擴(kuò)展傳感器數(shù)量,形成如圖1(c)所示大型正六邊形陣列。陣列中每一個(gè)傳感器均與其周圍傳感器距離相同,所以這種分布比n×m矩陣更為均勻,對(duì)激光命中位置的反映更為準(zhǔn)確。
圖1 傳感器正六邊形分布示意圖
1.2 坐標(biāo)的定義及采集
如圖2(a)所示,正六邊形傳感器陣列[3]共有37個(gè)單元,分為7行,13列,對(duì)應(yīng)縱坐標(biāo)0~6,橫坐標(biāo)0~12。根據(jù)正三角形幾何性質(zhì),縱坐標(biāo)單位刻度是橫坐標(biāo)的倍。為表示方便省略不寫(xiě),在計(jì)算程序中已引入。
如圖2(b)所示,每行傳感器并聯(lián)輸出,經(jīng)調(diào)理電路后被采集,每列傳感器也是如此??梢?jiàn),對(duì)37個(gè)對(duì)象的采集簡(jiǎn)化為7行,13列共20個(gè)對(duì)象的采集。任一傳感器被激光照射,其所處的行、列輸出高電平信號(hào),以DI方式采集為布爾值“T”;某行或列所含單元均未被照射則采集為布爾值“F”。數(shù)據(jù)采集卡分別使用連續(xù)的通道采集7路行輸出,13路列輸出,采集為7位,13位的1D布爾數(shù)組,其中包含著對(duì)應(yīng)的直角坐標(biāo)信息。例如坐標(biāo)為(0,3)的傳感器被照射,橫坐標(biāo)布爾數(shù)組為(T,F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn),F(xiàn)),縱坐標(biāo)布爾數(shù)組為(F,F(xiàn),F(xiàn),T,F(xiàn),F(xiàn),F(xiàn))。
圖2 坐標(biāo)定義及采集示意圖
為避免出現(xiàn)盲點(diǎn),光斑直徑調(diào)節(jié)[4]為正三角形的外接圓直徑,如圖2(b)所示。被光斑覆蓋的傳感器數(shù)量有3種情況:只有1個(gè)傳感器、相鄰2個(gè)傳感器和組成正三角形的3個(gè)相鄰傳感器。命中多個(gè)傳感器時(shí),需計(jì)算等效的平均中心坐標(biāo),計(jì)算方法是所有命中點(diǎn)的橫、縱坐標(biāo)值取平均。
2 命中點(diǎn)位置信息的傳送
完成對(duì)激光命中位置信號(hào)采集后,采用LabVIEW串口通信將該信息由靶端無(wú)線傳送到射手端進(jìn)行處理顯示。使用LabVIEW的VISA函數(shù)可方便地編寫(xiě)串口通信程序[5]。通常,按照配置串口、設(shè)置發(fā)送/傳輸緩沖區(qū)、VISA寫(xiě)入或VISA讀取、關(guān)閉串口的流程,再結(jié)合事件、循環(huán)、條件、順序等程序結(jié)構(gòu)和具體數(shù)據(jù)操作等即可編寫(xiě)符合用戶意圖的串口通信程序[5?7]。
2.1 串口傳送
在“for”循環(huán)中依次索引行、列1D布爾數(shù)組各元素,執(zhí)行“布爾至0,1”轉(zhuǎn)換,循環(huán)次數(shù)等于數(shù)組元素個(gè)數(shù),由循環(huán)框架通道選擇帶索引輸出方式,即可得到轉(zhuǎn)換為0,1組成的數(shù)組。2個(gè)數(shù)組元素作和之后再作和,與0比較,作為條件結(jié)構(gòu)的判斷依據(jù)。當(dāng)有傳感器被激光命中時(shí),行或列有輸出,和值大于0,則執(zhí)行串口發(fā)送程序;和值等于0,不執(zhí)行串口發(fā)送程序。
配置串口時(shí),要將發(fā)送方和接收方的比特率、數(shù)據(jù)位數(shù)、奇偶校驗(yàn)等設(shè)置為相同值,即將雙方傳輸速率和幀格式設(shè)置一致。一般,串口傳送的是字符串型數(shù)據(jù)[6]。串口發(fā)送前,將1D布爾數(shù)組轉(zhuǎn)換為數(shù)值,再將數(shù)值轉(zhuǎn)化為字符串格式,最后將行、列字符串連接為一個(gè)字符串進(jìn)行串口發(fā)送。
使用電臺(tái)完成無(wú)線傳輸:靶端微機(jī)串口與發(fā)送電臺(tái)采用三線接法,TxD,RxD,S?GND對(duì)應(yīng)連接。射手端微機(jī)串口和接收電臺(tái)也采用三線接法,但與前者不同,S?GND直接連接,TxD,RxD交叉連接。串口送程序如圖3所示。
圖3 串口發(fā)送程序圖
2.2 串口接收
當(dāng)靶面?zhèn)鞲衅鞅患す饷袝r(shí),串口發(fā)送程序以字符串的形式發(fā)送命中位置信息,此時(shí)串口接收端“串口字節(jié)數(shù)”大于0。在“while”循環(huán)中判斷“串口字節(jié)數(shù)”是否大于“0”,作為開(kāi)始串口讀取靶端信息、執(zhí)行后續(xù)處理、計(jì)算、顯示程序的觸發(fā)條件,實(shí)現(xiàn)命中后自動(dòng)報(bào)靶。串口讀取后,將行、列字符串分離,還原為行、列布爾數(shù)組,進(jìn)一步處理得到坐標(biāo)并進(jìn)行顯示。這部分程序均放在條件結(jié)構(gòu)“真”分支中,為示意方便,只顯示串口讀取程序,其余在下文中?!按谧止?jié)數(shù)”小于“0”時(shí),在“假”分支中以字符串常量形式顯示“脫靶”。
由于串口是底層硬件,數(shù)據(jù)從軟件到串口,及從串口到軟件需要一個(gè)時(shí)間。數(shù)據(jù)還沒(méi)有全部傳送到接收緩沖區(qū)時(shí),讀取程序就把部分已接收的數(shù)據(jù)讀出,從而出現(xiàn)接收數(shù)據(jù)不完整的現(xiàn)象[6]。調(diào)試中,在“VISA讀取”之前設(shè)置若干ms的延時(shí),使數(shù)據(jù)傳輸完全,從而讀取完整。將“串口字節(jié)數(shù)”輸出連接“串口讀取”的字節(jié)總數(shù)接線端,即按照接收字節(jié)數(shù)量進(jìn)行讀取。具體程序如圖4所示。
圖4 串口接收程序圖
3 計(jì)算處理顯示
采用極坐標(biāo)方式可以直觀顯示命中點(diǎn)與靶心的距離和方位偏差[8?10]。需要將數(shù)字采集得到的1D布爾數(shù)組還原為具體的直角坐標(biāo),再將直角坐標(biāo)轉(zhuǎn)換為極坐標(biāo)。行或列布爾數(shù)組的轉(zhuǎn)換流程框圖如圖5所示。
圖5 坐標(biāo)轉(zhuǎn)換流程圖
3.1 1D布爾數(shù)組轉(zhuǎn)換為直角坐標(biāo)
在“for”循環(huán)中依次索引1D布爾數(shù)組各元素,執(zhí)行“布爾至0,1”轉(zhuǎn)換,循環(huán)次數(shù)等于數(shù)組元素個(gè)數(shù),由循環(huán)框架通道選擇帶索引輸出方式,即可得到轉(zhuǎn)換為0,1組成的數(shù)組。1D布爾數(shù)組至直角坐標(biāo)轉(zhuǎn)換程序見(jiàn)圖6。將新得到的0,1組成的數(shù)組放入“for”循環(huán),依次索引數(shù)組各元素,與“for”循環(huán)“i”變量相乘,由循環(huán)框架通道選擇帶索引輸出方式,即可得到0,1組成的數(shù)組與0~N-1坐標(biāo)值組成的數(shù)組相與運(yùn)算之后的結(jié)果。此結(jié)果是數(shù)組結(jié)構(gòu),顯示被命中的坐標(biāo)數(shù)值,其他元素均為0。
圖6 1D布爾數(shù)組至直角坐標(biāo)轉(zhuǎn)換程序
由于光斑會(huì)覆蓋1~3個(gè)傳感器單元,所以需要計(jì)算命中位置的中心坐標(biāo)。計(jì)算方法是取所有命中點(diǎn)坐標(biāo)的平均值。采取 “數(shù)組元素作和”除以命中點(diǎn)個(gè)數(shù)的方法求平均值。命中點(diǎn)個(gè)數(shù)等于相應(yīng)的0,1組成的數(shù)組的數(shù)組元素作和。圖2中正六邊形傳感器陣列中心坐標(biāo)為(6,3),以此為坐標(biāo)原點(diǎn),分別計(jì)算命中位置中心的橫坐標(biāo)和縱坐標(biāo)。
3.2 直角坐標(biāo)轉(zhuǎn)換為極坐標(biāo)
利用“程序→數(shù)值→復(fù)數(shù)→實(shí)部、虛部至r,θ”函數(shù),將命中位置中心坐標(biāo)的橫坐標(biāo)和縱坐標(biāo)直接轉(zhuǎn)換為極坐標(biāo)r,θ參數(shù)。極坐標(biāo)顯示需要幅值和角度兩個(gè)參數(shù),其中角度以度為單位,θ為弧度,需要轉(zhuǎn)換為度。在圖2所示的正六邊形陣列中,幅值最大為6。命中成績(jī)?cè)O(shè)計(jì)為5~10環(huán),根據(jù)比例關(guān)系,環(huán)數(shù)計(jì)算公式為:[n=10-5r6]。由于極坐標(biāo)顯示的點(diǎn)較小,根據(jù)極坐標(biāo)中該點(diǎn)的位置計(jì)算其對(duì)應(yīng)的像素點(diǎn)坐標(biāo),再在此像素點(diǎn)坐標(biāo)處進(jìn)行“繪制點(diǎn)”操作,可以對(duì)點(diǎn)的直徑、顏色進(jìn)行設(shè)置,得到較好的顯示效果。
程序前面板的極坐標(biāo)繪圖區(qū)域設(shè)置為600×600像素,極坐標(biāo)原點(diǎn)像素坐標(biāo)為(293,300),最大幅值為6,對(duì)應(yīng)像素點(diǎn)數(shù)為272,據(jù)此可計(jì)算命中點(diǎn)的像素坐標(biāo),提供給“繪制點(diǎn)”函數(shù)進(jìn)行顯示,具體程序框圖如圖7所示,程序前面板如圖8所示。
圖7 直角坐標(biāo)轉(zhuǎn)換為極坐標(biāo)、顯示程序
圖8 成績(jī)顯示頁(yè)面
圖7所示為位于正六邊形陣列第4行、第3列和第5行、第4列的兩個(gè)相鄰傳感器被激光命中時(shí),數(shù)字采集行、列布爾數(shù)組,轉(zhuǎn)換為(0,1)數(shù)組,轉(zhuǎn)換為坐標(biāo)值數(shù)組,命中位置中心直角坐標(biāo)值,極坐標(biāo)值及環(huán)數(shù)值,紅色圓點(diǎn)為命中點(diǎn)在極坐標(biāo)中的位置。
4 結(jié) 語(yǔ)
報(bào)靶系統(tǒng)在傳感器陣列按照正六邊形分布基礎(chǔ)上,將各行、列傳感器組并聯(lián)輸出,采取DI采集行與列布爾數(shù)組的方式確定命中點(diǎn)坐標(biāo),使得坐標(biāo)采集簡(jiǎn)便易行。以極坐標(biāo)顯示命中點(diǎn)與中心的距離和方位偏差,效果直觀明確。使用圖形化編程語(yǔ)言LabVIEW開(kāi)發(fā)程序,簡(jiǎn)單高效。試驗(yàn)表明,該系統(tǒng)工作穩(wěn)定、測(cè)試準(zhǔn)確,達(dá)到了設(shè)計(jì)要求。
參考文獻(xiàn)
[1] 曹勇,何凱平,邵思杰,等.基于陣列式多路信號(hào)采集的射擊訓(xùn)練激光模擬系統(tǒng)[J].激光技術(shù),2012(3):367?370.
[2] 劉穎.觸覺(jué)傳感器陣列信息獲取與分析處理[D].重慶:重慶大學(xué),2007.
[3] 謝勇.無(wú)線激光打靶器的設(shè)計(jì)和研制[D].南京:南京師范大學(xué),2004.
[4] 曹勇,何凱平,邵思杰,等.基于激光調(diào)制技術(shù)的射擊訓(xùn)練模擬系統(tǒng)[J].激光技術(shù),2012(5):693?695.
[5] 李江全,劉恩博,胡蓉,等.LabVIEW虛擬儀器數(shù)據(jù)采集與串口通信測(cè)控應(yīng)用實(shí)戰(zhàn)[M].北京:人民郵電出版社,2010.
[6] 呂向鋒,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].國(guó)外電子測(cè)量技術(shù),2009,28(12):27?30.
[7] 孫麗芹,王海龍,張景順,等.一種基于LabVIEW的串口數(shù)據(jù)傳輸方法[J].通信技術(shù),2013,46(4):139?141.
[8] 彭勇,潘曉燁,謝龍漢.LabVIEW虛擬儀器設(shè)計(jì)及分析[M].北京:清華大學(xué)出版社,2011.
[9] 李楠.打靶自動(dòng)識(shí)別的的設(shè)計(jì)與實(shí)現(xiàn)[D].天津:天津大學(xué),2012.
[10] 洪小康.一種自動(dòng)報(bào)靶系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南昌:南昌航空大學(xué),2013.
[11] 蔡勇智.基于圖像識(shí)別的無(wú)彈射擊自動(dòng)報(bào)靶研究[J].科技信息,2013(20):127?128.