2024-07-31 |Annabel Ng
在該項目的[上一篇博客文章]中,我介紹了運行機器人電機、處理音頻信號和調(diào)節(jié)電壓所需的電路的基礎(chǔ)知識。然而,機器人還沒有完全完成!盡管機器人可以正確移動輪子并識別音頻信號,但它仍然無法通過語音命令控制或按預(yù)定義路徑行駛。
線性控制模型
首先要解決的問題是實現(xiàn)直線驅(qū)動。為此,我們使用線性模型來控制提供給車輪的電壓。使用線性模型適合對汽車系統(tǒng)進行建模,因為線性系統(tǒng)更容易分析,并且我們可以通過找到具有近似線性行為的工作點來估計真實系統(tǒng)。對于我們的每個車輪,我們使用以下模型,其中 v 代表速度,d 代表編碼器測量的刻度數(shù),u 代表 PWM 信號傳遞的電壓,theta 代表輸入電壓的變化以改變速度變化,beta 代表一些常數(shù)。
為了測試不同的數(shù)據(jù)收集速度,我們改變了脈寬調(diào)制信號 (PWM) 的占空比,這些信號是具有可變“開啟”時間的方波。這些占空比代表信號所花費的時間百分比,使我們能夠控制 PWM 信號的平均電壓。這對于電機等系統(tǒng)特別有用,您可以[在此處]閱讀有關(guān) PWM 周期的更多信息!例如,占空比為 0.75 的 5V 信號會產(chǎn)生 3.75V 的平均電壓,因此通過循環(huán)不同的占空比,我們可以輕松測試不同特定電壓對汽車速度的影響。
最小二乘法
為了選擇直線驅(qū)動機器人的運行速度,我們首先收集 50 到 250 個 PWM 周期的一些粗輪速度數(shù)據(jù),然后查看數(shù)據(jù)圖表以觀察數(shù)據(jù)的近似線性范圍。確定特定的 PWM 范圍后,我們重新運行數(shù)據(jù)收集并對左右車輪速度應(yīng)用最小二乘模型。最小二乘法的工作原理是找到一個線性方程,最小化到給定數(shù)據(jù)點的平方距離。這種最小二乘模型使我們能夠控制輸入 PWM 電壓,從而線性控制速度。
閉環(huán)反饋
然而,最小二乘法是一個開環(huán)系統(tǒng),這意味著它不會響應(yīng)外部反饋。這種開環(huán)系統(tǒng)使機器人沿圓周行駛,而不是沿所需的直線行駛。一旦我們將反饋變量納入系統(tǒng)中,使其成為閉環(huán)系統(tǒng),兩個車輪就會以相等的速度驅(qū)動,從而使汽車直線行駛。我們的閉環(huán)系統(tǒng)必須是穩(wěn)定的,這意味著系統(tǒng)特征值的大小必須小于 1。最后,為了實現(xiàn)轉(zhuǎn)彎,我們必須采用圓弧的幾何形狀,并考慮到左圓弧之間行駛距離的差異。和右輪。
現(xiàn)在我們的機器人可以直行并左右轉(zhuǎn)彎,下一步就是建立語音分類模型。由于不同的單詞有不同的波形,我們選擇了 4 個具有不同音節(jié)和聲音的單詞,以產(chǎn)生不同的波形。我們使用機器人上的麥克風(fēng)將每個單詞錄制 50 次,預(yù)處理數(shù)據(jù),然后將數(shù)據(jù)分成訓(xùn)練和測試部分。我們通過垂直堆疊數(shù)據(jù)、貶低數(shù)據(jù)并對該數(shù)據(jù)進行奇異值分解(SVD)來構(gòu)建矩陣。
這是分解任意矩陣的 SVD 方程:
對數(shù)據(jù)進行 SVD 使我們能夠找到數(shù)據(jù)的“本質(zhì)”,或者從頭開始重建數(shù)據(jù)最重要的數(shù)據(jù)。我們可以通過選擇前 3 個主成分作為新的矩陣基礎(chǔ)來找到這些重要成分。將數(shù)據(jù)投影到這個新的基礎(chǔ)上后,數(shù)據(jù)分裂成不同的簇,使我們能夠找到每個簇的中心,也稱為質(zhì)心。然后,我們使用這些質(zhì)心對我們的測試點進行分類:分類的工作原理是找到從測試點到質(zhì)心的歐幾里得距離并將其與閾值進行比較 - 如果距離小于閾值,則該點將被分類為相同的點類作為該特定質(zhì)心。一旦我們有了很強的模型準(zhǔn)確性,我們就在 Arduino 上使用這個模型來測試實時分類。
這是我們選擇的四個單詞的簇的圖像:狗、拉布拉多、柯基犬、汽油。這些簇非常不同且分離,因此可以輕松創(chuàng)建基于歐幾里德距離的準(zhǔn)確分類模型。
當(dāng)機器人能夠成功地直線行駛、轉(zhuǎn)向不同方向以及對語音命令進行分類之后,就到了將所有內(nèi)容組合在一起的時候了。集成涉及將運動命令添加到分類程序中,因此如果 Arduino 將某個詞分類為“直”,則相應(yīng)的運動將是直行。經(jīng)過大量測試和調(diào)整響度和歐幾里德閾值,我們的機器人終于工作了!這是整個學(xué)期學(xué)習(xí)電路、控制系統(tǒng)和 PCA 的成果,看到它的實際應(yīng)用真是太酷了。
這是完成的機器人的圖像!
如果我再次做這個項目,我會嘗試以更高層次的視角來研究它,而不是總是試圖關(guān)注較小的細節(jié)。有時,我太沉迷于實際構(gòu)建電路或編碼算法,以至于忘記了電路在大局中的作用,直到最后我才對所有組件有了更好的欣賞。進入了這個項目。有幾周我還害怕實驗室,因為我知道這需要實驗室的整整三個小時甚至更多,但我會提醒自己最終產(chǎn)品,并且我非常感激有機會將我所學(xué)到的知識應(yīng)用到這個項目中!
特別感謝我的實驗室合作伙伴 Eric Wen(他也是加州大學(xué)伯克利分校 EECS 的學(xué)生),以及使學(xué)習(xí)所有這些內(nèi)容成為可能的課程工作人員!所有數(shù)據(jù)均來自官方網(wǎng)站[https://www.eecs16b.org/]。
審核編輯 黃宇
-
機器人
+關(guān)注
關(guān)注
210文章
28078瀏覽量
205776 -
PWM
+關(guān)注
關(guān)注
114文章
5115瀏覽量
213116 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8343瀏覽量
132286 -
語音控制
+關(guān)注
關(guān)注
5文章
481瀏覽量
28211 -
線性模型
+關(guān)注
關(guān)注
0文章
9瀏覽量
7797
發(fā)布評論請先 登錄
相關(guān)推薦
評論