严慧敏,何炳蔚
(1.福建信息职业技术学院机电工程系,福州350003;2.福州大学机械工程及自动化学院机电系,福州350108)
振动现象在机械工程中是一个不容忽视的现象,一方面会影响产品质量并缩短设备的使用寿命,另一方面,人们可利用振动的原理测量工件的性能,探测工件是否损伤。因此,振动测量在机械工程领域中有着十分重要的作用。目前常用的振动测量方法有接触式测量和非接触式测量,这两种方法均有局限性,接触式测量需要在物体表面安装传感器,可能会给工件表面带来损伤,而且一个很大的不足就是只能获取安装有传感器位置的数据,如要获取多个位置数据需要安装多个传感器。同时,测量时对工人的技术经验要求较高,在被测物体表面形状复杂时或恶劣环境下都给安装传感器带来极大的不便。非接触式测量不需要直接接触振动物体表面,不会损伤工件表面,但是没有做标记点的位置的振动信息也无法获得。虽然三维数字图像相关性的应用解决了表面所有点振动信息测量的问题[1-2],但该方法要求被测物体表面要经过精加工或者抛光,以提供所需的对比相关图像。
本文提出利用Kinect传感器获取振动信息的方法具有以下优点:1)单次测量便可获取振动物体表面所有点的振动信息,大大提高了测量效率;2)实时获取振动信息;3)无标记、非接触式测量,增加了复杂测量条件下的适应性;4)测量成本低,Kinect传感器的市场售价大约在人民币1 000~2 000元之间[3]。
Kinect传感器获取深度信息采用的是光编码(Light Coding)技术,即通过激光光源对待测空间进行光学编码,该技术给出的是一个具有三维纵深的“体编码”,即激光散斑(Laser Speckle)技术。激光散斑具有高度随机性,每一道光线都带有编码信息,随着距离的不同,摄像机采集散斑阵列得到的图案也不同,因此,空间中任意2个位置的散斑形状都是不同的。将目标物体置于该空间里,通过对该物体表面的散斑图案进行解码即可得到目标物的空间位置[4]。Kinect传感器包含一个红外激光发射器、红外摄像头和一个RGB摄像头,获取深度信息过程如下:首先,通过红外激光发射器发射随机和非重复的红外激光斑点图案到物体表面上,红外CMOS摄像头负责接收红外发射器发射的信息,然后利用该反射信息计算出每个像素的深度值。在空间不同位置的目标物离Kinect设备的距离不同,则反射回红外CMOS摄像头得到的结果与发射时的模版不同,通过匹配存储在PS1080芯片的模版,从而计算出在Kinect视野范围内点的深度值。Kinect传感器出厂时,参考的图案就从一个已知距离的平面上获得并存储在相机的存储器里。红外激光点在任何不透明的物体表面产生的红外位移图像与参考图案的投影进行比较,这些位移用来计算目标点K的偏移值。通过测量所有点的偏移值,可得到一幅偏移图像,利用公式 (1)[5],就可以计算场景内相应像素的深度值。
式中:Zk为在对象空间的点K 的深度;Z0为参考平面的距离;f为红外摄像机的焦距;b为基线长度;d为对应的K点的偏移量。
3个参数Z0,f和b在摄像机出厂时就已经标定好。
为了避免直接采集三维振动数据带来的存储速度慢的问题,Kinect传感器在测量振动时只采集被测物体表面的深度值,保存为深度图像,即每个像素都存储了对应点的深度信息,每个像素点的图像坐标需转换到相机坐标系下的三维坐标(XK,YK,ZK),计算公式(2)[5]和公式(3)[5]如下:
式中:f为红外摄像机的焦距;xk,yk为图像中点K的坐标;x0和y0为坐标原点;∂x和∂y为镜头畸变校正系数。
这些参数可通过相机标定获得。
由此可计算场景中所有点的空间三维坐标(Xk,Yk,Zk),并得到整个表面的三维坐标。Kinect传感器的采集频率为30Hz,所以,对于场景中的振动物体可以实时获取物体表面深度的变化信息。
在测量动态物体表面信息时,Kinect传感器每次拍摄中都可获得物体表面上百万个点的深度变化信息。与传统视觉测距(如双目立体测量)方法相比,Kinect传感器实时获取物体表面上所有点的深度值,其测量位置数量远远多于传统视觉测量。通过坐标转换可将深度信息还原为三维数据,提高了测量维度。而且Kinect传感器在测距时不需要在物体表面粘贴标记点,大大提高了测量效率,减少了重复实验的麻烦。鉴于这些优点,将Kinect传感器用于振动测量,可大大提高测量的效率。
测量实验用一台UTG1402数字信号发生器产生一个稳态低频信号,信号经过YE5872功率放大器放大,驱动电动式激振器SINOCERA JZK-20在悬臂薄钢板末端产生稳态正弦激励,振动板处于Kinect传感器的有效视场和深度范围内。采集得到振动表面的原始点云数据,由于深度测量的波动性和来自设备的误差,获得的原始点云是有噪声的,因此,要对这些原始点云进行预处理,通过融合点云库PCL滤波算法与傅里叶拟合算法对初始点云进行滤波与拟合,去除异常值,提取出所需要的点。预处理后,所有的点有较好的精度,方便下一步的数据处理。Kinect的拍摄帧速是30帧/s,即每隔1/30s采集一次数据,Kinect每采集一次点云数据,就触发计时器记录下当前时刻tn。三维坐标以及采样间隔为研究者提供大量的四维振动信息,这意味着根据实验要求,可以实时提取表面任何一点的振动信息并进行振动分析。图1表示提取横截面A上任意点M的四维振动信息,提取结果如图2所示,其中t0为静止状态。对选出M点的三维离散振动数据进行时域信号拟合,拟合结果如图3所示,图中分别以X,Y和Z3个方向上的振动曲线表示。
图1 提取点M的四维信息
图2 截面上点M四维信息提取结果
为了证明Kinect传感器的测量精度,将Kinect传感器测得的数据与力传感器测得的数据进行比较。所有的比较过程在相同振动条件下进行。
图3 M点的X,Y和Z方向的振动曲线
由于实验中的振动属于低频、幅度较大的振动,力传感器在测量低频振动时具有良好的频率响应特性,因此选用力传感器作为比较对象。实验采用了一个st-01-10kg力传感器。选择在不同的频率下进行了大量的实验。图4为不同频率下Kinect传感器和力传感器测得的幅频曲线比较图,通过比较这两种测量方法的幅频曲线,说明利用Kinect传感器采集的幅频特性数据与利用力传感器所测得的数据相似。表1为Kinect和力传感器在不同频率下分别测得的振幅值。表2为二者测得振幅的误差和相对误差比,说明在一般精度要求的应用场合中,Kinect传感器的测量精度与力传感器测量精度没有多大差别。图5为两种测量工具测得的振幅误差和相对误差比的折线图,数据表明随着振动频率的提高,振幅误差也会增加,但范围在0.4mm内。比较实验结果表明了将Kinect传感器应用于对低频振动物体表面进行振动测量的可行性。
表1 Kinect传感器与力传感器测得的幅值比较
图4 Kinect和力传感器的幅频曲线比较
表2 Kinect传感器和力传感器之间的振幅误差和振幅相对误差比
图5 Kinect传感器和力传感器的振幅误差和相对误差比
研究实验表明Kinect可满足一般精度要求的低频振动测量。它突破了传统振动测量方法的局限性,实现无标记、全域化非接触式测量,高效实时获得整个振动物体表面的振动信息,提高了测量效率和实效性,同时增加了复杂测量条件下的适应性,给企业在机械设备的振动监测方面带来很大的方便性和经济效益。工程中利用振动对未知物体进行检测,如探伤或者形变,利用Kinect传感器获取的整个物体表面振动信息,可以直接定位目标区域的位置,再提取目标位置的振动信息做进一步分析,使未知物体的检测更加快捷、有针对性,提高了检测效率。而且随着Kinect采样频率的提高,它将具有更广泛的工程应用价值。
[1]Helfrick M N,Niezrecki C,Avitabile P,et al.3Ddigital image correlation methods for full-field vibration measurement[J].Mechanical Systems and Signal Processing,2011,25(3):917-927.
[2]Tung S H,Kuo J C,Shih M H,et al.Using the simplified 3DDIC method to measure the deformation of 3D surface[J].Applied Mechanics and Materials,2012,121:3945-3949.
[3]作者不详.支持 Windows PC的Kinect 2以$199的价格开始接受预定[EB/OL](2014-07-07)[2015-09-01].http://www.cnbeta.com/articles/307767.htm.
[4]余涛.Kinect应用开发实战:用最自然的方式与机器对话[M].北京:机械工业出版社,2013:56-59.
[5]Khoshelham K.Accuracy analysis of kinect depth data.ISPRS-international archives of the photogrammetry[J].Remote Sensing and Spatial Information Sciences,2011(5):133-138.