GSensor 碰撞检测方法与实现
最近在调行车记录仪的碰撞检测,当前使用的方法是根据使用量程给出阀值,当某一瞬间的某一轴的加速度突变的绝对值大于阀值,则认为发生碰撞事件;
if (g_gsensorInfoSave.x != AXIS_INIT_VALUE) { x_diff = abs(gsensorValue.x - g_gsensorInfoSave.x); if (x_diff > x_range) { printf("gsensor event: Emerg.\n"); } } g_gsensorInfoSave.x = gsensorValue.x;
然后想看看网上有没有其它方法,就有了以下的内容。
参考:车载碰撞和侧翻算法实现
方法类似,上面的方法是计算出某一轴与自然坐标的夹角,当某一夹角大小发生突变达到指定阀值时,则认为发生碰撞或侧翻;
x轴与自然坐标的夹角
double toDegrees_x(int x_val, int y_val, int z_val) { double rad2; double degree2; rad2 = atan((double)x_val / sqrt(y_val * y_val + z_val * z_val)); degree2 = rad2 * 180 / PI; return degree2; }
事件;