背景:3D
测量检测的项目逐年增加,3D项目的复杂程度也在逐渐增大,客户对于成像质量的提升,测量数据稳定性的提升也是不断提高,不断减小
CT提升扫描效率也是客户永恒的追求。
减小曝光时间和减小ROI(SmartXpress多ROI的功能可以有效减少ROI)能有效提升
扫描频率,减小CT从而提升效率,但是
传感器的最大扫描频率也是有上限的。除了传感器自身的扫描频率的提升外,项目需求的深入分析也是提升优化CT的一个重要的方法。
案例需求分析
如下图所示www.cechina.cn,客户要求检测一个手机Housing的关键零部件的高度断差,平面度等:
根据上述需求,如果扫描方向沿着Housing的长轴方向扫描,选用SmartRay ECCO 95.100+ 3D传感器来实现该项目,为了能兼容扫描摄像头支架和螺柱高度检测,根据一般工程经验,扫描方向的分辨率需要是料件宽度的1/5到1/10,因此扫描方向的分辨率至少为0.4/5=0.08mm,但是为了保证测量的稳定性和图像比例,设置扫描方向的分辨率为0.05mm,那么扫描行数为:
即:
如果在传感器的曝光时间和ROI已经优化的情况下,传感器的最大扫描频率为2,800Hz,即每秒钟扫描的行数为2,800行,那么扫描该料件需要的时间为:
那么此时的CT(单独指扫描所需时间)为约1,100ms。
观察这个料件和分析需求,第2个需求是测量52mm的充电板的平面度,在测量这个区域时,扫描方向的分辨率可以设置大一些,例如,在扫描充电板扫描方向的分辨率0.2mm,因此为了提升CT,如果把料件分为三部分,即料件的区域1和区域3以0.05mm的扫描方向的分辨率,区域2以0.2mm的扫描方向的分辨率,那么以此方式扫描,扫描行数理论为:
即扫描该料件的理论时间为:
因此,扫描该料件的CT由1,100ms缩减到723ms,提升效率1/3。
解决方案
为了在项目上实现该提升CT的目的,意味着我们传感器需要支持变速扫描,在区域1和区域3的时候,还是保持2800Hz x 0.05mm = 140mm/s的最大扫描速度运行,但是在区域2时,由于扫描间隔可以放大,那么区域2的最大扫描速度可以到2800Hz x 0.2mm = 560mm/s的速度运行,如下图所示的速度和运动距离:
如果在使用外部编码器信号,不改变Trigger Divider的情况下,在以560mm/s扫描区域2的情况下,触发的频率大于允许的传感器的最大允许频率,如果在区域1,3时的最大扫描频率是2,800Hz,那么在扫描区域2的时候,最大的扫描频率已经是11,200Hz,远远超出传感器的最大允许的扫描频率,此时编码器显示触发溢出。
在触发溢出的情况下,传感器得到的图像是变形的,且API函数无法在获取到的数据都是以默认方式排列的(扫描方向-点云的X向),如下图所示:
由于区域2扫描间隔大约是区域1和区域3的4倍数控制工程网版权所有,因此,区域2位置的点云图像是被压缩约4倍的,且在点云上,扫描方向的分辨率点间隔仍然是0.05mm,这样并不符合实际的点云情况。
此时,如果启用Smartray API的
Metadata功能,我们就能够通过Metadata的数据重构点云,Metadata包含了每一个Profile的时间戳
CONTROL ENGINEERING China版权所有,触发时的计数的编码器的值等信息。
Metadata详细信息如下:
Start trigger number : 1
Data trigger number : 1800
Profile number : 1800
Timestamp : 3651677755
TimeStampSequence : 1141643410
Input_0_State : 0
Input_1_State : 0
QuadStepCountFiltered : 80136
QuadStepCountRaw : 80136
TriggerOverflow : 0
OutputStatus : 0
DataTriggerOverflowCnt: 0
Metadata 信息解释:
Start trigger number:1 代表Start Trigger信号接收的次数,如果传感器工作在Snapshot模式且使用了Start Trigger信号,那么该值始终1,如果传感器工作在SnapShot_Repeat模式,那么传感器执行几次完整的扫描(例如10),该值就为多少(例如10).
Data trigger number:1800 代表传感器接收Data trigger的次数,如果使用编码器或者单端脉冲做Data trigger信号,扫描过程中无溢出的情况,那么该值就等于:
Profile Number: 1800 代表当前的采集获取到多少行的Profile线,最大值等于Number of profile to capture. 但是当设置为多重曝光时,这个值就与Data trigger number不相等。
Time Stamp: 3651677755指传感器从执行Start Acquisition之后的计时时间,以纳秒为单位,大约40秒重置一次。
Time Stamp Sequence: 1141643410这个值指的是传感器在接收到Start Trigger信号之后的计时时间,以纳秒为单位。
Input_0_State:0 代表传感器在采集该Profile线时,对应传感器的Input1的信号电平状态。
Input_1_State:0 代表传感器在采集该Profile线时,对应传感器的Input2的信号电平状态。
Quad Step Count Filtered:80136 代表传感器自传感器执行Start Acquisition之后,在设置编码器触发是有方向过滤后的编码器的计数。
Quad Step Count Raw:80136 代表传感器自传感器执行Start Acquisition之后,在设置编码器触发后的编码器的计数,包括运动轴正反向运动,都会计数。
Trigger Overflow:0 代表传感器接受的Start Trigger信号是否有溢出,0代表触发正常,1代表触发有溢出。
Output Status:0代表传感器在采集该Profile线时,传感器的output信号的输出状态;它是由2位数组成的,2位数的第一位代表Output1信号的状态,第二位代表Output2信号的输出状态。
DataTrigger Overflow Cnt:0代表传感器的自接收到外部的Data trigger第2个溢出值之后的溢出个数的计数。
实操步骤
重新构建扫描方向的点间隔,操作方式如下:
● 通过SR_API_SetMetadataExportEnabled使能Metadata的导出功能。
● 通过Metadata的Quad Step Count Filtered的值,重新构建点云数据。
通过前面对Quad Step Count Filtered值的解释,我们知道每次采集profile线时,当前的Data trigger的计数值,我们也知道每个Data trigger信号的间隔,例如我们知道如果传感器使用编码器信号,编码器的脉冲当量是N (mm),根据我们白皮书的介绍,我们的传感器接收编码器是以周期为单位的,等于4倍的脉冲当量,所以我们知道一个profile计数对应的坐标扫描方向的坐标,例如:
4N×QuadStepCountFiltered=X(current profile position)
不管当前的扫描时Data trigger信号是否溢出。
因此,我们可以用Metadata 数据来重构点云,特别是有触发溢出时的点云重构,针对本文中的示例,我们重构点云的情况如下:
我们可以看出,重构点云的区域2,是以高速560mm/s扫描的区域,此时扫描溢出控制工程网版权所有,图像变形,但是通过Metadata重新构造出来的,与实际的料件情况一致。
总结
我们可以发现,Metadata 包含了传感器的很多原始信息控制工程网版权所有,可以利用这些原始信息,重构点云,也可以通过Metadata得到传感器所在运动轴的详细信息,这样可以满足很多的特殊应用。