王晓辉,徐文渊,吴燕静
(浙江大学 电气工程学院,浙江 杭州310027)
随着普适计算、物联网概念的深入,智能手机传感器应用得到越来越多的关注,研究的范围覆盖诸多领域,如,行为感知、情景识别、室内定位和环境监测等[1]。如何综合这些传感器的数据,拓宽手机的使用场景,仍然是一个开放的问题。风速风向测量广泛应用于气象、海洋、机场等多领域,目前普遍使用超声波测风仪测量风速风向[2]。
手机是人出行必备设备,完成的功能也越来越多。当前已经存在利用手机测量风速的应用,例如:Wind Meter[3]可以根据麦克风输出声音信号的特点,测量气流吹向麦克风的速度。借助于外置的配件,Vaavud[4]可以测算出当前的实时风速。但是对于风向信息的测量还没有得到应有的重视。本文提出了基于智能手机的麦克风和姿态传感器测量风向的方法。首先,通过模型分析和实验验证,建立了风吹向麦克风产生的风噪声和风的入射角度的关系;然后设计算法从风噪声数据中识别出风向;最后在Matlab 上完成算法仿真和性能分析。
智能手机上普遍采用的声音传感器是MEMS 麦克风。MEMS 麦克风内传感部分(transducer)的实质是一个可变电容器,其结构如图1 所示。传感原理利用了固定板(backplate)和可动板(diaphragm)联接形成的电容的变化。气流通过背板的音孔,振动膜板,改变电容两极之间的气隙,引起电容的变化。
姿态传感器通过三个角度和一个时间戳(timestamp)描述手机各个时刻的姿态,这三个角度分别为方位(azimuth)角,俯仰(pitch)角和翻滚(roll)角。通过这三个角度,可以得到手机相对于地球参考系的姿态。其中,三个角度的定义如下:
图1 MEMS 麦克风传感部分构造和手机参考系Fig 1 Structure of sensing part of MEMS microphone and reference system of smartphone
1)方位(azimuth)角,手机围绕z 轴的转动度数。这是地磁北极和设备的y 轴之间的夹角。例如:如果手机的y轴与地磁北极对准,此值是0°,如果y 轴指向南,这个值是180°。同样,当y 轴指向东这个值是90°,当它指向西这个值是270°。
2)俯仰(pitch)角,手机围绕x 轴的转动度数。当手机z 轴正向朝向y 轴正方向转动时,俯仰角为正,当z 轴正向朝着y 轴负方向转动时,此值为负。俯仰角的范围为180°~180°。
3)翻滚(roll)角,手机围绕y 轴的转动度数。当z 轴正向朝向x 轴正向转动时,这个值是正的,当z 轴正向朝向x 轴负方向转动时,它是负值。翻滚角的范围为90°~90°[5]。
本文通过方位(azimuth)角推算手机的指向,并依此确定风源所在方向。
声波并不是唯一能使麦克风产生输出的振动源[6]。由麦克风的传感原理可知,振动引起的麦克风内两极板间间隙的改变是产生输出信号的原因。当风吹向麦克风时,气流同样可以引起可动膜板的振动,进而产生输出信号。本文中称这种由气流直接引起的输出信号为风噪声。
气流进入麦克风口的角度(入射角如图2)影响风噪声的特性,通过实验发现了风噪声和入射角的关系。
图2 气流入射角示意图Fig 2 Illustration of airflow incident angles
1)风噪声的强度随着入射角的变化而变化,且最大值所对应的入射角不固定。当入射角为0°,即风正向吹向麦克风时,产生的噪声强度并不一定总是最大。在风速较小条件下,风产生的噪声在入射角为0°时达到最大。但当风速较大时,0°倾角产生的噪声并不是最大。这个结论表明,通过噪声最大值确定风向的办法不可行。
2)风噪声的波形呈现对称性,且对称轴的位置对应于风源。在风速不变情况下,当入射角的度数相同时,风从左侧和从右侧吹向麦克风产生的噪声相似。当风从一侧均匀变化到另一侧吹向麦克风口时,麦克风产生的噪声的波形呈现对称的特性,称这个现象为风噪声的对称性,如图3 描述了空调作为风源时,三种不同风速下,风噪声在各个入射角下的波形图和频谱图(spectrogram)。观察波形,发现对称轴的位置对应于风源所在的方向角。这个结论表明,可以通过定位对称轴的角度,计算出风源的方向。
图3 风噪声的时域波形和频谱图Fig 3 Time domain waveforms and spectrograms of wind noise
为了实现手机测量风向,设计了Wind Compass 系统。图4 描述了Wind Compass 的工作流程。
开始测量后,一边转动手机,一边记录数据。手机将会同时记录环境中的声音(包括风噪声和其他声音)和手机的姿态数据。数据预处理包括两个步骤:提取风噪声特征信息和恢复风噪声对称性。由于麦克风可能记录风噪声以外的声音,而对称性分析的是风噪声和入射角的关系,所以,需要将代表风噪声的特征量提取出来。其次,预处理将时间均匀变化的声音信号采样成为入射角度均匀变化的声音信号。接着,根据本文提出基于循环卷积的循环自卷积(circular auto-convolution,CAC)算法,计算出风噪声信号的对称轴。最后,通过对称轴的时间戳,确定手机在该时刻的方向角,计算出风向。
图4 Wind Compass 的工作流程Fig 4 Workflow of Wind Compass
风噪声信号的对称轴对应于风向,因此,测量风向的核心是定位出风噪声信号的对称轴。由于噪声信号波形的多样性和其它噪声的干扰,通过个别点确定对称轴位置的误差会很大。因此,设计了CAC 算法。最基本的思想是,当两个相似的信号完全重叠时,卷积的值最大。
卷积是通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f 与经过翻转和平移的g 的重叠部分的面积[7]。对于定义在离散域的函数,卷积定义为
自卷积即定义中的f 和g 为同一个函数,循环卷积指f和g 中有一个函数是周期性延拓的。
卷积的大小量化了平移过程中,原始信号和翻转信号重叠部分面积的大小。重叠部分面积越大,卷积的值越大。循环卷积是为了确保平移过程中重叠的点数始终相同。自卷积是为了得到信号本身两部分间的相似程度。一个给定信号的循环自卷积值的大小,只和信号本身的相似程度有关。如果信号是近似对称的,无论对称轴位于信号中哪个位置的,信号本身的波形如何,那么,一定是两个信号的对称轴重合时重叠部分的面积最大,卷积的值最大。
图5 列举了3 组原始信号序列和相对应的循环自卷积序列。选择的3 组原始信号分别代表风噪声三种典型的波形。三种情况中,原始信号的对称轴都位于N=60°的位置。原始信号的波形没有包含完整一周(0° ~360°)的信息,且对称轴不是在序列的中间位置。但三种情况下,CAC算法都成功定位出对称轴的位置,并用虚线表示在原始信号中。
在Matlab 上实现CAC 算法,并用实验中的声音数据分析算法的有效性。图6 描述了其中一个样本的结果。图6(a)描述了时域内取绝对值后的声音信号,图6(b)是计算出来的卷积序列。图6(a)中的横轴,既是声音信号的时间轴,也表示手机转动的时间。手机匀速转动下,风的入射角度和时间线性相关。数据中,当手机转动到第8 s 时,麦克风正指向风源。图6(b)的卷积序列中,最大值是序列中的第Xm个点,由粗实线标出。根据算法推出声音信号的对称轴在Xa位置,用虚线表示,并在声音信号中用实线标出。观察可知,标记的对称轴和风源的位置重合。因此,算法有效地定位出了风源的方向角。
图5 利用CAC 算法定位对称轴的示意图Fig 5 Illustration of symmetry axis locating by CAC algorithm
图6 利用CAC 定位声音序列对称轴实例Fig 6 Example of symmetry axis of sound sequence locating by CAC
测试了60 组实验数据,并统计了测量结果和误差,如图7 所示。60 组数据的平均误差是3°,最大误差是10°。
图7 测量结果Fig 7 Results of measurement
本文提出了使用智能手机来测量风向的方法Wind Compass。Wind Compass 利用手机的麦克风和姿态感应器分别记录风噪声和方向数据。风噪声是指气流振动麦克风膜板产生的声音信号。通过实验,发现气流在对称入射角下产生的噪声相似。入射角均匀变化下的风噪声波形具有对称特性,对称轴的角度对应于风向。本文首次提出通过定位噪声序列中对称轴确定风向的方法。然后设计了基于卷积的CAC 算法定位序列的对称轴。在Matlab 上完成算法仿真,并分析了实际的声音数据。60 组数据的平均误差是3°,最大误差是10°。
[1] 李文洋.基于智能手机传感器的行为识别算法研究[D].长春:吉林大学,2014.
[2] 程启明,汪明媚.风力发电中风速测量技术的发展[J].自动化仪表,2010,31(7):11-13.
[3] Goingapps.iphone windmeter[EB/OL].[2013—10—12].http:∥www.goingapps.com/pages/default.aspx.
[4] Vavuud.phone accessory[EB/OL].[2013—10—16].http:∥vaavud.com/.
[5] Google.Android API[EB/OL].[2014—09—18].http:∥developer.android.com/reference/android/hardware/SensorEvent.html.
[6] Staple B W,Schladt G A,Holmes M E.Wind noise and vibration noise reducing microphone:U S,5,288,955[P].1994—02—22.
[7] 维基百科.卷积[EB/OL].[2014—06—15].http:∥zh.wikipedia.org/wiki/%E5%8D%B7%E7%A7%AF.