【2023集创赛】安谋科技杯二等奖作品: 智能体感游戏机

news2024/11/17 10:57:22

本文为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集创赛作品扩大影响力,更有丰富电子礼品等你来领!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1082593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KUKA机器人如何强制输出或取消数字IO信号?

KUKA机器人如何强制输出或取消数字IO信号? 具体的操作方法和步骤可参考以下内容: 如下图所示,点击菜单—显示—输入/输出端,如下图所示,选择想要查看的信号,这里以数字输出端为例进行说明, 如下图所示,此时可以看到输出端信号的编号、名称和当前值,可以通过下拉滚动条…

UE4和C++ 开发-编程基础记录(UE4+代码基础知识)

1、UE4基础元素 ①Actor 我们又见面了Actor,Actor是在一个关卡中持续存在的,通常他包含几个Actor组件。支持网络复制和多人游戏。   Actor不包含位置,方向。这些东西在Root Component中存储。对于UE3 中的Pawn也由PlayerCharacter继承了…

信钰证券:股票交易费用计算方法?

股票生意是股市参加者之间进行的买入和卖出股票的进程。其中,股票生意费用是参加股市生意的重要组成部分。本文将从多个视点分析股票生意费用计算方法。 首先,股票生意费用一般包含三部分。分别是佣钱、印花税和过户费。佣钱是证券公司为代理股票生意而收…

UE4和C++ 开发-常用的宏(二)UPROPERTY(类似于Unity中C#的特性[SerializeField])

UPROPERTY的作用类似于Unity中C#的特性[SerializeField]或者Godot中的export。目的就是通过反射把属性暴露在蓝图或实例的细节面板。 属性说明符(Property Specifiers)

IDEA设置自动导入包

IDEA设置自动导入包 首先进入设置选项 之后勾选以下两项: 第一项:IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包。 第二项: IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入…

mac,linux环境的基础工具安装【jdk,tomcat】

安装 一 linux环境一)、JDK安装卸载: 二)、 tomcat 安装1、[下载](https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.63/bin/apache-tomcat-8.5.63.tar.gz)后,在目录 /usr/local/tomcat下,解压缩2、配置tomca…

基于SpringBoot的学院班级回忆录

目录 前言 一、技术栈 二、系统功能介绍 管理员模块的实现 用户信息管理 班委信息管理 班级信息管理 班级相册管理 用户和班委模块的实现 班委注册 班级信息管理 加入班级 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越…

spring boot自定义配置时在yml文件输入有提示

自定义一个配置类&#xff0c;然后在yml文件具体配置值时&#xff0c;一般不会有提示&#xff0c;这个解决这个问题 依赖 <!--自定义配置类&#xff0c;在yml文件写的时候会有提示--><dependency><groupId>org.springframework.boot</groupId><arti…

opencv图像卷积操作原理,opencv中常用的图像滤波函数

文章目录 opencv图像卷积操作原理&#xff0c;opencv中常用的图像滤波函数一、图像卷积操作原理&#xff1a;1、卷积操作原理图&#xff1a; 二、opencv常用的图像滤波函数&#xff1a;这些函数的主要作用是对图像进行平滑处理或去除噪声(核心目的是减少图像中的噪声&#xff0…

【C++入门系列】——命名空间和输入输出

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;c入门第一个程序和基本知识讲解 &#x1f604;每日一言&#xff1a;忙&#xff0c;不会死&#xff0c;人只有越忙越活&#xff0c;流水不腐&#xff0c;户枢不蠹。 目录 ​作者主页 前言 谈谈我个人…

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

概述 12v / 24v智能模拟高侧MOSFET栅极驱动器。 特性 PRO-SIL ISO 26262-准备根据ISO 26262:2018条款8-13支持硬件元件评估的集成商。一个通道器件具有两个高侧栅极驱动器输出。3 Ω下拉,50 Ω上拉,用于快速开关开/关。支持背靠背MOSFET拓扑(共漏极和共源)。两个双向高侧模拟…

C/C++ 线程超详细讲解(系统性学习day10)

目录 前言 一、线程基础 1.概念 2.一个进程中多个线程特征 2.1 线程共有资源 2.2 线程私有资源 3.线程相关的api函数 3.1 创建线程 创建线程实例代码如下&#xff1a; 需要特别注意的是&#xff1a; -lpthread和-pthread的区别 3.2 给线程函数传参 传参实例代码如…

生命在于学习——Stable Diffution(Mac端)

一、前言 最近一段时间研究了一下Stable Diffution&#xff0c;Windows和MAC端都搭建成功了&#xff0c;也尝试了各种功能&#xff0c;后续会学习新的使用姿势&#xff0c;写一篇文章记录一下。 二、介绍 1、Stable Diffution是什么 Stable Diffusion&#xff0c;是一种AI绘…

如何处理前端安全性问题(XSS、CSRF等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

记一次生产大对象及GC时长优化经验

最近在做一次系统整体优化,发现系统存在GC时长过长及JVM内存溢出的问题,记录一下优化的过程 面试的时候我们都被问过如何处理生产问题&#xff0c;尤其是线上oom或者GC调优的问题更是必问&#xff0c;所以到底应该如何发现解决这些问题呢&#xff0c;用真实的场景实操&#xff…

PHP LFI 利用临时文件Getshell

PHP LFI 利用临时文件 Getshell 姿势-安全客 - 安全资讯平台 LFI 绕过 Session 包含限制 Getshell-安全客 - 安全资讯平台 目录 PHP LFI 利用临时文件Getshell 临时文件 linux 和 windows的 临时文件存储规则 linux和windows对临时文件的命名规则 PHPINFO()特性 原理 条…

前端项目--尚医通学习分享

这段时间跟着线上课程完成了一个项目&#xff1a;商医通&#xff08;基于Vue3TypeScript的医院挂号平台&#xff09;。具体我就不过多地介绍其具体功能以及详细的实现步骤了&#xff0c;感兴趣的小伙伴直接&#xff1a;传送门 。该文章我就分享一下在该项目中学习到的一些知识点…

如何退出commit_message页面

虽然提示命令了&#xff0c;但我试了&#xff0c;退不出去。我没搞明白。。。 退出编辑 Crtl Z设置git的编辑器为vim或vi git config --global core.editor vim如果没有vim编辑器&#xff0c;设置成vi编辑器也行 git config --global core.editor vi重新提交 再次进入commi…

【高等数学】极限(上)(最全万字详解)

文章目录 1、数列的极限1.1、数列极限的定义1.2、为什么收敛数列极限是唯一的&#xff1f;1.3、为什么收敛数列是有界的&#xff1f;1.4、数列极限的保号性1.4.1、极限保数列值1.4.2、数列值保极限值 1.5、收敛数列与其子列之间的关系 2、函数极限概念2.1、函数极限的定义2.1.1…

[Unity][VR]Passthrough2-创建一个基本的Passthrough应用

上一期我们对PassthroughXR项目做好了基本的项目设置,今天我们就开始构建一个基本的Passthrough应用。 我们还是从基本场景开始。先把默认的main camera删除。因为后续我们会引入OVR Rig对象,这个对象自带Camera用来实现VR视角。 在Project面板我们搜索OVR camera rig。看见…