木鸡SteadyGame——项目系统设计与数据库设计
| 这个作业属于哪个课程 | 202601福大 软件工程实践W班 |
|---|---|
| 这个作业要求在哪里 | 团队作业 概要设计和数据库设计 |
| 这个作业的目标 | 将需求转化为可实现的架构、模块、类、交互、接口与数据库设计;回应评审意见;明确权限、验收和逐周开发计划 |
| 团队名称 | 木鸡SteadyGame |
| 项目名称 | 基于计算机视觉的Web体感运动交互平台 |
| 其他参考文献 | GB/T 8567-2006;OMG UML 2.5.1;MediaPipe、MDN、OWASP和MySQL官方文档 |
仓库与交付材料
| 材料 | 链接 |
|---|---|
| 华为云团队仓库 | SteadyGame团队仓库 |
| 系统设计说明书(PDF) | 木鸡SteadyGame_系统设计说明书.pdf |
| 数据库设计说明书(PDF) | 木鸡SteadyGame_数据库设计说明书.pdf |
| 系统设计与数据库设计答辩PPT(新版PDF) | 木鸡SteadyGame_系统设计与数据库答辩PPT.pdf |
| 上一次博客 | 团队第二次作业 原型设计与需求分析 |
一 本次设计解决什么问题
SteadyGame把普通摄像头作为体感输入,在浏览器本机完成姿态识别,让玩家通过身体倾斜控制小球、通过腕部轨迹切西瓜,并体验八段锦两式跟练。三种玩法复用同一姿态输入模块,区别在于世界对象、交互规则和结果形式。
上一轮主要回答用户需要什么、页面如何操作。本轮进一步回答:物品保存什么位置,关节如何转换到舞台,什么情况算命中,谁更新分数,暂停和重试如何处理,哪些数据能够保存。
老师提出了两个直接问题:是否需要Game类表示不同游戏;应补充不同游戏的时序图,讲清物品位置、人体关节与移动物品相交,再判断得分。我们据此形成统一Game抽象、三种独立玩法时序、运动目标相交算法及结算事务设计。
本次接口设计覆盖账号、玩法目录、训练轮次、摄像头处理同意、三种玩法结算、个人历史与统计、报告、导出和排行榜,共22个HTTP操作。字段级请求响应契约见配套接口文档。视频帧和逐帧关节点仅在浏览器本机处理,不上传至业务服务。
术语约定:UML为统一建模语言,API为应用程序接口,LLM为大语言模型,CSRF为跨站请求伪造,UUID为通用唯一标识符,P95为观测值的第95百分位。后文时长均为毫秒,业务日期使用UTC。
二 系统架构与功能模块
2.1 总体架构

浏览器负责Vue页面、摄像头生命周期、MediaPipe姿态推理、动作映射、Game运行和Canvas绘制。Spring Boot业务服务负责身份、轮次配置、结果校验、明确保存、个人历史与导出。MySQL保存业务摘要;导出文件放私有目录,通过鉴权接口下载。
采用同源HTTPS入口和模块化单体,适应当前八人团队与课程项目规模。推理和绘制分频运行,模型忙时只处理最新帧,禁止积压旧视频。模型适配层把MediaPipe内部输出转成17个命名关节,游戏不依赖模型内部下标。
姿态识别和碰撞判定在浏览器本机完成,减少视频传输与服务端推理开销;服务端校验客户端结果摘要中的字段、计分公式和轮次归属。
2.2 功能模块层次

| 层次 | 模块 | 主要输出 |
|---|---|---|
| 交互与流程 | 模式入口、告知、校准、暂停、结果和历史 | 用户命令与状态展示 |
| 共享输入 | CameraAdapter、PoseProvider、MotionMapper | 带时间戳与有效标记的MotionInput |
| 玩法核心 | BalanceBallGame、WatermelonSliceGame、BaduanjinGame | 游戏快照、碰撞事件或阶段进度 |
| 业务数据 | 身份、轮次、结算、保存、统计、报告、导出 | 归属明确的业务记录 |
| 运行保障 | 权限、异常、日志、清理、备份、测试 | 可恢复流程与可追踪问题 |
Camera只管理视频流,Pose只识别关键点,Motion只生成控制信号。Game根据规则更新世界,Renderer只绘制,ResultGateway只负责提交与重试。职责边界清楚后,各成员可用固定样例先开发,再接入真实识别。
三 类设计与 Game 问题回应
3.1 三个不同的概念
| 概念 | 表示什么 | 例子 |
|---|---|---|
| GameDefinition | 一种玩法的目录与规则 | 切西瓜60秒、每水果10分 |
| GameSession | 某个用户或访客的一次轮次 | UUID标识的某一局 |
| Game | 正在浏览器运行的行为对象 | 当前WatermelonSliceGame实例 |
Game统一三种玩法的运行生命周期。 Game提供initialize、update、pause、resume、snapshot、finish、dispose;各玩法实现维护自身物体与规则。GameCoordinator负责流程与唯一结算,GameFactory负责创建对象。

小球游戏拥有Ball、五个Target和若干Obstacle;切西瓜维护Fruit和左右腕轨迹;八段锦持有StageMachine。CollisionDetector只判断几何相交,ScorePolicy按已确认的计数算分,HTTP提交交给ResultGateway。新增第四玩法实现Game并注册工厂即可,摄像头和姿态模块保持公共契约。


GameSession与GameResult最多一对一,数据库用结果表的session_id主键实现唯一结算。八段锦score固定为null,动作完成情况由阶段摘要表示。
四 物品位置 相交算法与三种游戏时序
4.1 先统一坐标和时间
原始关节坐标对应未镜像视频,x与y取值0至1,left和right按人体解剖学命名。舞台使用等比缩放和留白,视频、腕点叠加、游戏对象共用同一坐标变换,镜像只做一次。碰撞使用CSS逻辑像素,不在宽高分别归一化后直接套圆形距离公式。
移动物品保存id、previous、position、velocity、radius、spawnAtMs和state。每次碰撞都对齐同一时间区间;生成或销毁的物品只参与其存活区间。暂停冻结活动时钟和物品,清空腕轨迹,恢复首帧只建立起点。
设计初值为所需关节置信度至少0.6、快照不旧于250ms、连续腕点间隔不超过200ms;设备验收时按实际识别表现校准。
4.2 平衡小球时序

肩髋相对偏移减去自然站姿基线,再经死区、滤波与限幅形成leanX。Game据此移动小球,保存小球与目标的前后位置,对两圆相对运动做相交检测。人体关节在这里用于控制小球,实际接触对象是Ball和Target。
本局60秒、5个目标,每目标10分;小球到达终点线额外加50分,最高100分。目标先从active改consumed,再targetsHit加一并更新分数。障碍接触只记collisions,不扣分;持续重叠不逐帧累加。正常计时结束为completed,提前退出为aborted。
4.3 切西瓜时序

腕轨迹为A到B,同一区间水果圆心为C0到C1。令R0=A-C0、R1=B-C1、d=R1-R0;投影参数u=clamp(-(R0点积d)/(d点积d),0,1)。若d长度近零,取u=0。当length(R0+u*d)不大于水果半径加刀刃半径时,才判为相交。
该算法同时处理腕点快速穿过和水果自身移动。水果曲线轨迹按物理步分段处理,不能把最终圆心套到过去整段腕轨迹。一次挥手可切多个真实相交的不同水果,每个水果都要独立检测。

数值例:腕点从(200,300)到(400,300),水果从(300,280)到(300,320),水果半径35、刀刃半径8,相对最短距离为0,因此命中。命中立即把该水果设为consumed,再cutCount加一。若之前切中1个,现在切中2个,分数从10变20;远处未相交的水果保持active。
本局60秒,score=10*cutCount。双手同帧命中同一id只计一次,旧轨迹重放不重复加分;漏切无得分,maxCombo只展示。没有隐藏连击倍率。
4.4 八段锦两式时序

两手托天理三焦(tuotian)和调理脾胃须单举(danju)各有ready、raise、hold、recover四阶段。使用腕肩高度、肘角和左右关系判断,必须按顺序且连续满足本阶段条件;低置信、多人、过期时暂停并清空当前候选保持时间,已完成阶段不重复累计。
两式共8阶段完成时outcome=completed,提前退出或达到15分钟安全上限但未完成时为aborted。上传两式汇总和受限action_attempt摘要,score固定null。阶段摘要记录软件规则观察到的条件,用于流程反馈,不用于专业动作质量或健康评价。
五 接口设计与数据库设计
5.1 接口设计与模块契约
| 接口分组 | 数量 | 内容 |
|---|---|---|
| 账号 | 5 | CSRF、注册、登录、当前用户、退出 |
| 游戏目录 | 1 | 玩法、规则版本、可玩状态与所需关节 |
| 轮次和授权 | 5 | 创建、查询、同意、开始、明确保存 |
| 三种结果 | 3 | 小球、切西瓜、八段锦分别结算 |
| 历史统计报告 | 3 | 本人记录、按玩法统计、游戏观察报告 |
| 导出 | 3 | 创建任务、查询状态、鉴权下载 |
| 排行榜 | 2 | 匿名查询和本人主动公开选择/撤回 |
| 合计 | 22 | 本次接口设计完整操作数;无视频或关键点上传接口 |
所有写请求带X-CSRF-Token,登录态使用SGSESSION,匿名态使用SGGUEST。JSON响应统一code、message、data,请求追踪号放X-Request-Id响应头。登录轮换账号会话和CSRF,保留同浏览器的SGGUEST以支持用户稍后选择保存。
创建轮次由客户端生成sessionId并和mode提交,该ID同时作为训练会话主键和幂等依据;配置由后端返回并冻结。三种玩法共用创建、同意、开始和查询,只在结果提交时区分路径。暂停恢复和姿态识别属于本机模块。
下面把“模块接口”和“HTTP接口”分开列出:前者说明模块间调用的方法、数据和职责;后者说明浏览器访问服务端的路径。浏览器内部方法是模块间调用契约;HTTP字段、状态码和响应头以配套OpenAPI为准。
浏览器端模块接口
| 提供方/调用方 | 接口 | 输入 → 输出 | 边界与失败处理 |
|---|---|---|---|
| 页面 ↔ GameCoordinator | start(mode, config)、pause(reason)、resume()、finish(outcome)、exit();subscribeState(listener);协调器接收onTrackingLost(status) | 用户命令、轮次配置和追踪状态 → 页面状态、提示与唯一结算结果 | 页面负责展示和发出命令,不推进游戏时间、不计算碰撞或计分;追踪丢失由协调器暂停当前玩法 |
| CameraAdapter | acquire(): Promise<MediaStream>、release(): void | 用户授权 → 本机媒体流或摄像头错误 | 仅管理摄像头;拒绝授权、设备缺失等转成可显示错误;释放时停止全部MediaStreamTrack |
| PoseProvider | start(video)、stop()、subscribe(listener): Unsubscribe | video元素 → PoseSnapshot(关节、置信度、时间戳、状态) | 只识别和发布姿态;低置信、未检测到人、多人作为输入状态,不触碰玩法规则 |
| MotionMapper | map(pose): MotionInput、clearHistory()、subscribeQuality(listener) | 姿态快照和校准基线 → 标准化倾斜量、腕点、时间戳及有效状态 | 不改游戏物体、阶段或分数;无效输入通知协调器暂停并清空轨迹历史 |
| GameFactory 与 Game | create(mode): Game;initialize(config)、update(input, dtMs)、pause(reason)、resume()、snapshot()、finish(outcome)、dispose() | 玩法配置、MotionInput、时间步长 → RenderSnapshot与冻结的GameResult | 三种Game各自执行玩法规则;八段锦分数固定为null;结束只生成一次结果 |
| 玩法领域服务 | sweptCircle(...)、summarize(metrics)、accept(features, dtMs) | 同时间区间的物体轨迹、计数或动作特征 → 相交事实、分数或阶段事件 | 碰撞检测只返回几何事实;Game确认目标仍有效后再消费和计分 |
| CanvasRenderer | render(snapshot)、dispose() | 只读RenderSnapshot → Canvas画面 | 只绘制,不推进时间、不修改游戏状态;释放绘图资源 |
| ResultGateway | submit(sessionId, result)、save(sessionId, consent: true) | 轮次ID、冻结摘要和当前身份 → 提交/保存回执或结构化错误 | 不上传视频、关节或腕部轨迹;失败重试复用原sessionId和同一结果,不本地改分 |
服务端模块接口
| 提供方/调用方 | 接口 | 输入 → 输出 | 职责与边界 |
|---|---|---|---|
| API控制器 → SessionService | create(owner, request)、get(owner, id)、start(owner, id)、finish(owner, id, result)、save(account, guest, id) | 已认证身份上下文与请求 → 轮次或唯一结算摘要 | 控制器校验Cookie身份、CSRF和请求格式;服务层必须按owner限定读写,冲突返回409、非本人资源按接口规则处理 |
| SessionService → ResultValidator | validate(session, result)(校验归属、规则和分数)、validateAttempts(config, attempts) | 服务端轮次配置、客户端结果摘要 → 通过或领域校验错误 | 校验玩法、配置、公式、时长、计数和八段锦阶段汇总;姿态识别和碰撞判定由浏览器完成 |
| API控制器 → LeaderboardService | list(mode, levelCode, rulesVersion, page)、setOptIn(userId, sessionId, enabled) | 查询条件或本人公开选择 → 匿名榜单页或完成回执 | 榜单只派生自已保存且主动公开的成绩;撤回后排除 |
| API控制器 / ExportWorker → ExportService | create(owner, request)、get(owner, exportId)、openFile(owner, exportId);claimNext()、generate(task)、complete(...)、fail(...) | 本人导出范围、任务 → 任务状态或私有文件流 | worker异步处理;文件不放公开目录;下载再次鉴权,不接受客户端磁盘路径 |
| 领域服务 → Repository | findSessionByOwner(owner, id)、saveResult(sessionId, result, attempts)、querySavedRecords(owner, filter) | 已校验领域对象和owner条件 → 轮次、写入结果或分页记录 | 本人查询必须带归属条件;结算与尝试记录按事务写入;表和字段以数据库设计材料为准 |
对外HTTP接口目录(统一前缀 /api)
| 分组 | 方法与路径 | 用途 |
|---|---|---|
| 账号 | GET /auth/csrf、POST /auth/register、POST /auth/login、GET /auth/me、POST /auth/logout | CSRF、注册、登录、当前身份、退出 |
| 玩法目录 | GET /games | 获取可用玩法、配置和规则版本 |
| 训练轮次 | POST /sessions、GET /sessions/{sessionId}、POST /sessions/{sessionId}/start | 创建、查询和开始一轮训练 |
| 摄像头同意与保存 | PUT /sessions/{sessionId}/consents/camera、POST /sessions/{sessionId}/save | 记录处理同意;用户明确选择后保存到个人历史 |
| 玩法结算 | PUT /games/balance_ball/sessions/{sessionId}/result、PUT /games/watermelon_slice/sessions/{sessionId}/result、PUT /games/baduanjin/sessions/{sessionId}/result | 分别提交小球、切西瓜和八段锦结果摘要 |
| 历史与报告 | GET /records、GET /stats/summary、GET /reports/summary | 查询本人历史、统计和报告 |
| 导出 | POST /exports、GET /exports/{exportId}、GET /exports/{exportId}/file | 创建任务、查询状态、鉴权下载文件 |
| 排行榜 | GET /leaderboards、PUT /records/{sessionId}/ranking-consent | 查询匿名榜单、设置本人公开或撤回选择 |
配套接口文档中的逐项说明包含每个操作的请求体、响应体、状态码和示例;机器可读版本为OpenAPI JSON。模块职责和调用关系与系统设计说明书“体系结构模块接口”一节及答辩PPT第3页的模块接口页对应;博客中的目录用于展示模块边界和调用入口,具体字段级契约应与OpenAPI及逐项说明一起核对。

结果以session为幂等边界:相同结果重试返回原结果,不同内容返回409。后端校验路径、请求和轮次mode一致,trackingDurationMs不超过activeDurationMs,活动时长不超过本轮配置,小球score=targetsHit10+(reachedEnd?50:0),最高100分;切西瓜score=10cutCount,并按60秒配置中的spawnIntervalMs与activeDurationMs校验动态水果数上界;八段锦score=null,阶段尝试与汇总一致。
5.2 ER分析与表结构

| 表 | 主键与关键约束 | 设计目的 |
|---|---|---|
| app_user | id;username大小写不敏感唯一 | 中文账号和密码哈希 |
| guest | id;token_hash唯一 | 匿名身份及CSRF摘要 |
| auth_session | id;token_hash唯一 | 账号会话和CSRF |
| game | code | 玩法目录与规则版本 |
| training_session | id=sessionId;user_id/guest_id二选一 | 一次训练、关卡和配置快照 |
| training_result | session_id主键兼外键;ranking_opted_in默认false | 成绩、详情和主动公开选择 |
| action_rule | action_code加rule_version唯一 | 八段锦阶段顺序、保持阈值和置信度 |
| action_attempt | id;session_id和action_rule_id外键 | 八段锦单次阶段尝试摘要 |
| session_consent | session_id、kind、revision唯一 | 摄像头和保存同意记录 |
| export_record | user_id、idempotency_key唯一 | 本人导出任务 |
| expired_resource | id | 短期过期墓碑 |
用户与轮次一对多,轮次与结果一对零或一;当前轮次归属为账号或访客二选一。保存不是复制一份成绩,而是在事务中绑定账号并设置saved_to_history。game玩法目录变化不修改已创建轮次冻结的config_snapshot和rules_version。
公共查询字段使用关系列,玩法差异汇总放经过严格验证的JSON。历史索引为user_id、saved_to_history、finished_at、id,保证本人筛选与稳定倒序。时间范围左闭右开且不超过366天,pageSize不超过100。
结算事务先锁轮次,再校验、插入唯一结果、更新轮次终态;保存事务再次验证原归属和明确同意。跨表的score公式和JSON阶段规则由服务层验证,MySQL CHECK只承担本行可表达的约束。
created/active轮次从创建时起24小时清理,未保存结果从结算时起24小时清理;SGGUEST滑动闲置24小时且不早于其未保存轮次的expiresAt。已保存历史不自动过期。导出文件从成功生成后起算10分钟,排队不提前过期。数据库表名、字段和关系以配套数据库设计说明书、ER图和DDL为准;三份材料均列出上表11张表,主要实体关系与DDL外键能对上,字段类型、默认值、索引和CHECK约束以DDL为准。数据库设计说明书第4.2.8节和附录A将action_attempt是否落库列为待决事项,而ER图和DDL已包含该表;本博客的数据表描述遵循ER图与DDL。接口提交的attempts数组保持阶段顺序,服务端先按规则快照校验顺序,再在结算事务中按数组顺序写入action_attempt;created_at用于记录时间,不承担同一毫秒内的排序。公开榜按训练结果和轮次派生,不另建表。
六 安全 权限与健壮性
6.1 权限设计
| 操作 | 游客 | 登录用户 |
|---|---|---|
| 浏览和试玩 | 允许 | 允许 |
| 查询和提交本轮结果 | 只允许原访客上下文 | 只允许本人或符合原访客归属 |
| 保存个人历史 | 先登录并明确同意 | 本人且明确同意 |
| 历史、统计、报告、导出 | 禁止 | 只读本人已保存记录 |
| 查看公开排行榜 | 允许匿名查看 | 允许匿名查看 |
| 参加或撤回排行榜 | 禁止 | 仅本人已保存且完成的小球/切水果记录,默认关闭 |
| 读取他人资源 | 禁止 | 禁止 |
后端从Cookie身份上下文确定userId;替换sessionId或exportId仍需通过拥有者校验,非本人统一返回404。UUID用于资源标识,资源访问仍按拥有者校验。
6.2 具体安全措施
密码使用自适应哈希库,账号Cookie配置HttpOnly、Secure、SameSite,登录成功轮换会话。全部写操作验证CSRF,数据库使用参数化查询。昵称按文本转义,禁止把用户输入直接放入v-html;导出CSV文本单元格防公式注入。
导出文件放在非公开目录,下载时再次鉴权并检查有效期,客户端不能提供服务器文件路径。日志只保留必要追踪信息,不写Cookie、密码、视频和逐帧姿态。摄像头用途告知、浏览器权限和成绩保存同意分别处理。
6.3 异常与恢复

授权拒绝、模型失败、低置信、多人和数据过期都必须有具体提示。无效输入冻结时间与世界,恢复重新建立基线,不补算暂停时间。退出、撤回或结束时停止所有MediaStreamTrack,取消游戏与推理循环。
网络异常保留不可变的结算摘要,原session原结果重试;不能把提交失败显示为已保存。数据库失败整体回滚,导出任务使用租约恢复,私有文件生成成功后才发布下载入口。
七 需求改进及过程
| 评审问题 | 本次改进 | 验证方式 |
|---|---|---|
| 需要Game类吗 | 分清定义、轮次、运行实例;统一生命周期和三种实现 | 类图4、5及方法契约 |
| 不同游戏如何交互 | 三玩法分别列出输入、对象、算法、结果调用 | 时序图7、8、9 |
| 物品位置如何描述 | 保存前后位置、半径和时间,统一舞台坐标 | 对象图6和坐标数值例 |
| 相交后如何计分 | 逐物体几何检测、立即消费、集合去重、再按10分公式更新 | 几何参考程序及22项用例 |
| 接口与数据约束对应 | 统一三种mode、八段锦null分数和本机PoseProvider | OpenAPI与数据库设计说明书、ER图、DDL字段映射核查 |
| 八段锦尝试落库口径 | Word将action_attempt是否落库列为待决,ER和DDL已含该表 | 按ER与DDL持久化;服务端按数组顺序校验并写入,created_at不作为同毫秒排序字段 |
改进过程为:核对老师意见和本次作业要求,以配套数据库设计材料、系统设计说明书和本次接口契约为共同依据,确定模块职责与字段映射,补充对象、状态和时序设计,建立边界样例,再对系统设计、接口文档与博客交叉核对。
八 三个LLM设计协作示例
本节用三张对话截图展示三个LLM设计协作示例,每张图对应一个示例。截图记录了提问与回答;相关设计结论均结合本项目材料核对。
示例一 模块调用链与依赖方向

示例二 结果字段边界与重复提交处理

示例三 动作规则版本与尝试记录约束

九 本次工作流程与团队绩效
本次工作按需求核对、系统设计、数据库映射和材料整合推进。
下表是团队确认的本次作业实际分工与贡献度比例,合计100%,用于小组成绩向个人成绩映射。
| 学号 | 工作内容 | 贡献度 |
|---|---|---|
| 102400420 林晨 | 总体架构、Game 抽象、状态机、文档集成与评分项核查 | 14% |
| 102400409 郑雯心 | 摄像头生命周期、异常泳道、资源释放与设备验收设计 | 13% |
| 102400408 王婉怡 | 姿态契约、坐标映射、校准门控与输入类图 | 12% |
| 102400422 林宇扬 | 平衡小球对象、碰撞计分、独立时序与边界用例 | 12% |
| 102400421 林凯 | 腕轨迹相交、运动水果、去重计分与对象快照 | 12% |
| 102400407 孙田田 | 八段锦两式状态机、完成条件、动作示例与验收 | 12% |
| 102400419 李想 | 页面流程、反馈可访问性、图文与答辩材料整理 | 12% |
| 102400405 刘婷婷 | 既有接口核对、ER 与表结构、事务权限、数据库说明书 | 13% |
| 合计 | 八人实际分工 | 100% |
协作以华为云团队仓库为统一基线,按模块分支开发,合并前由对应交叉评审人检查。接口字段变更同步更新契约与消费者清单,图文从统一图源重新生成。
十 逐周开发计划与每人开发责任
10.1 逐周计划
以下为2026年预期开发计划,按周列出里程碑与交付物;11月中下旬安排两周项目冲刺,覆盖作业要求指定的冲刺阶段。
| 日期 | 里程碑 | 工作内容与交付 |
|---|---|---|
| 10月19日至25日 | M0 设计冻结 | 完成系统设计、数据库设计、UML图源和接口基线;完成10月23日答辩。 |
| 10月26日至11月1日 | M1 公共输入与Game骨架 | 接通Camera、Pose、Motion和Game接口;用模拟输入验证授权异常、丢点处理与资源释放。 |
| 11月2日至8日 | M2 小球P0闭环 | 完成固定关卡、碰撞、计分和重试;验证5个目标各只消费一次并正常结算。 |
| 11月9日至15日 | M3 多玩法集成 | 接入切西瓜、八段锦、账号与历史;完成三种玩法的联调演示。 |
| 11月16日至22日 | 项目冲刺一:集成回归 | 集中修复暂停、越权和并发问题;完成手机实测、回归记录与阻断问题清理。 |
| 11月23日至29日 | 项目冲刺二:发布交付 | 完成HTTPS部署、性能记录、备份恢复和全量回归;交付演示版本、用户说明与复盘,核对仓库和文档。 |
10.2 每人开发责任
| 成员与学号 | 角色 | 详细开发内容 | 交付和交叉评审 |
|---|---|---|---|
| 林晨 102400420 | 架构与流程 | GameCoordinator、GameFactory、前后端状态衔接、唯一结算 | 状态模块与集成;刘婷婷评审事务边界 |
| 郑雯心 102400409 | 摄像头与适配 | 授权、设备异常、媒体释放、页面隐藏与手机适配 | CameraAdapter与设备矩阵;王婉怡评审 |
| 王婉怡 102400408 | 姿态与动作输入 | 17点映射、校准、滤波、有效性、镜像变换 | PoseProvider和MotionMapper;郑雯心评审 |
| 林宇扬 102400422 | 平衡小球 | 关卡、Ball/Target/Obstacle、碰撞和计分 | BalanceBallGame与边界用例;林凯评审 |
| 林凯 102400421 | 体感切西瓜 | 腕轨迹、运动水果、逐物品相交、去重和反馈 | WatermelonSliceGame与几何用例;林宇扬评审 |
| 孙田田 102400407 | 八段锦跟练 | 两式四阶段、特征阈值、保持与顺序、汇总 | BaduanjinGame与真人样本记录;王婉怡评审 |
| 李想 102400419 | 页面与多媒体 | 游戏目录、准备、结果、历史、语音与可访问性 | Vue页面和交互测试;郑雯心评审 |
| 刘婷婷 102400405 | 业务与数据库 | 账号、CSRF、轮次、结果事务、保存、历史及导出 | API、迁移和越权测试;林晨评审 |
十一 验证结果与验收计划
本次完成资料核对、目标设计、图源和PNG生成,并运行22项参考程序用例。OpenAPI、逐项说明和Postman集合的22个接口操作已交叉核对;请求体可解析为JSON,Postman脚本通过语法检查。用例覆盖相对运动、擦边、零长度、镜像、双手去重、暂停断轨及计分等边界。
验收计划覆盖真实浏览器中的摄像头权限与隐私流程、独立MySQL中的迁移和并发结算与归属测试,以及桌面和手机设备的性能记录;识别置信度、时序窗口和性能目标在设备验收时校准。
十二 参考资料
相关推荐
无人机手势控制数据集46176张VOC+YOLO格式.zip
数据集格式:VOC格式+YOLO格式 压缩包内含:3个文件夹,分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计:46176 Annotations文件夹中xml文件总计:46176 labels文件夹中txt文件总计:46176 标签种类数:8 标签名称:["follow","follow_hand","land","land_hand","null","object","takeoff","takeoff-hand"] 每个标签的框数(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准): follow 框数 = 22056 follow_hand 框数 = 4038 land 框数 = 7609 land_hand 框数 = 3300 null 框数 = 2642 object 框数 = 2 takeoff 框数 = 3494 takeoff-hand 框数 = 3645 总框数:46786 图片清晰度(分辨率:像素):清晰 图片是否增强:否 标签形状:矩形框,用于目标检测识别 重要说明:暂无 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注
三相光伏发电系统中MPPT和并网控制策略的研究(Simulink仿真实现)
内容概要:本文系统研究了三相光伏发电系统中的最大功率点跟踪(MPPT)与并网控制策略,深入分析光伏阵列在不同光照和温度条件下的输出特性,设计并实现了基于Simulink的完整仿真模型。该模型涵盖光伏阵列、DC-DC变换器、MPPT控制器、逆变器及锁相环等关键模块,重点验证了系统在动态环境变化下实现高效能量转换的能力,并确保并网电流符合电能质量标准。研究对比了多种MPPT算法的动态响应与稳定性表现,优化了并网控制策略以提升整体系统性能,为光伏系统的设计与控制提供了理论依据与仿真支持。; 适合人群:具备电力电子、自动控制或新能源发电基础知识的高校研究生、科研人员及从事光伏系统设计与仿真的工程技术人员。; 使用场景及目标:①用于教学与科研中深入理解光伏发电系统的MPPT原理与并网控制机制;②指导实际工程项目中光伏逆变器控制策略的设计与仿真验证;③为撰写相关学术论文或完成课程设计提供可复现的Simulink模型与理论支持。; 阅读建议:建议读者结合文中提供的Simulink仿真文件,逐步搭建系统模型,调试MPPT与并网控制参数,观察关键波形如光伏电压、电流、功率及并网电流的变化,加深对控制逻辑的理解。同时可尝试改进算法以进一步提升系统动态响应与鲁棒性。
无人驾驶网约车服务:全球市场规模、竞争格局与未来发展趋势.docx
无人驾驶网约车服务:全球市场规模、竞争格局与未来发展趋势
开绕组永磁同步电机模型FOC矢量控制SVPWM仿真Simulink模型
内容概要:本文系统解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,聚焦于优先级规划算法的工程实现。该框架采用四层架构设计(几何、拓扑、调度与呈现),实现了从地图解析、Petri网建模、基于动态边权膨胀的路径规划,到时间同步冲突消解及动画可视化的全流程。核心创新包括动态边权膨胀机制、节点预留历史查表优化、几何惩罚驱动的局部同步策略以及Petri网双阶段优化方法,有效提升了大规模场景下的求解效率与可行性。文章详细阐述了各模块之间的接口契约与不变量,对比分析了三种时间同步策略的适用场景,并强调了信息前移、模块解耦与可维护性设计的重要性,为MAPF的研究与教学提供了可复现、可批判的参考文本。; 适合人群:具备一定MATLAB编程基础,从事机器人路径规划、智能调度、自动化控制等相关领域的科研人员与研究生。; 使用场景及目标:① 学习并复现多机器人路径规划中的优先级规划算法及其工程实现细节;② 深入理解动态边权膨胀、节点预留历史、局部同步等核心机制的设计原理与性能优化策略;③ 掌握Petri网建模与整数规划在路径调度中的应用,以及多智能体系统冲突消解与可视化的方法。; 阅读建议:此资源以工程化框架形式呈现,不仅关注算法逻辑,更重视模块化设计与系统集成。建议读者按照数据流顺序逐步学习,结合代码调试理解各层交互,并尝试替换不同同步策略以评估其对效率与解质量的影响,从而深入掌握大规模MAPF问题的求解范式。
高校技术转移办公室人员如何高效完成科技成果评价与推介?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。


