【二哈识图】Arduino视觉识别入门教程—04英语单词游戏
本帖最后由 _木子_ 于 2020-6-17 18:50 编辑项目五:英语单词游戏
生活趣事:
游戏是一个很大的话题,现在大家都在玩。不管是什么年龄段的都有着属于自己的游戏。当然了我们也不能玩物丧志,适当的玩游戏甚至有助于我们智力的开发。如果发明一款跟学习有关的游戏,能让孩子在玩的同时能学到一点有用的东西那就再好不过了。
而我小时候玩过一款小霸王游戏机,里面也有这样一款英语单词学习的游戏,而且它的背景音乐是“春天在哪里”让我记忆犹新,今天我们就来做这样一个游戏用于对英语单词的学习。
功能介绍:
在这个项目中,我们将学习HUSKYLENS的物体跟踪功能,利用其内置的机器学习功能,分辨学习过的物体并随其一起运动。运用到了1.6.3版本的Mind+,使用其新增的功能,实时模式下支持HUSKYLENS编程。点击小绿旗开始游戏,我们通过学习人脸,来实现追踪功能。当人脸在哈士奇识别范围内时,程序判断是否是学习过的人脸,如果是则执行Mind+机器人跟着人脸运动,我们可以通过人脸在HUSKYLENS识别范围内运动,从而控制Mind+机器人的运动(游戏开始背景)。同时会有物品从舞台上方掉落下来,当物品碰到Mind+机器人时(游戏进行背景),则得分加1,当错过Mind+机器人,碰到物体边缘时,则得分减1。当得分大于20分(可以根据游戏难度进行设置),则停止脚本(切换victory背景),结束游戏。
材料清单: 知识园地:
当我们需要追踪一个活动的物体时,除了人工操作以外就需要使用到视觉物体追踪技术了,这项技术广泛应用在我们的生活中,如视频监控、无人机跟随拍摄等。我们这个项目就是利用HUSKYLENS的物体追踪功能来实现单词游戏机的。
一、什么是物体追踪?
——————————————————————————————————————————————
物体追踪是人工智能视觉识别中非常重要的一个功能,属于物体行为识别的一个类别。物体追踪是计算机视觉中的一项重要任务,是指对视频序列中的目标状态进行持续推断的过程,简单来说就是识别指定目标并追踪或者追踪摄像头视觉范围内移动的物体。物体追踪技术在军事和民用方面都有着十分广泛的应用。
物体追踪工作原理:
通过单摄像头采集图像,将图像信息传入计算机,经过分析处理,计算出运动物体的相对位置,同时控制摄像头转动,对物体进行实时追踪。物体追踪系统执行追踪功能时主要分为四步,识别物体、追踪物体、预测物体运动、控制摄像头。
识别物体是在静态背景下,通过一些图像处理的算法,得到较为精确的物体的外观信息,能够识别出物体的形态并标注出来,如图所示。
追踪物体是通过上一步得到的物体的外观信息,根据物体的外观特征,使用算法对后面的图像序列进行跟踪,并且可以在后续的追踪中进行更深入的学习,使追踪越来越精确。如图中,在移动中缓慢旋转物体,可以对其进行多角度学习。
预测物体运动是为了提高效率采用算法进行计算,预测下一帧运动物体图像的位置。可以优化算法并提高效率。如图可以通过前几秒钟鸟的移动趋势来预测后续的移动路径和动作。
控制摄像头在采集图像信息的同时移动摄像头,使摄像头跟随着物体移动的方向调整方向,一般需要配合云台或其他运动机构来实现。
物体追踪技术主要应用在以下领域:
1.智能视频监控:基于运动识别(基于步法的人类识别、自动物体检测等),自动化监测(监视一个场景以检测可疑行为);交通监视(实时收集交通数据用来指挥交通流动);
2.人机交互:传统人机交互是通过计算机键盘和鼠标进行的,为了使计算机具有识别和理解人的姿态、动作、手势等能力,跟踪技术是关键;
3.机器人视觉导航:在智能机器人中,跟踪技术可用于计算拍摄物体的运动轨迹;
4.虚拟现实:虚拟环境中3D交互和虚拟角色动作模拟直接得益于视频人体运动分析的研究成果,可给参与者更加丰富的交互形式,人体跟踪分析是其关键技术;
二、HUSKYLENS传感器-物体追踪功能演示
——————————————————————————————————————————————
如果想要能够实时的跟随你的步伐移动,那就需要有一双“眼睛”紧盯你的步伐,我们如何实现这个功能呢?就要使用到我们使用的HUSKYLENS传感器中的物体追踪功能。
HUSKYLENS传感器中的物体追踪功能是利用传感器内置算法,通过对物体的特征进行学习而实现对物体在屏幕中位置的追踪,并可以将位置的坐标值反馈给主控的功能。我们可以通过获取的人脸位置值来驱动Mind+机器人实现实时追踪的功能。
学习物体:
与颜色识别或人脸识别不同,物体追踪是可以对一个物体(或人)进行完整的学习并进行识别的,颜色识别只针对颜色,而人脸则只是人体的一部分,物体追踪则是针对这个物体的整体特征进行学习从而进行追踪。
把HUSKYLENS对准需要追踪的物体,调节物体与HUSKYLENS的距离,将物体包含在屏幕中央的橙黄色方框内。如不方便,包含特征鲜明的局部亦可。长按“学习按键”不松开,并调整角度和距离,使得HUSKYLENS从不同的角度和距离学习该物体。学习过程中,屏幕上的黄框会标注“学习中:ID1”。
当HUSKYLENS在不同的角度和距离都能追踪到该物体时,就可以松开“学习按键”结束学习了。
小提示:如果屏幕中央没有橙黄色方框,说明HUSKYLENS之前学习过一个物体,请选择“忘记学过的物品”后重新学习。
项目实践:
学会哈士奇的物体追踪能后,让我们一起来实现“单词游戏”的功能。首先要实现的功能是通过人脸的运动,来控制Mind+机器人的运动。其次新建列表用于存储英语单词(可以查看今天所学的单词)及得分变量,判断得分是否大于20,如果大于则停止脚本,并发送广播消息(切换victory背景)。最后是每个物体角色的程序设定,开始是需要隐藏的,只有当角色以克隆体启动时才显示出来,如果碰到Mind+机器人(说明学习过该单词),则得分加1,如果错过Mind+机器人,碰到了舞台时,得分减1。如果物体收到广播消息时,停止脚本隐藏自己。
任务一:实现通过人脸控制Mind+机器人运动的功能
在这步我们先学习如何使用HUSKYLENS摄像头对人脸进行学习,如是已学习的人脸,我们需要运用摄像头的运动来控制Mind+机器人运动,在这可以加入一些音乐让它动起来效果更好(功能模块中的“音乐”)。
任务二:单个物体的程序设定
完成以上功能后,我们需要要对单个物体进行编程,其实我们只需要写出一个物体的程序,其它物体复制即可。开始是需要隐藏的,只有当角色以克隆体启动时才显示出来,如果碰到Mind+机器人(说明学习过该单词),朗读出对应的单词,得分加1。如果错过Mind+机器人,碰到了舞台时,得分减1。如果物体收到广播消息时,停止脚本隐藏自己。
任务三:新建列表(英语单词列表)和变量(得分)
新建英语单词列表,用于存放所学过的英语单词。新建得分变量,用于程序的判断,所学习的英语是否大于20(难易度可以自行进行设定),如果大于则广播消息,并朗读victory,停止脚本。
任务一:实现通过人脸控制Mind+机器人运动的功能
——————————————————————————————————————————————
1、硬件连接
HUSKYLENS:I2C引脚(T—SDA、R—SCL、+—5V、- —GND)
2、程序设计
我们需要通过HUSKYLENS的物体跟踪功能,来控制Mind+机器人在舞台的运动。我们首先就需要知道Mind+机器人在舞台的运动范围,这个我们可以通过把Mind+机器人移动到下边的两个角落来得到它的X轴的范围,在程序中我得到的Mind+机器人的X轴的运动范围为(-195,220)。之后我们通过移动HUSKYLENS(识别方框出现在屏幕时的极限位置)找到它的运动范围,因此得到HUSKYLENS X轴的运动范围为(40,270),最后我们通过运算符中的映射来实现相对运动。当然如果我们想要好一点效果可以在程序中切换Mind+机器人的造型,同时可以换一个背景,增加音效,也可以让背景颜色跟着程序在不断变化。
STEP1 Mind+软件设置
打开Mind+软件(1.6.3及以上版本),切换到“实时模式”,点击“扩展”,在“主控板”下点击加载“Arduino Uno”,在“传感器”下点击加载“HUSKYLENS AI 摄像头”,在“功能模块”下点击加载“音乐”和“文字朗读”。
STEP2 指令学习
来认识一下主要用到的几条指令。
STEP3 流程图分析
3、程序示例
(1)、程序部分
Mind+机器人程序:
背景部分的操作,先点击加载背景库,找到音乐会背景和爱心2的背景,把音乐会的名称改为游戏开始背景,并在背景上增加“点击小绿旗开始游戏”字样。把爱心2的名称改为游戏进行背景,并在脚本区编写一下代码,从而不断改变背景颜色。
游戏开始背景:
游戏进行背景:
背景程序:
(2)舞台界面,设置变量时可以在它的边上选择✔,这样在舞台界面可以实时显示其变化,在程序设计是可以打开,当设计完成后可点击取消✔,以免影响游戏操作。
4、运行效果
当点击小绿旗时,HUSKYLENS摄像头检测到学习过的人脸时,Mind+机器人会跟着HUSKYLENS摄像头的“学习框”一块运动并伴随着有相应的音效,游戏背景也会不断地切换颜色。
任务二:单个物体的程序设定
——————————————————————————————————————————————
1、程序设计:
综合上面的代码,当程序运行时,我们的物体需要从物体的上方掉落到下方,这里我们用到了克隆模块,实现当物体碰到Mind+机器人时,朗读出相应的内容并消失,碰到舞台直接消失,在后期完善代码后时可以朗读出对应的英语单词。
2、程序示例:
物体角色程序,我们通过角色库新增不同物体并把名称改为相应的英文单词(这里我们增加了5个物体,分别对应的英文单词为:balloon、banana、apple、basketball、butterfly),在我们写好一个角色后,复制代码到其它角色即可,我们可以设置它们在不同的时间显示,效果上更美观,下面举其中两个例子进行说明。
角色Balloon程序:
角色banana的程序:
3、运行效果:
当HUSKYLENS摄像头检测到学习过的人脸时,Mind+机器人会跟着人脸的运动在舞台上相对的运动,并且发出音乐效果。同时物体会从舞台的上方掉落下来,当碰到mid+机器人时,朗读出相应的英文之后消失,当碰到舞台边缘时直接消失。
任务三:新建列表(英语单词列表)和变量(得分)
——————————————————————————————————————————————
1、程序设计:
综合上面的代码,我们需要增加两个变量,一个是英语单词的列表用于存放学校过的英语单词,当游戏结束时可以用于查看今天所学英语单词情况的,一个是得分用于程序判断,是否获得游戏胜利的。首先我们新建这两个变量并初始化,之后我们可以加入我们前面说过的“春天在哪里”的背景音乐,这里只要是mp3格式的音乐都可以。然后通过判断得分是否大于20(具体的可以自行设计),如果大于则切换victory背景并广播消息,停止脚本。而在物体角色部分我们需要增加每次物体碰到Mind+机器人都加1,把碰到的英语单词插入到列表中以及朗读出相应英语单词等功能代码。最后可增加一个victory背景的背景,当停止脚本时切换至该界面即可。
2、程序示例:
(1)程序部分
Mind+机器人程序:
(2)物体角色部分(只列出一个角色的):
3、运行效果:
当点击小绿旗运行程序时,如果HUSKYLENS摄像头屏幕内没有检测到学习过的人脸时,Mind+机器人会跟着人脸运动而进行相对运动,运动时还可以发出有趣的“伴奏”。此时可以看到相应的物体从物体的上方掉落至下方,在此过程中如果碰到Mind+机器人,则会看到得分增加1,并且可以看到列表中也增加相应的英语单词,同时也会朗读出相应的英语单词。当得分大于20分时,会朗读victory,并且停止脚本,切换至victory背景界面。至此,我们就完成了“单词学习“游戏的所有功能了。
最终效果:
项目小结:
通过”单词学习“的游戏,我们又了解了”HUSKYLENS“的又一新功能“物体追踪”功能,通过物体追踪功能我们很好的实现了Mind+机器人与人脸的相对运动,最后实现了我们“单词游戏”的功能设计。
知识点回顾:
1、了解物体追踪的工作原理;
2、学习了HUSKYLENS物体追踪的学习过程;
3、学习了HUSKYLENS物体追踪功能的相关指令;
4、学会在实时模式下,硬件与”功能模块“的结合使用。
项目拓展:
这个项目中,我们只写了五个英语单词的功能代码,可以增加更多的英语单词的功能。本项目中,得分会有负数的情况,可尝试修改代码使最小数为0。最终尝试完善代码,设计出可以逐渐增加游戏难度的功能(关卡功能)。
实时模式没有二哈传感器的嘛
星星~ 发表于 2023-12-15 18:38
实时模式没有二哈传感器的嘛
是啊,没有实时模式,他是怎么做的。
页:
[1]