最近在调行车记录仪的碰撞检测,当前使用的方法是根据使用量程给出阀值,当某一瞬间的某一轴的加速度突变的绝对值大于阀值,则认为发生碰撞事件;



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;


 

  然后想看看网上有没有其它方法,就有了以下的内容。

  ​

  方法类似,上面的方法是计算出某一轴与自然坐标的夹角,当某一夹角大小发生突变达到指定阀值时,则认为发生碰撞或侧翻;

GSensor 碰撞检测方法与实现_算法实现

  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;
}


 

事件;