# NaviGlass项目开发任务清单 **项目**:NaviGlass项目开发 **平台**:全志 V821 (32-bit RISC-V) **更新时间**:2026-01-06 **整体进度**:100%(室内导盲系统优化交付) ## 📖 快速导航 | 章节 | 说明 | |------|------| | [已完成任务](#-已完成任务) | Day 1-28 完成的功能 | | [后续规划](#-后续规划与遗留问题) | 待办 / 债务 / 未来展望 | | [进度统计](#-进度统计) | 各模块完成度 | | [里程碑](#-里程碑) | 关键节点回顾 | | [时间线](#-时间线) | 开发流水账 | **相关文档**: - [实现计划详情](file:///d:/CodingProjects/Antigravity/NaviGlass/Docs/implementation_plan_complete.md) - [Day 日志](file:///d:/CodingProjects/Antigravity/NaviGlass/Docs/DevLogs/) (Day1-Day28) --- ## ✅ 已完成任务 ### 基础环境配置 - [x] SDK 下载与编译 - [x] 工具链配置 - [x] 固件烧录测试 - [x] SSH 服务配置 ### 网络通信层 - [x] libuwsc WebSocket 库编译 - [x] libcurl HTTP 库编译 - [x] UDP Socket 基础功能 - [x] 静态编译链接优化 ### 音频系统 - [x] I2S 音频输出 (MAX98357A) - [x] Device Tree 引脚配置 (PD12/PD13/PD15) - [x] ALSA 播放测试 - [x] 音质验证 - [x] 模拟麦克风输入 (Audio Codec) - [x] MIC Switch 配置 - [x] 增益调优 (MIC Gain = 25) - [x] 录音功能测试 - [x] 音质验证 - [x] **音频错误处理与稳定性** (Day 10) - [x] 修复 I/O 错误导致的崩溃问题 - [x] 实现设备自动重新初始化机制 - [x] 修复类型安全问题(size_t → snd_pcm_sframes_t) - [x] 程序稳定性验证(36+ 秒无崩溃) ### IMU 传感器 - [x] ICM-42688-P 硬件连接 - [x] I2C 方案调研(失败,改用 SPI) - [x] GPIO 模拟 SPI 实现 - [x] SPI 时序编码 - [x] 寄存器读写功能 - [x] WHO_AM_I 识别 (0x47) - [x] 6 轴数据采集 - [x] 加速度计配置 (±16g) - [x] 陀螺仪配置 (±2000°/s) - [x] 温度监控 - [x] 数据验证测试 ### 摄像头系统 - [x] GC2083 MIPI 配置 - [x] Device Tree 验证(已有配置) - [x] ISP 参数加载 (gc2083_mipi) - [x] 视频格式设置 (1280x720 @20fps) - [x] MPP 框架集成 - [x] VI (视频输入) 模块 - [x] ISP (图像信号处理) 模块 - [x] VENC (视频编码) 模块 - [x] JPEG 硬件编码 - [x] Camera 类封装 - [x] 帧采集与测试 - [x] 帧缓冲管理 (5个VI, 4MB VBV) - [x] JPEG 压缩 (质量80) - [x] 测试程序验证 (100%成功率) ### 开发工具 - [x] 交叉编译脚本 - [x] 麦克风测试脚本 (test_mic.sh) - [x] IMU 测试程序 (test_imu) - [x] GPIO 测试程序 (test_gpio) ### 交叉编译配置 (Day 7) - [x] 工具链路径验证 - [x] 确认实际工具链位置 (out/toolchain/nds32le-linux-glibc-v5d) - [x] 编译器前缀统一为 riscv32-unknown-linux- - [x] Makefile 配置更新 - [x] src/Makefile - 主程序编译 - [x] src/Makefile_test - 测试版本 - [x] 所有构建脚本 (build_*.sh) - [x] 文档更新 - [x] Day7.md 工作日志 - [x] README.md 工具链说明 ### 整体编译与集成 (Day 8) - [x] 构建脚本修复 - [x] build_main.sh 路径问题修复 - [x] Makefile 链接库补充 - [x] 添加完整 Cedar 库列表 - [x] 解决 CDC_LOG_LEVEL_NAME 未定义错误 - [x] 主程序编译成功 - [x] avaota_client (3.9MB) - [x] 集成所有模块(音频/IMU/摄像头/网络) ### musl 工具链修复 (Day 9) - [x] 识别 glibc/musl 不兼容问题 - [x] 通过 ldd 诊断动态链接器错误 - [x] 确认开发板运行 musl libc 1.2.4 - [x] 发现符号不兼容 (`__register_atfork`) - [x] 定位正确的 musl 工具链 - [x] 查找 SDK 工具链目录 - [x] 发现 musl 在 `prebuilt/rootfsbuilt/riscv/` - [x] 更正 Makefile 路径配置 - [x] 重新编译程序 - [x] 使用 musl 工具链重新编译 - [x] 验证动态链接器为 `/lib32/ld.so.1` - [x] 程序成功运行并通过测试 ### 板端部署与测试 (Day 9) - [x] WiFi 网络配置 - [x] 连接到局域网 (192.168.110.132) - [x] 验证网络连通性 - [x] 程序部署 - [x] musl 版本上传到 /tmp/avaota_client - [x] 创建动态链接器符号链接 - [x] 硬件功能测试 - [x] IMU 传感器测试通过 (WHO_AM_I=0x47) - [x] 音频采集测试通过 (16kHz mono) - [x] 摄像头测试通过 (1280x720@20fps) - [x] ISP 系统正常运行 - [x] JPEG 编码器正常工作 - [x] 程序稳定性测试 - [x] 多线程正常运行 - [x] 心跳日志稳定 - [x] 优雅退出验证 (Ctrl+C) ### 网络通信测试 (Day 10-17) - [x] WebSocket 连接测试 - [x] 服务器已部署 (192.168.110.188:8081) - [x] 音频 WebSocket 连接成功 - [x] 摄像头 WebSocket 连接成功 - [x] 摄像头初期传输 JPEG 帧成功 - [x] 音频播放功能(TTS 播放流畅,断连恢复机制已验证) - [x] 摄像头 VBV 缓冲区优化(256KB → 2MB) - [x] UDP 数据传输测试 - [x] UDP 发送验证 - [x] IMU 数据实时上传成功,服务器正常接收 - [x] **Day 17: frpc.toml 添加 UDP 12345 代理,公网传输正常** ### 网络模块优化 (Day 11) - [x] **WebSocket 崩溃修复** - [x] 识别崩溃原因(disconnect() 处理不当) - [x] 添加 shutdown() 中断阻塞的 recv() - [x] 修复线程 join() 逻辑 - [x] 验证 403 错误时不再崩溃 - [x] **音频播放功能实现** - [x] 扩展 WSClient 支持二进制数据接收 - [x] 添加 poll_binary_messages() 方法 - [x] 实现二进制数据队列(m_binary_queue) - [x] 集成 AudioPlayer 使用 hw:1,0 设备 - [x] 实现 TTS 音频接收和播放逻辑 ### TTS 播放优化与事件循环阻塞修复 (Day 13) - [x] **Omni 客户端异步化(核心修复)** - [x] 识别同步迭代器阻塞 asyncio 事件循环 - [x] 使用 `threading.Thread` + `asyncio.Queue` 解耦 - [x] TTS 块间隔从 5-15 秒降至 ~2 秒 - [x] **客户端 TTS 预缓冲机制** - [x] 实现 16000 帧(1秒)预缓冲 - [x] 添加最小播放阈值(8000 帧) - [x] 优化播放批次大小(100ms) - [x] **服务器退出修复** - [x] lifespan 捕获 CancelledError - [x] 添加强制退出线程 - [x] Ctrl+C 后正常返回 shell - [x] **TTS 音频传输优化** - [x] 8kHz → 16kHz 上采样 - [x] WebSocket 断开时 TTS 缓存机制 - [x] WebSocket 引用保护 - [x] **TTS 播放流畅度** ✅(服务器端修复后已流畅) ### 项目清理与 TTS 流畅 (Day 14) - [x] **项目清理** - [x] 删除 HTTP TTS 相关文件 (http_tts_stream.*, http_client.*) - [x] 删除测试脚本 (build_test*.sh, debug_*.sh) - [x] 删除测试源码 (test_*.cpp, main_test.cpp) - [x] 删除冗余文件 (Makefile_test, build_phase*.sh) - [x] 清理后仅保留核心文件 - [x] **恢复 WebSocket TTS** - [x] 移除 HTTP TTS 线程 - [x] 恢复 audio_capture_thread 中的 TTS 播放 - [x] 更新 Makefile 移除 HTTP 文件 - [x] **服务器端导航器预初始化** ✅ - [x] 识别导航器延迟初始化问题(客户端连接后才加载) - [x] 在服务器启动时预初始化 BlindPathNavigator/CrossStreetNavigator/NavigationMaster - [x] 客户端连接无延迟 - [x] **增大 TTS 预缓冲** - [x] PRE_BUFFER_FRAMES: 8000 → 32000 (0.5s → 2s) - [x] MIN_PLAY_FRAMES: 3200 → 4800 - [x] **服务器端 TTS 阻塞修复** ✅ - [x] 识别 HTTP 20ms 节拍循环阻塞 WebSocket 发送 - [x] 将 HTTP 广播改为后台任务 `asyncio.create_task()` - [x] TTS 播放已流畅! ### 导航性能优化与调试 (Day 15) - [x] **修复导航模式严重卡顿** - [x] 识别根因:主线程 await 等待 CPU 密集型任务(Process Frame) - [x] 实现非阻塞跳帧机制(后台线程处理 + 最新帧优先) - [x] 验证 FPS 恢复(导航模式 0.9 FPS -> 10.0 FPS) - [x] **YOLO 检测频率优化** - [x] 盲道检测间隔设为 5 帧 - [x] **修复模型重复加载 BUG** - [x] 解决 `app_main` 模块重载问题 - [x] **用户体验优化** - [x] 调整导航语音冷却时间 (1.0s -> 3.0s) - [x] 添加详细性能诊断日志 ### 固件重刷与自启动配置 (Day 16) - [x] **修复动态链接器路径问题** - [x] Makefile 添加 `-Wl,--dynamic-linker=/lib/ld-musl-riscv32.so.1` - [x] 无需手动创建 `/lib32/ld.so.1` 符号链接 - [x] **配置程序自启动** - [x] 使用 `/etc/init.d/avaota` + `load_script.conf` 方案 - [x] 发现 `rc.final` 会导致 SD 卡检测失败(已规避) - [x] 发现 `crontab @reboot` 不支持(BusyBox crond) - [x] 需要 15 秒延迟等待音频系统就绪 - [x] 实现 start/stop 命令支持 - [x] **确认 WiFi 自动连接** - [x] 系统自动保存配置到 `/etc/wifi/wifimg.config` - [x] **配置公网服务器访问** - [x] 修改 `main.cpp` 服务器地址为公网 IP `8.148.25.142` - [x] 配置 frp 内网穿透(frpc.toml) - [x] 测试 iPhone 热点连接成功 ### 室外测试与语音系统优化 (Day 17) - [x] **室外实地测试** - [x] 开发板通过 iPhone 热点连接公网服务器 - [x] 摄像头视频流传输正常 - [x] 过马路导航语音播报正常 - [x] 发现盲道导航无语音播报问题 - [x] **IMU 公网传输修复** - [x] 识别 frpc.toml 缺少 UDP 12345 配置 - [x] 添加 UDP 代理配置 - [x] 公网服务器防火墙开放 UDP 12345 - [x] **盲道导航语音修复** - [x] 识别根因:线程池中无法运行 asyncio 协程 - [x] 移除 `workflow_blindpath.py` 内部 `play_voice_text` 调用 - [x] 统一由 `app_main.py` 处理语音播放 - [x] **IMU 采样率优化** - [x] 从 50Hz 降低到 10Hz 减少对音频的干扰 - [x] **扬声器杂音分析** - [x] 确认为硬件层面问题(电磁干扰、接地不良) - [x] 需硬件层面改进(加磁环、重新布线) ### 性能优化与紧急修复 (Day 18) - [x] **服务器性能深度优化** - [x] **YOLO 推理加速**: 启用 FP16 半精度 + 动态分辨率 (RTX 3090 优化) - [x] **模型层融合**: 添加 fuse() 操作与 CUDA 预热 - [x] **线程池扩张**: max_workers 2 -> 3 - [x] **音频延迟与协议优化** - [x] **协议统一**: 客户端/服务器统一使用 20ms (320 samples) 音频包 - [x] **延迟降低**: TTS 预缓冲从 2s 降至 0.5s - [x] **网络/传输瓶颈修复** - [x] **WebSocket 并行广播**: 引入 `asyncio.gather` 解决多客户端卡顿 - [x] **户外网络适配**: 相机增加 "Outdoor Mode" (8fps/Q45) - [x] **紧急 Bug 修复** - [x] 修复 `NameError` (MODEL/imports) 导致的服务崩溃 - [x] 修复 `.env` 未加载导致的 GPU 禁用(解决画面假死) ### 传输优化与 TurboJPEG 加速 (Day 19) - [x] **零拷贝直传** - [x] CHAT/IDLE/ITEM_SEARCH 模式直接转发原始 JPEG - [x] 跳过无意义的 imdecode + imencode 循环 - [x] **延迟解码** - [x] 只在导航模式才执行 cv2.imdecode - [x] 非导航场景 CPU 开销降低 90%+ - [x] **TurboJPEG 集成** - [x] 替换 cv2.imencode/imdecode,速度提升 2-3 倍 - [x] 带回退逻辑,未安装时自动使用 cv2 - [x] **导航结果 JPEG 缓存** - [x] 新结果编码一次后复用,编码次数 8→2 次/秒 - [x] **GPU 配置修正** - [x] .env 配置使用 GPU 1 (CUDA_VISIBLE_DEVICES=1) ### 性能瓶颈深度分析与 UI 优化 (Day 20) - [x] **服务器性能优化** - [x] **日志精简**: `_detect_obstacles` 输出从 20 行/次减到 1 行/30帧 - [x] **GPU 并发槽位**: 从 2 增加到 4 - [x] **TTS WebSocket 修复**: 连接时立即保存引用 - [x] **可视化网页优化** - [x] **IMU 浮窗缩小**: 宽度 600px,添加可折叠功能 - [x] **折叠状态优化**: 完全隐藏 3D 模型和数据面板 - [x] **Badge 动画**: 连接中闪烁、已连接脉冲呼吸 - [x] **状态中文化**: `📷 已连接` 替代英文 - [x] **底部边界修复**: 移除 `.chat { height: 100vh }` - [x] **背景色统一**: 左右两栏使用相同的 `var(--card)` - [x] **Favicon 添加**: `/static/favicon.png` - [x] **移动端适配**: @media 600px/1100px 响应式布局 - [x] **Numba 多核加速** - [x] 创建 `numba_utils.py` JIT 编译工具函数 - [x] mask 像素计数、统计、交集计算加速 - [x] 启动时 JIT 预热,避免首次调用延迟 - [x] **TensorRT 模型加速** - [x] 导出 `yolo-seg.engine`、`yoloe-11l-seg.engine`、`trafficlight.engine` (FP16) - [x] 创建 `model_utils.py` 自动选择 .engine 文件 - [x] 修复 `.to()` / `.fuse()` 不兼容 TensorRT 问题 - [x] 修复推理尺寸不匹配 (640→480) - [x] 统一使用环境变量 `AIGLASS_YOLO_IMGSZ=480` ### AI 管道修复与音频优化 (Day 21-22) - [x] **GLM API 修复** - [x] 升级至 `zai-sdk` + `glm-4.6v-flash` - [x] 修复 Error 400/1210 调用问题 - [x] **语音识别修复** - [x] SenseVoice 语言固定为 `zh` (解决韩语误识) - [x] **VAD 截断修复**: 引入 300ms 环形缓冲,解决首字丢失 - [x] **音频系统优化** - [x] **TTS 语速排查**: 确认源文件语速,用户决定保留 - [x] **底噪优化**: - [x] 软件规避 (80%音量) - [x] **彻底解决**: 移除串口/USB供电,改用电池消除共地干扰 - [x] **AI 回答质量**: - [x] 升级模型至 `glm-4.6v-flash` (预期解决相关性问题) ### 移动端适配与部署优化 (Day 23) - [x] **移动端可视化界面修复** - [x] `.stage` 容器添加 `min-height: 50vh` - [x] `fitCanvas()` 使用容器实际高度 - [x] IMU 浮窗移到右下角,默认折叠 - [x] **PM2 服务器部署** - [x] 一行命令启动配置 - [x] VAD 模型本地缓存优先(启动 30s→3s) - [x] **红绿灯检测卡顿修复** - [x] 实现非阻塞跳帧机制 - [x] 独立缓存(不干扰盲道导航) - [x] 停止时清除缓存 - [x] **Nginx 域名配置** - [x] naviglass.hbyrkj.top 反向代理 - [x] WebSocket 支持 ### YOLOE 室内导盲模型训练 (Day 24) - [x] **训练指南完善** - [x] 更新 PyTorch 版本 (cu124) - [x] 简化 conda 环境名 - [x] 统一目录结构 (val → valid) - [x] **Indoor Obstacle Detection 数据集** - [x] 选择 v11 版本 (1440+57+54 张图片) - [x] 8 个类别:closed_door, door, elevator, escalator, footpath, obstacle, person, wall - [x] YOLOv11 原生格式,无需转换 - [x] **服务器训练启动** - [x] 配置 GPU 1 (RTX 3090) - [x] RAM 缓存加速 (192GB) - [x] 150 epochs 训练进行中 ### 室内导盲分割模型完成 (Day 25) - [x] **训练问题修复** - [x] 发现 YOLOE 不支持自定义类别训练 - [x] 改用标准 `yolo11l-seg.pt` 模型 - [x] **MIT Indoor 数据集筛选** - [x] 从 2573 类别筛选出 14 个导盲相关类别 - [x] 创建 `filter_categories.py` 脚本 - [x] 生成 `indoor_blind` 数据集 (1265+363+175 张) - [x] **训练完成** - [x] 模型参数:27.6M - [x] 推理速度:4.8ms/张 (训练) / 23ms/张 (验证) - [x] **模型验证** - [x] 测试集 175 张图片全部通过 - [x] 14 类别全部可检测 - [x] 无检测率仅 2.3% ### 室内导盲服务器集成 (Day 26) - [x] **状态机扩展** - [x] `NavigationMaster` 支持 `INDOOR_NAV` 状态 - [x] 实现 `start_indoor_navigation` 切换逻辑 - [x] **模型集成** - [x] `load_indoor_model` 支持 TensorRT 引擎加载 - [x] `app_main.py` 集成室内导航器初始化 - [x] **交互支持** - [x] 支持 "室内导航" / "室内导盲" 语音唤醒 - [x] ASR 白名单更新 - [x] **流程打通** - [x] 预热与推理流程验证通过 - [x] **Bug 修复与优化** - [x] **命令冲突修复**: 修复 "停止室内导航" 误触发启动的问题 - [x] **检测互斥**: 室内模式下禁用室外斑马线检测 - [x] **日志净化**: 屏蔽启动时冗余警告 (TRT/YOLO/Audio) - [x] **EdgeTTS 磁盘缓存**: 持久化 TTS 合成结果 - [x] **可配置日志间隔**: `AIGLASS_LOG_INTERVAL` 环境变量 - [x] **项目文件清理**: 释放 ~1.75GB - [x] **室内导航工作流** - [x] 创建专用 `workflow_indoor.py` (IndoorNavigator) - [x] 14 类别映射: floor/corridor/sidewalk + 障碍物类别 - [x] 可行走区域检测与方向引导 - [x] 障碍物避障与兴趣点提示 ### 室内导盲模型优化 (Day 27) - [x] **训练错误修复** - [x] 修复 `Loss NaN/Inf` (关闭 AMP 混合精度) - [x] 创建 `check_dataset_health.py` 数据完整性验证脚本 - [x] **代码集成完善** - [x] **20类数据适配**: 更新 `workflow_indoor.py` 类别映射 - [x] **模型路径更新**: `app_main.py` 默认加载 `yolo11l-seg-indoor.engine` - [x] **代码清理**: 移除所有 `indoor14` 旧引用 - [x] **数据集终极优化 (22类)** - [x] **餐具扩展**: 合并 Spoon/Fork/Chopstick 数据集,强化 `tableware` (ID 21) - [x] **跨平台路径修复**: 解决 Windows 生成 `data.yaml` 在 Linux 报错问题 - [x] **文档同步**: 更新《训练指南》至 V2 (22类 + 路径注意) ### 室内导航优化与 Bug 修复 (Day 28) - [x] **模型精准化** - [x] 切换至 `yolo11l-seg-indoor14.engine` (14类) - [x] 更新 `workflow_indoor.py` 类别映射 - [x] 地面检测率提升,解决无路误报 - [x] **语音播报修复** - [x] **强制首播**: 解决初始无路提示被节流的问题 - [x] **即时反馈**: 启动命令后立即播报“正在寻找可行走区域” - [x] **音频 Pop 消除**: 增加静音填充至 200ms - [x] **崩溃修复**: 移除 undefined class 引用 - [x] **终端 WiFi 诊断** - [x] 确认断连不可恢复为 OS 层面问题 - [x] 建议部署 `wifi_check.sh` 守护脚本 --- ## 🛤️ 后续规划与遗留问题 ### 🔴 优先待办 (Priority) - [ ] **稳定性验证**: 长时间运行测试(5分钟基础 / 1小时稳定性 / 内存泄漏检查) - [ ] **异常恢复**: 模拟断网重连、设备异常恢复等边界条件 - [ ] **WiFi 保活**: 部署终端脚本 `wifi_check.sh` 解决断网不重连问题 ### 🟠 技术债务 (Debt) 1. **音频底噪**: 需探索软件降噪 (AEC/ANS) 以消除回环底噪 2. **硬件屏蔽**: 扬声器电流声需硬件改进(磁环/布线) 3. **代码规范**: 补充单元测试,统一注释风格 ### 🔵 长期探索 (Future) - [ ] **硬件升级**: 尝试硬件 SPI 替代 GPIO 模拟(提升 IMU 采样率) - [ ] **I2C 攻坚**: 重新探索 ICM-42688 的 I2C 通信模式 - [ ] **能效优化**: 内存占用优化与 CPU 负载平衡 ## 📊 进度统计 ### 总体进度 ``` ████████████████████ 100% ``` **🎉 核心功能完成!项目代码已清理!** ### 各模块进度 | 模块 | 进度 | 状态 | |------|------|------| | SDK 环境 | 100% | ✅ 完成 | | 网络库 | 100% | ✅ 完成 | | 音频输出 | 100% | ✅ 完成 | | 音频输入 | 100% | ✅ 完成 | | 音频稳定性 | 100% | ✅ 完成 (Day 10) | | IMU 传感器 | 100% | ✅ 完成 | | 摄像头 | 100% | ✅ 完成 | | 工具链配置 | 100% | ✅ 完成 | | musl 工具链 | 100% | ✅ 完成 | | 整体编译 | 100% | ✅ 完成 | | 网络通信 | 100% | ✅ 完成 | | 板端测试 | 100% | ✅ 所有硬件通过 | | TTS 播放 | 100% | ✅ 流畅播放 (Day 14) | | 项目清理 | 100% | ✅ Day 14 完成 | | 导航模式 | 100% | ✅ Day 15 修复 | | 服务器优化 | 100% | ✅ Day 18-19 完成 | | AI 交互管道 | 100% | ✅ Day 21-22 修复 (GLM-4V/SenseVoice) | | 室内导盲模型 | 100% | ✅ Day 28 优化交付 (14类模型) | --- ## 🎯 里程碑 ### Milestone 1: 基础设施 ✅ **完成时间**: Day 1-2 **成果**: SDK 编译成功、网络库就绪、工具链配置完成 ### Milestone 2: 音频系统 ✅ **完成时间**: Day 3-4 **成果**: 扬声器播放正常、麦克风录音清晰、参数优化完成 ### Milestone 3: IMU 传感器 ✅ **完成时间**: Day 4 **成果**: SPI 驱动实现、6轴数据采集、测试验证通过 ### Milestone 4: 摄像头系统 ✅ **完成时间**: Day 5 **成果**: MPP框架集成、JPEG 编码正常、100%捕获成功率 ### Milestone 5: 工具链配置与整体编译 ✅ **完成时间**: Day 7-8 **成果**: 工具链配置验证、Makefile 统一更新、主程序编译成功 (3.9MB) ### Milestone 6: musl 工具链修复 ✅ **完成时间**: Day 9 (上午) **成果**: 识别并解决 glibc/musl 不兼容问题、定位正确的 musl 工具链路径 ### Milestone 7: 板端测试验证 ✅ **完成时间**: Day 9 (下午) **成果**: WiFi 配置成功、所有硬件模块测试通过、程序稳定性验证 ### Milestone 8: 音频稳定性修复 + 网络通信验证 ✅ **完成时间**: Day 10 **成果**: 修复音频崩溃问题、WebSocket 连接成功、IMU UDP 传输正常 ### Milestone 9: 网络模块稳定性优化 ✅ **完成时间**: Day 11 **成果**: 修复 WebSocket 崩溃、实现音频双向通信、VBV 缓冲区优化 ### Milestone 10: 摄像头稳定性优化 ✅ **完成时间**: Day 11-12 **成果**: VBV 缓冲区 256KB→2MB、VI 缓冲区 3→5、错误恢复机制 ### Milestone 11: 音频交互修复与系统加固 ✅ **完成时间**: Day 12 **成果**: 修复链接器符号冲突、解决音频采集无数据问题、恢复全系统功能 ### Milestone 12: TTS 播放优化与事件循环阻塞修复 ✅ **完成时间**: Day 13 **成果**: Omni 客户端异步化、TTS 块间隔从 5-15s 降至 ~2s、服务器退出修复 ### Milestone 13: 项目清理与 TTS 流畅 ✅ **完成时间**: Day 14 **成果**: 删除 19 个冗余文件、服务器端 TTS 阻塞修复、TTS 播放已流畅 ### Milestone 14: 导航模式卡顿修复 ✅ **完成时间**: Day 15 **成果**: 高性能跳帧机制、FPS 从 0.5 恢复至 10.0、语音导航频率优化 ### Milestone 15: 固件重刷与自启动配置 ✅ **完成时间**: Day 16 **成果**: 动态链接器路径修复、自启动方案确定、WiFi 自动连接验证 ### Milestone 16: 室外测试与语音系统优化 ✅ **完成时间**: Day 17 **成果**: 室外测试成功、IMU 公网传输修复、盲道语音修复、IMU 降至 10Hz ### Milestone 17: 深度性能优化与修复 ✅ **完成时间**: Day 18 **成果**: - **高性能推理**: RTX 3090 实现 20+ FPS (FP16 + 动态分辨率) - **音频优化**: 统一 20ms 音频包,TTS 延迟显著降低 - **Bug 修复**: 解决 NameError 崩溃、GPU 配置失效问题 ### Milestone 18: 传输优化与 TurboJPEG 加速 ✅ **完成时间**: Day 19 **成果**: - **零拷贝直传**: 非导航场景 CPU 开销降低 90%+ - **TurboJPEG**: 编解码速度提升 2-3 倍 - **JPEG 缓存**: 导航模式编码次数 8→2 次/秒 - **GPU 配置**: 正确使用 GPU 1 (CUDA_VISIBLE_DEVICES=1) ### Milestone 19: AI 管道修复与音频完整性 ✅ **完成时间**: Day 21-22 **成果**: - **大模型升级**: 集成 GLM-4.6v-Flash (zai-sdk),修复调用错误 - **语音识别优化**: SenseVoice 强制中文模式,修复 VAD 截断 (300ms 缓冲) - **音频硬件修复**: 移除串口改用电池供电,彻底消除地环路底噪 - **流畅度确认**: 用户确认保留原生语速,AI 对话闭环打通 ### Milestone 20: 移动端与部署优化 ✅ **完成时间**: Day 23 **成果**: - **移动端适配**: 视频区域高度修复、IMU 浮窗折叠 - **PM2 部署**: 一行命令启动,VAD 本地缓存加速 - **红绿灯检测修复**: 跳帧机制消除卡顿 - **域名配置**: naviglass.hbyrkj.top 可访问 ### Milestone 21: 室内导盲分割模型训练完成 ✅ **时间**: Day 24-25 **成果**: - **问题修复**: YOLOE 不支持自定义训练,改用 yolo11l-seg.pt - **数据集筛选**: MIT Indoor 2573→14 类别 (floor/door/stairs/person 等) - **训练完成**: 150 epochs,27.6M 参数,4.8ms/张推理 ### Milestone 22: 室内导盲服务器集成 ✅ **时间**: Day 26 **成果**: - [x] **完整闭环**: 从语音唤醒 -> 模型加载 -> 推理引导 -> 语音播报全流程打通 ### Milestone 23: 室内导盲模型优化与完备 ✅ **时间**: Day 27 **成果**: - **大规模数据扩展**: 整合 22 类室内物体 (新增 tableware, washroom 等) - **跨平台部署**: 修复 Windows/Linux 训练路径兼容性问题 - **稳定性修复**: 彻底解决 FP16 训练 NaN 问题 (AMP=False) - **完整性验证**: 数据集健康检查 100% 通过 ### Milestone 24: 室内导盲系统优化交付 ✅ **时间**: Day 28 **成果**: - **高精度感知**: 切换 14 类模型,地面检测率/避障精准度显著提升 - **体验升级**: 修复无路提醒节流 Bug,消除音频 Pop 噪声,交互响应即时化 - **系统诊断**: 明确终端 WiFi 断连根因并给出自动化运维方案 --- ## 📅 时间线 ``` Day 1-2: SDK + 网络库 ✅ 完成 Day 3: I2S 音频输出 ✅ 完成 Day 4: 麦克风 + IMU ✅ 完成 Day 5: GC2083 摄像头 ✅ 完成 Day 6: 硬件验证与调试 ✅ 完成 Day 7: 工具链配置收敛 ✅ 完成 Day 8: 整体编译成功 ✅ 完成 Day 9: musl修复+板上测试 ✅ 完成 Day 10: 音频稳定性修复 ✅ 完成 Day 11: 网络稳定性优化 ✅ 完成 Day 12: 音频交互与系统加固 ✅ 完成 Day 13: TTS事件循环阻塞修复 ✅ 完成 Day 14: 项目清理+TTS优化 ✅ 完成 Day 15: 导航性能优化 ✅ 完成 (跳帧机制) Day 16: 自启动配置 ✅ 完成 (load_script.conf) Day 17: 室外测试+语音修复 ✅ 完成 (frpc UDP) Day 18: 性能优化+紧急修复 ✅ 完成 (YOLO FP16) Day 19: 传输优化 ✅ 完成 (TurboJPEG, 零拷贝直传) Day 20: 深度性能优化 ✅ 完成 (日志精简, GPU并行, 槽位增加) Day 21: 新AI管道开发 ✅ 完成 (初步集成) Day 22: AI与音频修复 ✅ 完成 (GLM-4V, VAD缓冲, 语速确认) Day 23: 移动端+部署优化 ✅ 完成 (PM2, 红绿灯跳帧) Day 24: YOLOE模型训练 ✅ 完成 (问题诊断+数据集筛选) Day 25: 室内导盲模型完成 ✅ 完成 (训练+验证通过) Day 26: 室内导盲服务器集成 ✅ 完成 (IndoorNavigator工作流) Day 27: 模型训练优化与完善 ✅ 完成 (NaN修复+22类适配+路径修复) Day 28: 室内导航优化与修复 ✅ 完成 (14类模型+语音修复+音频Pop修复)