基于卡尔曼滤波的声源跟踪方法研究(上)

简介: 基于卡尔曼滤波的声源跟踪方法研究(上)

摘 要

声源跟踪即通过对声音信号分析和处理定位声源位置并对声源的运动轨迹进行跟踪的过程。由于声音信号不受视线和环境的影响,所以声音跟踪技术广泛应用在在军事、医疗、航空和航天技术等领域,因此相关理论和技术受到了国内外各界的广泛关注,在雷达和通讯领域已经形成了较为成熟的理论体系。

本文主要研究了三种实现声音跟踪的算法并进行了仿真实验和分析,这三种算法分别是:扩展卡尔曼滤波算法、无迹卡尔曼滤波算法和容积卡尔曼滤波算法。仿真实验结果表明,容积卡尔曼滤波算法在匀速运动模型种的跟踪效果最好,均方根误差最小,随着信噪比的下降,三种算法的跟踪效果在逐渐下降,均方根误差在逐渐变大,在相同信噪比环境下,容积卡尔曼滤波算法具有稳定性好,准确性高的特点。在此基础上,利用Matlab设计了一个基于卡尔曼滤波的声音跟踪仿真系统,该仿真系统分为三大子系统,分别是声源选择和显示波形子系统、算法选择和声音跟踪结果显示子系统和三种算法比较分析子系统。本文所设计的仿真系统实现了声源选择、算法选择、声源跟踪、跟踪结果显示和三种算法比较的功能,界面友好,操作方便。

一、研究意义

声源跟踪技术即通过对声音信号分析和处理定位声源位置并对声源的运动轨迹进行跟踪。声源跟踪技术在军事、医疗、航空和航天技术等领域都有广泛应用,因此相关理论和技术受到了国内外各界的广泛关注。例如,在军事方面,由于声信号具有隐蔽性强、抗干扰能力强等特点且不易受外部环境因素影响,所以声源跟踪技术在军事领域得到了广泛应用。

卡尔曼滤波算法采用前一时刻的状态值和当前时刻的观测值来获得当前时刻的状态值,本质上是一个连续的预测和校正过程,不需要存储大量的历史观测数据,且由于其良好的参数估计性能,卡尔曼滤波算法被广泛应用于各种动态系统中,例如,目标定位与跟踪、风险指数评估等。目前卡尔曼滤波算法在各个领域仍然是研究和应用的热点。由于传统的卡尔曼滤波算法稳定性较差,在迭代过程中容易发散,使得最终的结果不易收敛,所以在传统卡尔曼滤波算法的基础上已发展出多个算法。例如,扩展卡尔曼滤波算法、无迹卡尔曼滤波算法和容积卡尔曼滤波算法等,这些算法也已逐渐发展成熟,并且应用在各个领域,例如,故障诊断、系统监测、巡航制导等。

二、研究内容

本文设计了基于卡尔曼滤波的声源跟踪仿真系统,主要工作如下:

  1. 对声源信号进行处理并产生麦克风接受到的声源信号,利用Image模型产生冲激响应同信号做卷积并添加噪声作为麦克风最终接受到的声源信号。
  2. 利用基于到达时间差的定位算法对声源进行定位,作为测量值,为下一阶段的跟踪做准备。
  3. 分别利用扩展卡尔曼滤波算法、无迹卡尔曼滤波算法和容积卡尔曼滤波算法进行声源跟踪并显示声源跟踪结果。
  4. 计算均方根误差及其均值,并以此作为标准比较三种算法的准确性和稳定性。

三、算法介绍

3.1基于到达时间差的定位算法

3.1.1算法原理介绍

基于到达时间差的定位算法是一种经典的定位算法,通过计算各个麦克风距离声源的距离和时间差来计算声源的位置,利用麦克风之间之间的音频信号的相关性估计时间差,麦克风位置固定,通过计算时延和角度转换,可以估计声源位置[10]。假设利用三个麦克风A、B、C,三个麦克风呈线性分布,三个麦克风的位置分布为(x1,y1),(x2,y2),(x3,y3),声源位置为(a,b),A和B的时延为tab,A和C的时延为tac,声速c为340m/s,声源和麦克风分布如图,则通过方程(2.1)和方程(2.2)可以解得声源位置。

3.1.2仿真实验设计与分析

仿真实验中三个麦克风的坐标分别为(1,0),(3,0),(5,0),声源的坐标为(2,2),得到的仿真结果如图所示,蓝色圆圈代表三个麦克风的位置,红色米字代表声源的实际位置,绿色五角星代表声源的估计位置。

定位误差为声源的实际坐标和估计坐标之前的偏差,从声源定位仿真图可以直观的观察到声源的定位精度较高,声源定位误差图可以得到估计的误差为0.1124,定位误差较小,估计效果较好。

3.2扩展卡尔曼滤波算法

3.2.1算法的基本原理

传统的卡尔曼滤波算法只适用于线性高斯系统,可以给出线性变换目标的最优估计,但是由于环境的随机性,在实际工程应用问题中更多的是非线性问题,因此,为了解决实际非线性系统的问题,提出了基于卡尔曼滤波算法的扩展卡尔曼滤波算法,扩展卡尔曼滤波算法是线性卡尔曼滤波算法在非线性条件下的一种扩展形式,利用泰勒级数展开将非线性模型转为线性模型,利用扩展卡尔曼滤波算法进行滤波计算,可以有效的解决非线性目标跟踪问题。其中扩展卡尔曼滤波算法将状态转移函数利用一阶泰勒级数展开对其进行近似,只保留一阶项,忽略高阶项,算法的流程如图.

扩展卡尔曼滤波算法主要包括三个阶段,第一阶段是初始化阶段,初始化状态值和协方差,第二阶段是预测阶段,预测当前时刻的状态值和协方差,第三阶段是更新阶段,首先更新卡尔曼滤波增益,然后利用卡尔曼滤波增益计算当前时刻的状态值和协方差并进行更新。

3.2.2仿真实验及分析

在仿真实验中,声源的运动模型为匀速运动模型,这种模型描述的运动目标的运动状态比较平稳,属于非机动运动模型。匀速运动模型表示的是声源沿一定方向,以恒定的速率运动

在仿真实验中,声源的初始坐标是(1,1),声源沿x轴方向的速度是0.05m/s,声源沿y轴方向的速度是0.2m/s,利用扩展卡尔曼滤波算法实现声源跟踪得到的仿真结果如图.

蓝色的点线是声源的实际运动轨迹,红色米字线是利用扩展卡尔曼滤波算法估计的声源运动轨迹,从跟踪轨迹可以观察出,起始一段时间的跟踪效果较好,但是随着跟踪时间的延长,跟踪效果在下降。均方根误差表示声源的实际位置同估计位置之间的偏差,从仿真结果图2.7均方根误差中可以观察出,从整体上看,随着跟踪时间的延长,均方根误差在逐渐增加,即跟踪精度在下降,稳定性较差,仿真实验中,采样时间为1s,声源跟踪的仿真时间为60s,跟踪过程中的均方根误差的平均值如图2.6,均方根误差的均值为0.1580

3.3无迹卡尔曼滤波算法

3.3.1算法的基本原理

无迹卡尔曼滤波算法是在卡尔曼滤波算法的基础上发展而来的,由于扩展卡尔曼滤波算法利用泰勒级数进行展开,只保留一阶项,忽略了高阶项,存在线性化误差,所以无迹卡尔曼滤波算法采样无迹变换来实现非线性系统线性化并解决均值和和协方差的非线性传递问题,即在原状态分布中按规则选取部分采样点,但是均值和方差同原状态相同,将这些采用点代入非线性方程中,求取变换后的均值和协方差,这种算法降低了扩展卡尔曼滤波算法线性化带来的误差,同时具有更小的估计误差[13]。无迹变换的特点是对非线性函数的概率密度分布进行近似,不增加算法实现的难度和复杂度,无迹变换变换得到的非线性函数的统计量可以达到三阶,减小估计误差,同时,应用无迹变换不需要计算雅可比矩阵,可以减少计算量。

3.3.2仿真实验及分析

在仿真实验中,声源的初始坐标为(1,1),声源沿x轴方向的速度为0.05m/s,声源沿y轴方向的速度为0.2m/s,利用无迹卡尔曼滤波算法实现声源跟踪得到的仿真结果如图.

蓝色十字线代表声源运动的实际轨迹,红色米字线代表利用无迹卡尔曼滤波算法获得的估计轨迹,从整体上看,声源的跟踪效果较好,跟踪轨迹和真实轨迹较为吻合,相较于应用扩展卡尔曼滤波算法的跟踪效果好,从均方根误差图2.11可以看出,整体均方根误差同应用扩展卡尔曼滤波算法相比整体呈现下降的态势,但随着跟踪时间的延长,均方根误差逐渐增大,跟踪效果逐渐下降。在仿真实验中,采样时间为1s,声源跟踪的仿真时间为60s,整个仿真过程的均方根误差的平均值如图2.10,均方根误差的均值为0.0721,误差比应用扩展卡尔曼滤波算法的误差小。


基于卡尔曼滤波的声源跟踪方法研究(下)+

目录
相关文章
|
2月前
|
人工智能 算法 机器人
基于卡尔曼滤波的声源跟踪方法研究(下)
基于卡尔曼滤波的声源跟踪方法研究(下)
39 0
专家PID控制轨迹跟踪研究(Matlab代码实现)
专家PID控制轨迹跟踪研究(Matlab代码实现)
116 0
|
7月前
|
机器学习/深度学习 监控 算法
ICCV2023 | 基于动作敏感性学习的时序动作定位
ICCV2023 | 基于动作敏感性学习的时序动作定位
293 0
|
机器学习/深度学习 运维 算法
【状态估计】电力系统状态估计中的异常检测与分类(Matlab代码实现)
【状态估计】电力系统状态估计中的异常检测与分类(Matlab代码实现)
133 0
|
机器学习/深度学习 存储
基于小脑模型神经网络的轨迹跟踪研究(Matlab代码实现)
基于小脑模型神经网络的轨迹跟踪研究(Matlab代码实现)
|
资源调度
【鲁棒、状态估计】用于电力系统动态状态估计的鲁棒迭代扩展卡尔曼滤波器研究(Matlab代码实现)
【鲁棒、状态估计】用于电力系统动态状态估计的鲁棒迭代扩展卡尔曼滤波器研究(Matlab代码实现)
|
传感器 Web App开发 算法
【状态估计】基于无味卡尔曼滤波模拟倾斜传感器研究(Matlab代码实现)
【状态估计】基于无味卡尔曼滤波模拟倾斜传感器研究(Matlab代码实现)
|
传感器 数据采集 监控
【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)
【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)
136 0
【WLSM、FDM状态估计】电力系统状态估计研究(Matlab代码实现)
【WLSM、FDM状态估计】电力系统状态估计研究(Matlab代码实现)
|
机器学习/深度学习 算法 机器人
基于BP神经网络的轨迹跟踪研究(Matlab代码实现)
基于BP神经网络的轨迹跟踪研究(Matlab代码实现)
108 0