基于Segbot動(dòng)態(tài)模型如何實(shí)現(xiàn)控制器設(shè)計(jì)和軌跡跟蹤
掃描二維碼
隨時(shí)隨地手機(jī)看文章
去年,一個(gè)ME 461小組的Segbot項(xiàng)目專注于自適應(yīng)平衡,并沒有明確使用Segbot動(dòng)態(tài)的完整模型;這個(gè)項(xiàng)目的目標(biāo)是基于模型的控制器設(shè)計(jì)和軌跡跟蹤,以及自平衡。我們推導(dǎo)出Segbot的動(dòng)態(tài)模型,對(duì)其進(jìn)行線性化,并支持游戲控制器的實(shí)時(shí)控制。
LQR控制器提供了比同類手動(dòng)調(diào)諧PID控制器更強(qiáng)的魯棒性保證,并確保無限增益裕度和至少60度相位裕度。此外,L1控制器有助于自動(dòng)補(bǔ)償未建模的動(dòng)力學(xué)和干擾的影響,例如不平坦的地形、質(zhì)量變化和質(zhì)心的移動(dòng)。首先,我們想推導(dǎo)出Segbot的動(dòng)態(tài)模型。由于Segbot的不對(duì)稱結(jié)構(gòu)和復(fù)雜的幾何形狀,我們通過實(shí)驗(yàn)測(cè)量了關(guān)鍵參數(shù)。特別地,我們通過基于鐘擺的測(cè)量來估計(jì)轉(zhuǎn)動(dòng)慣量。我們還通過直流電機(jī)模型測(cè)量了電機(jī)電壓與車輪輸出轉(zhuǎn)矩之間的關(guān)系。在我們的模型中測(cè)量Segbot的基本參數(shù)后,我們得到了它的非線性動(dòng)力學(xué)。從那里,我們線性化了關(guān)于直立平衡的模型,產(chǎn)生了Segbot動(dòng)力學(xué)的連續(xù)時(shí)間狀態(tài)空間表示,這將用于以下部分的控制設(shè)計(jì)。
然后,我們擴(kuò)展了LabVIEW框架,以支持使用游戲控制器(有線或無線)進(jìn)行實(shí)時(shí)控制。操縱桿運(yùn)動(dòng)和按鍵的用戶輸入通過Windows API捕獲,并映射到高級(jí)Segbot命令,從而實(shí)現(xiàn)對(duì)機(jī)器人行為的直觀手動(dòng)控制。該界面允許用戶在實(shí)驗(yàn)過程中交互式地命令Segbot,并便于在用戶指定的輸入下測(cè)試平衡和軌跡跟蹤。
在我們的最終系統(tǒng)中,Segbot在不平坦的地形、質(zhì)量變化和質(zhì)心變化的條件下表現(xiàn)出了更大的穩(wěn)定性。我們?cè)O(shè)置了不同高度的木板來制造不平坦的地形,Segbot通過這些木板而不會(huì)翻倒。我們還在Segbot運(yùn)行過程中不斷添加電池(而不是一開始就添加電池),Segbot沒有翻轉(zhuǎn)或崩潰。
傳感器和執(zhí)行器
算法(L1 +等)
Segbot被建模為一個(gè)欠驅(qū)動(dòng)的兩輪倒立擺,其中:
1)線性化模型用于控制設(shè)計(jì)
線性化關(guān)于直立(零)平衡的segbot動(dòng)力學(xué):
狀態(tài)和輸入:
η = [x, x_dot, θ, θ_dot, ψ, ψ_dot]^T
u = [T_L, T_R]^T
線性狀態(tài)空間形式:
η_dot = A η + B u,其中A和B是基于隔離機(jī)器人物理參數(shù)的矩陣值
2)積分LQR基線(軌跡跟蹤)
定義跟蹤誤差積分狀態(tài):
Z_dot = η?η_ref
增廣狀態(tài):
X_aug = [z;η)
等方面目標(biāo):
J =∫(x_aug^ tq x_aug + u^ tr u) dt
LQR反饋律(連續(xù)時(shí)間):
u_LQR =?K x_aug
在代碼中,這被實(shí)現(xiàn)為兩個(gè)增益行(每個(gè)車輪一個(gè)):
u_b_left = -K_left·x
u_b_right = -K_right·x
控制器狀態(tài)直接由板載傳感+集成商構(gòu)建,例如:
傾斜度和傾斜率來自IMU處理(卡爾曼估計(jì)+短平均),車輪編碼器給出速度和車輪差(轉(zhuǎn)向),積分狀態(tài)累積跟蹤誤差以獲得更好的穩(wěn)態(tài)跟蹤。
代碼使用梯形積分的積分狀態(tài):
I[k] = I[k-1] + Ts * (e[k-1] + e[k]) / 2
增益K來自于最小化
J =∫(x^ tq x + u^ tr u) dt
從代數(shù)里卡第方程解得到K。
3) L1自適應(yīng)增強(qiáng)(擾動(dòng)魯棒性)
模型擾動(dòng)/不確定性:
η_dot = A η + B u + B σ(t)
完全控制:
u = u_LQR + u_L1
核心L1思想:在保持魯棒性的同時(shí)允許快速適應(yīng)
u_L1(s) =?C(s) σ_hat(s)
發(fā)送給電機(jī)的總命令:
u_left = u_b_left + u_L1_left
u_right = u_b_right + u_L1_right
狀態(tài)預(yù)測(cè)器(離散時(shí)間更新每個(gè)樣本):
x_hat[k] = x_hat[k-1] + Ts * x_hat_dot[k-1]
帶有以下形式的預(yù)測(cè)導(dǎo)數(shù):
x_hat_dot = A x + Bm (x_b + u_L1 + sigma_m_hat) + Bum sigma_um_hat + Ae (x_hat - x)
不確定性估計(jì)(來自預(yù)測(cè)誤差):
x_x = x_hat - x
sigma_hat = G * x_tilde
分為“匹配”(影響輸入通道)和“不匹配”部分:
Sigma_m_hat = sigma_hat的前兩個(gè)分量
sigma_um_hat =剩余組件(通過B_um映射)
帶低通濾波器的帶寬限制自適應(yīng)控制
u_L1 [k] = -(α* u_L1 (k - 1) +(1 -α)* sigma_m_hat [k])
= exp(- * Ts)
這種低通濾波使快速估計(jì)和濾波控制動(dòng)作能夠保持魯棒性裕度。
本文編譯自hackster.io





