基于光敏管阵列激光靶的算法设计及应用
2020-04-01侯爱霞
侯爱霞
(重庆科创职业学院 人工智能学院,重庆 402160)
0 前言
光敏管阵列激光靶技术作为一种重要的测试技术目前被广泛应用于许多场合,如:兵器的研发,军队训练等等。如何精确的测量运动物体的各项参数是研究人员最为关心的问题之一。本文主要对靶场所获得的数据如何进行采集、存储与计算进行了深入研究,设计了一套数据的获取、传输、存储以及处理系统,以满足高速大数据处理的要求,有利于提高物体参数计算的精确度[1]。
1 光敏管阵列激光靶系统的测量原理
光敏管阵列激光靶系统以激光器作为光源,光敏管阵列作为激光探测装置,阵列分为互相垂直的2列,其排列与两面菲涅尔透镜平行。由激光器射出的激光为一扇形光幕,在菲涅尔透镜的作用下,形成平行光幕。若在光幕范围内有物体,则物体将阻挡一部分的激光的传播路径,使得该部分激光对应位置上的光敏管接收到的光量发生改变,通过对一段时间内的光敏管阵列上接收到的光量变化进行分析与计算,就可以得到有关物体的一系列参量[2]。光敏管阵列激光靶系统测量原理图如下:
图1 光敏管阵列激光靶测量原理图
如图1所示:光敏管阵列分为水平列与垂直列,并以此建立坐标系,X轴方向与光敏管阵列的水平列方向一致,Y轴方向与光敏管阵列的垂直列方向一致。当运动的物体处于光幕范围内时,物体对应的水平方向与垂直方向位置上的光敏二极管接收到的光通量将发生改变,为方便叙述,将这些光敏二极管的位置用X、Y轴坐标表示。设光敏管的宽度为c,在X轴上接收光量发生改变的光敏管为第i到第“i+m”个,在Y轴上接收光量发生改变的光敏管为第j到第“j+n”个[3],则可将物体的坐标表示为:
(x , y)=((i*c+(i+m)*c))/2,(j*c+(j+n)*c))/2) (1)
若要对物体的运动速度进行测量,则设起始靶和停止靶之间的距离为d,由于物体在穿过激光靶时往往不是垂直入射,因此需要根据物体在过起始靶与停止靶时的坐标进行靶距修正。设物体过靶1时的坐标为(x1,y1),过靶2时的坐标为(x2,y2),则可得物体运动的距离为:
设物体过靶1的时间为t1,过靶2的时间为t2则可得上物体在t1—t2这一时间段内的平均速度为:
物体的体积可以根据物体在运动时遮挡的光敏管的个数估算。以物体的横截面为矩形为例,设在某一时刻,X轴上被物体遮挡的光敏管个数为a个,Y轴上为b个,则物体的横截面面积S为:
再对各个时刻计算得到的面积在物体的位移方向极性积分,即估算得到物体的体积。
图2 矩形横截面面积计算示意图
在许多的实际运用领域当中,需要对物体进行三维重构,即通过数据分析,模拟恢复出物体的三维信息。光敏管阵列激光靶也可以应用到这一领域中来,通过物体横截面的边界点以及运动速度等的采样数据进行相应的分析可以实现物体的三维重构[4]。
2 数据通信程序
本文设计的通信程序包括的数据采集,通信与存储系统,采用FPGA进行数据的采集与存储,采用FT245RL实现数据通信,再通过相应的算法对采集到的信息进行分析与计算,进而得到所需要的参量数据。此系统可以实现数据的高速,大量传输,适合用于光敏管阵列激光靶的后续数据处理。
系统的整体流程图如下:
图3 系统整体流程图
2.1 数据的采集
在数据的采集时,由于物体的信息包括物体过起始靶时水平光敏管阵列与垂直光敏管阵列的数据以及物体过停止靶时水平光敏管阵列与垂直光敏管阵列的数据,故采集自不同列不同时间点的数据应当区分开来,以便后续分别进行处理,即对采集的数据进行预处理。
预处理方式如下:设光敏管的初始状态为‘0’,在物体通过光幕时,被遮挡的光敏管的状态变为‘1’,其余光敏管依旧保持‘0’不变。在某一采样时刻将得到水平列与垂直列的2组二进制信息,即代表了水平列与垂直列被遮挡的光敏管的位置信息。在数据被传输至上位机之前,下位机应当在以采样间隔为单位。在数据前端加入帧标志位以区分不同的采样时刻(用于后面进行数据通道的划分),并在数据的末尾处添加该采样时刻的时间标志位,形成一个完整的帧。每帧数据包含16位帧标志位、128位的数据位以及24位的时间标志位。数据最终以帧组成的数据块形式进行数据传输至上位机。
2.2 数据的存储
在进行数据的存储前,应当根据每帧数据开头的帧标志将数据区分为4个通道数据,方法如下:帧标志位为16位的二进制数, 为了能够与通道标志进行对比,应先将其转化为十六进制的字符串格式,再与各通道的通道标志(4个通道的标志分别为FD81、FD82、FD83、FD84)进行比较,若与某通道的通道标志一致,则该通道的布尔变量变为1,其余通道的布尔变量为0;将布尔变量构成的布尔数组进行反转再转化为为二进制数值。即,帧标志位与通道1的通道标志相同的数据将输出为“1000”,与通道2的通道标志相同的数据将输出为“0100”,与通道3的通道标志相同的数据将输出为“0010”,与通道4的通道标志相同的数据将输出为“0001”,根据不同的输出可以很好的将数组送入相应的通道,之后再进行数据的存储。
2.3 数据的通信
2.3.1 FT245RL 芯片
本文所设计的系统采用USB实现数据通信,并应用FT245RL芯片驱动USB总线数据通信。FT245RL芯片由美国FTDI公司开发,共有28个引脚,其中包括8位的并行数据口以及RXF、TXE、RD、WR等控制口。FT245RL用以实现USB接口和并行的I/O接口之间的双向转换,通过编程控制将数据由USB总线接口读取至内部数据总线上,再从内部的数据总线写入并行的I/O总线接口,以实现数据的传输,并且其内部的2个FIFO缓存可以保证数据传输的可靠性[5]。
2.3.2 FT245RL 编程
当下位机有数据待传时,FT245RL的RXF引脚将由高电平变为低电平,即表示缓冲区中有数据待读取。在RXF引脚为低电平期间,将引脚RD由高电平置低,则此时FT245RL将检测到引脚RD上出现下降沿,然后将缓存区中的数据读入。数据读取结束后,RD引脚恢复高电平,RXF引脚恢复高电平。
在将数据写入并行I/O接口时,首先检测TXE引脚,若为低电平,则可以进行写操作;将引脚WR拉高再拉低,完成数据写入缓冲区,再将TXE拉高,完成整个写入数据的操作[6]。
FT245RL读写操作时序图如下:
图4 FT245RL读数据时序图
图5 FT245RL写数据时序图
3 算法的程序实现
3.1 物体位置坐标的计算
由于系统的采样率较高,因此,在相邻的几段帧数据中,物体遮挡的光敏管数量会有所差异,应当选取被物体遮挡的最多的一组帧数据进行计算。此过程被称之为“最终坐标的筛选”。在选取到相应的帧数据(包括水平列的数据帧和垂直列的数据帧)后,以水平列为例,记录数据由‘0’变为‘1’(记为s1)和由‘1’变为‘0’(记为s2)的位置,即代表了光量发生变化的光敏管的位置。 光敏管的宽度为c,则物体在X轴上的坐标为:
Y轴坐标同理可得。
3.2 物体运动速度的计算
物体运动的距离由式1、2给出,物体位置坐标的计算方式已由前文给出。相应的运动时间(设为T)可由数据帧的时间标志位(设为h1和h2)与采样率(设为f)计算得到:
则物体的运动速度v可由式1-3计算得到。
3.3 物体体积的估算
常见的物体横截面分为矩形与椭圆,矩形的横截面面积算法在前文中已经给出,此处不再重复。对于横截面为椭圆的物体,设光敏管的宽度为c,在某一采样时刻光敏管水平列被遮挡m个,垂直列被遮挡n个,则横截面面积为
计算得到物体的横截面面积后,将所求得的面积在物体运动的位移方向上进行积分,得到:
即为估算的物体体积。式中N表示采样数,f为采样的频率,v为物体运动的平均速度,Sn为由第n个采样点记录的数据计算得到的物体的横截面面积[7]。
4 结语
本文在研究了光敏管阵列激光靶的基础上,深入研究了其工作原理,由于其在工作过程中将产生大量的数据,如一个由宽度为1mm的光敏管构成面积为300*300mm2光敏管阵列,一次采样需要记录1 200bit的数据;且若要提高系统估算物体参量的精度,则采样率将较大,一般以MHZ为单位,每秒采样的数据将以Gbit为单位。基于此特性,所设计的数据通信和数据处理系统要满足高速处理数据的同时也要保证传输的可靠性。通过实验论证,本文设计的数据通信和数据处理系统能够很好完成对光敏管阵列激光靶数据的采集、通信、存储以及分析任务。
同时本文中设计的系统也有部分需要改进的,如要提高计算结果的精确度需要提高系统的采样频率,但过高的采样频率对于FPGA的要求也就更高,对数据处理的速度的要求也就更高,在一定程度上很难使处理得到的数据的精确度有很大的提高;并且在物体的横截面估计算法中,只研究了横截面为矩形和椭圆的物体,但在实际的情况中,物体的横截面往往是不规则的,对于横截面不规则的物体设计相应的算法进行处理有待进一步研究和讨论。