## 一、本轮迭代目标 本 Sprint 主要目标是完成 **基于浏览器端的手势控制系统雏形**,实现如下基础功能: - 搭建前端 Web 应用结构与 UI 页面 - 集成 MediaPipe 手势识别模型,完成实时手势检测 - 映射部分手势为系统控制行为(鼠标移动、点击等) - 搭建基础手势处理逻辑与组件封装结构 - 支持语音识别指令发送流程(准备后端对接) ------ ## 二、本轮主要完成内容 | 类别 | 工作内容 | | -------- | ------------------------------------------------------------ | | 前端搭建 | 基于 Vite + Vue 3 + TypeScript 完成项目结构、模块划分、页面初始化 | | 手势识别 | 集成 Google MediaPipe WASM 模型,完成实时检测与渲染 | | 控制逻辑 | 封装 `GestureHandler`、`TriggerAction`,实现手势到系统操作的映射 | | UI设计 | 完成仪表盘式主界面设计,支持响应式、自定义手势预览等 | | 模型结构 | 初步梳理 `Detector` 识别流程,统一封装初始化与推理逻辑 | | 后端准备 | 初始化 Python 接口 WebSocket 构建,支持语音识别交互 | ------ ## 三、系统结构设计 ``` [用户摄像头] ↓ [VideoDetector.vue] → 捕捉视频帧,传入检测器 ↓ [Detector.ts] → 调用 MediaPipe 识别手势 ↓ [GestureHandler.ts] → 映射行为(鼠标/键盘/语音) ↓ [TriggerAction.ts] → 向后端/系统发出控制指令 ↓ [Python 后端](语音识别/扩展指令) ← WebSocket 接入 ``` ------ ## 四、核心技术栈与理由 | 技术 | 用途 | 原因 | | ---------------- | -------------------- | ------------------------------------------ | | Vue 3 + Vite | 前端框架 + 构建工具 | 快速开发,热更新快,Composition API 更灵活 | | TypeScript | 增强类型约束 | 减少运行时错误,提升可维护性 | | MediaPipe Tasks | 手势识别模型 | 体积小,支持浏览器部署,准确率高 | | WebSocket | 前后端实时通信 | 保持实时交互流畅 | | Python + FastAPI | 后端扩展接口(语音) | 快速搭建接口,后续支持 Py 模型运行 | ------ ## 五、主要功能点与说明 ### 1. Detector 类封装 - 初始化 WASM 模型与识别器 - 封装 `detect()` 每帧调用逻辑 - 支持获取 `landmarks`, `gestures`, `handedness` ### 2. 手势识别与映射 - 仅识别食指 → 鼠标移动 - 食指 + 中指 → 鼠标点击 - 食指 + 拇指捏合 → 滚动 - 四指竖起 → 发送快捷键 - 小指+拇指 → 启动语音识别(前端 WebSocket) ### 3. UI 界面模块 - 实时视频预览窗口 - 子窗口:手势反馈 / 执行动作提示 - 配置面板:开关检测 / 配置行为映射 ------ ## 六、识别代码示例(关键手势) ```ts if (gesture === HandGesture.ONLY_INDEX_UP) { this.triggerAction.moveMouse(x, y) } if (gesture === HandGesture.INDEX_AND_THUMB_UP) { this.triggerAction.scrollUp() } ``` - 每种手势匹配后,调用封装的 WebSocket + 系统接口发送动作 - `TriggerAction` 支持复用 ------ ## 七、问题与解决方案 | 问题描述 | 解决方法 | | --------------------------------- | ---------------------------------------------------- | | WebSocket 连接后反复断开 | 增加连接状态判断 `readyState !== OPEN`,避免提前发送 | | Tauri 插件调用 `invoke undefined` | 使用 `npm run tauri dev` 启动,而非普通浏览器启动 | | 页面刷新后路由丢失(404) | Vue Router 改为 `createWebHashHistory()` 模式 | | 模型未加载或报错提示 | 增加 loading 控制,捕捉初始化异常 | ------ ## 八、未来规划(Sprint 2 预告) | 方向 | 说明 | | ----------------- | --------------------------------------------------- | | 多手势拓展 | 三指滚动、多指触发多功能、多手联合判断 | | 自定义 .task 模型 | 支持用户采集数据,自定义模型替换现有 MediaPipe 模型 | | 后端语音指令集成 | Vosk 模型识别语音,触发系统控制 | | 设置项管理 | 实现用户自定义快捷键、手势配置界面 |