RM新时代网站-首页

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

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

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

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

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

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

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

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

模型架構(gòu)

培訓(xùn)腳本

量化腳本

評價工具

Arduino代碼

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

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

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

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

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

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

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

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

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

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

表1.

BOM例如TInyML聲控電機項目。整個項目將花費不到30美元。

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

(* 注:所有費用均自2021年9月起計算)

對于這個特定的項目,我從手頭已有的部件中選擇了大部分部件,如圖1所示。

wKgaomY5z2GAa0WMAADUZj2YrR4728.jpg

圖1.

我在這個項目中使用的部件

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

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

要在我們的Arduino Nano 33 BLE Sense上運行TinyML腳本,我們需要安裝一些包和依賴項。如果您的

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

如下圖2所示。

wKgZomY5z2SAZ15CAA59oUUTFB4768.gif

圖2.

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

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

Arduino_TensorFlowLite

哈佛_TinyMLx

完成了這些,我們就可以開始這個項目了!

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

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

Google Colab可以在這里找到。

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

wKgaomY5z2eAOIohABjreAfi1K8099.gif

圖3.

您必須確保在Colab中使用GPU運行時

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

wKgZomY5z2iAW2lBAACHu8BhatQ404.jpg

圖4

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

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

步驟2:量化和評估ML模型

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

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

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

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

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

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

您可能會有點不知所措,因為這段代碼中有很多內(nèi)容;但是,出于本項目的目的,我們不需要關(guān)注其中的大部分內(nèi)容。

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

wKgZomY5z2uAdwomAADg8mGeXes569.jpg

圖5.

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

在micro_features_model.CPP文件中,僅復(fù)制并粘貼Colab中的十六進制字符,以取代文件中已有的字符。在Colab代碼的最底部,應(yīng)該有一行寫著unsigned int g_model_len,后面跟著一個數(shù)字。最后一件事是從Colab復(fù)制這個數(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:解釋推理并編寫電機驅(qū)動程序代碼

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

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

wKgaomY5z3OAffFDAADbkUsywBw091.jpg

圖7.

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

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

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

wKgZomY5z3WAaeAqAACljt0pTbc919.jpg

圖8.

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

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

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

wKgaomY5z3eATI6HAACN1CK_4VU391.jpg

圖9.

我們的馬達驅(qū)動電路。

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

審核編輯 黃宇

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

    關(guān)注

    211

    文章

    28379

    瀏覽量

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

    關(guān)注

    12

    文章

    660

    瀏覽量

    59391
  • 語音控制
    +關(guān)注

    關(guān)注

    5

    文章

    482

    瀏覽量

    28248
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

    186948
  • TinyML
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    1225
收藏 人收藏

    評論

    相關(guān)推薦

    智能語音機器人

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

    機器人語音需求

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    淺談兒童陪護機器人

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

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

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

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

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

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

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

    PID控制在機器人中的應(yīng)用案例

    PID控制作為一種經(jīng)典的控制策略,因其簡單、魯棒和易于實現(xiàn)的特點,機器人領(lǐng)域得到了廣泛的應(yīng)用。以下是一些PID控制在
    的頭像 發(fā)表于 11-13 14:42 ?501次閱讀
    RM新时代网站-首页