古典控制

開迴路控制與閉迴路控制

這是機器執行命令的兩種最基本方式。開迴路控制就是「盲發命令」:你把指令發出去,然後乾脆相信它能成,從不檢查結果。閉迴路控制則是去測量實際發生了什麼,再把這個測量結果回饋回來調整命令,直到現實與目標相符為止。最鮮明的對比就是用兩種方式烤麵包——定個時間然後走開(開迴路:麵包可能沒烤上色,也可能烤焦了,你要事後才知道),相對的是站在旁邊盯著麵包、一變金黃就立刻把它取出來(閉迴路)。

開迴路更簡單、更便宜、也更快,因為它不需要感測器、也從不自我懷疑——微波爐轉九十秒、灑水器按鐘點噴水、步進馬達被命令正好走兩百步。只要世界完全按照假設的樣子運行,它就能幹得漂亮。但它根本不知道自己什麼時候出了錯:如果食物本來是凍的、土壤其實已經濕了、或者馬達打滑了,開迴路系統照樣興高采烈地一路運行下去,最後給出一個糟糕的結果,因為那條從輸出回到輸入的「迴路」被留成了開口、斷掉了。

閉迴路代價更高——它需要感測器、需要做比較、還需要仔細整定——但它用這份代價換來了在混亂多變的世界裡依然保持準確的能力。「迴路」這個字指的是資訊繞的那個圈:命令發出去,感測器讀取結果,這個讀數再回流過來、重塑下一條命令,把圈合上。幾乎每一台必須精確或必須安全的機器人都跑閉迴路;而開迴路只在任務廉價、可預測、且出點錯也無所謂的地方才能存活。

一台老式擺鐘跑的是開迴路——它只按自己的節律不停擺動,從不核對真正的時間——所以會慢慢走偏;而一部會重新和授時伺服器同步的手機跑的是閉迴路,因此始終精準。

不核對就會慢慢漂移;核對並糾正才能始終如實。

許多真實機器其實兩者都用:用一個快速的開迴路估計把你大致帶到目標附近,再用一個較慢的閉迴路修正去清除剩下的誤差——這叫做前饋加回饋。

又稱
open loopclosed loop开环与闭环開迴路與閉迴路