對話李鍾毓:如何構建足式機器人的“小腦”

最近一段時間,我很喜歡做一些人形機器人的全身運控的科普,最近也採訪了幾位在這個方向上有代表性工作的一些學者。在上一篇訪談中我們提到,Peng Xue Bin是從動畫(animation)的角度切入人形機器人運控專訪Xue Bin(Jason) Peng:探索人形機器人全身運控的通用控制器。本期的採訪嘉賓李鍾毓則是從基於模型的控制理論來切入人形機器人運控,他用六年的博士生涯探索足式機器人的全身運控。
李鍾毓博士畢業於加州大學伯克利分校,在Koushil Sreenath 教授的指導下開展研究。他的目標是打造安全、智慧且敏捷的腿足機器人,使其成為更好的“人類夥伴”。他的研究主要聚焦於結合基於模型的最優控制無模型的強化學習,來解決腿足機器人的控制與規劃問題,也致力於推動腿足機器人能力邊界的拓展,使其不僅僅侷限於行走功能。
李鍾毓博士將於2025年秋季加入香港中文大學(CUHK)機械與自動化系擔任助理教授,研究方向為人形機器人、高動態機器人與具身智慧,他正在招收優秀PhD/Postdoc/Intern,歡迎感興趣的同學加入他的實驗室!
這期節目的部落格可以點選下方連結進入小宇宙,或者蘋果podcast搜尋“ReSpark”欄目來收聽。
以下為本文目錄
👇
足式機器人小腦的構建
1. 基於模型的運動控制
2. 基於RL的運動控制
3. 足式機器人的運動操作任務
4. 多智慧體協同控制
5. 安全性問題
一些問題
6. 怎麼定義小腦
7. 足式機器人的運控從基於模型的控制到RL過渡的關鍵因素
8. 足式機器人的通用控制器
9. 怎麼理解RL的泛化性不好
10. RL的sim2real從不可能到可能
11. 硬體底層透明的重要性
機器人小腦
我的 PhD 論文題目是“The Robot Cerebellum: Toward Safe, Agile and Intelligent Legged Robotics”。主要在二足機器人領域的三個核心能力上做出了一些突破:第一是敏捷性(agility),第二是智慧性(intelligence),第三是安全性(safety)。我做的一系列工作都圍繞這三個方面展開。
整個博士期間工作的核心是構建一個“機器人小腦”系統。 這個概念源自人類小腦的功能——小腦主要負責全身的動作控制與協同,有一定的智慧學習和自適應能力,能夠在意識不到的情況下規避障礙物,實現一些下意識的安全性行為。這些都是小腦負責的功能,而我希望在機器人系統中也構建這樣一個模組。
在過去六年的 PhD 階段,我在伯克利做了很多這方面的探索。我有一種感覺,就是我們離真正“能思考的機器人”已經非常接近了。當然,未來還有很多後續工作值得推進,但我認為下一步的方向,很可能是從小腦向大腦跨越。也就是說,結合更多感知與環境資訊,讓大腦與小腦配合處理更復雜的任務,從而讓機器人具備真正的環境理解和複雜行為能力。
我的研究主要可以分為三個關鍵詞:agility、intelligence、safety。在這三個方向上,具體的技術路徑分為五個模組。
1. 基於模型的運動控制
我們最開始做的第一個模組是Structure Motion Intelligence,核心就是用基於模型的方法把機器人的動力學模型嵌入到一個結構化的最佳化框架裡。我們希望在這個框架下,無論是採用線上還是離線的方式,都能執行最佳化演算法,並將最佳化得到的結果直接讓機器人執行出來。
在這條路徑上,我們其實做了很多工作。我們最早實現的,是讓二足機器人可以完成一些具有表現力的動作(expressive motion)。這個過程是完全用最佳化方法完成的。我們會先人工設計一條軌跡,然後透過最佳化演算法求解出一套控制策略,使機器人可以在不依賴學習的前提下精準執行這些動作。
同時,我們也探索了一些引數自調整方法,也就是讓機器人在已有控制器的基礎上,進一步自動調整某些引數,以最佳化整體控制性能。這一部分還是在基於模型控制的框架內完成的。
但很快我們就遇到了問題。那個時候還沒有強化學習的概念,我們完全靠最佳化方法來驅動運動控制。我們逐漸意識到,基於模型的方法有一些根本性的限制。
首先,就是模型本身與真實機器人之間存在顯著的偏差。也就是說,我們手裡拿到的動力學模型,即便很精細,跟真實機器人還是有 gap 的。這個差距我們後來定義為 model-to-real gap。模型再好,也不能完全覆蓋機器人的非理想性,比如摩擦、柔性、遲滯等非線性因素。
為了解決這個 gap,我們嘗試了幾種辦法。其中一個策略是:提升最佳化求解的頻率。如果最佳化器能跑得非常快,那麼很多誤差我們就可以當作擾動處理掉,不再需要額外建模補償。但這就帶來一個新問題——現在很難在控制層用一個複雜模型去做高速的即時最佳化。大多數最佳化模型都太複雜,沒辦法滿足控制頻率的需求。
第二種方法其實就是人工調參我們一開始是透過人手動去在控制器上調整一堆引數,這些引數有時候還會被丟進最佳化器裡,用最佳化演算法去跑。但實質上,這整個過程非常像一個人在手動跑強化學習。你相當於自己設定一個獎勵函式,然後靠自己的直覺、經驗和實驗結果去調這些引數,讓系統的輸出行為能夠儘量符合你的預期和設想。
這個做法的最大問題在於,整個開發流程是非常慢的。今天你調好了一套引數,明天可能就不能用了。因為機器人是一個動態系統,每天都在發生變化——比如電機磨損、機械結構鬆動、關節溫度過高、摩擦係數變化等等。這些硬體因素直接影響控制器效能。
這種方式其實只能作為一種展示型路線:你沿著某個方向做下去,一定可以調出非常漂亮的 demo。比如波士頓動力的控制器就非常強大,它們做出來的 demo 極具視覺衝擊力、也非常穩定。但問題在於——這種方法很難 scale up,很難擴充套件,不能泛化。
2. 基於RL的運動控制
所以我們後來就在想,能不能徹底拋棄模型,不用基於模型的方法,而是讓機器人自己去透過強化學習,學出這些高動態、通用的動作控制能力。像走路、跑步、跳遠這種任務,能不能靠機器人自己訓練出來,而不是人調出來。在當時,這是一個非常激進的想法。當時大家都不認為強化學習可以直接在真機上執行,普遍共識是:強化學習只能在模擬裡做,到了真機就不行。
當時比較有代表性的就Xue Bin Peng老師的工作。他們做的DeepMimic,看起來在模擬裡效果非常好,表現力很強。但從 robotics 研究者的角度看,我們一開始是非常懷疑它能遷移到真實機器人上的。主要原因是:那套方法做了很多理想化的假設。比如在訓練時環境裡你可以完全知道機器人的所有狀態,所有關節的位置、速度都能拿到,模型也跟訓練環境完全一致。訓練完了之後,直接在同樣的模擬裡部署。
但在真實世界裡,這種假設根本不成立。所以當時我們都覺得——這種方案離真機部署還很遠。不過很幸運,我們當時都在伯克利,我們組和Xue Bin Peng老師所在的Sergey和Pieter組當時就是一起在做一件事:怎麼把強化學習部署到真機(real hardware)上。那段時間我們做了一系列相關工作,主要是在 Cassie 平臺上開展的。
我們最早是在 Cassie 上做走路(walking)的任務,第一次真正做出來是在 2020 年年中,雖然我們的文章是 2021 年發出來的,但實際完成時間是 2020 年。這意味著我們這項工作其實和 ETH 等團隊的早期強化學習控制器研究是同期完成的。當時的那一批工作,現在看起來就是最早把強化學習真正應用到 locomotion control 的那一批人。雖然大家當時做得都比較初級,但已經形成了一股推動力。
我們那篇文章最大的一個突破點,不僅僅是證明“強化學習控制器可以在真機上跑”,更重要的是:我們展示了這種控制器具備非常強的補償能力和魯棒性。這點在當時是讓很多人震撼的。比如說,在我們的實驗中,機器人如果在某種情況下幾乎就要倒了,只要你稍微把它扶回來——這個控制器是不會崩潰的,而是可以繼續執行,把機器人從一個極度不穩定的狀態恢復到穩定狀態,繼續行走。
這對基於模型的方法來說,是極難實現的。因為基於模型的方法一旦出了所謂的 region of attraction(可控域)之外,整個系統就會直接崩潰,無法恢復。也就是說,一旦擾動超過邊界,你再怎麼努力,系統也拉不回來了。
但強化學習控制器不是這樣,它在控制策略中隱含了大量對擾動的經驗反饋。在你把機器人拉回來之後,它可以自動適應當前狀態並重新穩定下來。這種恢復能力當時是前所未有的,效果非常令人印象深刻。
也正因為這個效果,讓很多人開始重新思考強化學習在真實機器人運動控制中的潛力。很多研究者因此開始進入這個領域,認為強化學習方法在實際系統中是“真的能跑”的,是有現實意義的,而不僅僅是留在模擬裡。
我們其實做了很多方法層面的探索,我覺得這些方法都挺好的。在過去這幾年裡,我們這個方向幾乎經歷了一個從零到一、再到多的完整過程。這段經歷其實挺不容易的,畢竟整個強化學習用於二足機器人控制這個領域真正開始系統發力,也就這短短幾年時間。
在這段時間裡,我們在這個方向上持續推進了很多工作。一開始我們做的是 walking,基礎的走路控制。後來我們開始嘗試更復雜的跳躍任務,比如跳遠、跳高,甚至是一些比較複雜的動態跳躍。
我們當時的目標是,用一個控制器就能完成各種跳躍任務。比如說,這個控制器既能完成立定跳遠,也能跳到桌子上、往後跳,甚至跳起來轉圈。這是一個非常激進的設想——我們想把整個二足運動控制器的通用性推向一個很高的極限。
這個方向上我們確實花了很多時間,也拍了不少影片,最終的效果其實也挺好的。比如,我們用兩個控制器,就完成了 19 個不同跳躍動作。這個控制器是不依賴任何預程式設計的,不需要為每種跳躍單獨設計策略。只要給定一個落點,機器人就能跳過去。全部都是在模擬中訓練完成的,之後直接部署到真實機器人上,不需要額外調參。
為了讓這個控制器具備這麼強的泛化能力,我們在方法上也做了很多工作。第一個關鍵點是——我們設計了一套階段性訓練(multi-stage training)的方法讓控制器可以清楚理解當前任務處於哪個階段。第二個關鍵點是——我們提出了一個叫 dual-history approach 的結構:一方面使用較長時間跨度的 input-output history(也就是機器人的輸入輸出歷史),另一方面也加入短期的狀態反饋,這樣組合起來能讓控制器更快、更準確地估計當前機器人本體的動力學狀態。
這一設計讓控制器具備了隱式自適應能力,也就是說,它在不需要外部干預的情況下,能夠自己適應當前機器人硬體的變化,比如動力學引數的漂移、接觸狀態的改變等等。這正是我們能讓同一個控制器完成這麼多跳躍動作的核心技術基礎。
接下來我們還做了跑步控制,比如控制機器人完成 100 米、400 米這樣的持續運動,這篇論文的重點其實並不是“我們做了多少個 demo”,而是想表達我們建立的系統性強化學習方法論我們希望回答的是:怎麼構建一個通用性強的控制器架構,透過合理的訓練方法與控制結構,能支援不同型別任務的控制需求。
我們訓練出來的控制器也在實際中表現得非常穩定,比如我們有一個走路控制器,我們在一年半的時間裡反覆測試,每隔一段時間重新部署、重新執行,控制效果都保持一致。包括跳躍、跑步這些控制器,我們也都有類似的長期驗證結果。控制器的表現非常一致,沒有明顯退化,這種長期穩定性(consistency over time)是非常關鍵的,也是在真實系統部署中非常有價值的一點。
有一個非常關鍵的點,其實也是我們從 demo 階段邁向真實可用控制器的分水嶺,那就是:機器人系統中始終存在 model-to-hardware gap我們可以拿到機器人的模型,但模型永遠不可能完美描述現實。很多關鍵引數,比如關節摩擦、轉動慣量、腳底與地面的摩擦係數,這些引數在真實機器人裡隨時間是會不斷變化的
舉個具體的例子,我們當時在跑步實驗中,機器人只跑了一圈,鞋底就被直接磨掉了。磨損之後,摩擦係數就變了。你要換鞋底,重新跑。但這時候,機器人的動態響應已經和訓練時完全不一樣了。還有關節也會磨損。我們做跳遠實驗時,衝擊力非常大,連續幾次之後機器人關節的狀態就發生了改變。也就是說,你在模擬或訓練時調出來的控制器,哪怕表現很好,部署後幾天它可能就失效了
所以我們很早就意識到:如果控制器本身不具備自適應能力,它就無法真正部署。你可能拍一個非常漂亮的影片,但幾天後機器人狀態變了,控制器就徹底不行了。我們當時就是為了證明:我們的控制器可以適應本體的變化,我們特地選擇了在機器人狀態不斷變化的環境中反覆測試。我們要驗證控制器能不能在這種動力學變化的過程中仍然穩定執行。
對於機器人控制這個問題,我們當時做了一系列研究路徑的推進。最開始是用最佳化方法,用結構化模型來訓練控制器。後來我們逐漸轉向強化學習的方法,完全丟棄模型,讓機器人自己透過經驗學習策略。也可以說,我們是從單體二足機器人在 agility(敏捷性)上的控制能力出發,一步步把這個方向往上推,儘可能提升它的上限。現在其實很多工作都在嘗試做類似的事,很多人也參考了我們早期的一些方法或者思路。我覺得這很正常,畢竟這類工作在當時屬於比較前沿的嘗試。
當然,那時候我們做的還是 single-agent,也就是一個機器人自身的能力構建。但我們從一開始就知道——機器人不僅要能走、能跑、能跳,它最終還得能“做事”,才能產生真正的系統價值。所以我們在 PhD 期間其實很早就開始關注:怎麼讓機器人做更復雜的任務,比如 manipulation(操作任務)
3. 足式機器人的運動操作任務(Whole-body loco-manipulation)
我們在 PhD 期間很早就開始關注足式機器人能不能做操作任務(manipulation task)。當時大概是 2021 到 2022 年左右,那時候的人形機器人平臺還遠不如現在這麼成熟,多本體的配置也不常見,很多機器人平臺其實根本沒有“手”。
所以我們就在想:在沒有手的情況下,能不能讓足式機器人也能做一些工作?
後來我們找到一個非常好的切入點,就是:用腳去踢、去推、去拉,來完成一些非抓取類的操作任務。我們把這種操作方式稱作 nonprehensile manipulation。也就是說,我們不再依賴末端執行器(比如機械手),而是靠腳部或者身體其他部位非接觸地與環境互動。
像開門、推門、拉門,甚至關燈這種動作,其實不一定需要一隻手去抓住把手。你只需要輕輕碰一下門,它就能開。所以我們就開始嘗試在足式機器人上實現這類動作。我們最早是在一個四足機器人平臺上做的這類任務。第一項是精準射門:讓機器人踢球,把球踢進指定的位置。後來我們擴充套件到了更多場景,比如撲點球。球從不同方向飛過來,我們的機器人要透過不同的控制策略去做出反應。它可以走一步去攔球,也可以直接跳起來去擋,甚至可以切換步態去追球或者撲球。
我們在這個過程中嘗試了很多組合動作,實際上是把多個底層控制器組合起來,從而完成一個整體上看起來非常複雜的高動態操作任務。後來我們進一步探索了更復雜的任務,比如邊走邊運球,過程中還要繞過障礙、繞過地面上的坑窪。這些任務需要在運動控制、避障和球體互動三者之間同時進行動態協調。
再往後,我們還嘗試做了一步更進一步的研究——讓機器人透過 imitation learning 去學習人類的操作示範。我們的思路是:透過人的示範去教機器人控制腿部來完成操作。人可以用手直接帶動機器人的腿部,做一些動作,然後機器人從這個示範中學習這些控制模式,包括動作順序、接觸策略、力度大小等等。這種方式讓機器人不僅能執行任務,還能從人類行為中學習如何應對新的操作環境。
這裡的核心思想其實就是“分層控制”(hierarchical control)。雖然現在大家都在談分層,但我們是真正按這個理念推進的。底層我們採用的是一個通用的強化學習控制器,它的目標是讓我的腿能夠跟蹤各種末端軌跡。基於這一能力,我們在上層再去訓練一個專注於任務規劃的控制器,也就是規劃末端執行器——也就是腿的軌跡
這個上層控制器可以採用多種方式:它可以是一個強化學習的策略,也可以是一個模仿學習的模型,甚至可以直接從模擬環境中學習,也可以利用真實世界的資料訓練,或者將兩者結合——先在模擬中預訓練,再利用真實資料做微調。我們在這整套框架上做了很多探索,這種結構的通用性也得到了驗證。
我們主要在四足平臺、也就是 locomanipulation 這套系統上做了大量實驗。其實四足往人形遷移並不複雜,你可以把四足機器人的前肢理解為人的手,後肢就是人的腿,邏輯是一樣的。本質上,任務還是單個機器人與物體之間的互動問題。
4. 多智慧體協同控制
後來我們進一步思考:如果一個 agent 已經能完成任務了,那多個 agent 如何合作呢?
我最早做的不是機器人的多智慧體任務,而是人機協作。我們有一個專案是用機器狗做導盲,它帶著一個被矇眼的人引導他走路,相當於一個“導盲犬”。這其實是機器人與人的協作問題。
之後我們又做了三個四足機器人合作拉一個重箱子的任務。它們用繩子把箱子一起拖過一個非常狹窄的通道。這個任務用的是中心化最佳化方法(centralized optimization),我們也在裡面做了很多加速處理。
再後來,我們做了一篇文章,實現了多個四足機器人在無需中心化資訊的前提下協作拉動重物。每個機器人執行自己的控制器,不依賴其他機器人的狀態資訊,也就是說控制是完全去中心化的(decentralized control)。在任務執行過程中,我們甚至可以動態移除一個機器人,比如從四個機器人變成三個,它們仍然能迅速調整隊形,順利完成任務。
這個工作是用多智慧體強化學習的方法完成的。多機器人協作本身就是一個非常難的問題,因為單個機器人已經不容易控制了,多個機器人在真實環境中的協作挑戰更大。但我們透過分層架構和強化學習方法,逐步把這個問題推進了。
那多個機器人怎麼去合作,尤其是在真實的、真機環境裡,其實是一個非常有挑戰的問題。我們剛剛提到的所有工作,其實都已經是在真實世界中進行過大量實驗驗證的,不是在純模擬中做的。這一點很關鍵,因為很多強化學習系統在模擬中看上去效果很好,一旦部署到真實環境就會遇到各種不可預期的問題。
整個思路其實還是基於“分層控制”的框架,特別是對於這種複雜系統(比如四足、雙足、人形機器人),這種架構是非常有效的。我們底層是一個穩定可靠的控制器,它可以快速響應、維持動態穩定性。而上層則是面向任務的規劃控制器,負責決策目標軌跡、合作策略等等。這種上下分工的架構讓系統更具擴充套件性和適應性。
每個方向上我們都做了很多嘗試和實踐,包括單個機器人的任務最佳化、多智慧體之間的協作學習,以及不同學習方法(強化學習、模仿學習等)的組合應用。我們做到了讓多個機器人之間,在完全不依賴中心化資訊的前提下,也能順利完成合作任務。這在真實世界中是非常不容易的。
5. 安全性問題
但在解決協作問題之外,我覺得最關鍵的問題其實還是安全性
尤其是當我們研究的是人形機器人,它本身就是為了在人類環境中執行而設計的。那在這種場景下,安全性一定是優先順序最高的。如果一個大模型(如 LLM)說錯了話,可能只是資訊錯誤,但如果一個機器人控制出錯,那可能會直接撞到人,造成實際傷害,這是不能接受的。
所以我們非常關注如何給基於學習的方法加上控制理論層面的安全性保障比如說,學習方法(尤其是強化學習)在高動態任務中表現非常好,動作靈活、響應快速、泛化能力強,但它的行為不一定完全可預測,我們不知道它在什麼時候會fail。那這就需要藉助控制理論,給基於學習的策略加一個“安全殼”或者“安全邊界”。比如說,當它接近障礙物(不管是牆體、環境結構還是人)的時候,系統能夠保證不碰撞、不違反某種形式化的安全約束。
我們在這方面也做了很多嘗試,比如研究如何構建可驗證的安全區域(safe set),或用機率方法建模策略的可靠性邊界,從而確保在真實部署時,哪怕是基於學習的控制器,也不會做出傷害人的決策。
6. 怎麼定義小腦
我一直覺得,“小腦”這個概念在機器人研究裡其實是比較模糊的,尤其是在我們講人形機器人時,大家對它的理解並不統一。如果我們把問題稍微具體一點,落到足式機器人或者四足機器人上,可能會更容易進行明確的界定。因為這些系統的首要任務非常清晰:那就是保持平衡、完成基本運動控制,包括站立、行走、奔跑、跳躍等。
我們知道,在人類的神經系統中,小腦主要負責的是運動控制、協調和平衡功能;而大腦則更多處理感知、認知和決策。用這個生物學結構類比到機器人系統中——我們可以說:“小腦”在機器人中的功能對應於控制整個身體運動的底層控制模組也就是說,所有 locomotion control(步態控制)、全身動作協同、自適應控制、條件反射式的安全性反應等,其實都可以歸類為“機器人小腦”範疇。
比如,在我們自己的研究中,很多控制器能夠實現高動態運動、自動適應機器人動力學變化(比如關節損傷、腳底磨損等),這就體現了生物小腦中的自適應性。這種“受傷之後還能繼續走”的能力,不依賴於大腦做複雜規劃,是在運動控制器內部完成的。
又比如,人在遇到危險時的快速條件反射(比如手碰到火會瞬間縮回來),這類反應並不是透過大腦複雜思考,而是透過下意識的反射弧完成的。從機器人角度說,這正是我們想要賦予小腦系統的功能之一:實現非顯式反應的安全保障機制
因此我會把以下這些任務和功能歸入“小腦”的定義中:基礎運動能力:包括走路、跑步、跳躍等。動態自適應能力:對摩擦力變化、動力學擾動、結構損耗等進行隱式補償。即時反應與安全機制:不依賴大腦決策的快速避障、姿態恢復、碰撞規避等行為。低層控制執行與反饋整合:追蹤軌跡、穩定控制、處理 proprioception(本體感覺)等。
而“大腦”的範疇則是更高層的認知與任務決策。比如:感知目標並做出決策(我應該抓可樂還是抓雪碧?),處理多模態資訊(視覺、語言、語義等),進行長程任務規劃(我要去學校,那我要怎麼走?路徑規劃與導航),多智慧體協作與角色分配(誰來做什麼任務?怎麼分工協作?)。
所以,我的研究定位其實就是想在機器人系統中構建一個“類小腦”的模組,讓它不僅能運動,還具備一定的自適應性、安全性和條件反射式智慧,最終讓機器人在沒有大腦介入的情況下,也能完成基本穩定可靠的身體控制任務。
當然,這種區分在實際應用中仍然有模糊地帶,像合作策略到底歸不歸小腦,可能見仁見智。但從工程系統架構和生物學啟發來看,用“小腦控制底層運動與安全,大腦負責認知與任務決策”這個框架進行區分,是目前我認為相對清晰和有操作性的定義方式
7. 足式機器人的運控從基於模型的控制到RL過渡的關鍵因素
我始終認為,基於模型的方法(model-based control)在機器人控制領域依然非常有價值。首先,像波士頓動力這樣的公司,其實並沒有完全放棄基於模型的方法——他們始終在使用,只不過現在也能夠藉助強化學習(RL)取得越來越優秀的結果。
整個機器人控制 community 在過去五年左右的時間裡,經歷了一個明顯的思想轉變過程。以我們自己為例,我們組接受強化學習思路得非常快。因為我們很早就把強化學習策略部署到真機上,效果又確實非常好,整個團隊也因此變得非常興奮。
當然,也有一些學者在最初階段持懷疑態度,認為強化學習的控制策略不夠“優雅”,不像基於模型的方法那樣有明確的數理結構、解析形式、可解釋性強。他們會更偏好像最優控制、非線性 MPC 這類構造性強的控制方法。不過隨著越來越多實驗結果驗證強化學習在實際機器人系統中的效能優勢,大家也開始逐步接受這類方法。
從時間線上看,大約從 2020 年起,包括 ETH、我們組、Oregon State University、Google的研究團隊等,開始系統性地推動 RL 在 locomotion control 領域的真實部署。到了 2024 年,整個學術社群已經基本形成了一個共識:模型方法與強化學習並不是對立的,而是可以互補的,各自適用於不同任務和系統約束。
強化學習方法之所以發展迅速,我覺得有兩個很重要的推動因素:第一,對數學與建模的要求相對較低,新入門者更容易上手。相比於傳統最佳化控制方法,RL 不需要構建完整動力學模型,也不需要解決複雜的約束最佳化問題。第二,大量的開源工作和工具鏈,極大降低了學習和實驗的門檻。包括 ETH、NVIDIA 等機構釋出了很多開源模擬平臺、GPU 加速引擎和訓練框架,教程和示例專案也非常豐富,使得很多本科生、研究生可以快速搭建強化學習控制系統,而不需要從零開始構建一個最佳化求解器。
這也導致一個新的趨勢:越來越多的新人選擇直接從強化學習入手,而不是從傳統的基於模型控制起步。
不過,從研究視角來看,我認為這並不一定是好事。強化學習雖然工程落地性強,但它目前仍存在幾個關鍵問題沒有很好解決:首先,自適應能力不穩定,強化學習控制器今天可能表現很好,如果模型訓練或者構造的不好,一旦系統引數變化,比如摩擦係數、電機效能退化等,它很可能就無法有效自適應。這種長期穩定性問題一直是個挑戰。其次,缺乏形式化的安全性保證,強化學習控制器往往是一個神經網路的黑盒結構,而機器人系統本身又極其複雜,兩者結合之後很難預測在未知場景下的行為。這就會帶來安全性風險:比如機器人可能在錯誤的狀態下采取了危險動作,撞人、跌倒等——這在真實應用中是不能接受的。
我們在研究中也一直在探索如何用控制理論方法為強化學習策略增加安全性保障。比如我們提出的一個重要發現是:當一個機器人被訓練得非常好、控制效果足夠優秀時,它所形成的閉環控制系統其實近似是一個全域性線性系統(globally linear system in closed-loop)一旦我們知道這一點,就可以把原本的“黑盒”問題轉化為“線性系統”的控制問題。我們可以基於這個線性模型,使用傳統的基於模型方法,對其進行形式化安全性驗證與限制。這種方式相對務實,也具有工程上的可操作性。
當然,這裡還有很多值得研究的問題:什麼樣的系統或者訓練條件會導致閉環控制器表現為線性?這個“線性近似”是否具有普適性,適用於所有機器人平臺?如何有效提取並利用這種結構性?我認為這些問題正是未來幾年強化學習與控制理論融合研究最值得關注的方向之一。
8. 足式機器人的通用控制器
機器人控制器的自適應能力確實可以看作是邁向“通用控制器”的第一步。現在整個領域都在討論所謂的 generalist control,但其實“通用性”本身是個多層次、多維度的問題。
第一,單一機器人本體的自適應:時間上的通用性
最基本的一層,是在同一個機器人本體上實現時間維度上的自適應。比如我以 Cassie 為平臺,雖然硬體是固定的,但隨著使用時間推移,它的動力學會發生變化,比如關節磨損、摩擦力下降、電機效能退化。這時,一個真正通用的控制器應該能夠在不重新訓練的前提下,自動適應這些本體變化,並保持穩定控制性能。這一點我們已經在前面的實驗中反覆驗證過,也算是通用性構建的第一層基礎。
第二,跨機器人平臺的控制遷移:結構上的通用性
往更高層走,是現在大家都非常關注的cross-embodiment generalization——即跨不同機器人本體的通用性。例如,我是否可以用一個控制器同時控制 Boston Dynamics 的 Atlas、Unitree 的 Go1,甚至是形態、關節結構完全不同的 humanoid 或 quadruped?這需要控制策略對底層動力學、自由度分佈、甚至機械構型具有強自適應能力。
我自己是相信這是可能的,從理論上肯定可以實現。但問題在於:它真的有必要嗎?
一個控制器支援多個不同機器人平臺,聽起來很強,但它的訓練成本可能是指數級增長;控制性能是否還能保持對每個本體都“足夠好”,這是個實際問題;它可能會犧牲掉“專用控制器”對單一平臺的極致最佳化效果。
強化學習本身就存在泛化性不強的問題尤其是面對 multi-modal distribution 時,如果狀態-動作分佈發生較大變化,單一策略很難適應,這在現實中也是一個瓶頸。
第三,任務級通用性:多工、多模態適應
再往上一層,是通用控制器在多工或多技能場景下的泛化能力。也就是說無論是走、跑、跳、轉圈;或者從 locomotion 過渡到 basic manipulation;不管是在什麼環境、面對什麼目標;控制器都能保持一致性表現,並具備一定的任務間遷移能力。
在這方面,我認為我們可以借鑑大模型(large model) 的思路——如果把各種任務、各種機器人構型全部輸入系統進行聯合訓練,理論上控制器應該不僅能“記住”這些任務,還能在面對新組合、新任務時出現某種程度的“湧現能力(emergent behavior)”。
比如從任務 A(跳遠)與任務 B(避障)中,學出一個任務 C(跳遠避障);或從 humanoid 上學出的控制能力,遷移到四足機器人上;或者透過模仿學習(imitation learning)看到人類演示的新任務後能快速泛化。
9. 怎麼理解RL的泛化性不好
我確實覺得,強化學習(Reinforcement Learning, RL)在控制器泛化性上的表現是不足的。我們有非常直觀的實驗例子來說明這一點。
在我們做 locomotion 的過程中,像走路(walking)、跳躍(jumping)、跑步(running)這些任務,我們都是分別訓練的獨立控制器。比如跑步控制器雖然非常強,能支援變速、轉彎等複雜動作,但它始終是在“跑步”這個基本運動模式之下工作;它無法遷移到跳躍或者正常走路等任務上。
我們當然也嘗試過使用一個統一的強化學習控制器去學習多種任務,比如同時學走路和跑步。但我們發現這樣訓練出的控制器在多個任務上表現都不如分別單獨訓練再部署的控制器。也就是說,雖然多工控制器“能用”,但單任務專訓的控制器效果明顯更好。這暴露出一個關鍵問題:強化學習策略在任務泛化上的能力是有限的。特別是當任務分佈差異較大、動力學模式截然不同的時候,強化學習很難找到一個統一策略能兼顧所有任務表現。
起初我們懷疑可能是資料量的問題,但我們進一步增加資料量後也發現,訓練收斂速度和效果提升並不明顯。所以,這並不是一個可以簡單透過“多訓一點”就能解決的問題。我們後來觀察到,目前在一些人形機器人新工作中,有很多嘗試把上肢任務(比如操作類動作)和下肢 locomotion 任務(走、跑、跳)放到一個體系中來訓練。這類控制器在模擬中也能跑起來,看起來“泛化”程度更高。
但仔細看方法,大多數研究其實採用的是一種 teacher-student 結構:首先用強化學習為每個具體任務單獨訓練一個task-specific policy;然後再透過imitation learning(模仿學習)或者 policy distillation,把這些子策略蒸餾(distill)到一個統一的大策略網路中。這種方式的優點是每個基礎策略都有良好效能;蒸餾後的 unified controller 具備一定的任務切換與組合能力;避免了直接用強化學習去訓練“通用控制器”本身在訓練效率和穩定性上的問題。
我個人認為,這可能是目前較為合理的工程路徑。我們繞開了強化學習原生泛化能力弱的問題,用模仿學習做策略融合與泛化控制。而強化學習仍然承擔了任務級別的最優策略訓練,這種分工協作是更務實的方案。
當然,這也意味著真正具有湧現能力的“單一控制器學會所有任務”的方向仍然充滿挑戰,特別是在 locomotion 這種高動態、高維度的控制問題上。我們還有很長的路要走,去理解如何構建更好的訓練結構、更強的策略表示能力,以及更自然的多工統一學習正規化。
10. RL的sim2real從不可能到可能
我們一開始覺得強化學習只能在模擬裡做,真機上是不可能成功的。這一變化過程我覺得很有意思。
第一點,是我們開始用了歷史資訊。像 Xue Bin Peng老師早期的工作,他的強化學習模型是基於模擬器裡的全狀態資訊訓練的。他能知道機器人的全部本體資訊,包括每一個 link 的位置、每一個關節的位置和狀態,這些都可以直接從模擬環境中拿到。但這些資訊在真實機器人上是拿不到的。比如機器人的基座速度(linear velocity),你在真機上是沒有辦法直接測量到的,以前要透過狀態估計器估計,現在也不是特別精確。
後來我們做法是,不直接去依賴當前那一幀的狀態資訊,而是把一段時間的歷史資訊輸入進去。也就是說,用一段時間內機器人的輸入輸出,比如電機控制量、感測器讀數,把這一段歷史作為輸入,就可以估出當前的 base 狀態。
我們進一步發現,透過這段歷史資訊,甚至可以估出每個關節的慣量、質量引數等內部動力學特徵。這些估計方法可以用數學公式去建模,是可以做的。一旦這些狀態可以估出來,我們就可以調整控制器的引數,讓它對本體的變化實現自適應。這樣,控制器就不會因為本體狀態的變化、損耗而失效。
這個方向後面其實出現了很多工作,包括“要不要用歷史資訊”“歷史多長合適”“歷史資訊怎麼編碼輸入”等問題,很多人都在研究。我們自己也做了大量實驗對比,我覺得我們的方法通用性會高一些,但當然不同平臺差異很大,也不好說。
第二點是硬體的問題。如果硬體跟不上,控制器就算在模擬中再好,也沒法部署到真實機器人上。特別是執行器的效能,如果關節響應不好,跟不上模擬給出的參考軌跡,那就完全跑不起來。比如有的機器人用的是舵機,那種低成本方案,它的響應能力和可控性就非常差。你給它一個目標速度,它執行不出來,甚至會震盪或者過熱停機。
強化學習控制器本質上是一個高頻的指令輸出模組,它給出的往往是理想的關節位置或速度的目標值。在模擬中,這些目標被嚴格執行,模擬一步一步往下推進;但在真機上,你給出這個目標,執行器做不到,控制就完全失效了。
而現在的一些機器人平臺,比如 Cassie,包括一些高效能的 quadruped,它們的關節是比較強的,響應非常快,執行也非常準。這些硬體平臺就可以支撐強化學習控制器真正去跑那些高動態策略。
所以,我覺得強化學習能夠跑在真機上,是兩方面共同作用的結果:一方面是我們在演算法上,開始用歷史資訊去補償不可觀測的狀態,做狀態估計與自適應控制;另一方面是硬體平臺的提升,讓執行器能真實追蹤模擬中給出的目標軌跡。
中間還有一類 gap,就是模擬模型本身就不準。比如質量引數、摩擦係數這些建模引數和真實值差別很大,這是模擬和真機之間另一個偏差來源。
我們可以透過一些方式去彌補這個 gap,比如 domain randomization——對模擬引數做擾動來增強策略的魯棒性。但更重要的還是控制器輸出的指令本身能不能被硬體很好地執行。因為模擬裡你每一步給的是理想例距,認為機器人執行了這個例距後就到了下一步。但真實機器人上執行器是有延遲、有非線性響應的,它可能根本追不上這個例距。那模擬和現實之間就又出現了新的誤差。
如果你的硬體不夠好,所有這些演算法最佳化其實都是白搭。所以我覺得,這個過程的變化,就是演算法和硬體共同往中間走,最後才匯合到一起
11. 硬體底層透明的重要性
我覺得這是一個非常好的問題,確實值得深入講一講。我們最近之所以一個從關節層全面開源的人型機器人Berkeley Humanoid Lite ,其實正是因為我們在做控制的過程中,切切實實地感受到現在市面上很多關節存在的問題。這也是我們組最近一系列工作的出發點之一,包括我們組的另一些同學也專門在做這方面的重構。
從我們做控制的人的視角看,硬體必須是透明的(transparent)。也就是說,從我們下發一個期望的關節速度或者位置(即例距命令)開始,到最後這個命令如何被轉化為電流,再傳到電機、驅動關節,這整個鏈條我們都需要知道發生了什麼。
當然,我們可能不關心硬體中間每一層的控制細節,但我們對它的效能特性是非常敏感的。比如說,一個多大規格的機器人,它的電機最高轉速是多少?在這個轉速下它實際能提供的加速度或者速度極限是多少?它的響應是否線性?有沒有明顯的死區或者不穩定區域?這些都會直接影響到我們控制器的效能上限。
執行器一旦變成黑盒,那我們做控制器的人就非常被動了。我們根本無法判斷一個控制策略失敗是演算法問題,還是執行器本身的非理想響應造成的。如果我們用的是外部整合好的硬體關節,或者商用閉源系統,其實都會面臨這個問題。我們根本不知道命令發下去之後,中間發生了什麼事情。但如果硬體做得不好,那這個響應鏈條就不可信。上面演算法再好,下面執行不到位,那控制效果就註定不好,這對控制工程師來說是非常痛苦的。
我們組最近做了兩套完整的人形機器人設計,動因之一就是希望能在硬體層面也擁有更大的透明度與掌控力。這樣我們才能去嘗試更高動態、更高效能的控制器。也就是說,只有當我們對整個系統從指令下發到電流環閉環響應全流程都能掌握,我們才能大膽去推高控制的邊界。
這也是我們要開源的原因之一。開源意味著整個系統是透明的,每一個人都能知道自己拿到的控制命令最後是怎麼執行的。只要出了問題,不需要靠猜,你知道問題可能出在哪一層,是例距解算問題?是通訊延遲問題?是電流環頻寬不夠?你都能一步步去 debug。
這個思路其實跟控制策略的架構也有點像——端到端策略 vs. 分層控制器。端到端很酷,但出了問題你不知道是哪一層壞了;而分層架構雖然複雜,但你能精準知道問題在哪一塊。我們在Berkeley Humanoid Lite上開源的關節,其實也是類似的理念——把整個硬體層的響應系統變成一個分層結構,每一層都可追溯、可除錯、可驗證,才能真正為上層高效能控制策略
打下堅實的基礎。
12. 招生
如開頭提到,李鍾毓博士目前正在為他在港中文的實驗室招生,仍有很多名額:博士(26 Fall入學)、博士後(最早25 Fall入職)、訪問學生(本科生/碩士,隨時加入)。歡迎對人形機器人、具身智慧、控制理論感興趣的同學加入!申請方式感興趣的同學請傳送一封英文郵件到: zhongyu_li AT berkeley.edu. 請包含以下內容:
標題格式:[Application] PhD/Postdoc/Visiting Student – Name – Which Track (VLA/Humanoid/Control Theory/Design)正文簡要介紹自己的研究興趣和過往經歷,附上英文簡歷。有國獎的同學請標明。
References:
李鍾毓主頁:https://zyliatzju.github.io/
原創不易,歡迎“點贊”“打賞”“在看”三連
也歡迎加我微信交流!


相關文章