背景
公司的地图车在经过隧道等高精定位失效的场景时,而基于imu会出现累计漂移等问题,而车辆自身的码表又不够精确,故采用后装轮速计进行速度补偿。
问题
实际采集出的轮速计数据如图所示:
注:这是大概1个小时的采集数据,采样频率是100hz,每个采样点都是10ms内采集到的轮速数据,车胎转一圈就是2000个脉冲。
下图是局部放大图:
进一步选择局部放大:
再次放大:
可以看到:采集到的数据存在大量噪声。
原因分析
1、地图车平台使用linux系统(ubuntu),通过串口定时发送采样命令,然后通过串口接收采样数据,因为linux的实时性问题,导致无法精确的控制采样命令准时发送。
2、更为重要的原因是,公司选用的轮速计采集设备性能差,实时响应差,无法达到10ms一次的稳定采样。
解决方案
1、更换硬件,使用硬件自动采样的模式进行数据采集,严格保证100hz的采样频率。优点:精确度极好。缺点:实施周期长,成本高。
2、使用软件进行滤波。优点:实现方便。缺点:精度不及优化硬件来的高。
效果分析
基于现场环境,先采用软件滤波的方案进行处理。
初次滤波
分析数据标本的噪声特点,由于是离散采用,数据的变化量都是整数(脉冲个数),而且噪点的变化很快,持续时间最多也就两三个采样周期,所以想到一种简单的滤波方法做为初次滤波:
滤波原理如下:如果当前采样值 > 上次采样值,则用上次采样值加1做为当前采样值;如果当前采样值 < 上次采样值,则用上次采样值减1做为当前采样值;否则,直接用上次采样值做为当前采样值。
之所以采用加1或者减1的方式,是因为车辆的加速度不会超过±1g,对应到轮速计脉冲采集上,差不多就是在10ms内最多变化1个脉冲。
经过初次滤波,效果如下:
注:绿色为滤波后采样值,可见已经过滤掉大部分噪声。
进行局部放大:
进一步放大:
再放大一次:
可见效果非常明显,主要噪声都被过滤掉了,但是仍然不够平滑,于是引入二次滤波。
二次滤波
在初次滤波的基础上,进行二次滤波,首先想到的方法就是加权平均滤波,但是加权平均有一个问题,面对“车速平稳”和“急加减速”,同一个加权系数,不能很好地兼顾这两种状况。
1、假如加权系数分别取0.9和0.1,即上次采样值×0.9 + 当前采样值 × 0.1做为最终得到的当前采样值。
局部放大图1:车速平稳时
局部放大图2:急减速时
2、假如加权系数分别取0.1和0.9,即上次采样值×0.1 + 当前采样值 × 0.9做为最终得到的当前采样值。
局部放大图1:车速平稳时
局部放大图2:急减速时
通过不同的加权系数对比可以看到,第一种加权滤波后,车速平稳时效果较好,但是急减速时,表现出明显的滞后现象;第二种加权滤波后,无论车速状况,基本没有滤波效果。
综上,暂且采用第一种加权滤波。但是需要继续努力一把,解决加权滤波的滞后现象。
思路:可以使用自适应滤波器的思想,根据车速的实时变化状态,实时调整加权系数进行滤波。