×

Mindstorms Math Alexa启用奖品卡车开源构建

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

张桂兰

分享资料个

描述

当我第一次注意到LEGO MINDSTORMS 语音挑战赛时,我真的很想参加,使用 Alexa 语音驱动技能和 MINDSTORMS EV3 来激活 LEGO 是多么有趣!我的第一个想法是,这应该是一项孩子们会喜欢的有趣活动(并希望也能从中学习)。由于一个项目的目标是充分利用语音交互,而且我有一些朋友的孩子很难学习乘法表,所以一个想法诞生了:将这个项目的技能部分集中在学习数学乘法表

下一个问题是该项目的 LEGO MINDSTORMS 部分应该是什么样子?我的第一个想法是一场拔河比赛,两辆由正确的数学测验答案提供动力的汽车朝相反的方向行驶,直到获胜者被命名。不,不好,我想要一款只允许一个孩子练习数学技能的游戏,所以我想到了一辆 LEGO MINDSTORMS 动力卡车,它会在每个正确答案的情况下驶向学生。假设正确回答了足够多的问题,卡车就会送出奖品!当然,每个孩子都是独一无二的,因此我作为该项目的一部分创建的 Mindstorms 数学技能允许调整默认值,即问题数量和难度级别,这让我面临更多语音交互挑战,但结果很好。我还设法调整了奖品,

pYYBAGOS1T2AP88OAAGsRMjttNs632.jpg
MINDSTORMS EV3 Alexa Gadget 奖品卡车
 

我想要的这项技能的一个附加功能是“视觉效果”。

 

Mindstorms Math -修改意图和随机响应演示用户可以更改默认设置以使学生工作更多(或更少)以获得奖品。

 

创建您自己的项目版本在本文档的下一部分中,我将讨论我用于创建此技能的过程。希望我包含足够的信息,以便您可以创建自己版本的 Mindstorms 数学技能和 Prize Truck Alexa 小工具。

构建技能对于这个项目,我首先构建了 Alexa 技能,我将确切的 LEGO 设计留到以后使用(尽管我有一个粗略的想法,我真正想使用 EV3 的是两个电机,没有传感器)。我首先浏览了 hackster.io设置和任务 1 到 4(在此处找到)。这些教程非常好,它们引导我完成了从将 Alexa Gadgets Toolkit 和相关演示任务代码闪烁到 EV3 智能程序块,到指导我逐步向任务的 Alexa 技能部分添加功能的步骤。如果您完成这些教程,您会发现设置奖品卡车是一个简单的过程。

设置和任务 1 到 4 的基本部分 通过对任务 Python 代码进行一些注释,我可以仅使用以下部分来证明 EV3 可以满足我的要求:LEGO MINDSTORMS EV3 智能积木、MINDSTORMS 大型电机(和电源线) 、microSD 或 microSDHC 卡(2GB 至 32GB)、电脑芯片适配器、USB 无线适配器(我使用的是 TP-Link Nano 适配器)、6 节 AA 电池(最好是可充电电池,我使用的是 TENAVOLTS 品牌,它们对我来说效果很好) . 在完成任务时,您必须注释掉或删除对您没有的任何电机或传感器的引用,否则 Python 代码将失败。如果您在任务 1 到 4 期间遇到困难,请不要忘记使用有用的讨论板. 您还可以通过查看我的另一个基于 Alexa/EV3 的项目Bobblehead Bobbler获得一些提示

Alexa Skill - Mindstorms Math在玩 LEGO 之前,我专注于我的 Alexa Skill。我修改了 Mission-04 Node.js 代码,但确保支持有趣的游戏和修改默认值功能所需的语音命令和 IntentHandlers。我知道我可以在所有游戏玩法完成后重新添加 EV3 指令。我牢记,因为这是一款孩子们会想玩的游戏,所以我想支持慢速反应、重复提问的能力,甚至是“我不知道”的回答。好消息,我想我做到了,关键是使用Session Attributes请注意,在代码中我有以下语句:Util.putSessionAttribute(handlerInput, 'lastQuestion', question); 这存储了用户被问到的最后一个问题......然后在 AnswerIntentHandler 中,如果用户没有使用有效数字回答,技能可以使用以下语句“记住”(然后重新询问)该问题:var lastQuestion = "Sorry, I didn't get that, " + attributesManager.getSessionAttributes().lastQuestion;

 

Mindstorms Math Alexa 技能的其他特点:

  • FallBack:我添加了AMAZON.FallbackIntent(Alexa Skill Kit 的一部分),这样当孩子在错误的时间做出愚蠢的回答时,我们可以提示他们再试一次,而不仅仅是失败。
  • 不同的回应:注意randomAwesome() randomWrong()方法。这些通过用随机短语(和声音)响应来增加技能。因此,不要总是只回应“正确!” 当给出正确答案时,我会在“太棒了!”、“正确!”、“是!!”之间随机切换。和“一路走好!”。
  • 响应中的声音:我通常会用短促的“Bling”声音来响应,但四分之一的人会用卡车加速的声音来响应,只是有点额外的随机乐趣。这是将声音添加到响应的行:您可以在Alexa Skills Kit 声音库中找到超过 2500 个声音片段的列表(甚至播放)responseString = "Correct ";
  • 回应中的情感:为了获得更多多样性和更愉快的体验,我还使用了情感功能。当代码如下所示时,Alexa 将以不同方式强调单词:您可以使用 Alexa Skills Kit语音合成标记语言responseString = `Alright!`;找到更多强调语音的方法
  • 断开连接工作:hackster.io 任务代码需要通过蓝牙连接 EV3 才能运行,如果 Alexa 找不到 EV3 Brick,示例技能就会退出。然而,即使砖块不可用,我也让这段代码工作,这是通过检查有效的“endpointId”在几个地方完成的。因为这项技能是断开连接的,所以即使在 Echo Auto 上,学生也可以更轻松地在车上玩/练习数学!
  • Supports Graphics and Different Devices:这个技能有多个代码路径,因为除了EV3之外,我支持屏幕设备(Echo Show),纯文本屏幕设备(Fire HD)和无屏幕设备(Echo Dot)。

为您自己设置 Alexa 技能:要添加 Mindstorms 数学技能,请按照任务 3中所述登录到您的 Alexa 开发者控制台。您会注意到大部分操作发生在 index.js 中但是您需要复制我附加到该项目的所有文件 model.json、common.js、datasource.json、index.js、latest.json、package.json 和 util.js。Datasource.json 用于将信息发送到 lastest.json 中设计的 APL 屏幕除了将文件复制到您的 Alexa 开发者控制台之外,您还需要将此技能注册为 Alexa 小工具,如任务 1 中所述。作为此过程的一部分,您将转到“接口”屏幕以启用您的技能以打开“自定义接口控制器”。对于此技能,因为我们正在启用 Echo Show 设备和 APL,您还需要打开 Alexa Presentation Language,并检查支持的所有屏幕,请参见下图。

pYYBAGOS1UeAdoizAAEmxMHz53E619.jpg
为您的 Alexa 技能启用接口
 

您可能想要调整 index.js 文件中的一些默认值。例如,您可能想问 10 个以上的问题或只需要 8 个正确答案即可获得奖品。这些默认值很容易在 index.js 文件的顶部附近找到

poYBAGOS1UyAKvz9AAEhPklevYA835.jpg
具有易于更新默认值的 Alexa Skill index.js
 

设置此项目的 MINDSTORMS EV3 部分:

  • 按照 hackster.io LEGO Voice Challenge设置说明在您的 EV3 程序块上启用 Alexa 工具包。这个过程的一个很好的特点是软件都位于您的 microSD 芯片上,因此不会有意外地在 Mindstorms brick 上闪烁坏软件或损坏软件的风险。
  • 在设置部分,您下载了一个名为 alexa-gadgets-mindstorms-2019.nnn....zip 的文件。对于 Mindstorms Math 项目,我只是将 mindstorms-math.py 附加到该项目,您需要编辑 mindstorms-math.ini 文件,因为它必须包含您唯一的 amazonId 和 alexaGadgetSecret(如 Mission 4 教程中所述). 使用 Visual Studio Code 将 mindstorms-math.py 和 mindstorms-math.ini 发送到您的 EV3 程序块。这个过程与任务 4中描述的相同,除了我的文件是 mindstorms-math.py和 mindstorms-math.ini如果您熟悉任务代码,这个 Python 文件是相似的,但是 mindstorms-math.py 处理“摇动”和“奖励”指令。我添加的一个小功能是当 EV3(最终)连接到您的 Echo 设备时,self.sound.speak('Alexa connected', espeak_opts='-a 200 -s 130', volume=100, play_type=0)
    导致 EV3 程序块本身以老式计算机语音说话。如果您的 Echo 设备关闭或分离,积木将再次说出消息。
 

EV3 从 Alexa skill 收到的指令告诉它该做什么。我们发送以下类型的指令:

  • '摇动' - 用于移动驱动电机
  • '奖品' - 用于使奖品马达送出奖品
  • 'prizeNONE' - 当我们不希望奖品电机运行时使用。
  • 对于这些指令中的每一个,Alexa 技能传递方向(“向前”或“向后”)、持续时间(运行电机的时间)和速度(运行电机的 100% 的百分比)。(请注意,您可能需要根据您的构建与我的匹配程度来更改速度或持续时间)
pYYBAGOS1VSAJIIXAAA7613brvM588.jpg
移动奖品卡车的指令
 

配对和取消配对 Prize Truck Alexa Gadget任务 1 中的说明描述了如何取消配对设备。如果您想在 Echo Dot 和新的 Echo Show 之间切换,这将是必需的 :-)。我必须在这个过程的早期这样做,以提醒自己,除了所描述的取消配对方法之外的另一种方法是打开 EV3 程序块的 SSH 终端并运行命令sudo python3 mission-01/mission-01.py --clear(系统将提示您输入密码和默认设置密码是制造商)现在,如果您只需运行 mindstorms-math.py 代码,它就会将砖块置于新设备的配对模式。如果你想切换回来并再次与你的 Echo dot 配对,我发现你需要使用 Alexa 应用程序忘记之前的蓝牙设备。

构建此项目的乐高技术部分 现在来一些额外的乐趣:乐高积木!为了记录如何使用这个项目,我找到了一个名为 Studio 的简洁程序,由 BrickLink Corporation 开发。它是免费的,可以在这里https://www.bricklink.com/v3/studio/download.page顺便说一下,在做这个项目的时候,我了解到去年 11 月,乐高集团收购了 BrickLink Ltd,这是世界上最大的在线社区成人 LEGO 粉丝,所以让我觉得将来可能会支持工作室软件。

pYYBAGOS1VeAWqPkAADm1EVoQdE889.png
由 BrickLink Studio 渲染的奖品卡车设计
 

安装 BrickLink Studio 后,您将能够使用文件 -> 导入来导入 PrizeTruckFullBuildFinal.io 模型。另一个区别是工作室设计中所示的传送带没有皮带,但该部件通常作为一个完整的单元出售(技术零件 92715C01)。

pYYBAGOhMO6AfSWfAAIeYF1JjQI082.png
使用 BrickLink Studio 2.0.12 调整后门铰链的角度。
 

 

在接近项目截止日期时,我偶然在翻箱倒柜中找到了一套 Technics Racer。我将较大的轮子用于备用轮子设计,我认为它看起来更好一些,因此我为该设计包含了另一个 Studio 设计模型文件……这是带有较大轮子的奖品卡车:

poYBAGOhMRyAAbqIAAtZAhWJleg460.png
具有备用车轮设计的奖品卡车
 

最后的想法感谢您检查这个 Alexa LEGO MINDSTORMS 语音挑战项目。我喜欢边玩边学,并鼓励您尝试使用 LEGO MINDSTORMS 创建支持 Alexa 的小工具,这很有趣!

 

 


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

评论(0)
发评论

下载排行榜

全部0条评论

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