【2023集创赛】安谋科技杯二等奖作品: 智能体感游戏机
本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)安谋科技杯二等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品等你来领!
团队介绍
参赛单位:武汉理工大学
队伍名称:抓取信号线
指导老师:李宁,徐宁
参赛队员:黎飞宇,乔新远,薄明哲
总决赛奖项:二等奖
1 设计简介
1.1 总体介绍
本项目基于Cortex-M3软核构建了一个智能体感游戏机,选用1024*600分辨率的HDMI屏幕作为游戏的显示屏,在清晰显示游戏内容的同时保证了便携性,并设计多种IP来满足游戏机的设计,包括Digital Recognition、Flex Sensor Controller、Voice Recognition、Robot Arm、Hand Shank、Dma、Hdmi、Sdram Controller、Music、Gyroscope、Ov5640等IP。
1.2 系统设计

本项目采用两级总线架构,第一级总线是AHB总线,有四个主机:Cortex-M3内核的三根总线(数据、指令、系统)和DMA IP。其中I-Code负责取址操作,D-Code负责数据访问操作,System负责所有数据的传送。
因我们使用的屏幕分辨率为1024*600,图像数据量较大,单纯使用软核传输数据会大量占用核内资源且传输较慢,导致图像卡顿。故此我们设计了DMA+外部SRAM的结构来解决图像刷新率慢的问题,外部SRAM负责存储大量的图片数据,DMA IP负责将外部SRAM的数据搬运至SDRAM前的写FIFO缓冲器中(异步FIFO完成数据的跨时钟域),再由SDRAM控制器从写FIFO中将图片数据写至SDRAM中供HDMI屏幕显示,由此完成图像数据的流动。
此结构不仅可以很好地解决图像数据传输的问题,还可以大大简化游戏机的软件开发,软件开发人员只需要在keil上修改背景数组的图像数据即可完成游戏的编写,后续工作交给DMA完成数据的流动,即只需要一次布局布线即可完成任意游戏的开发。
第二级为AHB和APB总线,其中APB总线下主要挂载供游戏使用的各种IP,包括数字识别、体感手套、语音识别、机械臂控制、手势识别、SDRAM控制器、DMA控制器、音乐控制器、无线手柄、陀螺仪、串口、LED灯等。AHB总线下我们预留了接口,方便后续对系统进行升级。
数字识别IP主要应用于儿童数字启蒙游戏,通过识别不同的数字卡片来填写给出的算式,填写正确即闯关成功。
体感手套IP用来获取人手的不同姿态,语音识别IP用来获取人的语音信号,手势识别IP来获取人的手势动作,无线手柄IP来获取手柄的按键状态,通过不同的感知方式来控制游戏的进程。

Cortex-M3软核主要的工作是各模块的状态控制以及游戏图像数据的修改,起到桥梁的关键作用。主要包括:手势识别状态的获取、数字识别信息的获取、机械臂的控制、体感手套数据的处理、语音信号的控制,LED灯的亮灭、背景音乐的启停、串口的收发、图片数据的更新、手柄状态的检测等等。
1.3 数字识别

数字识别的流程为:将OV5640摄像头得到的数据首先传入RGB转YcbCr模块,将彩色图先转换为灰度图像,获取图像的灰度等级,经过滤波模块滤除高频噪声后将数据传送至定位模块,定位数字的位置后,送入数字识别模块,通过寻找数字特征判断读取到的数据,识别速度达到了ms级。
1.4陀螺仪滤波
本次项目中,我们选用了MPU6050这一款性价比较高的六轴陀螺仪。陀螺仪的滤波以及姿态解算是设计中的一大难点,我们在查阅资料后决定采用互补滤波算法加四元数解算来求得陀螺仪的姿态角。
加速度计的静态稳定性更好,而在运动时其数据相对不可靠;陀螺仪的动态稳定性更好,但是静止时数据相对不可靠。因此,我们可以短期相信陀螺仪,长期相信加速度计,使用互补滤波算法可以很好的解决这个问题,即通过加速度计的输出来修正陀螺仪的积分累积误差。
我们在内核中采用定时中断10ms为周期进行采样。四元数即为我们要求的实际值,将实际值与加速度的理论值做叉乘即可得到误差。使用PID控制器对误差进行消除(Ki=0.04,Kp=0.17,Kd=0),便达到了互补滤波的效果,实际是用加速度计的值去补陀螺仪的动态误差,随后求解四元数方程即可得到四元数的值。
1.5 操作方式
根据所需要的设计的游戏我们加入了多种方式操作游戏,以下介绍控制游戏所需要的模块:

通过手柄进行角色移动与按键操作。

通过智能手套控制角色移动与按键操作。
2.游戏介绍
该游戏机共设计5款游戏,1款经典的炸弹人,2款双人对战游戏,1款儿童数字启蒙游戏,一款现实矿工游戏。

2.1 炸弹人游戏

玩家扮演一个机器人,通过放置炸弹来炸死敌人,但也可以炸死自己,中随机生成效果道具增加了游戏的可玩性。本次智能游戏机的设计在一定程度上还原了这款经典游戏,在原有的操作基础上,增加删改了一些设定。
2.2弹力网球

本游戏是我们独立设计的一款游戏,以简单的弹力球游戏做为起点,通过添加移动的人物与球互动,即更改球的坐标,使得此游戏获得了一定的可玩性,由于设置了双人,所以在可玩性的基础上,增添了竞技性,同时,我们为球增添了一定的重力加速度,使其模拟更加真实。我们将游戏基于玩家的回馈机制调整为得分机制,进一步增添了游戏的可玩性。
2.3混乱枪战
《混乱枪战》是我们着重设计的一款游戏,通过设置大量标志位,如跳跃标志,开枪标志等,来记录角色的各个状态,同时我们给予了各角色不同的重力加速度,模拟了真实的物理引擎。通过碰撞算法,来设置角色与个平台之间的交互。

当玩家血条为零或者掉落平台没有及时的跳跃时,其生命次数会减少,当一方玩家的生命次数为零时,游戏结束,另一方获胜。

2.4数字计算
这是我们针对儿童设计的一款数字启蒙游戏,并设计了数字识别的智能IP,玩家在有限的时间内将正确的数字放在摄像头下进行识别并填入游戏界面中。在玩游戏的过程中同时对幼儿进行启蒙教育,游戏设计玩法多样且富有现实意义。

2.5机械矿工
我们设计的第五款游戏叫做《机械矿工》,其设计灵感来自于经典的童年游戏《黄金矿工》,与之不同的是,《机械矿工》需要利用现实中的工具,将矿宝转移到合适的位置中。

到这里就完成了游戏玩法以及游戏内容的简单介绍,可以看到我们的作品游戏种类丰富并且玩法多样,其中包括了许多智能化内容,兼具了实用性与可玩性。
总结
本游戏机提供多种游戏供玩家选择,有单机游戏和多人游戏,包含经典、益智、对战、射击、运动等多个方面,内容丰富,并设置多种控制方式大大增添了游戏的乐趣,游戏玩法多样、新颖,趣味性十足且有深远意义。
集创八个月的比赛时间里,我们碰到了许多困难,遇到了许多挫折,最终我们也是都挺了过来,也做出了一款不错的作品,得到了不错的成绩。总而言之,这次比赛历程对于我们来说是一次非常丰富的成长经历啦~ ~
参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品等你来领!
相关文章:
【2023集创赛】安谋科技杯二等奖作品: 智能体感游戏机
本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)安谋科技杯二等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼…...
如何使用前端包管理器(如npm、Yarn)?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
Codeforces Round 903 (Div. 3) C(矩形旋转之后对应的坐标)
题目链接:Codeforces Round 903 (Div. 3) C 题目: 思想: 旋转之后对应的坐标: (i,j)(n1-j,i)(n1-i,n1-j)(j…...
月薪过万的Java面试
写了一个月,篇幅太长了,都写不下了,被逼无奈,只能拆分 面试题: HashMap底层实现原理,红黑树,B树,B树的结构原理,volatile关键字,CAS(比较与…...
html进阶语法
html进阶 列表、表格、表单 目标:掌握嵌套关系标签的写法,使用列表标签布局网页 01-列表 作用:布局内容排列整齐的区域。 列表分类:无序列表、有序列表、定义列表。 无序列表 作用:布局排列整齐的不需要规定顺序的…...
博客系统(java,MySQL,HTML)
项目展示: 1.输入 http://127.0.0.1:8080/blog_system/login.html 即可进入登录页面 2.输入正确的用户名和密码后进入博客列表页 要是用户名或密码输入错误,会弹出错误提示框 3.点击查看全文,可以进入博客详情页查看详细信息 4.点击写博客&a…...
Android Studio SDKGradleJDK等工具的正确使用
AS在安装使用过程中可能会占用C盘大量空间,对于C盘容量本来就小的人来说非常不友好,其实我们可以自定义安装路径 SDK默认安装位置 各种版本和NDK也会安装到这个路径 SDK版本选择性安装 通过选择图示的按钮,可以显示SDK的版本详情࿰…...
利用Python提取将Excel/PDF文件数据
使用Python来创建一个接口,用于接收Excel文件资源链接,下载文件并执行指定的操作,然后返回处理后的数据。以下是一个基本的示例,展示如何使用Flask来创建这样的接口。请注意,这是一个简化的示例,您可能需要…...
纯 CSS 实现瀑布流布局的方法
纯 CSS 实现瀑布流布局的方法 这种方式兼容性不是很好,全部支持需要些时间,但是目前是可以使用 css 写出来的 display: grid; grid-template-columns: repeat(4, 1fr); grid-gap: 10px; grid-template-rows: masonry;全部的 css .container {display:…...
输入法显示到语言栏_状态栏
设置–时间和语言–语言–最右侧"相关设置"中的"拼写、键入和键盘设置" 最下方的"高级键盘设置"–“使用桌面语言栏(如果可用)” 点击"语言栏选项" 接下来就是不同输入法的设置了 搜狗输入法:右键输入法选择"隐藏状态栏"–…...
[samba]同一个文件夹,分不同权限管理
#问题 有一个文件夹A能让用户1拥有写权限,而让用户2拥有只读权限,而用户3啥权限都没有,该如何设置samba呢? #解决办法 1.首先创建一个linux分组(group),命名为samba groupadd samba 2.创建一个samba默认…...
项目整合管理
项目整合管理概述 概述 项目的复杂性来源于组织的系统行为、人类行为以及组织或环境中的不确定性。在项目整合之前,项目经理需要考虑项目面临的内外部环境因素,检查项目的特征或属性。 作为项目的一种特征或属性,复杂性的含义: …...
基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持本地图片上传与回显的功能实现(一)
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 原先这个基于RuoYi-Flowable-Plus的这个不支持本地图片上传,只支持oss图片上传,所以…...
2023年建筑电工(建筑特殊工种)证考试题库及建筑电工(建筑特殊工种)试题解析
题库来源:安全生产模拟考试一点通公众号小程序 2023年建筑电工(建筑特殊工种)证考试题库及建筑电工(建筑特殊工种)试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人…...
Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)
Puppeteer实现上下滚动、打开新Tab、用户数据保存(三) Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)一、实现上下滚动二、打开新Tab三、用户数据保存四、效果演示 一、实现上下滚动 在自动化测试中,我们需要能…...
ArduPilot开源飞控之AP_InertialNav
ArduPilot开源飞控之AP_InertialNav 1. 源由2. 调用关系3. 重要例程3.1 read_inertia3.2 update 4. 封装接口4.1 get_filter_status4.2 get_position_neu_cm4.3 get_position_xy_cm4.4 get_position_z_up_cm4.5 get_velocity_neu_cms4.6 get_velocity_xy_cms4.7 get_speed_xy_c…...
DataX工具部署与使用(PostgreSQL to Oracle)
目录: 一、准备环境(1)安装JDK(2)检查Python版本(3)DataX 解压及测试 二、同步测试1、配置清单2、操作示例(1)同步测试环境(2)准备测试表…...
【PyTorch2 之027】在 PyTorch 中的R-CNN、Fast R-CNN和 Faster R-CNN
一、说明 亮点:对象检测是计算机视觉中最重要的任务之一。在这篇文章中,我们将概述最有影响力的对象检测算法家族之一:R-CNN、Fast R-CNN 和 Faster R-CNN。我们将重点介绍它们中的每一个的主要新颖性和改进。 最后,我们将专注于 …...
C++学习——C++函数的编译、成员函数的调用、this指针详解
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 从博文的分析中可以看出,对象的内存中只保留了成员变量,除此之外没有任何其他信息,程序运行时不知道 stu 的类型为 Student,也不知道它…...
Pulsar Manager和dashboard部署和启用认证
Pulsar Manager部署和启用认证 官方地址: https://pulsar.apache.org/docs/zh-CN/next/administration-pulsar-manager/ Pulsar Manager 是一个网页式可视化管理与监测工具,支持多环境下的动态配置。可用于管理和监测租户、命名空间、topic、订阅、broker、集群等…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
二维数组 行列混淆区分 js
二维数组定义 行 row:是“横着的一整行” 列 column:是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...
