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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

通過對TinyML領域基礎概念的堅實理解,我們將把我們的知識應用到現實生活中的項目中。nbsp;

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

訪問數據集

模型架構

培訓腳本

量化腳本

評價工具

Arduino代碼

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

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

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

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

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

使用現有資源使用TensorFlow Lite for Microcontrollers訓練ML模型

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

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

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

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

表1.

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

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

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

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

wKgaomY5z2GAa0WMAADUZj2YrR4728.jpg

圖1.

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

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

設置TinyML軟件Arduino納米33 BLE感

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

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

如下圖2所示。

wKgZomY5z2SAZ15CAA59oUUTFB4768.gif

圖2.

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

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

Arduino_TensorFlowLite

哈佛_TinyMLx

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

步驟1:使用TensorFlow Lite訓練機器學習模型

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

Google Colab可以在這里找到。

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

wKgaomY5z2eAOIohABjreAfi1K8099.gif

圖3.

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

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

wKgZomY5z2iAW2lBAACHu8BhatQ404.jpg

圖4

.這是Colab中的一部分,我們在這里定義要訓練的單詞、訓練參數和模型架構

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

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

訓練完成后,您將到達Colab中標記為步驟2的點。這里是量化開始的地方。

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

當完全轉換后,Colab有腳本可用于比較量化和非量化模型之間的準確性。如果一切正常,準確度應該幾乎相同。

步驟3:將機器學習模型部署到Arduino

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

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

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

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

wKgZomY5z2uAdwomAADg8mGeXes569.jpg

圖5.

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

在micro_features_model.CPP文件中,僅復制并粘貼Colab中的十六進制字符,以取代文件中已有的字符。在Colab代碼的最底部,應該有一行寫著unsigned int g_model_len,后面跟著一個數字。最后一件事是從Colab復制這個數字,并將其插入Arduino代碼文件底部當前用于const int g_model_len的數字。

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

wKgaomY5z26ALsvMAAfmw-KeQaM101.gif

圖6.

我們必須改變我們的新單詞的預期類別標簽

步驟4:解釋推理并編寫電機驅動程序代碼

此時,TFLite Micro模型應該按預期運行,現在我們需要驅動電機以響應TinyML推理輸出。為此,我們將修改arduino_command_responder. CPP文件。

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

wKgaomY5z3OAffFDAADbkUsywBw091.jpg

圖7.

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

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

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

wKgZomY5z3WAaeAqAACljt0pTbc919.jpg

圖8.

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

步驟5:構建電機電路-電機驅動器電路

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

wKgaomY5z3eATI6HAACN1CK_4VU391.jpg

圖9.

我們的馬達驅動電路。

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

審核編輯 黃宇

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

    關注

    211

    文章

    28418

    瀏覽量

    207081
  • BLE
    BLE
    +關注

    關注

    12

    文章

    660

    瀏覽量

    59406
  • 語音控制
    +關注

    關注

    5

    文章

    482

    瀏覽量

    28249
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    187054
  • TinyML
    +關注

    關注

    0

    文章

    42

    瀏覽量

    1235
收藏 人收藏

    評論

    相關推薦

    智能語音機器人

    ` 本帖最后由 星希望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 編輯 現在亞馬遜Echo音箱很火爆,根據調研結果,可以機器人上,嵌入式板上集成語音功能,包含了
    發(fā)表于 06-28 09:13

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

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

    超聲波傳感器機器人中的應用

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

    現代機器人中有什么傳感器?

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

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

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

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

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

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

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

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

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

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

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

    淺談兒童陪護機器人

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

    語音合成技術智能機器人中的應用

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

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

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

    語音識別技術智能語音機器人中的應用

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

    步進電機工業(yè)機器人中的應用

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