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.
");
            }
        }
        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;
}

事件;

原文地址:https://www.cnblogs.com/LittleTiger/p/14586325.html