1 硬件设计
我们设计的碰撞检测装置的原理框图如图1所示,首先采用声音传感器采集各种声音信号,传感器输出的电信号经放大电路放大后,传入声音采集芯片的模拟信号输入端。声音采集芯片将模拟信号进行A/D转换后,送到DSP模块做进一步处理。DSP模块实时地处理所采集到的声音信息,判断是否有车辆碰撞事故发生。存储器模块和DSP模块相连,用于储存需要处理的数据和固化的代码数据,并为DSP模块运算时提供临时存储空间。报警模块和通讯模块与外部救援中心相通讯,一旦DSP模块检测到车辆发生碰撞事故,报警模块就向外发送报警信息。下面分别介绍主要模块功能。
1.1 声音采集模块
声音采集模块使用电容式声音传感器,采样频率为30Hz~18kHz,由于车辆噪声信号的频率一般不会超过10kHz,所以该声音传感器可很好的实现采样。声音传感器将采集到的模拟信号送入放大电路放大后传送到声音采集芯片。
声音采集芯片采用TLV320AIC23B(简称AIC23),它是TI公司的一款高性能立体声音频编解码器芯片,具有48kHz带宽,可以满足包括噪声信号在内的声音信号的采集要求。AIC23对采集到的模拟信号进行双声道立体声A/D转换,可以在8kHz-96kHz的采样率下提供16bit、20bit、24bit和32bit的采样数据。本系统将外部声信号以32kHz采样频率采集,每秒采集32000个声音数据,并将采集数据的长度设为16bit,这样A/D转换之后模拟信号变成了16位的数字信号。模拟信号转化为数字信号之后,AIC23将数据传输给DSP模块,供DSP模块作下一步处理。
本系统将AIC23的MODE引脚设置为O,控制接口设置为I2C的工作方式,AIC23与DSP模块的数据传输接口使用的是DSP模式。这样DSP模块就可以控制AIC23协同工作,并接收AIC23采集到的数据。
1.2 DSP模块
DSP模块是整个系统的核心,完成音频信号的采集、控制、存储、处理以及与外界通讯等功能。选用的是TI公司生产的DSP芯片TMS320V-C5509(简称VC5509),它是一款性价比极高的16位定点DSP,具有多个高性能运算单元,系统时钟为144MHz,指令运算速度高达1OOMMACS,而且提供丰富的片上扩展接口。
VC5509有两个多通道缓冲串行口(McBSP),McBSP具有与标准串行接口相同的基本功能,并在标准串行接口的基础之上对功能进行了扩展。本系统使用的语音采集芯片AIC23就通过McBSP和DSP相连接,其连接示意图如图2所示。其中CLKX为发送时钟,CLKR为接收时钟,它们都和AIC23的系统时钟BCLK相连。FSX和FSR实现发送和接收的帧同步,对应AIC23的LRCIN和LRCOUT引脚。数据发送引脚DX和数据接收引脚DR分别与AIC23的DIN和DOUT相连,完成串行数据发送和接收操作。
VC5509还包含6个可编程的DMA通路,DMA控制器可以无需CPU介入而在内部存储器、外部存储器和芯片上外设之间传输数据,当操作完成之后,DMA控制器可向CPU发出中断请求信号。该系统使用了一个DMA通道0,从数据采集模块读入数据并写入外部存储器的特定位置。当数据采集满了之后,DMA控制器将产生中断,控制DSP执行数据处理程序。DMA的使用减少了系统中断次数,明显提高了系统的运行速度。
对于声音采集模块采集到的声音数据,由DSP模块运行检测软件对其进行分析,并判断外部是否发生了碰撞。DSP模块还引出一个IO口与报警和通讯模块相通讯,报警和通讯模块接收此引脚的信号来判断是否发生碰撞以决定是否报警。
1.3 存储器模块
VC5509支持统一的编址空间,片上内存的总容量为320kB,包括128k×16bit的RAM和32k×16bit的ROM,并可以根据用户的需要扩展到最大为8M×16bit的片外内存空间。本系统选用的是HY57V64芯片,是一个有4个1M×16bit逻辑阵列的SDRAM芯片。该芯片接收并存储DSP模块传输过来的声信号数据,当DSP模块需要处理数据时也会从该芯片的特定位置读出相应的数据。
1.4 报警模块
报警模块配有GPS和GSM模块,获取位置和速度信息并与服务器进行通讯。DSP模块从报警模块的GPS模块获得车辆的速度和加速度信息并加入声信号信息进行辅助计算。报警模块从DSP模块获得实时的车辆碰撞信息,一旦检测到碰撞信号,报警模块即向服务器报警。
2 软件和算法设计
我们设计的系统软件是一个运行于DSP之上的程序,控制系统各模块工作,并完成算法计算。使用TI公司的CCS集成开发环境,用C语言和汇编语言进行编程。
该软件首先进行初始化,对VC5509和AIC23的运行参数进行配置。对VC5509芯片的锁相环配置时,将系统时钟设置为144kHz。对McBSP进行配置时,打开VC5509的McBSP0并启动其进行输入输出操作。配置DMA0通道,使其工作于兼容模式并在中断时停止数据的传输。配置AIC23的工作模式为DSP模式并使用IIC方式传输数据。启动AIC23对声信号进行32k采样速率的采样。
初始化结束后进行采样检测,经过采样检测,一旦发现采集到的信号满足分帧条件,即采集到的声信号长度足够1秒时,就执行自动声检测算法。
自动声检测算法读出数据并进行判断,如果检测到的是非碰撞事件,则继续执行采样检测以等待处理下一秒数据,这时软件在执行空循环;当自动声检测算法检测到的是碰撞事件,就向通讯模块传递信息,在GPS模块确认速度和位置信息之后就通过报警模块报警。
软件流程图中自动声检测算法的设计是核心部分,下面做重点介绍。由于不同声波信号的幅频特性和相频特性不同,不同声波信号在各个频率段的幅值也存在一定的差异。因此,可利用各个频率成分的能量变化来实现目标识别。
自动声检测算法包括声音信号采集和分帧、特征提取、特征降维、特征分类四部分,
其具体实现步骤如下:
(1)采集和分帧。将采集到的信号按每2s分为一帧,帧与帧之间有1s的交叠。对32k采样率的芯片来说,即每一次只对2s的片段65536个点进行处理,在训练阶段两个片段之间有1/2重复。这样得到一组数据Datai(1≤i≤65535)。
(2)特征提取。对每一帧信号数据Datai(1≤i≤65535)实施DWT变换以得到频域信息,然后根据得到的频域信息统计能量的分布,以此作为识别交通事故的特征。本算法采用DB1小波,对每一帧信号,先进行一层分解,然后高频系数进行两层完整的分解,低频系数进行10层单向分解得到18组数据。计算得到特征分量F=[E1,E2…E18],En的计算公式如下:,其中N为Cn的长度。
(3)特征降维。对特征提取后的信号量实现降维。在提取出的特征分量F的基础上,本算法采用基于主成分分析(PCA)的异常点检测算法检测交通事故碰撞声。原特征F变换后得到公式为,其中H为PCA方法得到的投影矩阵。
(4)特征分类。收集正常运行和交通事故时的车辆周围声音信号样本,并训练构造分类器,实现对行驶过程中的声音分类。分类器拟输出两类分类结果:一类为正常运行声音,另一类为重大交通事故的碰撞声音。判别条件为:
其中为训练样本集的特征分量投影。n表示允许偏出给定区间Ii的最大个数,当n大于某个阈值时即为碰撞,反之则不为碰撞。