分析加速度计数据特征并设计滤波器
我有大约32秒的基本行驶场景25MPH正常道路上的加速度计数据,还有大约7个坑洼和一段崎rough不平的道路。加速度计用双面胶带安装在我的汽车仪表板上。 问题:我获得了来自加速度计的所有嘈杂数据,我需要采取一种简单的方法来检测是否发生了坑洞事件。以下是时域和FFT的几个数据图。加速度计在GForce中进行测量 基本上,我希望我的arduino能够非常准确地知道发生了坑洞,并且没有使用研究生水平的数学和技术。 以100hz采样的加速度计在Z轴上具有一个简单的50HZ RC低通滤波器 Here is the CSV data for the 32 seconds of accelerometer readings TIME, GFORCE format: http://hamiltoncomputer.us/50HZLPFDATA.CSV 更新:这是加速度计1000HZ的RAW全带宽,可以在Arduino上以最高采样率进行采样。直接CSV文件下载:大约112秒的数据 http://hamiltoncomputer.us/RAWUNFILTEREDFULLBANDWIDTH500HZ.csv 黑色轨迹为未经过滤的RAW加速度计原始数据:蓝色轨迹由带阻滤波器根据FFT,2HZ和12HZ支配的极限频率进行过滤。 坑洞事件在时域中如下所示: 不确定FFT中10到15HZ的分量是什么,是实际的坑洼,还是车轮相对于道路的车轮跳动,还是汽车的共振频率? FFT: 似乎是实际的坑洞事件,这是HPF @ 13HZ坑洞的主要特征似乎增强了 我希望能够实时检测和计数坑洼 我认为悬挂应该比10到13 HZ慢很多,这会引起晕车,这是违反直觉的 更新: 根据AngryEE的建议,我使用了加速度计1000HZ的全部带宽以及在arduino上可以获得的最大采样率。 FFT: 以下是坑洼事件及其周围一些颠簸和道路噪音的数据样本: 添加了二极管包络检测器电路,输出看起来相同...加速计始终输出0至3.3V电压,而不是负电压... 更新: 在许多路试中,我在Z轴上的车中从未超过1.6G的最高45 MPH,我使用rand()生成伪随机Gforce加速。 我的想法是,如果我可以查看1到3秒的数据窗口,可以计算Z轴的位移,但是我担心加速度计的漂移以及积分误差。我不需要在这里甚至达到90%的精度,> 70%的精度就可以了,但是如果我一次只观察一到三秒钟的位移,那可以实时进行吗?这样,我可以看到位移是否大于1英寸,2英寸,5英寸。位移越大,凹凸或坑洼越粗糙: 您能否检查我是否做对了,我基本上在桌面上进行设置,使用rand()生成从-1.6到1.6 G的随机加速度,以模拟的50HZ采样率捕获3秒的数据 如果像运行* nix一样,我正在使用Windows.h中的Sleep()进行20ms延迟,50HZ采样率 我只是想看看代码是否适合您,我还没有做环形缓冲区,我对如何实现它有点困惑:注释掉的代码来自我正在为此工作的类,但我还不了解100%。循环缓冲区将允许连续移动数据窗口吗? #include <cstdlib> …