精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TinyML在機(jī)器人中的應(yīng)用——?jiǎng)?chuàng)建語(yǔ)音控制機(jī)器人子系統(tǒng)

eeDesigner ? 來源:11 ? 作者:111 ? 2024-05-07 14:51 ? 次閱讀

通過對(duì)TinyML領(lǐng)域基礎(chǔ)概念的堅(jiān)實(shí)理解,我們將把我們的知識(shí)應(yīng)用到現(xiàn)實(shí)生活中的項(xiàng)目中。nbsp;

在深入研究這個(gè)項(xiàng)目之前,我想說明一下,這個(gè)項(xiàng)目將使用現(xiàn)有的數(shù)據(jù)集,Google Colabs和由Pete Warden和哈佛大學(xué)TinyML團(tuán)隊(duì)開發(fā)的Arduino代碼。為了在我們的微控制器單元(MCU)上部署,他們的資源將為我們提供:

訪問數(shù)據(jù)集

模型架構(gòu)

培訓(xùn)腳本

量化腳本

評(píng)價(jià)工具

Arduino代碼

作為免責(zé)聲明,我們沒有開發(fā)絕大多數(shù)代碼,我們不擁有它的權(quán)利。nbsp;

所有的說和做,這個(gè)項(xiàng)目假設(shè)編程電子的基本理解。

TinyML項(xiàng)目-構(gòu)建語(yǔ)音命令機(jī)器人子系統(tǒng)

在這個(gè)項(xiàng)目中,我們將構(gòu)建一個(gè)簡(jiǎn)單的機(jī)器人子系統(tǒng),使用機(jī)器學(xué)習(xí)來響應(yīng)語(yǔ)音命令。微控制器將收集來自麥克風(fēng)的輸入,使用ML來監(jiān)聽喚醒詞,如“向前”和“向后”,然后在命令的方向上驅(qū)動(dòng)一個(gè)小型直流電機(jī)

由于已經(jīng)有很多關(guān)于用微控制器控制電機(jī)的好信息,本文將主要集中在演示如何:

使用現(xiàn)有資源使用TensorFlow Lite for Microcontrollers訓(xùn)練ML模型

量化并將模型部署到Arduino Nano 33 BLE Sense

在Arduino上運(yùn)行本地推理,并讓它控制由標(biāo)準(zhǔn)電池電源(AA或9 V)供電的電機(jī)

帶聲控電機(jī)的TinyML機(jī)器人子系統(tǒng)的BOM

在下面的表1中,您將找到此項(xiàng)目的物料清單(BOM)。

表1.

BOM例如TInyML聲控電機(jī)項(xiàng)目。整個(gè)項(xiàng)目將花費(fèi)不到30美元。

部分 例如 費(fèi)用 * 美元 注意到
Arduino Nano 33 BLE Sense 鏈路 二十二塊五 這是一個(gè)標(biāo)準(zhǔn)的TinyML開發(fā)設(shè)備。
L293D Dual
H-Bridge Motor Driver
鏈路 四元五角 我用這個(gè)IC,因?yàn)槲乙呀?jīng)有它躺在周圍。在您的項(xiàng)目中,這可以由您選擇的H橋代替。
直流電機(jī)L 鏈路 一塊九毛五 我使用的是Elegoo Uno R3入門套件中的直流電機(jī)。任何便宜的5 VDC電機(jī)將為這個(gè)項(xiàng)目工作。
3x 1k電阻器 0.30美元
4x AA電池和連接器 鏈路 0.58美元 這個(gè)項(xiàng)目的輸入電壓范圍可以從4.5到21 V。在我的項(xiàng)目中,我使用了4節(jié)AA電池(~6 V),因?yàn)槲矣兴鼈儯谶@個(gè)范圍內(nèi)的9V或其他電源將工作。

(* 注:所有費(fèi)用均自2021年9月起計(jì)算)

對(duì)于這個(gè)特定的項(xiàng)目,我從手頭已有的部件中選擇了大部分部件,如圖1所示。

wKgaomY5z2GAa0WMAADUZj2YrR4728.jpg

圖1.

我在這個(gè)項(xiàng)目中使用的部件

在這個(gè)項(xiàng)目中,你將有很大的自由選擇其他類似的部分來復(fù)制這個(gè)項(xiàng)目。nbsp;

設(shè)置TinyML軟件Arduino納米33 BLE感

要在我們的Arduino Nano 33 BLE Sense上運(yùn)行TinyML腳本,我們需要安裝一些包和依賴項(xiàng)。如果您的

安裝完成后,我們需要安裝Arduino Nano 33 BLE Sense的板文件。要執(zhí)行此操作,請(qǐng)從IDE中轉(zhuǎn)到Tools → Board → Boards Manager。在這里,搜索“mbed nano”并安裝“Arduino Mbed OS Nano Boards.“

如下圖2所示。

wKgZomY5z2SAZ15CAA59oUUTFB4768.gif

圖2.

我們需要安裝Nano 33 BLE Sense的板文件

在此之后,我們需要安裝此項(xiàng)目所需的庫(kù)。要執(zhí)行此操作,請(qǐng)轉(zhuǎn)到工具→管理庫(kù)。從那里,搜索并下載以下庫(kù):

Arduino_TensorFlowLite

哈佛_TinyMLx

完成了這些,我們就可以開始這個(gè)項(xiàng)目了!

步驟1:使用TensorFlow Lite訓(xùn)練機(jī)器學(xué)習(xí)模型

一般來說,ML工作流將從收集和標(biāo)記數(shù)據(jù)集開始開始,然后從頭開始設(shè)計(jì)模型架構(gòu)。為了時(shí)間和簡(jiǎn)單起見,我們將通過利用一些現(xiàn)成的數(shù)據(jù)集和預(yù)先訓(xùn)練的關(guān)鍵字識(shí)別模型來“作弊”,這兩個(gè)模型都是由Pete Warden開發(fā)的。為了利用這些資源并訓(xùn)練我們的模型,我們將使用哈佛大學(xué)TinyML團(tuán)隊(duì)開發(fā)的Google Colab中的腳本。nbsp;

Google Colab可以在這里找到。

首先,確保您在Colab中使用圖形處理單元(GPU)運(yùn)行時(shí)(如圖3所示),因?yàn)檫@將顯著加快訓(xùn)練時(shí)間。一旦你這樣做了,所有的代碼都可以按原樣使用了。nbsp;只需點(diǎn)擊每個(gè)單元格左上角的黑色"運(yùn)行"按鈕,按順序運(yùn)行每個(gè)單元格。& nbsp;

wKgaomY5z2eAOIohABjreAfi1K8099.gif

圖3.

您必須確保在Colab中使用GPU運(yùn)行時(shí)

我們使用的模型架構(gòu)是tiny_conv,我們將總共訓(xùn)練15,000步。前12,000個(gè)將使用0.001的學(xué)習(xí)率,最后3,000個(gè)將使用0.0001的學(xué)習(xí)率。此外,我們還將訓(xùn)練模型來理解“forwards”和“backwards”這兩個(gè)詞,Warden的關(guān)鍵字定位(KWS)數(shù)據(jù)集已經(jīng)包含了這兩個(gè)詞。這可以在圖4中看到。

wKgZomY5z2iAW2lBAACHu8BhatQ404.jpg

圖4

.這是Colab中的一部分,我們?cè)谶@里定義要訓(xùn)練的單詞、訓(xùn)練參數(shù)和模型架構(gòu)

請(qǐng)記住,培訓(xùn)可能需要幾個(gè)小時(shí)才能完成,因此請(qǐng)確保您的計(jì)算機(jī)已插入電源,并且您的互聯(lián)網(wǎng)連接穩(wěn)定。

步驟2:量化和評(píng)估ML模型

訓(xùn)練完成后,您將到達(dá)Colab中標(biāo)記為步驟2的點(diǎn)。這里是量化開始的地方。

首先,我們凍結(jié)我們的模型,這是將所有相關(guān)的訓(xùn)練結(jié)果(圖,權(quán)重等)組合到一個(gè)文件中進(jìn)行推理的過程。一旦我們有了一個(gè)凍結(jié)的模型,我們將把模型轉(zhuǎn)換成一個(gè)TFLite模型。哈佛建立的腳本使這個(gè)過程相對(duì)容易,輸出的TFLite模型應(yīng)該是完全量化的。最終的模型大小應(yīng)該在20 kB以下。

當(dāng)完全轉(zhuǎn)換后,Colab有腳本可用于比較量化和非量化模型之間的準(zhǔn)確性。如果一切正常,準(zhǔn)確度應(yīng)該幾乎相同。

步驟3:將機(jī)器學(xué)習(xí)模型部署到Arduino

在繼續(xù)之前,我想讓你知道你可以在這里找到我的完整代碼作為參考。

一旦我們有了一個(gè)完全量化和轉(zhuǎn)換的TensorFlow Lite模型,我們需要將其部署到Arduino。我們將修改哈佛預(yù)先存在的micro_speech示例,您可以在Arduino IDE中找到:文件→示例→不兼容→哈佛_TinyMLx → micro_speech。nbsp;

您可能會(huì)有點(diǎn)不知所措,因?yàn)檫@段代碼中有很多內(nèi)容;但是,出于本項(xiàng)目的目的,我們不需要關(guān)注其中的大部分內(nèi)容。

首先,我們必須輸入新的TFLite Micro模型來代替當(dāng)前在micro_speech示例中使用的模型。nbsp;在Colab的最后一個(gè)單元格中,我們應(yīng)該輸出一個(gè)十六進(jìn)制字符的大矩陣,如圖5所示。這是我們的TensorFlow Lite for Microcontrollers模型,將用于我們的Arduino代碼。nbsp;

wKgZomY5z2uAdwomAADg8mGeXes569.jpg

圖5.

Google Colab輸出的TensorFlow Lite Micro模型片段

在micro_features_model.CPP文件中,僅復(fù)制并粘貼Colab中的十六進(jìn)制字符,以取代文件中已有的字符。在Colab代碼的最底部,應(yīng)該有一行寫著unsigned int g_model_len,后面跟著一個(gè)數(shù)字。最后一件事是從Colab復(fù)制這個(gè)數(shù)字,并將其插入Arduino代碼文件底部當(dāng)前用于const int g_model_len的數(shù)字。

在此之后,與模型相關(guān)的唯一更改是在micro_features_micro_model_settings.CPP文件中。如圖6所示,將類別標(biāo)簽"yes"和"no"更改為"forwards"和"backward"。確保你不碰"沉默"或"未知"的標(biāo)簽。

wKgaomY5z26ALsvMAAfmw-KeQaM101.gif

圖6.

我們必須改變我們的新單詞的預(yù)期類別標(biāo)簽

步驟4:解釋推理并編寫電機(jī)驅(qū)動(dòng)程序代碼

此時(shí),TFLite Micro模型應(yīng)該按預(yù)期運(yùn)行,現(xiàn)在我們需要驅(qū)動(dòng)電機(jī)以響應(yīng)TinyML推理輸出。為此,我們將修改arduino_command_responder. CPP文件。

如圖7所示,在文件的頂部,我們將添加幾個(gè)#define語(yǔ)句來定義Arduino上的哪些引腳將連接到電機(jī)驅(qū)動(dòng)器上的哪些引腳。對(duì)于我們的項(xiàng)目,我們將使用D2作為ENABLE信號(hào),D3作為Driver1A輸入,D4作為Driver2A輸入。請(qǐng)確保還將這些引腳設(shè)置為RespondToCommand()函數(shù)中的pinMode()函數(shù)的輸出。

wKgaomY5z3OAffFDAADbkUsywBw091.jpg

圖7.

我們需要定義引腳,將其設(shè)置為輸出,并編寫簡(jiǎn)單的motorCTRL函數(shù)。

從那里我們可以定義我們的運(yùn)動(dòng)控制功能。這個(gè)函數(shù)接受一個(gè)速度(我們不會(huì)為了這個(gè)項(xiàng)目的目的而改變它),以及一個(gè)Driver1A和Driver2A的邏輯值。基本上,如果驅(qū)動(dòng)程序1A是高,驅(qū)動(dòng)程序2A是低,電機(jī)將在一個(gè)方向旋轉(zhuǎn)。如果反過來,我們的馬達(dá)就會(huì)朝相反的方向旋轉(zhuǎn)。

現(xiàn)在剩下的唯一事情就是更改代碼中已經(jīng)存在的命令響應(yīng)。如圖8所示,我們將更改命令響應(yīng),以便如果找到的命令的第一個(gè)字符是"f"(即找到的命令是"Forward"),它將使電機(jī)向前旋轉(zhuǎn)。我們對(duì)"后退"命令執(zhí)行相同的操作。

wKgZomY5z3WAaeAqAACljt0pTbc919.jpg

圖8.

我們將根據(jù)ML模型找到的命令控制電機(jī)向前或向后移動(dòng)。

步驟5:構(gòu)建電機(jī)電路-電機(jī)驅(qū)動(dòng)器電路

有了所有的軟件的方式,我們現(xiàn)在可以建立我們的電機(jī)驅(qū)動(dòng)器電路。上面列出了BOM,示意圖如下圖9所示。

wKgaomY5z3eATI6HAACN1CK_4VU391.jpg

圖9.

我們的馬達(dá)驅(qū)動(dòng)電路

我們使用4.5到21 V的電壓源為Arduino和L293D供電。接線中的D4連接到電機(jī)驅(qū)動(dòng)器2A輸入端,D3連接到電機(jī)驅(qū)動(dòng)器1A輸入端,D2連接到EN 1,2。我們?cè)诿總€(gè)信號(hào)上都有一個(gè)1 k Ω下拉電阻,以確保始終定義我們的狀態(tài),為了安全起見,我們還有一個(gè)0.1 μ F電容用于去耦。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    210

    文章

    28231

    瀏覽量

    206614
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    653

    瀏覽量

    59345
  • 語(yǔ)音控制
    +關(guān)注

    關(guān)注

    5

    文章

    481

    瀏覽量

    28233
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6464

    瀏覽量

    186676
  • TinyML
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    1220
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    智能語(yǔ)音機(jī)器人

    ` 本帖最后由 星希望532 于 2015-12-2 20:06 編輯 作品名稱:基于微型操作系統(tǒng)的智能多平臺(tái)控制語(yǔ)音機(jī)器人http://v.youku.com/v_show
    發(fā)表于 12-02 19:08

    機(jī)器人語(yǔ)音需求

    本帖最后由 NAO語(yǔ)音外包 于 2017-6-28 09:19 編輯 現(xiàn)在亞馬遜Echo音箱很火爆,根據(jù)調(diào)研結(jié)果,可以機(jī)器人上,嵌入式板上集成語(yǔ)音功能,包含了
    發(fā)表于 06-28 09:13

    嵌入式系統(tǒng)機(jī)器人中的應(yīng)用

    10億美金的技術(shù)高度密集移動(dòng)機(jī)器人,采用的是VxWorks 操作系統(tǒng),它可以不與地球聯(lián)系的情況下自主工作。下面從運(yùn)動(dòng)控制系統(tǒng)、遠(yuǎn)程控制、視
    發(fā)表于 07-06 11:08

    超聲波傳感器機(jī)器人中的應(yīng)用

    做到實(shí)時(shí)控制,并且測(cè)量精度方面能達(dá)到工業(yè)實(shí)用的要求,因此移動(dòng)機(jī)器人的研制上也得到了廣泛的應(yīng)用。為了使移動(dòng)機(jī)器人能自動(dòng)避障行走,就必須裝備
    發(fā)表于 08-09 15:19

    現(xiàn)代機(jī)器人中有什么傳感器?

    控制和通信 IC 的發(fā)展實(shí)現(xiàn)下一代的機(jī)器人中起到重要作用。然而,這些復(fù)雜的現(xiàn)代機(jī)器人的核心是許多新的、小型化和低成本的傳感技術(shù)的出現(xiàn)與融合。對(duì)實(shí)現(xiàn)下一代
    發(fā)表于 07-31 07:46

    怎么設(shè)計(jì)基于DSP和FPGA的機(jī)器人聲控系統(tǒng)

    機(jī)器人聽覺系統(tǒng)主要是對(duì)人的聲音進(jìn)行語(yǔ)音識(shí)別并做出判斷,然后輸出相應(yīng)的動(dòng)作指令控制頭部和手臂的動(dòng)作,傳統(tǒng)的機(jī)器人聽覺
    發(fā)表于 08-21 07:51

    怎么設(shè)計(jì)基于DSP和FPGA的機(jī)器人聲控系統(tǒng)

    機(jī)器人聽覺系統(tǒng)主要是對(duì)人的聲音進(jìn)行語(yǔ)音識(shí)別并做出判斷,然后輸出相應(yīng)的動(dòng)作指令控制頭部和手臂的動(dòng)作,傳統(tǒng)的機(jī)器人聽覺
    發(fā)表于 08-30 08:23

    服務(wù)機(jī)器人的視覺系統(tǒng)怎么設(shè)計(jì)?

    隨著計(jì)算機(jī)科學(xué)和自動(dòng)控制技術(shù)的發(fā)展,越來越多的不同種類的智能機(jī)器人出現(xiàn)在工廠、生活當(dāng)中,機(jī)器人視覺系統(tǒng)作為智能機(jī)器人
    發(fā)表于 04-07 07:27

    工業(yè)機(jī)器人中面對(duì)的控制問題是什么

    剛開始接觸機(jī)器人的時(shí)候,我師兄的機(jī)器人代碼里死活找不到有關(guān)控制計(jì)算的函數(shù),作為常年和控制框圖打交道的我,很是疑惑
    發(fā)表于 06-28 09:29

    工業(yè)機(jī)器人中有哪些控制問題

    工業(yè)機(jī)器人中的伺服驅(qū)動(dòng)的目的是什么?工業(yè)機(jī)器人中的關(guān)節(jié)內(nèi)部驅(qū)動(dòng)結(jié)構(gòu)是怎樣構(gòu)成的?
    發(fā)表于 10-11 08:37

    淺談兒童陪護(hù)機(jī)器人

    兒童陪護(hù)機(jī)器人中得到了廣泛應(yīng)用。 兒童陪護(hù)機(jī)器人中,步進(jìn)電機(jī)芯片主要用于轉(zhuǎn)動(dòng)控制。在此過程中,控制器通過對(duì)步進(jìn)電機(jī)芯片輸出的脈沖信號(hào)進(jìn)行
    發(fā)表于 05-11 15:12

    語(yǔ)音合成技術(shù)智能機(jī)器人中的應(yīng)用

    語(yǔ)音合成技術(shù)智能機(jī)器人中的應(yīng)用!資料來源網(wǎng)絡(luò),如有侵權(quán),敬請(qǐng)?jiān)彛?/div>
    發(fā)表于 12-25 09:51 ?8次下載

    機(jī)器人設(shè)計(jì)教程之機(jī)器人控制和決策子系統(tǒng)

    本文檔的主要內(nèi)容詳細(xì)介紹的是機(jī)器人設(shè)計(jì)教程之機(jī)器人控制和決策子系統(tǒng)。主要內(nèi)容包括了:機(jī)器人典型控制
    發(fā)表于 12-25 11:40 ?25次下載
    <b class='flag-5'>機(jī)器人</b>設(shè)計(jì)教程之<b class='flag-5'>機(jī)器人</b><b class='flag-5'>控制</b>和決策<b class='flag-5'>子系統(tǒng)</b>

    語(yǔ)音識(shí)別技術(shù)智能語(yǔ)音機(jī)器人中的應(yīng)用

    語(yǔ)音識(shí)別技術(shù)智能語(yǔ)音機(jī)器人中的應(yīng)用,一般語(yǔ)音機(jī)器人的設(shè)計(jì)開發(fā)主要著眼于“能聽會(huì)說”,力圖利用
    的頭像 發(fā)表于 06-12 11:24 ?5489次閱讀

    步進(jìn)電機(jī)工業(yè)機(jī)器人中的應(yīng)用

    類型,工業(yè)機(jī)器人中發(fā)揮著至關(guān)重要的作用。本文將從步進(jìn)電機(jī)的定義、特點(diǎn)出發(fā),詳細(xì)探討其工業(yè)機(jī)器人中的應(yīng)用,并結(jié)合相關(guān)案例進(jìn)行分析,以期為工業(yè)機(jī)器人
    的頭像 發(fā)表于 06-17 10:10 ?700次閱讀