0
| 本文作者: 我在思考中 | 2021-08-27 14:46 |

作者 | 李云飛
編輯 | 陳大鑫
用積木拼搭各種建筑應該是很多小朋友童年的一大樂趣。現在,聰明的機器人也能自己玩積木了,而且不用人告訴它成品長什么樣,機器人可以自己設計、建造一并完成。
AI 科技評論今天介紹一篇來自清華大學和字節跳動的研究者發表在 IROS 2021 的論文: “Learning to Design and Construct Bridge without Blueprint”

論文鏈接:https://arxiv.org/abs/2108.02439
介紹
這篇論文提出了機器人設計與搭積木橋任務。如圖1最左所示,場景中有兩個“懸崖”和若干積木,機器人的任務是利用盡量少的積木把懸崖連接起來。懸崖之間的距離是隨機的,物料的數量也是變化的。

圖1:機器人搭橋任務示意
需要強調的是,機器人搭橋任務中需要關注的問題和之前許多機器人操作(manipulation )任務不太一樣。之前的工作比如裝配 (assembly)、物體布置 (rearrangement)、堆積木 (stacking) 等,它們的最終目標狀態都事先知道,不需要機器人自己規劃每個物體的目標狀態。這就相當于機器人拿著“設計師”給好的“圖紙”,只需要負責規劃怎樣“施工”才能實現圖紙上的狀態。而在搭橋任務中,機器人手中并沒有圖紙,它看到的只是兩個懸崖和能用來搭橋的積木。至于應該用多少塊積木、每塊積木擺在哪里才能把懸崖連起來、應該先放哪塊再放哪塊積木、具體應該怎么把積木放過去,所有的問題我們的機器人都要考慮,現在它得既當設計師又當工程師了。
由于搭橋的任務非常復雜,如果機械臂考慮的每一步動作僅僅是旋轉自己關節的角度的話,那需要規劃的步數是非常龐大的,直接解這樣的問題幾乎不可能。所以,該工作借鑒了 Task and Motion Planning (TAMP,任務與動作規劃) 的做法,把搭橋抽象成兩層問題來做。
在高一層,機器人只關心積木塊的移動,每一步動作是“瞬移”一個積木,而省略掉機械臂操作積木的細節。在低一層,機械臂負責解算如何控制自己的關節才能把積木移動過去。換句話說,解決高層問題的智能體主要負責設計橋的形態,所以也叫它 blueprint policy(藍圖設計策略)。
而底層問題其實就是機械臂的 pick and place(抓取與放置)任務,可以交給傳統的 motion planning(動作規劃)方法解決。整體的框架如圖1右側所示。
搭橋的任務設定
在桌面上放置兩個間距隨機的物塊當作懸崖,再給機器人提供數量不定的積木當物料,希望機器人能利用這些物料搭出某種結構,把兩個懸崖連起來。
搭橋任務主要的難點就是在 blueprint policy 負責的橋梁設計環節。這個問題可以建模為一個 Markov 決策過程 ( MDP: Markov decision process,一種序列決策過程) ,由狀態 (state),動作 (action),轉移關系 (transition) 和獎勵信號 (reward) 定義。Blueprint policy 在每一步會先獲取環境的狀態,然后決定采取什么樣的動作,接著環境會轉移到下一個狀態,同時將獎勵信號反饋給 blueprint policy。就這樣,blueprint policy 通過不斷地與環境交互,使用強化學習來調整自己的決策,提升自己的表現。MDP 中每個要素的具體定義是這樣的:
狀態:環境中所有物體的6自由度位姿(包括三維位置和三維旋轉)、速度、尺寸;
動作:物體編號和目標位姿,它表示 blueprint policy 決定把該物體的位姿從當前狀態變到目標狀態;
轉移關系:在物理引擎中先根據 blueprint policy 的動作,把選中的物體瞬移成動作中的目標狀態,接著在重力作用下跑物理仿真,直到所有物體都穩定下來,物理引擎再把此時的狀態作為轉移到的新狀態返回給 blueprint policy 。作者之所以讓物理引擎繼續模擬而不是直接返回瞬移結果,是因為 blueprint policy 指定的目標狀態很可能在現實中沒法穩定存在(比如積木懸浮在空中或者與其他物體有碰撞),通過物理仿真就能讓 blueprint policy 知道什么樣的狀態是物理上可行的,幫助 blueprint policy 建立對物理規律的理解。
獎勵信號:如果橋成功搭出來了,agent 會獲得一個大的獎勵信號。那怎么判斷橋有沒有成功搭起來呢?
本文沿著懸崖的中心連線均勻地采樣若干個點,檢查了每個采樣點的上表面高度,如果所有采樣點的高度都大于一定的閾值,就認為橋搭成功了。此外,agent 在建造的中途還可以獲得一些比較小的獎勵信號:當部分采樣點的高度到達閾值的時候,可以獲得正比于這部分點占總點數比例的獎勵。為了鼓勵 agent 用盡量節省物料的方式搭出平整的橋,作者還在判斷搭橋成功的基礎上給用物體少的橋和平整的橋額外的獎勵。agent 收到的獎勵信號是上面所有項的加和。
設計橋梁的策略學習
任務設定清楚之后,還要采用合適的策略網絡結構和算法來解決它。Agent需要建立對環境中物體間的關系的理解,還需要具有一定的在不同數量物體之間泛化的能力。
為了更好地學習能在物體間泛化的策略,研究者采用了基于Transformer 編碼器的網絡結構來從場景中所有物體的狀態提取特征。如圖2左側,把每一個物體的狀態當作一個 token 來處理,將它們的嵌入表示 (embedding) 經過N個注意力塊 (attention block) 處理,充分地建模物體與物體之間的關系信息,得到特征。之后再經過多個線性層得到策略網絡 (policy) 和估值函數 (value) 輸出。
作者采用 PPG (Phasic Policy Gradient,階段策略梯度) 算法來訓練 blueprint policy。PPG 是在 PPO (Proximal Policy Optimization,近端策略優化) 基礎上提出的一種在線強化學習算法,它的長處在于能巧妙地將 value 網絡學到的有用知識與 policy 網絡共享,使得強大的 Tranformer encoder 同時惠及 policy 和 value 網絡。PPG 有 "shared" 共享和 "dual" 非共享兩種實現架構,其中 shared 架構中 policy 和 value head 共享了 feature extractor 的參數,而dual架構不共享 參數。
PPG的技術細節可以參考原文,在此不再展開。

圖2: Blueprint policy網絡結構
雖然該文的目標是希望機器人能用很多積木搭出復雜的橋,但在訓練初期 agent 水平很低的時候就提供這樣的任務對它來說太困難了,就如同強行讓小學生啃大學教材;因此我們采用了自適應的課程 (curriculum) 來調節訓練任務的難度。最開始懸崖之間的距離是從整個任務分布中均勻采樣的,有的很近有的很遠;隨著搭橋成功率漸漸提升,會逐漸增大采樣到較遠的懸崖距離的概率。
機械臂控制策略實現
機械臂底層控制策略負責用 pick and place 來完成 blueprint policy 設定的每一步目標,真正地用機械臂移動積木。研究者使用了傳統的 motion planning 算法做六自由度抓取(包含抓取的三自由度位置和三自由度旋轉),完成 pick and place 任務。
仿真和真機實驗
文章首先在仿真環境中看看agent設計出了什么樣的橋梁。在懸崖之間距離比較近的時候,agent學出先豎著放一個積木當支柱,再把兩塊積木橫著架上去。在距離更遠的時候,它能學會按照合適的間距擺放更多的支撐物,再放橋面。

圖3: Agent學會了設計不同長度的橋梁
有時候agent第一次放的位置不是特別好,它還知道回過頭來微調。比如圖4(a)中agent發現橋面不太平整的時候會重新放置橫著的積木。圖4(b)中橋成形以后它發現棕色積木是多余的,就把它挪走了。

圖4: 自己微調設計得不好的橋
作者采用搭橋成功率來衡量 blueprint policy 的表現。下圖左展示了使用不同算法(PPG,PPO)和不同的網絡架構 (shared,dual) 時的訓練曲線。紅線是最終采用的組合,它能以0.8的成功率設計出需要用7塊積木的橋。圖右展示了 curriculum learning 的關鍵作用,藍色線是不從簡單的任務學起,直接挑戰高難度橋梁的訓練情況,它的學習效率明顯低于加了curriculum的紅色線。

圖5: 消融實驗的訓練曲線
最后將機械臂的底層控制加入,看看機器人搭橋的最終效果。作者用6軸的Kinova機械臂做了真機實驗。不管是只需要放一塊積木的迷你橋,還是需要加支撐塊的T形、 形橋,機器人建造師都從容應對,成功完成任務。

圖6: Kinova 機器人搭出不同長度的橋
項目視頻:
總結
這篇工作提出了“機器人搭橋”的自動裝配任務,研究在不事先給定藍圖的情況下如何同時進行結構設計與建造。
本文將搭橋任務拆解成高層設計與底層建造兩部分,設計部分利用深度強化學習算法訓練,建造部分由傳統動作規劃方法實現,在實驗中能根據懸崖之間隨機的距離成功設計建造不同形態的積木橋。
參考文獻
雷鋒網雷鋒網雷鋒網
雷峰網特約稿件,未經授權禁止轉載。詳情見轉載須知。