只會「輕推」的迴路
想像一台機械臂握著螺絲起子,你讓它的肘關節轉到 90 度。最簡單的實現方式就是 回饋控制:不斷測量關節目前在哪裡,把它和你想要的位置(設定點)相比較,然後朝著縮小差距的方向驅動馬達。這個差距本身就是誤差訊號,整個迴路的任務就是把誤差推向零。
它最常用的版本是 PID 控制。它把對誤差的三種視角糅合在一起:P 項對當前誤差有多大作出反應,I 項記住誤差已經持續了多久,D 項盯著誤差變化有多快。把這三個 比例、積分、微分項 調配起來,就得到一個簡單、便宜、對單個性情溫和的馬達出奇有效的控制器。
有一個值得停下來體會的關鍵點:PID 迴路對它所操縱的機器一無所知。它不知道手臂很重,不知道重力正拉扯著連桿,也不知道甩動肩關節會給肘關節帶來一個側向力。它永遠只看到一個數字——誤差——然後輕推。本指南大部分內容,講的就是當這種「盲目」遇上真實、快速、沉重的運動時會發生什麼。
擊垮樸素迴路的三件事
物理學準確地告訴我們 PID 迴路面對的是什麼。機器人運動方程式 就像一本帳:它說明要產生某個加速度,你必須施加多少 關節力矩。用文字寫出來是:力矩 =(慣量乘加速度)+(與速度相關的耦合)+(重力)。這三塊各自都是擊敗一個無視它們的控制器的方式。
tau = M(q) * q_ddot + C(q, q_dot) * q_dot + g(q) tau joint torques you command M(q) inertia matrix -> changes with the arm's pose q C(...) Coriolis/centrifugal -> couples joint to joint via speed g(q) gravity load -> pulls even when standing still
第一,重力。即使手臂完全靜止,重力也會把連桿往下拉,所以關節僅僅為了保持位置就需要力矩。普通的位置迴路只有在出現誤差時才產生力矩,於是它必須先下垂、累積誤差,然後才往回頂——手臂會下塌,始終差一點搆不到目標。解決辦法有個我們還會再見到的名字:重力補償,一個前饋力矩,在誤差出現之前就把重量托住。
第二,變化的慣量。同一個關節,在手臂收攏時感覺很輕,在手臂伸展時感覺很重——慣量矩陣 M(q) 會隨姿態變化。一組對收攏的手臂既平穩又穩定的 PID 增益,到手臂伸展時可能變得遲鈍、甚至不穩定,因為控制器實際上是在毫不知情地推動一個不同的質量。
第三,關節之間的耦合。當肩關節加速時,它會把側向力甩到肘關節和腕關節上——這就是 科里奧利力與離心力項 C(q, q_dot)。在肘關節的 PID 迴路看來,這些力就像一種神秘的擾動,恰好在機器人快速運動時出現。每個關節的控制器都在打一場它看不見的拔河,而點燃這場拔河的,是其餘每個關節的運動。
核心思想:讓迴路用上模型
這裡有一個整章都圍繞著它展開的關鍵轉折。樸素的 PID 迴路純粹是被動的——它等誤差出現,然後糾正。但我們已經寫出了運動方程式,這意味著我們可以在機器人落後之前,大致預測出它需要多少力矩。基於模型的控制把這個預測當作「搶跑」餵進去,只把小小的殘餘誤差留給回饋迴路去清理。
具體來說,你把運動方程式反過來用:給定你想要的運動,算出它所需的力矩。這個反向計算就是 逆動力學。把它的答案作為前饋項交給馬達,問題中沉重、被重力牽引、相互耦合的那些部分,在變成誤差之前就基本被抵消掉了。留給回饋迴路的,是一個輕盈、近乎線性的系統——正是那種溫和、PID 能大放異彩的情形。
這就是進階機器人控制的統一主題:模型承擔可預測的負擔,回饋處理意外。模型永遠不會完美——質量是估出來的,摩擦雜亂無章,負載還會變化——所以回饋從不退場。但這樣切分工作,就把一個不可能完成的單一迴路,變成了一對易於處理的搭檔:先預測,再糾正。
本章將展開的工具箱
接下來的每一個工具,都是對上面三件麻煩事(以及由它們引出的問題)的不同回答。把下面這份清單當作我們要去往何處的地圖。
- 直接抵消動力學——計算力矩控制 與 回饋線性化 用逆動力學抹去重力、慣量與耦合,留下一個乾淨的線性迴路供你調參。
- 控制機器人「摸起來」如何,而不只是它在哪裡——阻抗控制、導納控制 與 力控制 讓手臂可軟可硬,並在接觸世界時以選定的力去推按。
- 讓取捨達到最優——線性二次型調節器(LQR) 與 模型預測控制(MPC) 選擇在精度與能耗之間權衡的力矩,MPC 甚至會在約束之下向前規劃若干步。
- 在模型不準時也能應付——自適應控制 會針對未知負載自我調整,而 穩健控制 與 滑模控制 即便模型有誤差也保持穩定。
- 找回你測不到的量,並協調全身——狀態觀測器 從帶雜訊的感測器訊號中重建像速度這樣的隱藏量,而 全身控制 在足式或人形機器人上同時兼顧多個目標。
請留意這條主線:幾乎每個工具,要麼用模型把事情做得更好,要麼防範模型並不完美。帶著這副「鏡片」去看,本章餘下的內容就不再像一長串縮寫的遊行,而更像一場圍繞「你該多信任你的模型」的連貫對話。