diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 36f6654..6514ca2 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -247,9 +247,20 @@ ZNORMAL 期间: └──────────┘ NORMAL: 允许通行,检测斑马线 -STOP: 刹停 4 秒,g_zstate==Z_STOP 传给 motor_update → 编码器刹车 +STOP: 刹停 3 秒,g_zstate==Z_STOP 传给 motor_update → 编码器刹车 + LCD 显示 pedestrian_stop.png(不受 showImg 控制),进入/退出时清屏 COOLDOWN: 恢复行驶但斑马线状态机停止检测 5 秒(防止重复触发) 仅跳过检测,不影响其他功能(舵机/巡线正常) + +### 斑马线冷却期控制策略 (Z_COOLDOWN) + +| 时间窗口 | 控制 | 说明 | +|----------|------|------| +| 0~2s | 全速起步 | boost 1.5x 速度持续 0.7s | +| 2~5s | foresee=24 | 缩短前瞻走稳 | +| 3.3~5s | 降速上限 13 + bang-bang 打满 | 一次机会:偏差出现→方向锁定打满→方向翻转/回正即退出 | + +**bang-bang 逻辑**(`steering_update()`):Z_COOLDOWN 3.3~5s 内,偏差超出死区后锁定方向一次性打满(左满 1.2ms / 右满 1.8ms),直到偏差方向翻转或回到死区退出,后续走正常线性转向。 ``` **关键变量:** @@ -356,12 +367,14 @@ lcd_render(): | `./start` | int(0/1) | 0 | 0 | 使能开关,1=电机运行 | | `./debug` | int(0/1) | 0 | (不写入) | 每30帧重载配置+允许存图 | | `./showImg` | int(0/1) | 0 | (不写入) | LCD 显示(每10帧轮询→g_lcd_on) | -| `./foresee` | double | 80 | 40 | 舵机前瞻行 (显示空间像素) | +| `./foresee` | double | 80 | 40 | 舵机前瞻行 (显示空间像素, Z_COOLDOWN 2~5s 内缩短为 24) | +| `./foresee_lost_scale` | double | 0.7 | 0.7 | 丢线时前瞻缩放 (<1=看更远) | +| `./sharp_turn_scale` | double | 0.5 | 0.5 | 急弯时前瞻缩放 (<1=看更远) | | `./deadband` | double | 5 | 8 | 舵机死区 (显示空间像素) | | `./steer_gain` | double | 1.0 | 1.5 | 舵机增益 | | `./center_bias` | double | 0 | (不写入) | 中线偏置修正 | | `./zebrasee` | double | 60 | (不写入) | 斑马线近界阈值 (模型空间cy) | -| `./destfps` | double | 30* | (不写入) | 目标帧率 (*代码兜底值) | +| `./destfps` | double | - | (不写入) | 目标帧率 | | `./saveImg` | int(0/1) | - | (不写入) | 保存帧图像 (需 debug=1) | | `./cone_avoid_gain` | double | 0.3 | 0.3 | 锥桶中线变形推离量 (归一化) | | `./cone_avoid_range` | int | 30 | 30 | 变形斜坡陡峭度 | @@ -402,7 +415,6 @@ lcd_render(): | 文件 | 功能 | 排除原因 | |---|---|---| -| `zebra_detect.cpp` | 经典斑马线检测 | 已被 Mild 模型替代 | | `PIDController.cpp` | 位置式/增量式 PID | 电机开环直驱,无调用点 | | `serial.cpp` | VOFA 串口可视化 | 未使用 | @@ -412,15 +424,16 @@ lcd_render(): --- -## 模型:Mild v12 +## 模型:Mild v13 -- **推理引擎**:`src/model_v10.{hpp,cpp}`(名称为兼容保留,内部为 Mild v3) +- **推理引擎**:`src/model_v10.{hpp,cpp}`(名称为兼容保留,内部为 Mild Mega r2 v3) - **输入**:160×120 BGR - **输出**:4 类 + 背景 → 9 通道:0=锥桶, 1=红灯, 2=绿灯, 3=斑马线 - **架构**:3→9→9→13→13→19→19→19→44→44→64→64 → head(64→64,dw) → out(64→9) -- **阈值**:`{0.65, 0.75, 0.80, 0.82}`(锥桶/红灯/绿灯/斑马线) -- **权重文件**:`mild_v12.bin`(105KB 自定义二进制格式) +- **阈值**:`{0.80, 0.70, 0.80, 0.85}`(锥桶/红灯/绿灯/斑马线) +- **权重文件**:`mild_v12.bin`(103KB 自定义二进制格式,实际模型为 Mild v13,沿用旧名) - **推理频率**:每 2 帧一次(跳帧节省 CPU) +- **转换工具**:`tools/export_mild_v13.py`(PyTorch .pth → .bin) ---