Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第 3 周(2026-07-27 ~ 2026-08-01)

蒋玉月 · StarryOS SG2002 TPU/NPU 推理加速 阶段声明:控制层落地 + 真机联调,管线突破 5fps,电机遭遇环境差异卡点

一、本周目标

  1. 跟进李明涛 DQBUF 驱动优化,端到端闭环上线,目标 5fps
  2. 接入 ESP32 电机 + 舵机真实硬件,验证状态机 + PID 控制
  3. 板上实测全链路:Camera → TPU 检测 → 运动控制 → 夹取

二、关键成果

2.1 管线性能:v7 → v8,突破 5fps

指标v7(上周)v8(本周)变化
TPU Forward40ms52ms慢 12ms
整管线延迟233ms~183ms快 21%
稳态帧率4.3 fps5.2-5.5 fps+22%
检测置信度0.50-0.79

达成上周 5fps 目标。Camera 从之前的 isochronous 传输秒挂到稳定 100ms 出帧,Preprocess 和 NMS 沿用 C 后端零拷贝路径。

2.2 李明涛:CrabUsb 架构升级

本周李明涛完成了 StarryOS USB 栈的重大架构变更:

旧: StarryOS usbfs(中断已占用) ✗ sg200x-bsp → 中断冲突 → 轮询超时 255ms
新: StarryOS usbfs(事件循环)   ✓ CrabUsb    → 合法注册中断 → 100ms 稳定

效果:CrabUsb 与内核 USB 栈共享同一中断体系,不再是“绕过“而是“融入“。Camera 取帧从之前偶尔 255ms 空转变为稳定均匀的 100ms。下一步优化方向:usbfs 事件循环中给 UVC 开低延迟通道(中断直通 + buffer 预分配),目标从 100ms → 接近 Linux 10ms。

内核版本演进:

版本日期大小说明
boot.sd.old_202607217/2112.5 MiB原始版本
boot.sd.old_202607277/2212.85 MiB第一次更新
boot.sd (当前)7/2512.78 MiB李明涛最新

v4l2-test 工具链就绪:1.tpg_check / 2.camera / 2.parser / 3.speed / capture,均 ~30KB 静态编译。

2.3 AKA-00 控制接口挖掘与真机驱动

chenlongos/AKA-00 仓库挖出完整硬件控制链:

SG2002
  ├── /dev/ttyS1 (UART1, 115200) → ESP32-C3 → DRV8833 → N20 TT马达×2
  │    协议: 0xAA 0x55 <cmd> <len> <payload> <chk>
  │
  └── /dev/ttyS2 (UART2, 115200) → 微雪控制板 → ZP10S舵机×3
       协议: #<id>P<pulse>T<time>!

确认 StarryOS 板端 /dev/ttyS0/1/2/3 全部存在,驱动可用。

2.4 全自动追球管线 (real_pipeline.py)

实现完整状态机:

Camera(100ms) → Preprocess(C) → TPU(52ms) → NMS(C)
  → 无目标: 原地右转搜索
  → 球远(far): 快速前进 + 方向修正
  → 球中(mid): 慢速接近 + 方向修正
  → 球近(near): 停车 → 舵机夹取

2.5 板上实测

模块状态说明
环境内核/串口/Python/C 库/模型全部就位
Camera首日 isochronous 秒挂,CrabUsb 新内核后稳定 100ms 出帧
TPU~52ms Forward,检出置信度 0.50-0.79
控制逻辑GRAB/SEARCH 状态机自动切换正常
Servo 舵机设备在位,未实测夹取
Motor 电机🔴handshake 通过但轮子不转(见 2.6)
WiFiN24250 模块未接线

2.6 Motor — 本周最大卡点(环境差异)

  • TtPidDriver 协议握手返回 OK,但电机不转
  • 定位到软件 bug:raw I/O fallback 路径 _send_cmd 调用 reset_input_buffer(),此方法在 file object 上不存在,AttributeErrorexcept: pass 静默吞掉 → 数据从未发出
  • 串口波特率默认 38400,需 stty -F /dev/ttyS1 115200 修正
  • 关键发现:同一份 motor_driver.py 代码在李明涛的板子上电机正常转动,用户板子只 handshake 通过但轮子不动 → 驱动逻辑本身正确,问题在板端环境差异
  • 待排查:两边内核版本、串口驱动行为、电平/接线、ESP32-C3 固件版本差异

三、产出

类型内容
代码real_pipeline.py — 真机主程序:Camera→TPU→追球→夹取 全自动
代码motor_driver.py — ESP32-C3 电机 UART 驱动(Mock + Real 双模式)
代码servo_driver.py — ZP10S/STS3215 舵机 UART 驱动(Mock + Real 双模式)
文档REAL_MACHINE_GUIDE.md — 完整操作指南(接线/测试/故障排查)
GitHubjiangyuyue111/sg2002_yolo_inference — 初始提交(86 文件 + 贡献者说明)
ACT-Runtimechenlongos/ACT-Runtime — CrabUsb + Isoch 架构升级 + 性能数据更新
SD 卡全部 pipeline 文件 + 指南已部署到 ext4 分区

四、下周计划

  1. 🔴 电机环境差异排查(最高优先):逐项对比两边内核版本、串口驱动、ESP32-C3 固件,必要时直接裸协议 echo/dev/ttyS1 排除 Python 层干扰
  2. 🟡 舵机夹取实测:验证 ZP10S 夹爪完整抓球动作闭环
  3. 🟡 pyserial 迁移:替换 raw file I/O fallback,消除 PYTHONPATH 手动设置
  4. 🟡 WiFi 模块接入:焊接 N24250 模块,实现无线调试/控制
  5. Camera 性能优化:配合李明涛 usbfs 低延迟通道方案,目标 100ms → 接近 Linux 10ms