feat: 基线冻结超时 — 持续偏高30s后强制更新Origin
问题: 原点保护冻结基线后,若CAPVD因环境变化(温度、器件老化等) 稳定在新的高频值,Origin永远不会更新,导致永久误判有车。 方案: - 新增 FREEZE_TIMEOUT=3000 (~30s @ 10ms/tick) - CAPVD偏离时 loop1_freeze_cnt 逐帧递增 - 超时后强制 Origin = CAPVD(当前稳定值),视为新常态 - 中途若CAPVD回归正常范围,计数清零,继续正常跟踪 - 车辆进入时同步清零冻结计数
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
#define ALFA_FAST 128 // 快速 IIR α = 128/256 = 0.5 (@10ms → τ≈28ms, 用于检测)
|
||||
#define MAX_SLOPE_RATE 5 // 斜率限幅: 单次最大变化 5% (物理限制, 拒绝 EMI 尖峰)
|
||||
#define ENTRY_CONFIRM 3 // 进入确认: 连续 N 次低于阈值才判定有车
|
||||
#define FREEZE_TIMEOUT 3000 // 基线冻结超时: ~30s @ 10ms/tick, 持续偏高后强制更新基线
|
||||
|
||||
/*===========================================================================
|
||||
* 离开检测模式
|
||||
@@ -103,6 +104,7 @@ extern uint8_t loop1_cnt_release; // 离开防抖计数
|
||||
/* M4 优化: 快速 IIR + 进入确认 */
|
||||
extern uint32_t loop1_CAPVD_fast; // 快速 IIR 值 (α=0.5, τ≈28ms, 用于检测)
|
||||
extern uint8_t loop1_entry_cnt; // 进入确认计数
|
||||
extern uint16_t loop1_freeze_cnt; // 基线冻结持续计数(超时后强制更新 Origin)
|
||||
#if USE_FLATNESS_EXIT
|
||||
extern uint8_t g_exit_state; // 离开检测: 0=追踪斜率, 1=等待平坦
|
||||
extern uint16_t g_max_slope; // 第一上升坡面最大 |f'|
|
||||
|
||||
Reference in New Issue
Block a user