《武汉工程大学学报》  2014年07期 64-67   出版日期:2014-07-31   ISSN:1674-2869   CN:42-1779/TQ
牛顿迭代算法在声场定位中的应用


0引言声场定位技术是确定声源相对于传感器的距离和位置的新技术,涵盖了语言科学、声学、信号处理、电子学等学科,有着诸多方面的应用.根据声音探测方式的不同,声音定位分为主动声定位和被动声定位两种方式[1].主动声定位有发射、接收装置,譬如雷达[2],使用雷达向外发射信号,然后根据回波的性质判断待测目标的位置.被动声定位,只有接收装置,是利用目标上的辐射信号进行定位,与主动声定位相比较,具有隐蔽性强、安全性高等特点[3],是现阶段声音定位技术研究的热点.声场定位系统主要是利用各个传感器接收声音信号,经过信号滤波、放大等手段对信号进行处理,然后根据声音信号到达各个传感器的时间延时差TDOA(Time Difference of Arrival,以下简称:TDOA)计算出声源相对于传感器的位置[4].利用时间延时差计算具体位置的算法有多种,最简单的就是勾股定律,根据直角三角形三边关系,计算出声源相对于传感器的位置.但是该方法求解方程非常困难,精度不高.牛顿迭代算法是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,主要针对方程不存在求根公式的情况.牛顿迭代算法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,经过多次迭代,即可计算出结果[5].1系统总体设计1.1声场定位系统的功能设计本系统在一个矩形区域的4个顶角A、B、C、D分别设置1个传感器,矩形区域内部设置1个可任意移动的扬声器,如图1所示.图1系统结构图Fig.1Structure diagram of system发声模块发出特定频率的声音信号,传感器A、B、C、D接收到声音信号后进行信号滤波、放大等处理,单片机根据处理过的信号计算得到信号到达各点的时间差,再通过特定的算法,即可计算出声源在矩形区域中的具体位置.1.2系统基本原理基于时间延时差的被动声音定位算法,其基本原理是在空间内,将4个传感器分别布置成一定的形状,来接收声源的声音信号,通过计算每相邻两个传感器之间所接收到的信号时间延时差,并结合所布置的声学阵列的几何关系,来计算得到声源位置坐标.如图2所示的示意图中,声源S的位置坐标为(x,y),声源S到4个传感器之间的距离分别为L1、L2、L3、L4. 图2系统坐标示意图Fig.2Coordinate schematic diagram of system第7期刘霞,等:牛顿迭代算法在声场定位中的应用武汉工程大学学报第36卷2算法设计2.1牛顿迭代算法设xk是f(x)=0的一个近似根,把f(x)在xk处作泰勒展开可得:f(x)=f(xk)+f′(xk)(x-xk)+f″2(x-xk)2+….(1)式(1)中若取前两项来近似代替f(x),则得到近似线性方程:f(x)≈f(xk)+f′(xk)(x-xk)=0.(2)设f′(xk)≠0,并令解为xk+1,得:xk+1=xk-f(xk)f′(xk).(3)利用上述方法,可以将牛顿迭代算法推广到二元函数,从而对系统的声源位置坐标求解.2.2声场定位中应用牛顿迭代法当声源发声时,A、B、C、D点会根据声源S的具体位置按一定先后顺序接收到声音信号,例如点A先收到信号,则B和A之间的时间差为△T1,D和A之间的时间差为△T2.设A点为坐标原点,根据三角函数关系以及声音在空气中传播的时间与距离成正比的关系得到式(4)和式(5):△l2=Dd-Da=-x2+y2+x2+(lAD-y)2=△T2×V,(4)△l2=Db-Da=-x2+y2+(lAB-x)2+y2=△T2×V,(5)式(4)和式(5)中,V为声音在空气中传播的速度.设f1(x,y)=x2+y2-x2+(lAD-y)2+△T2×V,(6)f2(x,y)=x2+y2-(lAB-x)2+y2+△T2×V.(7)式(6)和式(7)分别对x,y求偏导数,得:f′1x=xx2+y2-xx2+(lAD-y)2,(8)f′1y=yx2+y2+yx2+(lAD-y)2,(9)f′2x=xx2+y2+lAB-x(lAB-x)2+y2,(10)f′2y=yx2+y2-y(lAB-x)2+y2.(11)任取一点(x0,y0),将式(6)和式(7)分别在该点处做泰勒展开,并取其一阶导数来近似代替f(x,y),即f(x,y)的线性化,得近似线性方程:f1(x,y)≈f1(x0,y0)+f′1x×(x-x0)+f′1y×(y-y0)=0,(12)f2(x,y)≈f2(x0,y0)+f′2x×(x-x0)+f′2y×(y-y0)=0.(13)设f′1x≠0,f′1y≠0,f′2x≠0,f′2y≠0,解得:x=x0+f1(x0,y0)×f′2y(x0,y0)-f2(x0,y0)×f′1y(x0,y0)f′2x(x0,y0)×f′2y(x0,y0)-f′2y(x0,y0)×f′2y(x0,y0),(14)y=y0+f2(x0,y0)×f′1x(x0,y0)-f1(x0,y0)×f′2x(x0,y0)f′2x(x0,y0)×f′1y(x0,y0)-f′1y(x0,y0)×f′2y(x0,y0).(15)式(14)和式(15),就是求解坐标的迭代公式.在求解过程中,(x0,y0)已知,可以计算出(x,y)的值,再将其带入以上两个方程,经过多次迭代运算,即可得到精确的位置坐标.3测试与分析3.1上位机测试利用上位机软件可以很方便的测试牛顿迭代算法的可行性和精确性.编写的上位机软件界面如图3所示.图3上位机界面Fig.3PC interface由于是在上位机中进行模拟测试,所以需要设定S点到A、B、C、D点的距离数据和时间延时差△T1,△T2用于算法的测试.实验中,给定待测坐标为(30,80),生成测试所需的数据为L1=85.44,L2=476.76,L3= 542.033,L4=271.662,△T1=1.150 94,△T1=0.547 1.点击“求解”按钮进行迭代运算,位置坐标结果见表1.表1上位机测试数据Table1Test data of computer 测试编号横坐标x/mm纵坐标y/mm129.799 284.041 8229.993 680.007 833080从表1可以看出,只需经过3次迭代运算,即能精确得到待求的位置坐标,并且在第1次迭代运算时,得到的数据就已经非常接近实际值.3.2实物测试在350 mm×500 mm的坐标纸上进行测试,传感器位于矩形区域的4个顶角,声源模块位于矩形区域内,让声源发出1 s左右的声音信号,单片机接收信号并进行运算.编写单片机程序用于实物测试,图4为系统软件流程图.图4程序流程图Fig.4Diagram of program flow经过多次试验所得结果如表2所示.表2实物测试数据Table 2Test data测试编号声源坐标(x,y)/mm测量坐标(x,y)/mm1(100,100)(110,118)2(150,150)(165,141)3(200,250)(215,264)4(250,300)(263,294)5(300,350)(314,367)试验表明,系统能够可靠的实现坐标定位,但是略有误差.这种误差大多来源于传感器后级的信号处理,若4个信号处理部分不能完全一致,则时间延时差就不能准确测量,从而导致误差的存在.但是定位精度仍能达到±15 mm,可见定位性能稳定可靠.4结语笔者提出了一套被动定位方式的声场定位系统,利用声音到达的时间延时差进行处理对声源进行精确定位.由于声音频率的局限性以及室内具体因素的影响,目前只能用在声音干扰小的环境且声源声音频率单一的情况.但系统采用的牛顿迭代算法,具有非常强的实用性.利用牛顿迭代算法的快速收敛性,在迭代过程中,只需要迭代几次就可以快速、精确计算得到声源坐标.上位机模拟测试和实物测试表明,牛顿迭代算法在声场定位中有着重要的应用价值.致谢全国大学生电子设计竞赛组织委员会提出本研究的方向,武汉工程大学电气信息学院提供了经费支持和帮助,在此表示感谢!同时衷心感谢该项目组的全体成员!