/* copy ring buffer */
float sonar_temp[sonar_count];
memcpy(sonar_temp, sonar_values, sizeof(sonar_values));
sonar_bubble_sort(sonar_temp, sonar_count);
/* the center element represents the mode after sorting */
return sonar_temp[sonar_count / 2];
}
sonar_bubble_sort(sonar_temp, sonar_count);将三次数据冒泡法排序,取第中间的值,也就是个中位值。算法功底太次,感觉这个函数也就是取中位值,不过insert是插值的意思,线性插值神马的不明白,
static void sonar_filter(void) 卡尔曼滤波
{
/* no data for long time */
if (dt > 0.25f) // more than 2 values lost
{
v_pred = 0;
}