当我第一次注意到LEGO MINDSTORMS 语音挑战赛时,我真的很想参加,使用 Alexa 语音驱动技能和 MINDSTORMS EV3 来激活 LEGO 是多么有趣!我的第一个想法是,这应该是一项孩子们会喜欢的有趣活动(并希望也能从中学习)。由于一个项目的目标是充分利用语音交互,而且我有一些朋友的孩子很难学习乘法表,所以一个想法诞生了:将这个项目的技能部分集中在学习数学乘法表上!
下一个问题是该项目的 LEGO MINDSTORMS 部分应该是什么样子?我的第一个想法是一场拔河比赛,两辆由正确的数学测验答案提供动力的汽车朝相反的方向行驶,直到获胜者被命名。不,不好,我想要一款只允许一个孩子练习数学技能的游戏,所以我想到了一辆 LEGO MINDSTORMS 动力卡车,它会在每个正确答案的情况下驶向学生。假设正确回答了足够多的问题,卡车就会送出奖品!当然,每个孩子都是独一无二的,因此我作为该项目的一部分创建的 Mindstorms 数学技能允许调整默认值,即问题数量和难度级别,这让我面临更多语音交互挑战,但结果很好。我还设法调整了奖品,
我想要的这项技能的一个附加功能是“视觉效果”。
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 技能的其他特点:
randomAwesome()
和randomWrong()
方法。这些通过用随机短语(和声音)响应来增加技能。因此,不要总是只回应“正确!” 当给出正确答案时,我会在“太棒了!”、“正确!”、“是!!”之间随机切换。和“一路走好!”。responseString = "Correct
";
responseString = `Alright!`;
找到更多强调语音的方法。为您自己设置 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,并检查支持的所有屏幕,请参见下图。
您可能想要调整 index.js 文件中的一些默认值。例如,您可能想问 10 个以上的问题或只需要 8 个正确答案即可获得奖品。这些默认值很容易在 index.js 文件的顶部附近找到
self.sound.speak('Alexa connected', espeak_opts='-a 200 -s 130', volume=100, play_type=0)
EV3 从 Alexa skill 收到的指令告诉它该做什么。我们发送以下类型的指令:
配对和取消配对 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 粉丝,所以让我觉得将来可能会支持工作室软件。
安装 BrickLink Studio 后,您将能够使用文件 -> 导入来导入 PrizeTruckFullBuildFinal.io 模型。另一个区别是工作室设计中所示的传送带没有皮带,但该部件通常作为一个完整的单元出售(技术零件 92715C01)。
。
在接近项目截止日期时,我偶然在翻箱倒柜中找到了一套 Technics Racer。我将较大的轮子用于备用轮子设计,我认为它看起来更好一些,因此我为该设计包含了另一个 Studio 设计模型文件……这是带有较大轮子的奖品卡车:
最后的想法感谢您检查这个 Alexa LEGO MINDSTORMS 语音挑战项目。我喜欢边玩边学,并鼓励您尝试使用 LEGO MINDSTORMS 创建支持 Alexa 的小工具,这很有趣!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !