JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

感知—規劃—行動迴圈

從掃地機器人到火星車,每個機器人每秒都要把同一個三拍迴圈跑很多遍。下面看看它是怎麼運作的。

三拍,一隻杯子

讓一個機器人去拿杯子,在那一個流暢動作的底下,是一個有三拍的迴圈:感知規劃行動。這個節奏太根本了,根本到有了專門的名字——感知—規劃—行動範式——它幾乎是每一台能自主移動的機器內部的骨架。

第一拍,感知:相機和其他感測器讀取這個世界。杯子究竟在哪裡?機器人把原始像素和距離讀數變成數字——比如「杯子在前方 32 公分、左側 5 公分處」。沒有這一步,機器人就是在黑暗中亂抓。

第二拍,規劃:知道了杯子在哪、手現在在哪,機器人就算出一條路徑——一連串關節動作,把夾爪送到杯子那裡,途中又不撞翻鹽罐。(從一個目標位置反推出能夠到達它的關節角度,本身就是一個很深的問題,叫做逆運動學。)

第三拍,行動:馬達驅動手臂沿著那條路徑運動。手張開、移動、合攏。然後——這是新手會漏掉的部分——迴圈重新開始。再次感知。杯子現在已經在夾爪裡,或者滑掉了,或者被人挪走了。機器人不會閉著眼把動作做完;它會核對現實,然後再轉一圈。

為什麼它必須是迴圈,而不是一份食譜

食譜只跑一遍,從頭到尾。當沒有任何意外時,這樣可行。但真實世界一直在給你意外:杯子比相機說的偏了一公分,桌子晃了一下,夾爪打滑了。如果機器人只是執行一遍計畫、再也不看一眼,第一個小誤差就會累積成一隻被撞翻的杯子。

於是迴圈閉合在自己身上。每一次新的感知讀數都告訴機器人,它離原本想到達的位置偏了多遠,而下一次規劃就為這個差距做修正。這個想法——把你想要的和你得到的作比較,再去操控以縮小差異——正是回饋控制的核心,而感知—規劃—行動迴圈就是穿上機器人身體的回饋控制。

把中間那一拍拆開

三拍是乾淨俐落的說法,但「規劃」那一拍藏了大量工作,所以現代機器人把迴圈拆成有名字的層。常見的版本是感知—規劃—控制架構:感知把感測器資料變成一個世界模型,規劃決定接下來一秒或一分鐘要做什麼,控制把那個決定變成精確而快速的馬達指令。

為什麼要拆?因為這三層天然以不同的速度運行。穿過一個房間的計畫,每秒重算幾次就夠了;但讓每個馬達保持在目標上的底層控制,可能需要每秒更新上千次。把它們分開,就能讓每一層按自己需要的節奏跑,而不被其他層拖慢。

你甚至可以把迴圈嵌套起來。一個快速的內層迴圈讓手臂保持穩定;一個較慢的外層迴圈決定手臂下一步該去哪。有些系統把整件事包進一個行為樹裡,由它來挑選此刻哪個目標在生效——是去抓杯子,還是先把擋路的障礙物挪開。三拍依然在那裡,只是被分了層。

想得更久,還是動得更快

這是每個機器人設計者都要面對的張力。在規劃那一拍上花更多時間,你會得到更聰明、更流暢的動作——但你思考的時候,世界還在動,你的感知讀數會過時。少規劃,你就能更快行動、保持靈敏,但計畫更粗糙,可能需要更多修正。

一隻下棋的手臂有時間慢慢想;一架躲避樹枝的無人機卻沒有。於是設計者會調節每一拍能佔用多久。一個優雅的答案是模型預測控制:只向未來規劃一小段,只執行其中第一步,然後把剩下的丟掉,用新鮮的感測資料重新規劃。你既得到了規劃的遠見,又得到了頻繁行動帶來的新鮮度。

貫穿每個機器人的迴圈

一旦你看見了這個迴圈,你就會到處看見它。掃地機器人用碰撞感測器感知到一面牆,規劃出一個轉彎,透過轉向來行動,然後再次感知——每分鐘幾百次。火星車跑的是同一個迴圈,只是更慢、更小心,因為一旦出錯,離能幫上忙的人有幾百萬公里遠。同樣的三拍,截然不同的賭注。

這個迴圈還能解釋一種著名的挫敗。一個在模擬中調得完美的機器人,到了真實世界往往會絆倒,因為它感知到的畫面和它實際做出的動作,都和乾淨的模擬有著微妙的差別。這種不匹配就是現實差距,而一個更緊、更快的感知—規劃—行動迴圈,正是熬過它的主要工具之一。