模型推理移至管道末尾降舵机延迟60→16ms + 视觉Mat复用 + 端到端延迟计时 + OpenCV 4.13 + WASD遥控

This commit is contained in:
spdis
2026-06-29 16:43:41 +08:00
parent 40d5cb1604
commit 017a827b18
16 changed files with 1201 additions and 709 deletions
+17 -15
View File
@@ -2,11 +2,11 @@
## 1. 模型检测
NanoDet V10 模型 4 类输出中:
Mild v12 模型 4 类输出中:
- cls=1: 红灯
- cls=2: 绿灯
模型置信度阈值由 `g_thresh[1]``g_thresh[2]` 控制(`src/camera.cpp:25`),当前分别为 0.80
模型置信度阈值由 `g_thresh[1]``g_thresh[2]` 控制(`src/camera.cpp:42`),当前分别为 0.75(红灯)和 0.80(绿灯)
## 2. 状态机
@@ -41,7 +41,8 @@ NanoDet V10 模型 4 类输出中:
和斑马线完全一样,复用编码器比例刹车:
```
ControlUpdate(spd, g_zstate == Z_STOP || tl_block)
motor_update(zebra_block, tl_block)
→ ControlUpdate(final_spd, zebra_block || tl_block)
刹车信号 = 斑马线STOP || 红灯STOP || 等待绿灯
```
@@ -67,20 +68,21 @@ LCD 状态: "R"=红灯停车 "G"=等绿灯, 拼接斑马线状态
## 5. 关键代码路径
```
CameraHandler (src/camera.cpp)
Step 4: 模型推理 → g_boxes[], g_box_count
Step 5: 斑马线状态机
Step 5.5: 红绿灯状态机
├─ 遍历 g_boxes, 统计 red_seen/green_seen
├─ 去抖计数 (3帧确认, 衰减-1/帧)
└─ 状态跃迁
Step 5.6: 锥桶检测 (g_zstate!=Z_STOP && g_tl_state==TL_NORMAL 时才运行)
Step 7: 电机控制
ControlUpdate(spd, g_zstate==Z_STOP || tl_block)
CameraHandler (src/camera.cpp:755)
Step 5: 模型推理 → g_boxes[], g_box_count
Step 6a: 斑马线状态机
Step 6b: 红绿灯状态机
├─ 遍历 g_boxes, 统计 red_seen/green_seen
├─ 去抖计数 (3帧确认, 衰减-1/帧)
└─ 状态跃迁
Step 6c: 锥桶检测 (g_zstate!=Z_STOP && g_tl_state==TL_NORMAL 时才运行)
Step 8: 电机控制
motor_update(zebra_block, tl_block)
→ ControlUpdate(final_spd, zebra_block || tl_block)
control.cpp:
ControlUpdate(speed, zebra_block)
└─ zebra_block → 编码器线程读速度 → 比例刹车
ControlUpdate(speed, block)
└─ block → 编码器线程读速度 → 比例刹车
```
## 6. 状态变量