我正在尝试使用 iPhone 的加速度计检测汽车是否加速或刹车。
在下图中,我绘制了收集到的数据。(为了收集数据,手机平放在车里,手机顶部朝前)。
我现在遇到的问题是,在视觉上我可以清楚地看到汽车在哪里加速以及在哪里刹车(见下文)。但无法弄清楚如何以编程方式做到这一点。
我基本上想知道汽车在某个时间窗口内刹车或加速的频率。(窗口大小约为 10-30 秒)。
任何帮助将不胜感激。
提前致谢!
我正在尝试使用 iPhone 的加速度计检测汽车是否加速或刹车。
在下图中,我绘制了收集到的数据。(为了收集数据,手机平放在车里,手机顶部朝前)。
我现在遇到的问题是,在视觉上我可以清楚地看到汽车在哪里加速以及在哪里刹车(见下文)。但无法弄清楚如何以编程方式做到这一点。
我基本上想知道汽车在某个时间窗口内刹车或加速的频率。(窗口大小约为 10-30 秒)。
任何帮助将不胜感激。
提前致谢!
您应该考虑对加速度计信号进行 STFT。这将允许您可视化信号的频率。如果您可以确定制动频率,您应该能够为该特定制动频率设置一个阈值,并在每次超过它时进行计数。您还可以测量制动发生的时间。
你是如何处理你的信号的?Matlab 和 python 都有 specgram 函数,它可以让你看到实际的频率制动。从那里您将能够确定制动频率和阈值。
当施加制动时,沿运动方向的加速度将反转符号。例如,如果您将手机放置在加速器的 z 轴方向为重力轴方向(即面向地球),则沿 z 轴的加速度为 -g。另一方面,如果负 z 轴与 g 对齐,则加速度计的 z 轴测量 +g。这类似于汽车加速和制动的情况,尽管减速幅度略低于加速。您可以首先将参考轴定义为 g 轴,并使用旋转矩阵根据最小和最大加速度的方向定义其他 2 个轴。您基本上将参考轴从基于手机方向的 x,y,z 坐标更改为固定的 g,a,s 参考系统(其中 g 是重力轴,a 是最大加速度的方向,s 是静止轴)。您还可以使用陀螺仪来实现此轴旋转,如这个页面。您可以在转换后的轴上查看加速度计 daya,您可以通过查找零交叉点,轻松地根据来自一个轴的信号对加速和减速区域进行分类,而不管手机的方向如何。
您应该知道手机的方向,因为轴符号必须与汽车运动相同。假设轴符号是正确filter
的,您可以输入加速度计信号lowpass
,以清除高频noise
,然后查看信号符号以检测它是中断还是加速度。
您应该尝试使用butterworth
或更低)的二阶或三阶低通滤波器,您应该尝试查看图形的一些截止频率。