先進控制
線性二次型調節器
線性二次型調節器,幾乎總是簡稱為 LQR,是一套用來算出「把系統拉回你想要的位置的唯一最佳方式」的配方,前提是你同時在意兩件互相競爭的事:讓系統緊貼目標,以及別為此花太多力氣。想像在手掌上立一根掃帚柄。你希望柄是豎直的(誤差要小),但你也不想把手揮得亂七八糟(力氣要省)。LQR 會在這兩個願望之間找到精確的平衡——既能糾正、又不至於反應過度的那種最平滑的修正。
它的名字來自兩個詞。「線性」意味著它假設系統在目標附近以一種簡單的、成比例的方式運作——推兩倍的力就得到兩倍的反應——這一點由狀態空間模型來描述,那是一組緊湊的方程式,列出系統的重要數值以及它們如何變化。「二次型」意味著你想壓低的代價是寫成平方項的:誤差的平方加上力氣的平方,各自乘上你自己選的權重。把誤差的權重調大,LQR 就變得激進;把力氣的權重調大,它就變得溫和而「偷懶」。
LQR 的美妙之處在於:對於一個帶二次型代價的線性系統,你根本不必去搜尋或猜測。數學會直接交給你一張固定的數值表,稱為增益,它把當前的誤差直接映射成正確的修正量。機器人只需每個週期把當前狀態乘上這個增益,所得結果在數學上可證明就是最佳的折中。這正是 LQR 成為平衡腿式機器人、穩住無人機、對準相機雲台時首選入門工具的原因。
一台兩輪自平衡機器人讀取自己的傾角和速度,把它們乘上 LQR 增益,再恰好按這個量驅動輪子——以最小、最平滑的馬達用力保持直立。
當前狀態乘以一個固定增益,就得到可證明最佳的修正。
你所選的權重(通常稱為 Q 和 R)是 LQR 中唯一真正需要設計的選項;用 LQR 調一台機器人,主要就是在決定你對誤差和對力氣各懲罰多重。
又稱
另見