基于LabVIEW的激光模拟射击自动报靶系统研究
2015-10-26魏义虎陈雷
魏义虎+陈雷
摘 要: 为提高激光模拟射击的报靶指示精度,降低命中位置坐标的采集难度,采用传感器正六边形分布阵列靶面,各行、列传感器组分别并联输出,以开关量输入方式采集行与列布尔数组来确定命中点坐标,通过串口通信无线传送坐标信息,以极坐标显示命中位置和环数,程序采用LabVIEW编写。试验表明,该方法简单有效,达到了设计要求。
关键词: 传感器阵列; 坐标定位; 串口通信; LabVIEW
中图分类号: TN205?34 文献标识码: A 文章编号: 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
激光模拟射击的一般原理是:在武器适当位置安装激光器,发射激光代替弹丸指向弹丸理论落点。报靶系统对激光命中点位置信息进行采集,传输到射手端,进而计算、显示射击成绩,基本划分为采集、传输、显示3个流程。报靶系统一般在靶面设置光电传感器阵列或拍摄图像识别激光照射位置。基于图像处理方式需要激光处于可见光频段,并配备相机,处理数据量大,算法复杂;基于光电探测方式则系统组成简单,使用方便,本文针对后者进行研究。通常,传感器阵列分布为n×m矩阵形式,任一传感器单元与周围单元距离不完全相等,影响命中点指示精度。同时,为了提高精度需要增加传感器数量,传感器数量的增加与信号采集设备管脚数量冲突,使得采集困难、布线复杂[1?2]。针对此问题,对传感器分布阵列和命中点坐标采集方式进行了优化,使用LabVIEW编写报靶系统程序。
1 命中点位置信息的采集
1.1 靶面传感器正六边形阵列分布
传感器阵列采取n×m矩阵分布情况下,如图1(a)所示,传感器“0”与周围“1~8”距离不完全相等。按照图1(b)正六边形分布情况下,传感器“0”与周围“1~6”距离完全相等。在此模式下扩展传感器数量,形成如图1(c)所示大型正六边形阵列。阵列中每一个传感器均与其周围传感器距离相同,所以这种分布比n×m矩阵更为均匀,对激光命中位置的反映更为准确。
图1 传感器正六边形分布示意图
1.2 坐标的定义及采集
如图2(a)所示,正六边形传感器阵列[3]共有37个单元,分为7行,13列,对应纵坐标0~6,横坐标0~12。根据正三角形几何性质,纵坐标单位刻度是横坐标的倍。为表示方便省略不写,在计算程序中已引入。
如图2(b)所示,每行传感器并联输出,经调理电路后被采集,每列传感器也是如此。可见,对37个对象的采集简化为7行,13列共20个对象的采集。任一传感器被激光照射,其所处的行、列输出高电平信号,以DI方式采集为布尔值“T”;某行或列所含单元均未被照射则采集为布尔值“F”。数据采集卡分别使用连续的通道采集7路行输出,13路列输出,采集为7位,13位的1D布尔数组,其中包含着对应的直角坐标信息。例如坐标为(0,3)的传感器被照射,横坐标布尔数组为(T,F,F,F,F,F,F,F,F,F,F,F,F),纵坐标布尔数组为(F,F,F,T,F,F,F)。
图2 坐标定义及采集示意图
为避免出现盲点,光斑直径调节[4]为正三角形的外接圆直径,如图2(b)所示。被光斑覆盖的传感器数量有3种情况:只有1个传感器、相邻2个传感器和组成正三角形的3个相邻传感器。命中多个传感器时,需计算等效的平均中心坐标,计算方法是所有命中点的横、纵坐标值取平均。
2 命中点位置信息的传送
完成对激光命中位置信号采集后,采用LabVIEW串口通信将该信息由靶端无线传送到射手端进行处理显示。使用LabVIEW的VISA函数可方便地编写串口通信程序[5]。通常,按照配置串口、设置发送/传输缓冲区、VISA写入或VISA读取、关闭串口的流程,再结合事件、循环、条件、顺序等程序结构和具体数据操作等即可编写符合用户意图的串口通信程序[5?7]。
2.1 串口传送
在“for”循环中依次索引行、列1D布尔数组各元素,执行“布尔至0,1”转换,循环次数等于数组元素个数,由循环框架通道选择带索引输出方式,即可得到转换为0,1组成的数组。2个数组元素作和之后再作和,与0比较,作为条件结构的判断依据。当有传感器被激光命中时,行或列有输出,和值大于0,则执行串口发送程序;和值等于0,不执行串口发送程序。
配置串口时,要将发送方和接收方的比特率、数据位数、奇偶校验等设置为相同值,即将双方传输速率和帧格式设置一致。一般,串口传送的是字符串型数据[6]。串口发送前,将1D布尔数组转换为数值,再将数值转化为字符串格式,最后将行、列字符串连接为一个字符串进行串口发送。
使用电台完成无线传输:靶端微机串口与发送电台采用三线接法,TxD,RxD,S?GND对应连接。射手端微机串口和接收电台也采用三线接法,但与前者不同,S?GND直接连接,TxD,RxD交叉连接。串口送程序如图3所示。
图3 串口发送程序图
2.2 串口接收
当靶面传感器被激光命中时,串口发送程序以字符串的形式发送命中位置信息,此时串口接收端“串口字节数”大于0。在“while”循环中判断“串口字节数”是否大于“0”,作为开始串口读取靶端信息、执行后续处理、计算、显示程序的触发条件,实现命中后自动报靶。串口读取后,将行、列字符串分离,还原为行、列布尔数组,进一步处理得到坐标并进行显示。这部分程序均放在条件结构“真”分支中,为示意方便,只显示串口读取程序,其余在下文中。“串口字节数”小于“0”时,在“假”分支中以字符串常量形式显示“脱靶”。
由于串口是底层硬件,数据从软件到串口,及从串口到软件需要一个时间。数据还没有全部传送到接收缓冲区时,读取程序就把部分已接收的数据读出,从而出现接收数据不完整的现象[6]。调试中,在“VISA读取”之前设置若干ms的延时,使数据传输完全,从而读取完整。将“串口字节数”输出连接“串口读取”的字节总数接线端,即按照接收字节数量进行读取。具体程序如图4所示。
图4 串口接收程序图
3 计算处理显示
采用极坐标方式可以直观显示命中点与靶心的距离和方位偏差[8?10]。需要将数字采集得到的1D布尔数组还原为具体的直角坐标,再将直角坐标转换为极坐标。行或列布尔数组的转换流程框图如图5所示。
图5 坐标转换流程图
3.1 1D布尔数组转换为直角坐标
在“for”循环中依次索引1D布尔数组各元素,执行“布尔至0,1”转换,循环次数等于数组元素个数,由循环框架通道选择带索引输出方式,即可得到转换为0,1组成的数组。1D布尔数组至直角坐标转换程序见图6。将新得到的0,1组成的数组放入“for”循环,依次索引数组各元素,与“for”循环“i”变量相乘,由循环框架通道选择带索引输出方式,即可得到0,1组成的数组与0~N-1坐标值组成的数组相与运算之后的结果。此结果是数组结构,显示被命中的坐标数值,其他元素均为0。
图6 1D布尔数组至直角坐标转换程序
由于光斑会覆盖1~3个传感器单元,所以需要计算命中位置的中心坐标。计算方法是取所有命中点坐标的平均值。采取 “数组元素作和”除以命中点个数的方法求平均值。命中点个数等于相应的0,1组成的数组的数组元素作和。图2中正六边形传感器阵列中心坐标为(6,3),以此为坐标原点,分别计算命中位置中心的横坐标和纵坐标。
3.2 直角坐标转换为极坐标
利用“程序→数值→复数→实部、虚部至r,θ”函数,将命中位置中心坐标的横坐标和纵坐标直接转换为极坐标r,θ参数。极坐标显示需要幅值和角度两个参数,其中角度以度为单位,θ为弧度,需要转换为度。在图2所示的正六边形阵列中,幅值最大为6。命中成绩设计为5~10环,根据比例关系,环数计算公式为:[n=10-5r6]。由于极坐标显示的点较小,根据极坐标中该点的位置计算其对应的像素点坐标,再在此像素点坐标处进行“绘制点”操作,可以对点的直径、颜色进行设置,得到较好的显示效果。
程序前面板的极坐标绘图区域设置为600×600像素,极坐标原点像素坐标为(293,300),最大幅值为6,对应像素点数为272,据此可计算命中点的像素坐标,提供给“绘制点”函数进行显示,具体程序框图如图7所示,程序前面板如图8所示。
图7 直角坐标转换为极坐标、显示程序
图8 成绩显示页面
图7所示为位于正六边形阵列第4行、第3列和第5行、第4列的两个相邻传感器被激光命中时,数字采集行、列布尔数组,转换为(0,1)数组,转换为坐标值数组,命中位置中心直角坐标值,极坐标值及环数值,红色圆点为命中点在极坐标中的位置。
4 结 语
报靶系统在传感器阵列按照正六边形分布基础上,将各行、列传感器组并联输出,采取DI采集行与列布尔数组的方式确定命中点坐标,使得坐标采集简便易行。以极坐标显示命中点与中心的距离和方位偏差,效果直观明确。使用图形化编程语言LabVIEW开发程序,简单高效。试验表明,该系统工作稳定、测试准确,达到了设计要求。
参考文献
[1] 曹勇,何凯平,邵思杰,等.基于阵列式多路信号采集的射击训练激光模拟系统[J].激光技术,2012(3):367?370.
[2] 刘颖.触觉传感器阵列信息获取与分析处理[D].重庆:重庆大学,2007.
[3] 谢勇.无线激光打靶器的设计和研制[D].南京:南京师范大学,2004.
[4] 曹勇,何凯平,邵思杰,等.基于激光调制技术的射击训练模拟系统[J].激光技术,2012(5):693?695.
[5] 李江全,刘恩博,胡蓉,等.LabVIEW虚拟仪器数据采集与串口通信测控应用实战[M].北京:人民邮电出版社,2010.
[6] 吕向锋,高洪林,马亮,等.基于LabVIEW串口通信的研究[J].国外电子测量技术,2009,28(12):27?30.
[7] 孙丽芹,王海龙,张景顺,等.一种基于LabVIEW的串口数据传输方法[J].通信技术,2013,46(4):139?141.
[8] 彭勇,潘晓烨,谢龙汉.LabVIEW虚拟仪器设计及分析[M].北京:清华大学出版社,2011.
[9] 李楠.打靶自动识别的的设计与实现[D].天津:天津大学,2012.
[10] 洪小康.一种自动报靶系统的设计与实现[D].南昌:南昌航空大学,2013.
[11] 蔡勇智.基于图像识别的无弹射击自动报靶研究[J].科技信息,2013(20):127?128.