From b6ef3c4c4fa1756c6239411d39e905f53273f49b Mon Sep 17 00:00:00 2001 From: wangfq Date: Tue, 23 Jun 2026 16:37:53 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BC=80=E5=8F=91=E6=97=A5=E5=BF=97=20?= =?UTF-8?q?=E2=80=94=20=E5=B9=B3=E5=9D=A6=E6=80=A7=E7=A6=BB=E5=BC=80?= =?UTF-8?q?=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/devlog.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/docs/devlog.md b/docs/devlog.md index 3524ff0..fca7e4f 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -170,10 +170,64 @@ Origin 首次确立后,线圈振荡需要时间稳定。新增 `g_loop_stable` --- +## 2026-06-23 — 移植平坦性离开判定(CN200910309382) + +### 来源 + +专利 CN200910309382(中山大学,张辉/黄永强/陈古典)提出**平坦性三条件判定法**, +解决大车通行时频率曲线的负波峰和近零波谷导致单一阈值法多次误触发的问题。 + +### 算法 + +``` +车辆到达 → 单一阈值法 f(i) - f_b > Δ1 (沿用 SensTable) +车辆离开 → 平坦性三条件 同时满足: + ① |f - f_b| < Δ1 频率回归基频 (SensTable_1) + ② |f'| < Δ2 一阶导数近零 + ③ |f''| < Δ3 二阶导数近零 +``` + +**Phase 1** (g_exit_state=0): 车辆进入线圈后,追踪第一上升坡面, +记录最大 |f'| 和 |f''|。当斜率连续 3 次降到 `SLOPE_FLAT_THRESH` 以下, +计算动态阈值: + +``` +Δ2 = max_slope / K1 (K1=8) +Δ3 = max_slope_rate / K2 (K2=8) +``` + +**Phase 2** (g_exit_state=1): 每帧检查三条件。连续 3 次全部满足 → 车辆离开。 + +### 与传统方法对比 + +| 方法 | 离开判据 | 大车防误检 | +|------|---------|-----------| +| M1H/TLD-110 | 单一滞回阈值 | ❌ 多峰可能多次触发 | +| 原 cnt_release | 连续 3 次超阈值 | ⚠️ 固定阈值,大车波谷可能误判 | +| **平坦性判定** | |f-f_b|+一阶+二阶 三条件 | ✅ 动态阈值,跟随坡面特征 | + +### 参数说明 + +| 常量 | 值 | 含义 | +|------|-----|------| +| K1, K2 | 8 | 动态阈值除数(专利推荐值) | +| SLOPE_FLAT_THRESH | 100 | 斜率趋零判断阈值 | +| MIN_DELTA2 | 5 | Δ2 下限(防除数过小) | +| MIN_DELTA3 | 2 | Δ3 下限 | +| FLAT_CONFIRM_CNT | 3 | 平坦连续确认次数 | + +### 整数化适配 + +专利原实现使用 float(Hz 频率值),DLD154V4B 用 uint32 定点(Origin≈131K)。 +导数计算同样用 int32 整数差分,阈值 /K1、/K2 做整数除法,精度足够。 + +--- + ## 修订记录 | 版本 | 时间 | 说明 | |------|------|------| +| V1.4 | 2026-06-23 | 移植 CN200910309382 平坦性离开判定 | | V1.3 | 2026-06-23 | 指示灯行为、稳定期、重连状态保持 | | V1.2 | 2026-06-23 | <<6/>>6 精度浪费分析与改进 | | V1.1 | 2026-06-23 | 精简重构,对齐 M1H/TLD-110 |