基于声源定位的智能小车
2023-08-09苏俊杰胡杰
苏俊杰 胡杰
摘 要:文章基于声源定位技术研发出一款在移动过程中自动避障的小车,其以 STM32F103C8T6为主控开发板,将 K210 搭载麦克风阵列作为声源处理装置,并且采用时延算法得出声源到达不同麦克风阵列的时间差,从而计算出声源和小车的距离以及角度。为了使角度更加准确,加上了卡尔曼滤波。测试结果表明,小车到达声源的位置较为准确。
关键词:时延算法;声源定位;超声波测距;麦克凤阵列;STM32
中图法分类号:TN912文献标识码:A
1 引言
声源定位小车是一种基于声学传感技术的智能机器人,它能够在那些复杂的环境中实现一些声源的定位和跟踪,具有广泛的应用前景。
目前,声源定位小车已在安防、智能家居、医疗等领域得到了广泛的应用,例如,在安防领域,声源定位小车可以通过定位报警设备的声源位置,实现对安全隐患的及时发现和处理;在智能家居领域,声源定位小车可以作为家庭智能助手,对家庭中的各种声源进行识别和分析,从而实现智能家居的控制和管理。然而,声源定位小车在实际应用中面临着许多挑战,如复杂的声音环境、定位精度、运动控制等方面的问题。因此,本文旨在研究和实现一种基于声学传感技术的声源定位小车,通过对声学信号的采集和分析,实现声源的准确定位和跟踪,以及对小车的运动控制。
本文基于麦克风阵列实现声源定位。麦克风阵列声源定位技术在阵列信号处理技术蓬勃发展的契机下诞生,能够在多种场景下对各种声音信号源定位。用麦克风阵列来采集处理声波信号受到越来越多学者及专家的关注[1] 。
2 总体设计
系统设计方案如图1 所示,以实现声源定位的要求。其采用“6 + 1”形式的数字麦克风阵列进行声源收集,K210 负责对收集到的声源进行处理和声源定位,STM32F103C8T6 作为主控,传感器模块包括编码器、超声波测距模块、OLED 显示屏,驱动模块有电机和驱动电路。
3 硬件设计
基于整体设计方案,本文对系统的主要部分进行详细设计。
3.1 STM32F103C8T6 主控板
STM32F103C8T6 为系统的主控板,它主要获取K210 通过串口发送的数据、收集超声波测距模块传过来的距离信息,使小车避障,并通过K210 发来的数据驱动小车。
3.2 K210 核心模块
K210 可结合机器视觉和机器听觉能力,提供更强大的功能,如图2 所示,在应用中可以通过声源定位对目标进行跟踪,可以根据麦克风阵列确定一个说话人的方向。K210 的FPIOA 特性,支持每个外设随意映射到任意引脚,这使得K210 可以有多个I2S 的通道来处理麦克风阵列收集的音频。
3.3 OLED 显示屏
硬件的显示模块使用0.96 寸的OLED 屏幕,并采用I2C 的通信协议来连接STM32,精致小巧的特点使它便于安装在小车上并实时显示声源的角度和水平的距离。
3.4 麦克风阵列
麦克风阵列模块由7 個数字麦克风组成,其中6 个麦克风围绕在四周不同方向,每个麦克风夹角为60°,还有1 个在模块正中央。另外12 个LED 指示灯,方便指示声源位置,麦克风阵列的12 个灯珠将整体划分为12 等份,角间距为π/6。麦克风阵列如图3 所示。
3.5 超声波测距模块
超声波是一种频率高于20 000 赫兹的声波,超声波测距模块(HC?SR04 模块) 可以测得最近距离2cm,最远距离4 m,测量角度可以达到15°,具有性能稳定,方向性好,穿透能力强,易于获得较集中的声能,便于使用的优点。
3.6 驱动电路
驱动电路的功率元器件由LR7843 型MOSFET 管组成,直流电机采用可逆双极型桥式驱动器,极大地提升了电机的转速[2] 。
4 系统软件设计
4.1 系统主程序
先初始化各个模块,以麦克风阵列S 图标正方向为坐标原点,右边为X 正轴,竖直向上为Y 轴建立坐标系,以S 图标正下方角度为0 度,顺时针度数依次增加,当麦克风阵列接收到声源的信号,K210 记录声源到达每个麦克风的时间,从而通过时延算法,计算出声源的角度和距离。K210 通过串口将计算出的角度和距离发送给STM32,并在OLED 显示屏实时显示发送过来的角度和距离。STM32 收到数据后会驱动电机让小车朝着声源的方向移动,在移动的过程中,超声波测距模块会检测小车的前面有无障碍物。
4.2 TDOA
4.2.1 基本概念
该设计采用基于TDOA 到达时间差定位原理和广义互相关函数的时延估计(Generalized Cross CorrelationPHAse Transformation,GCC?PHAT)原理[3] 。在有2 个麦克风M1 和M2 并有噪声的情况下收到声源,对其建立模型,具体如下:
x1(t)= s(t-τ1)+n1(t) (1)
x2(t)= s(t-τ2)+n2(t) (2)
其中,τ1 和τ2 分别是声源到达2 个麦克风的延迟时间,n1(t)和n2(t)为加性噪声。那么声源信号到达2个麦克风的TDOA 为:
在麦克风阵列几何形状已知的情况下,声源定位问题变为对时延的估计问题。在确定麦克风阵列的排布后,声源定位问题进一步变为对时延估算的问题。
4.2.2 时延估计
时延估计常用的有很多种方法,如使用广义互相关函数。广义互相关函数的目的就是为了在嘈杂环境下,削弱噪声和混响的影响,使实际环境声源的定位更加准确。在互功率谱域使用加权函数加权,然后经过IFFT 运算后找到峰值估计时延,最后通过式(4)和式(5)计算出声源到达2 个麦克风的时延,Gx1x2(ω)是互频谱。
4.2.3 定位估计
就二维平面来说,声源到达麦克风阵列的波形被看作平面波,如图4 所示。
声速假定为c,这2 个麦克风之间的距为a,M1 和M2 的时延是τ (,根据图4 的几何关系可以得出:
由于其他参数已知,进而可以得到声源对于麦克风阵列的角度:
4.3 串口通信
串口通信是一种串行异步通信,通信双方以字符帧为数据传输单位,字符帧按位依次传输,每个位占固定的时间长度。两个字符帧之间的传输时间间隔可以是任意的,即传输完一个字符帧后,可以间隔任意时间再传输下一个字符帧。
K210 和STM32 都支持串口通信功能,它们之间的串口通信可以通过连接它们之间的TX 和RX 引脚来实现。K210 一共有3 个UART, 由于K210 的FPIOA 特性,支持每个外设随意映射到任意引脚,因此UART 可以进行自由的引脚映射。我们将K210 的24 号和25 号引脚作为UART 通信的RX 和TX。STM32C8T6 有3 个UART 接口,本次采用UART1 接口,将PA10 和PA9 作为UART 通信的RX 和TX。下面将介绍K210 和STM32 之间通过串口通信进行数据传输的基本步骤。
(1)确定串口通信参数:在K210 和STM32 之间进行串口通信前,需要确认串口通信的波特率、数据位、停止位和校验位等参数,保证2 个设备设置的参数一致。
(2) 配置K210 的串口:在K210 中,本次使用MaixPy、串口參数等信息。
(3)配置STM32 的串口:在STM32 中,使用Keil5进行串口配置。
(4)发送与接收数据:K210 是发送数据的一端,STM32 则接收K210 发送过来的串口数据。数据的传输需要保证2 个设备的串口通信参数一致,而且发送和接收数据的方式也需要保持一致,这样才能确保数据的正确传输。由于K210 发送的数据是ASCII 码的形式,并且是每次发送一个字符,因此发送数据的结尾要以‘ \r\n来表明发送数据结束。
5 系统测试
在实验中,先对小车进行固定声源定位的实验。将小车放在一个标明角度的大圆盘中,将声源依次放置不同的角度和距离,看小车能否准确到达声源的位置。先测量小车起始位置与声源的距离,等到小车停止后,记录小车所处圆盘的角度并测出小车所停位置与起点的距离,其实验数据如表1 所列。
第2 次实验,在小车的附近放置障碍物,将声源的发声装置放在障碍物的后方,测试小车能否绕过障碍物,从而抵达声源位置。经过2 次实验可以得出,在室内封闭的场所,小车在声源定位时,可以基本准确到达声源位置,并且可以绕开障碍物。
6 结束语
本文设计了一种基于声源定位的智能小车,其重点还是如何处理声源定位。经测试,小车可以很好地确定声源的角度和距离,也可以较好地实现了对小车的运动控制,可以验证基于声源定位的智能小车的定位和可移动性能,并且可以比较不同系统设计和参数之间的差异。本次实验中存在一定的角度和距离误差,不能在声源嘈杂的环境下进行声源定位,未来的改进还需要考虑声源定位算法的优化、定位精度的提高、运动控制等方面的问题。此外,对于不同的应用场景,可能需要对系统进行特定的优点适配,以满足不同的需求,以便可以更加精确地进行声源定位。本文旨在为后面声源定位的研究提供参考。
参考文献:
[1] 邵佳伟.基于麦克风阵列的声源定位问题研究[D].沈阳:沈阳工业大学,2022.
[2] 朱智,严超,潘晓辉.基于声源定位的智能小车控制系统设计与实现[J].无线互联科技,2022,19(13):76-78.
[3] 王小怀,伊树彬,蔡洛思.基于TDOA 技术及几何模型的声源精准定位[J].中国新技术新产品,2022,(22):29-31+84.
作者简介:
苏俊杰(1999—),硕士,研究方向:嵌入式系统。
胡杰(1968—),硕士,副教授,研究方向:物联网感知技术、嵌入式系统。