×

使用MoonBot构建您自己的问答机器人

消耗积分:0 | 格式:zip | 大小:0.03 MB | 2023-07-06

duke刘

分享资料个

描述

您是否注意到孩子们在屏幕前停留的时间越来越长?如今,大多数儿童内容,无论是教育性的还是娱乐性的,都是通过屏幕传递的。

MoonBot 套件是一种教育机器人套件,可用于构建多个机器人我用有脸的那个来给 QuizBot 编程,原因很明显。它是三者中更友善的机器人。

让我们看看人形 MoonBot 可以使用哪些可编程交互元素。

  • 视觉传感器 - 可以检测人和读取数字卡
  • LED 眼睛 - 12 个 RGB 彩色 LED 可以单独编程以显示各种表情(超过 C-3PO)
  • 两个触摸传感器耳朵 - 用于基于触摸的交互
  • 扬声器 - 播放各种声音和问题的任何 mp3 文件
  • 控制器 LED - 两个 RGB 状态 LED
  • 控制器蜂鸣器 - 非常适合读卡确认
  • 1 头伺服 - 上下移动头部以将注意力集中在您身上。
  • 2 臂伺服 - 左右手臂上下移动以生成伴随语音的手势
  • 坦克底座 - 左右脚踏马达可以让 MoonBot 移动和跳舞

这是 MoonBot 手册中的图表,用于显示不同的传感器和执行器

poYBAGOIIRGAQqmjAAEkDpStDCo091.jpg
 

我的总体计划是这样的:

  • 使用 MoonBot 的 mp3 扬声器为孩子们提供测验问题
  • 使用其他照明和运动部件使机器人尽可能友好
  • 使用 MoonBot 基于视觉的卡片识别来阅读孩子们的答案
  • 在 MoonBot 上编写其他逻辑来随机排列问题、处理答案并为孩子们提供测验的最终分数

识别卡

MoonBot套件自带一套识别卡,可以被MU视觉传感器检测到。我会用数字卡来代表测验问题中的 4 个选择。为了便于抓握,我在每张卡片的背面添加了一个乐高横梁。

poYBAGOIIROAYgM2AABsc_ojBUU099.jpg
附有乐高圣光束的MoonBot识别卡
 

发声器

我们需要为不同的测验问题生成相当多的 mp3 文件。我通过在 MacOS 上使用文本到语音功能来做到这一点。基本上,这个方便的功能允许您将任何文本转换为可用于许多不同项目的声音文件。

您需要考虑的一件事是您的机器人应该使用哪种声音。MacOS 提供许多不同的声音,男性或女性,美国或英国或外国。经过一些测试,我习惯了“汤姆”的声音,听起来足够响亮和清晰。

poYBAGOIIRWAbtPpAAAyXc_CmN8020.png
MacOS 中的文本转语音对话窗口
 

你从 MacOS 听到的声音大多是成年人。为了让声音更可爱一些,我做了一些后期处理。我使用 Audacity 提高声音的音调,并将其从 m4v 转换为 mp3,这是 MoonBot 扬声器模块接受的唯一格式。

poYBAGOIIRiAGDdbAAFtuZqtiH4049.png
 

这是我生成的声音列表。MoonBot 扬声器模块使用声音文件名的前 4 个字母来查找该声音。所以我用 4 个字母的标识符来组织文本。

  • 问题:问题
  • STAR:大家好,我是问答机器人。触摸我的耳朵开始。
  • 答:正确答案是……
  • 伟大:干得好!你已经完成了这个测验。
  • SOFU:这太有趣了。
  • NEWQ:要开始新的测验,请同时触摸我的双耳。
  • SCOR:你的分数是
  • 休息:触摸我的双耳以重新开始
  • NM00:零
  • NM01:一个
  • NM02:两个
  • NM03:三
  • NM04:四
  • NM05:5
  • NM06:6
  • NM07:七
  • NM08:八
  • NM09:九
  • NM10:十
  • NM11:十一
  • NM12:十二
  • YS01:是的。
  • YS02:你说得对。
  • YS03:干得好。
  • NO01:不!
  • NO02:对不起。
  • NO03:错了。
  • 问题:QZ01 – QZ48
  • 答案:QA01 – QA48

除了问题和答案之外,这些声音资源还包括运行测验时常用的术语。扬声器模块有一个 USB-C 连接器,可以将其插入计算机,然后会出现一个 USB 驱动器来保存所有声音文件。请注意,扬声器模块有 128 个 mp3 文件的限制,因此您需要删除其上的所有原始声音文件并将此设置复制到模块。将声音文件复制到其他地方,以便恢复原始声音。

MoonBot 扬声器模块的一个好处是它可以独立更新。这意味着您可以替换整个问题和答案部分,而无需更改任何代码。

运行测验的软件

MoonBot 上的软件具有三个任务:

  • 处理不同的传感器输入
  • 协调所有运动和灯光效果
  • 运行测验逻辑

为了更好地组织程序,我使用一个简单的状态转换图来展示测验的流程

pYYBAGOIIRuACCDIAABLdmcsFU0076.png
QuizBot 的状态转换图
 

该图也对应于程序的主循环实现,我是这样混合拖放代码的:

pYYBAGOIIR2AJkvFAAApBbXnMWo870.png
 

我使用一个名为“状态”的全局变量来跟踪测验的当前状态。在不同的状态下,将调用不同的函数来执行该状态下的操作。根据状态图,从一种状态到另一种状态的任何转换都将涉及“状态”变量到该状态的更改以及当前函数的返回。返回后,主循环中的 switch 块可以将程序引导到新的状态。

在继续介绍每个状态函数之前,我想简要谈谈一些详细的设计注意事项。

  • 为了让测验机器人每次都呈现不同的测验问题,引入了问题的随机化。我准备了 48 个不同的测验问题,机器人会随机选择 12 个。
  • 为了防止随机数生成器在测验期间产生样本数,这将导致机器人重复相同的问题,必须使用重复数据删除过程来删除这些重复项。
  • 我的目标是创建一次程序并重新使用它来玩不同的测验,而无需再次触及任何代码。为此,我需要为将来的任何测验问题修复每个问题的答案。为此,我对测验的格式添加了一些限制,例如要求问题始终有 4 个答案。48道题,前12题答案为“1”,后12题答案为“2”,以此类推。

初始化月球机器人

poYBAGOIISCAQ3WBAAD4F-Y2pXg628.png
QuizBot 的设置块
 

在初始化代码中,我声明了“状态”变量以及一些用于设置每个状态的常量变量。初始化的传感器和执行器是:

  • 触摸传感器
  • 坦克基地
  • 视觉传感器
  • LED 眼睛
  • 控制器 LED
  • 扬声器
  • 三舵机

启动函数

开始功能循环运行,以提示任何用户通过触摸左耳来开始测验。它还运行人员跟踪算法,使其始终转向人。

poYBAGOIISOACj_DAACfksAR9XU393.png
启动函数
 

测验功能

测验功能通过播放 12 个随机问题循环运行整个测验,从用户那里读取结果。根据结果​​正确与否,它也会反馈给用户。

pYYBAGOIISWANMu7AACp2XL3g-Y654.png
问答功能
 

 

测验完成后,它将状态转换为 STATE_RESULT。

结果函数

结果函数将向用户显示分数,如果分数足够高(9 或更高),机器人将跳一段短舞。

poYBAGOIISiATphYAACuWN18JSk826.png
结果函数
 

如果检测到双耳被触摸,result 函数将退出,并将状态更改回 Start 函数。

其他重要功能

我还将展示一些对运行程序很重要的其他功能。首先是 TrackingPeople 功能,它试图通过调整头部伺服和电机将人物保持在相机的中心。

poYBAGOIISuAJ5AgAAFT0gIDlsQ532.png
跟踪人员功能
 

二是ReadResult函数,利用视觉传感器读取用户出示的卡片结果。

pYYBAGOIIS6AMaxQAAEguSIuVm4683.png
 

第三个是 GetRandomNoDupe 函数,它负责随机选择以前没有选择的新测验索引。请注意,您必须记住所有以前的问题索引才能进行“去重复”。

poYBAGOIITKAKz-WAACTaJyArGU373.png
 

当然,还有比我这里展示的更多的功能,我会把所有的功能都给一个截图。整个代码区比我的29寸超宽屏还要大:)

pYYBAGOIITaAaJo9AAPt9g6I6_E734.jpg
 

各个功能的详细介绍请查看附件中的mixly代码。随意修改代码以自定义交互。

用你自己的测验构建 QuizBot

如果您只想自定义问题,则无需更改任何代码。只需刷入我的代码并更新扬声器模块中的问题 MP3。如果你想改变问题的数量,你只需要在 RunQuiz 和 GetRandomNoDupe 函数中修改几个数字就可以了。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !