激光测距滤波

激光测距

    • 激光测距模块(GY-53)

激光测距模块(GY-53)

该模块的量程为mm

直接上滤波函数

目的是得到稳定的、在所选范围内的测量数据

#define FILTER_WINDOW_SIZE 5 // 滤波窗口大小
#define TARGET_DISTANCE_MIN 200 // 目标距离范围的最小值200mm
#define TARGET_DISTANCE_MAX 300 // 目标距离范围的最大值300mm/*
入口参数:激光测距模块的到的距离
出口参数:滤波后的所需数据
*/float filter(float newDistance)
{static float distanceBuffer[FILTER_WINDOW_SIZE] = {0}; // 距离数据缓冲区static uint8_t bufferIndex = 0; // 缓冲区索引float sum = 0;// 存储新的测量值到缓冲区distanceBuffer[bufferIndex] = newDistance;// 计算滤波窗口内的距离值总和for (uint8_t i = 0; i < FILTER_WINDOW_SIZE; i++){sum += distanceBuffer[i];}// 更新缓冲区索引bufferIndex = (bufferIndex + 1) % FILTER_WINDOW_SIZE;// 计算平均值float filteredDistance = sum / FILTER_WINDOW_SIZE;// 判断滤波后的值是否位于目标距离范围内if (filteredDistance >= TARGET_DISTANCE_MIN && filteredDistance <= TARGET_DISTANCE_MAX){return filteredDistance; // 返回滤波后的值}else{// 如果不在目标范围内,可以返回一个特定的值,如 -1,表示无效值return -1;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部