Files
Docs/task_complete.md
2026-01-06 17:29:46 +08:00

26 KiB
Raw Blame History

NaviGlass项目开发任务清单

项目NaviGlass项目开发
平台:全志 V821 (32-bit RISC-V)
更新时间2026-01-06 整体进度100%(室内导盲系统优化交付)

📖 快速导航

章节 说明
已完成任务 Day 1-28 完成的功能
后续规划 待办 / 债务 / 未来展望
进度统计 各模块完成度
里程碑 关键节点回顾
时间线 开发流水账

相关文档


已完成任务

基础环境配置

  • SDK 下载与编译
  • 工具链配置
  • 固件烧录测试
  • SSH 服务配置

网络通信层

  • libuwsc WebSocket 库编译
  • libcurl HTTP 库编译
  • UDP Socket 基础功能
  • 静态编译链接优化

音频系统

  • I2S 音频输出 (MAX98357A)
    • Device Tree 引脚配置 (PD12/PD13/PD15)
    • ALSA 播放测试
    • 音质验证
  • 模拟麦克风输入 (Audio Codec)
    • MIC Switch 配置
    • 增益调优 (MIC Gain = 25)
    • 录音功能测试
    • 音质验证
  • 音频错误处理与稳定性 (Day 10)
    • 修复 I/O 错误导致的崩溃问题
    • 实现设备自动重新初始化机制
    • 修复类型安全问题size_t → snd_pcm_sframes_t
    • 程序稳定性验证36+ 秒无崩溃)

IMU 传感器

  • ICM-42688-P 硬件连接
  • I2C 方案调研(失败,改用 SPI
  • GPIO 模拟 SPI 实现
    • SPI 时序编码
    • 寄存器读写功能
    • WHO_AM_I 识别 (0x47)
  • 6 轴数据采集
    • 加速度计配置 (±16g)
    • 陀螺仪配置 (±2000°/s)
    • 温度监控
  • 数据验证测试

摄像头系统

  • GC2083 MIPI 配置
    • Device Tree 验证(已有配置)
    • ISP 参数加载 (gc2083_mipi)
    • 视频格式设置 (1280x720 @20fps)
  • MPP 框架集成
    • VI (视频输入) 模块
    • ISP (图像信号处理) 模块
    • VENC (视频编码) 模块
    • JPEG 硬件编码
    • Camera 类封装
  • 帧采集与测试
    • 帧缓冲管理 (5个VI, 4MB VBV)
    • JPEG 压缩 (质量80)
    • 测试程序验证 (100%成功率)

开发工具

  • 交叉编译脚本
  • 麦克风测试脚本 (test_mic.sh)
  • IMU 测试程序 (test_imu)
  • GPIO 测试程序 (test_gpio)

交叉编译配置 (Day 7)

  • 工具链路径验证
    • 确认实际工具链位置 (out/toolchain/nds32le-linux-glibc-v5d)
    • 编译器前缀统一为 riscv32-unknown-linux-
  • Makefile 配置更新
    • src/Makefile - 主程序编译
    • src/Makefile_test - 测试版本
    • 所有构建脚本 (build_*.sh)
  • 文档更新
    • Day7.md 工作日志
    • README.md 工具链说明

整体编译与集成 (Day 8)

  • 构建脚本修复
    • build_main.sh 路径问题修复
  • Makefile 链接库补充
    • 添加完整 Cedar 库列表
    • 解决 CDC_LOG_LEVEL_NAME 未定义错误
  • 主程序编译成功
    • avaota_client (3.9MB)
    • 集成所有模块(音频/IMU/摄像头/网络)

musl 工具链修复 (Day 9)

  • 识别 glibc/musl 不兼容问题
    • 通过 ldd 诊断动态链接器错误
    • 确认开发板运行 musl libc 1.2.4
    • 发现符号不兼容 (__register_atfork)
  • 定位正确的 musl 工具链
    • 查找 SDK 工具链目录
    • 发现 musl 在 prebuilt/rootfsbuilt/riscv/
    • 更正 Makefile 路径配置
  • 重新编译程序
    • 使用 musl 工具链重新编译
    • 验证动态链接器为 /lib32/ld.so.1
    • 程序成功运行并通过测试

板端部署与测试 (Day 9)

  • WiFi 网络配置
    • 连接到局域网 (192.168.110.132)
    • 验证网络连通性
  • 程序部署
    • musl 版本上传到 /tmp/avaota_client
    • 创建动态链接器符号链接
  • 硬件功能测试
    • IMU 传感器测试通过 (WHO_AM_I=0x47)
    • 音频采集测试通过 (16kHz mono)
    • 摄像头测试通过 (1280x720@20fps)
    • ISP 系统正常运行
    • JPEG 编码器正常工作
  • 程序稳定性测试
    • 多线程正常运行
    • 心跳日志稳定
    • 优雅退出验证 (Ctrl+C)

网络通信测试 (Day 10-17)

  • WebSocket 连接测试
    • 服务器已部署 (192.168.110.188:8081)
    • 音频 WebSocket 连接成功
    • 摄像头 WebSocket 连接成功
    • 摄像头初期传输 JPEG 帧成功
    • 音频播放功能TTS 播放流畅,断连恢复机制已验证)
    • 摄像头 VBV 缓冲区优化256KB → 2MB
  • UDP 数据传输测试
    • UDP 发送验证
    • IMU 数据实时上传成功,服务器正常接收
    • Day 17: frpc.toml 添加 UDP 12345 代理,公网传输正常

网络模块优化 (Day 11)

  • WebSocket 崩溃修复
    • 识别崩溃原因disconnect() 处理不当)
    • 添加 shutdown() 中断阻塞的 recv()
    • 修复线程 join() 逻辑
    • 验证 403 错误时不再崩溃
  • 音频播放功能实现
    • 扩展 WSClient 支持二进制数据接收
    • 添加 poll_binary_messages() 方法
    • 实现二进制数据队列m_binary_queue
    • 集成 AudioPlayer 使用 hw:1,0 设备
    • 实现 TTS 音频接收和播放逻辑

TTS 播放优化与事件循环阻塞修复 (Day 13)

  • Omni 客户端异步化(核心修复)
    • 识别同步迭代器阻塞 asyncio 事件循环
    • 使用 threading.Thread + asyncio.Queue 解耦
    • TTS 块间隔从 5-15 秒降至 ~2 秒
  • 客户端 TTS 预缓冲机制
    • 实现 16000 帧1秒预缓冲
    • 添加最小播放阈值8000 帧)
    • 优化播放批次大小100ms
  • 服务器退出修复
    • lifespan 捕获 CancelledError
    • 添加强制退出线程
    • Ctrl+C 后正常返回 shell
  • TTS 音频传输优化
    • 8kHz → 16kHz 上采样
    • WebSocket 断开时 TTS 缓存机制
    • WebSocket 引用保护
  • TTS 播放流畅度 (服务器端修复后已流畅)

项目清理与 TTS 流畅 (Day 14)

  • 项目清理
    • 删除 HTTP TTS 相关文件 (http_tts_stream., http_client.)
    • 删除测试脚本 (build_test*.sh, debug_*.sh)
    • 删除测试源码 (test_*.cpp, main_test.cpp)
    • 删除冗余文件 (Makefile_test, build_phase*.sh)
    • 清理后仅保留核心文件
  • 恢复 WebSocket TTS
    • 移除 HTTP TTS 线程
    • 恢复 audio_capture_thread 中的 TTS 播放
    • 更新 Makefile 移除 HTTP 文件
  • 服务器端导航器预初始化
    • 识别导航器延迟初始化问题(客户端连接后才加载)
    • 在服务器启动时预初始化 BlindPathNavigator/CrossStreetNavigator/NavigationMaster
    • 客户端连接无延迟
  • 增大 TTS 预缓冲
    • PRE_BUFFER_FRAMES: 8000 → 32000 (0.5s → 2s)
    • MIN_PLAY_FRAMES: 3200 → 4800
  • 服务器端 TTS 阻塞修复
    • 识别 HTTP 20ms 节拍循环阻塞 WebSocket 发送
    • 将 HTTP 广播改为后台任务 asyncio.create_task()
    • TTS 播放已流畅!

导航性能优化与调试 (Day 15)

  • 修复导航模式严重卡顿
    • 识别根因:主线程 await 等待 CPU 密集型任务Process Frame
    • 实现非阻塞跳帧机制(后台线程处理 + 最新帧优先)
    • 验证 FPS 恢复(导航模式 0.9 FPS -> 10.0 FPS
  • YOLO 检测频率优化
    • 盲道检测间隔设为 5 帧
  • 修复模型重复加载 BUG
    • 解决 app_main 模块重载问题
  • 用户体验优化
    • 调整导航语音冷却时间 (1.0s -> 3.0s)
    • 添加详细性能诊断日志

固件重刷与自启动配置 (Day 16)

  • 修复动态链接器路径问题
    • Makefile 添加 -Wl,--dynamic-linker=/lib/ld-musl-riscv32.so.1
    • 无需手动创建 /lib32/ld.so.1 符号链接
  • 配置程序自启动
    • 使用 /etc/init.d/avaota + load_script.conf 方案
    • 发现 rc.final 会导致 SD 卡检测失败(已规避)
    • 发现 crontab @reboot 不支持BusyBox crond
    • 需要 15 秒延迟等待音频系统就绪
    • 实现 start/stop 命令支持
  • 确认 WiFi 自动连接
    • 系统自动保存配置到 /etc/wifi/wifimg.config
  • 配置公网服务器访问
    • 修改 main.cpp 服务器地址为公网 IP 8.148.25.142
    • 配置 frp 内网穿透frpc.toml
    • 测试 iPhone 热点连接成功

室外测试与语音系统优化 (Day 17)

  • 室外实地测试
    • 开发板通过 iPhone 热点连接公网服务器
    • 摄像头视频流传输正常
    • 过马路导航语音播报正常
    • 发现盲道导航无语音播报问题
  • IMU 公网传输修复
    • 识别 frpc.toml 缺少 UDP 12345 配置
    • 添加 UDP 代理配置
    • 公网服务器防火墙开放 UDP 12345
  • 盲道导航语音修复
    • 识别根因:线程池中无法运行 asyncio 协程
    • 移除 workflow_blindpath.py 内部 play_voice_text 调用
    • 统一由 app_main.py 处理语音播放
  • IMU 采样率优化
    • 从 50Hz 降低到 10Hz 减少对音频的干扰
  • 扬声器杂音分析
    • 确认为硬件层面问题(电磁干扰、接地不良)
    • 需硬件层面改进(加磁环、重新布线)

性能优化与紧急修复 (Day 18)

  • 服务器性能深度优化
    • YOLO 推理加速: 启用 FP16 半精度 + 动态分辨率 (RTX 3090 优化)
    • 模型层融合: 添加 fuse() 操作与 CUDA 预热
    • 线程池扩张: max_workers 2 -> 3
  • 音频延迟与协议优化
    • 协议统一: 客户端/服务器统一使用 20ms (320 samples) 音频包
    • 延迟降低: TTS 预缓冲从 2s 降至 0.5s
  • 网络/传输瓶颈修复
    • WebSocket 并行广播: 引入 asyncio.gather 解决多客户端卡顿
    • 户外网络适配: 相机增加 "Outdoor Mode" (8fps/Q45)
  • 紧急 Bug 修复
    • 修复 NameError (MODEL/imports) 导致的服务崩溃
    • 修复 .env 未加载导致的 GPU 禁用(解决画面假死)

传输优化与 TurboJPEG 加速 (Day 19)

  • 零拷贝直传
    • CHAT/IDLE/ITEM_SEARCH 模式直接转发原始 JPEG
    • 跳过无意义的 imdecode + imencode 循环
  • 延迟解码
    • 只在导航模式才执行 cv2.imdecode
    • 非导航场景 CPU 开销降低 90%+
  • TurboJPEG 集成
    • 替换 cv2.imencode/imdecode速度提升 2-3 倍
    • 带回退逻辑,未安装时自动使用 cv2
  • 导航结果 JPEG 缓存
    • 新结果编码一次后复用,编码次数 8→2 次/秒
  • GPU 配置修正
    • .env 配置使用 GPU 1 (CUDA_VISIBLE_DEVICES=1)

性能瓶颈深度分析与 UI 优化 (Day 20)

  • 服务器性能优化
    • 日志精简: _detect_obstacles 输出从 20 行/次减到 1 行/30帧
    • GPU 并发槽位: 从 2 增加到 4
    • TTS WebSocket 修复: 连接时立即保存引用
  • 可视化网页优化
    • IMU 浮窗缩小: 宽度 600px添加可折叠功能
    • 折叠状态优化: 完全隐藏 3D 模型和数据面板
    • Badge 动画: 连接中闪烁、已连接脉冲呼吸
    • 状态中文化: 📷 已连接 替代英文
    • 底部边界修复: 移除 .chat { height: 100vh }
    • 背景色统一: 左右两栏使用相同的 var(--card)
    • Favicon 添加: /static/favicon.png
    • 移动端适配: @media 600px/1100px 响应式布局
  • Numba 多核加速
    • 创建 numba_utils.py JIT 编译工具函数
    • mask 像素计数、统计、交集计算加速
    • 启动时 JIT 预热,避免首次调用延迟
  • TensorRT 模型加速
    • 导出 yolo-seg.engineyoloe-11l-seg.enginetrafficlight.engine (FP16)
    • 创建 model_utils.py 自动选择 .engine 文件
    • 修复 .to() / .fuse() 不兼容 TensorRT 问题
    • 修复推理尺寸不匹配 (640→480)
    • 统一使用环境变量 AIGLASS_YOLO_IMGSZ=480

AI 管道修复与音频优化 (Day 21-22)

  • GLM API 修复
    • 升级至 zai-sdk + glm-4.6v-flash
    • 修复 Error 400/1210 调用问题
  • 语音识别修复
    • SenseVoice 语言固定为 zh (解决韩语误识)
    • VAD 截断修复: 引入 300ms 环形缓冲,解决首字丢失
  • 音频系统优化
    • TTS 语速排查: 确认源文件语速,用户决定保留
    • 底噪优化:
      • 软件规避 (80%音量)
      • 彻底解决: 移除串口/USB供电改用电池消除共地干扰
  • AI 回答质量:
    • 升级模型至 glm-4.6v-flash (预期解决相关性问题)

移动端适配与部署优化 (Day 23)

  • 移动端可视化界面修复
    • .stage 容器添加 min-height: 50vh
    • fitCanvas() 使用容器实际高度
    • IMU 浮窗移到右下角,默认折叠
  • PM2 服务器部署
    • 一行命令启动配置
    • VAD 模型本地缓存优先(启动 30s→3s
  • 红绿灯检测卡顿修复
    • 实现非阻塞跳帧机制
    • 独立缓存(不干扰盲道导航)
    • 停止时清除缓存
  • Nginx 域名配置
    • naviglass.hbyrkj.top 反向代理
    • WebSocket 支持

YOLOE 室内导盲模型训练 (Day 24)

  • 训练指南完善
    • 更新 PyTorch 版本 (cu124)
    • 简化 conda 环境名
    • 统一目录结构 (val → valid)
  • Indoor Obstacle Detection 数据集
    • 选择 v11 版本 (1440+57+54 张图片)
    • 8 个类别closed_door, door, elevator, escalator, footpath, obstacle, person, wall
    • YOLOv11 原生格式,无需转换
  • 服务器训练启动
    • 配置 GPU 1 (RTX 3090)
    • RAM 缓存加速 (192GB)
    • 150 epochs 训练进行中

室内导盲分割模型完成 (Day 25)

  • 训练问题修复
    • 发现 YOLOE 不支持自定义类别训练
    • 改用标准 yolo11l-seg.pt 模型
  • MIT Indoor 数据集筛选
    • 从 2573 类别筛选出 14 个导盲相关类别
    • 创建 filter_categories.py 脚本
    • 生成 indoor_blind 数据集 (1265+363+175 张)
  • 训练完成
    • 模型参数27.6M
    • 推理速度4.8ms/张 (训练) / 23ms/张 (验证)
  • 模型验证
    • 测试集 175 张图片全部通过
    • 14 类别全部可检测
    • 无检测率仅 2.3%

室内导盲服务器集成 (Day 26)

  • 状态机扩展

    • NavigationMaster 支持 INDOOR_NAV 状态
    • 实现 start_indoor_navigation 切换逻辑
  • 模型集成

    • load_indoor_model 支持 TensorRT 引擎加载
    • app_main.py 集成室内导航器初始化
  • 交互支持

    • 支持 "室内导航" / "室内导盲" 语音唤醒
    • ASR 白名单更新
  • 流程打通

    • 预热与推理流程验证通过
  • Bug 修复与优化

    • 命令冲突修复: 修复 "停止室内导航" 误触发启动的问题
    • 检测互斥: 室内模式下禁用室外斑马线检测
    • 日志净化: 屏蔽启动时冗余警告 (TRT/YOLO/Audio)
    • EdgeTTS 磁盘缓存: 持久化 TTS 合成结果
    • 可配置日志间隔: AIGLASS_LOG_INTERVAL 环境变量
    • 项目文件清理: 释放 ~1.75GB
  • 室内导航工作流

    • 创建专用 workflow_indoor.py (IndoorNavigator)
    • 14 类别映射: floor/corridor/sidewalk + 障碍物类别
    • 可行走区域检测与方向引导
    • 障碍物避障与兴趣点提示

室内导盲模型优化 (Day 27)

  • 训练错误修复
    • 修复 Loss NaN/Inf (关闭 AMP 混合精度)
    • 创建 check_dataset_health.py 数据完整性验证脚本
  • 代码集成完善
    • 20类数据适配: 更新 workflow_indoor.py 类别映射
    • 模型路径更新: app_main.py 默认加载 yolo11l-seg-indoor.engine
    • 代码清理: 移除所有 indoor14 旧引用
  • 数据集终极优化 (22类)
    • 餐具扩展: 合并 Spoon/Fork/Chopstick 数据集,强化 tableware (ID 21)
    • 跨平台路径修复: 解决 Windows 生成 data.yaml 在 Linux 报错问题
    • 文档同步: 更新《训练指南》至 V2 (22类 + 路径注意)

室内导航优化与 Bug 修复 (Day 28)

  • 模型精准化
    • 切换至 yolo11l-seg-indoor14.engine (14类)
    • 更新 workflow_indoor.py 类别映射
    • 地面检测率提升,解决无路误报
  • 语音播报修复
    • 强制首播: 解决初始无路提示被节流的问题
    • 即时反馈: 启动命令后立即播报“正在寻找可行走区域”
    • 音频 Pop 消除: 增加静音填充至 200ms
    • 崩溃修复: 移除 undefined class 引用
  • 终端 WiFi 诊断
    • 确认断连不可恢复为 OS 层面问题
    • 建议部署 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 epochs27.6M 参数4.8ms/张推理

Milestone 22: 室内导盲服务器集成

时间: Day 26 成果:

  • 完整闭环: 从语音唤醒 -> 模型加载 -> 推理引导 -> 语音播报全流程打通

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修复)