1.0
This commit is contained in:
@@ -191,9 +191,15 @@ VL53L0X_Error Vl53Board_ReadAll(Vl53Board_t *board, Vl53BoardSnapshot_t *snapsho
|
||||
snapshot->range_status[i] = data.RangeStatus;
|
||||
|
||||
if (data.RangeStatus == 0u) {
|
||||
/* 2. 标记有效并更新卡尔曼滤波器 */
|
||||
/* 2. 标记有效并按开关决定是否应用卡尔曼滤波 */
|
||||
snapshot->valid_mask |= (1u << i);
|
||||
#if PARAM_VL53_USE_KALMAN_FILTER
|
||||
snapshot->range_mm_filtered[i] = vl53_kalman_update(&board->kf[i], (float)data.RangeMilliMeter);
|
||||
#else
|
||||
snapshot->range_mm_filtered[i] = (float)data.RangeMilliMeter;
|
||||
board->kf[i].x = (float)data.RangeMilliMeter;
|
||||
board->kf[i].initialized = 1u;
|
||||
#endif
|
||||
} else {
|
||||
/* 测距失败时,滤波值维持上一次的历史最佳估计不变 */
|
||||
snapshot->range_mm_filtered[i] = board->kf[i].x;
|
||||
|
||||
@@ -351,6 +351,12 @@ extern "C" {
|
||||
*/
|
||||
#define PARAM_VL53_TIMING_BUDGET 33000U
|
||||
|
||||
/** @brief [调试] 是否启用 VL53L0X 端卡尔曼滤波
|
||||
* 1: 使用滤波后的 range_mm_filtered
|
||||
* 0: 直接输出原始测距到 range_mm_filtered,便于做 A/B 对比
|
||||
*/
|
||||
#define PARAM_VL53_USE_KALMAN_FILTER 1
|
||||
|
||||
/** @brief [调优] VL53L0X 卡尔曼滤波参数 Q
|
||||
* 含义:测距过程噪声
|
||||
* 典型值:5.0~20.0
|
||||
|
||||
Reference in New Issue
Block a user