資料介紹
描述
我家里有 Alexa,我的兩個(gè)孩子喜歡樂高積木。我從沒想過我可以做些什么來幫助我提高我的開發(fā)技能,并且可以讓我的孩子從如此有趣的角度看待我的工作。他們總是告訴我他們想玩樂高機(jī)器人,我不會(huì)說開發(fā)這個(gè)解決方案提供的所有功能很容易,所以我不得不告訴他們構(gòu)建偉大的東西需要時(shí)間。現(xiàn)在我看到他們?cè)谕嫠抑肋@個(gè)項(xiàng)目不知何故對(duì)他們產(chǎn)生了影響,而不僅僅是對(duì)我。
這個(gè)項(xiàng)目有兩個(gè)主要部分。一個(gè)是Alexa技能,一個(gè)是Lego Mindstorms機(jī)器人。讓我們?cè)谙旅婵纯此鼈儭?/font>
ALEXA技巧
該技能是在定義了意圖和槽的 Alexa 開發(fā)控制臺(tái)中開發(fā)的。
要?jiǎng)?chuàng)建技能,請(qǐng)登錄 Alexa 開發(fā)控制臺(tái)并單擊創(chuàng)建技能。

為其命名,選擇自定義模型,并選擇提供您自己的后端資源,因?yàn)槲覀儗⑹褂梦覀冏约旱?Lambda 函數(shù)而不是 Alexa 托管技能功能。

在您創(chuàng)建的技能中粘貼您將在提供的 GitHub 存儲(chǔ)庫(kù)中找到的 json 技能模型定義并保存模型。三種不同的語言有三種 json 模型。

技能的服務(wù)端點(diǎn)是 AWS Lambda 函數(shù)。在端點(diǎn)部分,您將需要引入 Lambda 函數(shù)的 ARN(請(qǐng)參閱下面的 lambda 函數(shù)創(chuàng)建部分),并且您將需要使用可在此處找到的技能 ID。

Custom Interface Controller 接口和 Alexa Presentation Language (APL) 接口已啟用,可以與 Alexa Gadget (Lego Mindstorm) 通信,并管理 Amazon Echo 顯示(如果設(shè)備有顯示)。

語言和聲音
這是一項(xiàng)自定義 Alexa 技能,提供兩種語言版本,即英語(美國(guó)和英國(guó))和西班牙語 (ES)。

語言英語(美國(guó))和英語(英國(guó))的技能模型定義相同。西班牙語 (ES) 中的技能具有相同的意圖和槽類型,但示例話語被翻譯,因?yàn)椴壑低x詞保持相同的槽值。這樣,當(dāng)從 Alexa 設(shè)備接收指令時(shí),我們可以對(duì)所有語言使用相同的 Lambda 函數(shù)處理程序。
我只介紹了西班牙語,但可以使用相同的方法添加任何其他語言。
Lambda 函數(shù)的語音文件夾中有兩個(gè) json 文件,其中包含英語 (en-US.json) 和西班牙語 (es-ES.json) 的 Alexa 語音表達(dá)式,Alexa 將回復(fù)用戶請(qǐng)求,或者樂高頭腦風(fēng)暴事件。考慮到 Alexa 設(shè)備請(qǐng)求的“區(qū)域設(shè)置”屬性,將選擇這兩者之一,該屬性指示在 Echo 設(shè)備中選擇的語言。
回聲設(shè)備中有兩種主要聲音,一種是作為技能助手的每種語言的 Alexa 默認(rèn)聲音,另一種是代表樂高機(jī)器人聲音的男性聲音(美國(guó)的 Justin,ES 的 Enrique 和英國(guó)的 Brian) .
交互模型:調(diào)用、意圖和槽
調(diào)用模型是英文的“l(fā)ego battle”和西班牙文的“batalla de lego”。
定義了 12 個(gè)意圖和 14 個(gè)槽。

goSomewhere 意圖允許用戶在樂高戰(zhàn)場(chǎng)中移動(dòng)機(jī)器人。機(jī)器人可以去 6 個(gè)地方,即家、直升機(jī)場(chǎng)、停車場(chǎng)、火車站、港口和顏色線。

機(jī)器人有 4 種武器可用,即槍、錘子、刀片和采摘器。changeTool intent 允許用戶告訴 Alexa 武器發(fā)生了變化,useTool intent 用于命令機(jī)器人對(duì)指定目標(biāo)使用武器,或者在當(dāng)前位置和方向使用武器,以防沒有目標(biāo)定義。

findColor 意圖為用戶提供了讓機(jī)器人在顏色線中找到特定顏色的能力。
setSpeed 意圖允許用戶在慢速、正常或快速之間進(jìn)行選擇。

setTarget 是定義機(jī)器人攻擊目標(biāo)的意圖。定義了 5 個(gè)目標(biāo):飛機(jī)、船、拖拉機(jī)、樹和移動(dòng)目標(biāo)。

最后一個(gè)自定義 intent 是 remoteControl,它可以被觸發(fā)以在 echo 設(shè)備屏幕中打開遙控器,如果它有的話。使用該遙控器,用戶可以觸摸屏幕上使用 APL 渲染的不同箭頭,將機(jī)器人向前、向后、向左和向右移動(dòng) 90o。
還有 5 個(gè)默認(rèn)的內(nèi)置意圖可用。普通嫌疑犯。
已經(jīng)為每個(gè)意圖定義了示例話語,試圖涵蓋用戶可能提出這些請(qǐng)求以管理 Lego Battle 領(lǐng)域中的 Lego 機(jī)器人的許多可能方式。
定義了一組 14 種槽類型,以收集技能正常工作所需的相關(guān)槽,例如 placeToGo、finalTool、target、speed 和 colorFind,但其他一些類型用于涵蓋可能的不同用戶表達(dá)。
并非只有一個(gè)值對(duì)每個(gè)槽類型有效,定義了多個(gè)同義詞以涵蓋更多場(chǎng)景。
您可以在提供的 GitHub 存儲(chǔ)庫(kù)的 /lego/models/ 文件夾中找到技能的 json 定義。為特定的技能語言交互模型加載它們,保存并構(gòu)建它們將使一切正常工作,一旦啟用了上述接口并連接了 Lambda 函數(shù)端點(diǎn)。

Lambda 函數(shù)端點(diǎn)
要?jiǎng)?chuàng)建 Lambda 函數(shù),您需要登錄 AWS 控制臺(tái) Lambda 服務(wù)并創(chuàng)建一個(gè)新函數(shù)。

選擇 Author from scratch,為其命名并單擊 Create function。
在下一個(gè)屏幕中,您需要單擊添加觸發(fā)器。在此屏幕中,您可以復(fù)制 Alexa 技能開發(fā)控制臺(tái)中需要的函數(shù) ARN 來定義 Lambda 端點(diǎn)。

添加 Alexa Skill Kit 觸發(fā)器時(shí),啟用技能 ID 驗(yàn)證,以便只接受來自該技能的請(qǐng)求。可以在 Alexa 技能開發(fā)控制臺(tái)的端點(diǎn)部分找到此技能 ID。引入它并單擊添加。

在此之后,您可以部署可以在提供的 GitHub 存儲(chǔ)庫(kù) (/lego/lambda/) 中找到的 nodeJs 代碼,然后一切都將在與 Alexa 技能相關(guān)的方面發(fā)揮作用。不要忘記安裝所需的節(jié)點(diǎn)模塊。“npm install”將安裝 package.json 中列為依賴項(xiàng)的所有模塊。
唯一缺少的部分是 Alexa 語音服務(wù)中的 Alexa Gadget 產(chǎn)品創(chuàng)建以及 Lego Mindstorms 構(gòu)建和配置。在解釋之前,讓我們更深入地了解提供的 nodeJs 代碼片段。
在本地克隆 Github 存儲(chǔ)庫(kù)并使用 Visual Studio Code 或您首選的開發(fā)應(yīng)用程序打開它。
樂高文件夾包含:

-
包含 2 個(gè) APL 文檔的文檔文件夾將在 Alexa 設(shè)備屏幕中呈現(xiàn)。
?
?我們已經(jīng)制造了所有可用的武器。
這是一個(gè)巨大的樂趣!
除此之外,我還添加了兩個(gè)傳感器:顏色傳感器和觸摸傳感器,因此 Track3r 現(xiàn)在能夠跟蹤顏色線中的顏色,并且當(dāng)它在戰(zhàn)場(chǎng)上失去位置時(shí)也可以重置到原位。
這里有一些顏色傳感器如何連接到積木的圖片。
顏色傳感器擴(kuò)展?一些其他圖像來解釋如何連接樂高機(jī)器人中的觸摸傳感器。
觸摸傳感器擴(kuò)展?EV3程序塊設(shè)置
我已按照 LEGO MINDSTORMS 語音挑戰(zhàn)中的說明進(jìn)行操作:設(shè)置頁(yè)面 ( https://www.hackster.io/alexagadgets/lego-mindstorms-voice-challenge-setup-17300f ) 以設(shè)置 EV3 開發(fā)環(huán)境并準(zhǔn)備與 Echo 設(shè)備和 Alexa 配合使用的 EV3 程序塊。
下載 ev3dev 軟件,閃存 SD 卡并連接到 EV3 程序塊(在我的例子中使用電纜)。在 Visual Studio Code 中安裝 ev3dev-browser 擴(kuò)展,您可以連接設(shè)備、發(fā)送工作區(qū)文件并使用 SSH 終端執(zhí)行 python 程序。
上面提供的鏈接中的說明非常詳細(xì)。
Lego Mindstorms 中的藍(lán)牙存在一些已知問題,因此如果您在 EV3 程序塊中看不到藍(lán)牙,請(qǐng)嘗試重新啟動(dòng)它并拔下所有連接的傳感器,如果它仍然無法正常工作,請(qǐng)嘗試重新刷新您的 SD 卡。
Python代碼
傳輸?shù)?Ev3 Brick 并執(zhí)行以通過藍(lán)牙從 Alexa Echo 設(shè)備接收控制指令的代碼具有以下結(jié)構(gòu):
EV3 Python代碼結(jié)構(gòu)?有兩個(gè)文件夾:
-
images文件夾包含從https://sites.google.com/site/ev3devpython/learn_ev3_python/screen/bmp-image-collection 下載的 .bmp 圖像。我們的想法不是展示所有功能的所有代碼,而是解釋其中的一些功能,以便讓關(guān)于如何開發(fā)所有體驗(yàn)的主要想法變得更加清晰。圖片中的代碼被簡(jiǎn)化為最相關(guān)的代碼行,因此只是提供一個(gè)想法,建議在提供的 Github 存儲(chǔ)庫(kù)中查看完整代碼。
?
??在 Lambda nodeJs 函數(shù)中的 LaunchRequest 響應(yīng)管理期間,Alexa 向 Ev3 brick 發(fā)送一個(gè)帶有特定令牌的 CustomInterfaceController.StartEventHandler 指令,以使 brick 中的事件能夠發(fā)送到帶有該令牌的 Alexa Echo 設(shè)備并被其接受。
打開技能時(shí)出現(xiàn)的另一個(gè)功能是 APL 文檔渲染。我正在使用一個(gè)名為 sequence.json 的 APL 文檔,可以在文檔文件夾中找到它。主要屬性如下所示。
?在 Lego Ev3 Brick 中執(zhí)行 lego.py 程序時(shí),會(huì)初始化所有電機(jī)、傳感器、Ev3 功能和 python 變量。之后是一段簡(jiǎn)短的圖像和一個(gè)顯示機(jī)器人還活著的命令。
創(chuàng)建 show_image 函數(shù)是為了方便在 Ev3 Brick 液晶屏幕上顯示圖像,從圖像文件夾中獲取圖像。
??當(dāng)接收到類型為“findColor”的自定義指令時(shí),顏色將保存在變量中并調(diào)用 findColor 函數(shù)。在此函數(shù)中,機(jī)器人移動(dòng)到顏色線并將 findColorIOn 變量設(shè)置為 True,使代碼執(zhí)行 while 例程以在與上述線程關(guān)聯(lián)的 _find_color 函數(shù)中搜索指定的顏色。機(jī)器人開始沿著顏色線移動(dòng)。如果檢測(cè)到顏色,則電機(jī)停止,并向 Alexa 發(fā)送 FindColor 事件,并在負(fù)載中檢測(cè)到顏色。如果未找到顏色,則發(fā)送相同的事件,但在這種情況下,顏色“無”作為有效負(fù)載。
這是一個(gè)機(jī)器人試圖找到我的孩子超出顏色線的黃色的示例。
?讓我們看一下管理 findColor Intent 的 Lambda nodeJs 代碼。
一旦收到 findColor 意圖,就會(huì)計(jì)算響應(yīng),并構(gòu)建指令類型 findColor 以發(fā)送到小工具。
??讓我們看一些與機(jī)器人運(yùn)動(dòng)相關(guān)的 python 代碼。
機(jī)器人位置和場(chǎng)地中的不同位置使用 X 和 Y 軸值定義。方向是介于 0 和 2*pi 弧度之間的值。機(jī)器人從位置 (1, 1) 和方向 0 開始,這也是起始位置。
一旦到達(dá)那個(gè)新位置,就會(huì)調(diào)用 setPosition 函數(shù)來為下一次移動(dòng)保留新位置。
轉(zhuǎn)彎和移動(dòng)功能考慮了輪子的半徑和機(jī)器人輪子之間的距離。使用一些數(shù)學(xué)方程式可以計(jì)算出電機(jī)必須移動(dòng)的度數(shù)。
setPosition 函數(shù)使用小工具類中定義的內(nèi)部變量來保持機(jī)器人在場(chǎng)地中的最終位置。
關(guān)于負(fù)責(zé) goSomewhere 意圖的 nodeJs 代碼,沒有什么新的可說的。
?讓我們看一下用于這些意圖的特定 python 和 nodeJs 代碼。
當(dāng)武器是槍時(shí),它會(huì)在不離開位置的情況下開火。只是方向發(fā)生了變化。
當(dāng)定義的目標(biāo)是移動(dòng)目標(biāo)時(shí),機(jī)器人必須首先找出目標(biāo)在哪里。在這種情況下,目標(biāo)是紅外傳感器遙控信標(biāo)。機(jī)器人反應(yīng)的信標(biāo)信號(hào)是通道 4 中的信標(biāo)信號(hào)。
函數(shù) facingTarget 計(jì)算信標(biāo)的方向。由于紅外傳感器位于機(jī)器人的后部,因此我們將 pi 弧度與航向返回值相加,轉(zhuǎn)換為弧度。
距離考慮到大約有70cm的紅外范圍,所以紅外傳感器距離函數(shù)給出的值乘以7。
?在這種情況下,呈現(xiàn)的 APL json 文檔是 arrows.json。它是一個(gè)帶有背景圖像的容器和另一個(gè)帶有圍繞箭頭圖像的 TouchWrapper 組件的容器,這些組件發(fā)送以按下箭頭的方向作為參數(shù)的事件。
RemoteControl 和 Touchevent 處理程序調(diào)用 getRemoteControl 和 getClicked 資源函數(shù)來獲取向用戶返回正確響應(yīng)所需的信息,以及發(fā)送到小工具的指令。當(dāng)用戶單擊按鈕時(shí),機(jī)器人位置設(shè)置為“家,甜蜜的家”。
?在以下 python 代碼行中,您可以看到 TouchSensor 類是如何實(shí)例化的,以及管理被按下按鈕的線程是如何創(chuàng)建的以及它是如何工作的。
如果遙控器已被使用,則 remoteControl 變量的值為 True,然后,如果按下按鈕,位置將設(shè)置為主頁(yè),HomeButton 事件將發(fā)送到 Alexa。
?在這里你可以看到一些與紅外遙控器相關(guān)的python代碼。
InfraredSensor 類的一個(gè)實(shí)例被創(chuàng)建并用于定義按下通道 1 和通道 2 中的每個(gè)按鈕時(shí)需要觸發(fā)的內(nèi)容。
這里模擬了您如何使用 FireTV 在電視中看到技能運(yùn)行,但由于該小工具未通過藍(lán)牙連接到 FireTV,因此樂高機(jī)器人沒有提供任何響應(yīng)。
?
-
images文件夾包含從https://sites.google.com/site/ev3devpython/learn_ev3_python/screen/bmp-image-collection 下載的 .bmp 圖像。我們的想法不是展示所有功能的所有代碼,而是解釋其中的一些功能,以便讓關(guān)于如何開發(fā)所有體驗(yàn)的主要想法變得更加清晰。圖片中的代碼被簡(jiǎn)化為最相關(guān)的代碼行,因此只是提供一個(gè)想法,建議在提供的 Github 存儲(chǔ)庫(kù)中查看完整代碼。
- LEGO EV3 Baby Yoda-Alexa控制的EV3機(jī)器人
- 由Mindstorms EV3和Alexa提供支持的LEGO Target Practice
- 由Alexa控制的Lego Mindstorms EV3機(jī)器人
- 使用LEGO MINDSTORMS EV3 Amazon Alexa構(gòu)建的Shelly解決方案
- 基于DSP的自適應(yīng)多通道有源噪聲控制算法 24次下載
- 440Hz窄帶(5Hz)聲控開關(guān)電路 38次下載
- 聲控繼電器驅(qū)動(dòng)電路原理圖免費(fèi)下載 29次下載
- 聲控延時(shí)燈的PCB原理圖免費(fèi)下載 81次下載
- DSP在有源噪聲控制中有怎么樣的應(yīng)用 11次下載
- 基于Lego顏色傳感器的尋線小車程序 204次下載
- 輔導(dǎo)學(xué)生安裝聲控開關(guān)
- sk-6聲控電路
- 聲控電路及制作
- 聲控彩燈電路及制作
- 聲控玩具貓電路及制作
- 聲控燈是如何做到聲控的呢 聲控燈的電路原理解析 1w次閱讀
- 聲控集成電路SK-2構(gòu)成的聲控電子警犬電路 2838次閱讀
- 聲控電路BB一5構(gòu)成的聲控開關(guān)電路 4150次閱讀
- SM401聲控集成塊構(gòu)成的聲控閃光電路 3882次閱讀
- 聲控集成電路SL517構(gòu)成的聲控開關(guān)電路 3957次閱讀
- 聲控燈的電路構(gòu)成及工作原理分析 4.1w次閱讀
- 聲控燈電路中的常見故障有哪些 1.7w次閱讀
- 簡(jiǎn)易聲控延時(shí)燈制作方法 1.5w次閱讀
- 大家的互動(dòng)式聲控機(jī)器人 8975次閱讀
- 居民樓道聲控電路圖(六款聲控電路原理圖詳解) 18.1w次閱讀
- 聲控開關(guān)電路設(shè)計(jì)匯總(八款設(shè)計(jì)電路原理詳解) 10.3w次閱讀
- 簡(jiǎn)易聲控開關(guān)電路圖_三線聲控開關(guān)接線圖_四線聲控開關(guān)怎么接線 12.3w次閱讀
- 基于DSP的聲控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 1384次閱讀
- 報(bào)曉聲控狗電路圖 2312次閱讀
- 聲控報(bào)警電路 3148次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論