編輯:好睏 小鹹魚
【新智元導讀】最近機器人很火,從能遛彎的狗到能騎的馬,甚至還有能縫葡萄皮的機械臂!如果我說,能讓機器人自己學會各種「騷操作」,你信麼?
自制一個能給葡萄縫針的機械臂?
近日,知名「硬核」up主稚暉君展示了一款自己從零到一設計的小型高精度六軸機械臂Dummy。
影片一出,直接衝到B站排行榜前十,開啟彈幕,滿屏都是驚歎號。
在「瑟瑟發抖」、「儲存=會做」、「他竟然在試圖教會我們」、「我看不懂,但大受震撼」的彈幕之中,有網友說「希望我們也能儘早做出中國版的『達芬奇』機器人」。
不止華為,其實各大科技公司都在發力機器人的技術研究。就在最近舉辦的國際智慧機器人與系統大會IROS 2021上,我們就看到了很多熟悉的身影,其中不乏堪比穿針引線的靈活操作技術。
而這其中,有一個你肯定意想不到的名字!
沒條胳膊也算機器人?
雖然現在服務型機器人遍地開花,不過大多隻能問個「您好,請問有什麼能幫您」,然後回答一個「暫不支援該功能」,連送個外賣都得人追著外賣跑。
為什麼這些機器人難以派上用場?
嗯。。。可能得先需要一個可以靈活抓取的機械臂。
此處先放一個彩蛋
抓取是機械臂的基本功,要想成功完成抓取任務,需要闖過三個關卡:抓取物體時定位要精準,抓取姿態要合適,對物體間遮擋可能造成的碰撞要先知先覺,闖過了這三關,機器人才算是入了門。
這篇位元組跳動AI Lab和中科院自動化所合作發表在IROS 2021的論文就提出了一個全新的機器人抓取操作方法。
https://arxiv.org/pdf/2108.02425.pdf
作者透過結合3D物體分割、碰撞預測和物體姿態估計,讓機器人能在雜亂場景中準確地估計出物體級別、無碰撞的六自由度抓取姿態,並且達到了SOTA。
聯合例項分割及碰撞檢測的機器人抓取姿態估計示意圖
首先採用PointNet++作為編碼器從點雲中捕捉3D特徵資訊,後接三個並行解碼器:例項分割解碼器,六自由度抓取姿態解碼器和碰撞檢測解碼器。
這三個解碼器分支分別輸出逐點的例項分割、抓取配置和碰撞預測。在推理階段,作用於同一個例項,且不會發生碰撞的抓取姿勢會被歸為一組,透過位姿非極大值抑制演算法融合形成最後的抓取姿勢。
聯合例項分割及碰撞檢測的機器人抓取姿態估計算法框圖
例項分割分支
想抓取一個物體,得先能看清它,看得清楚,才能抓得準確。例項分割分支採用一個逐點例項語義分割模組來區分多個物件。具體來說,屬於同一例項的點應該具有相似的特徵,而不同例項的特徵應該不同。
在訓練過程中,每個點的語義和例項標籤都是已知的,用二分類交叉熵來計算該分支輸出的語義損失
,可以對背景和前景進行分類。
而例項損失
透過一個判別損失函式
來計算:方差損失
可以讓屬於同一個例項的點儘量向例項中心點靠近,而距離損失
是為了增加不同例項中心之間的距離,正則化損失
約束所有例項朝向原點,以保持啟用有界。
用於例項分割的判別損失函式圖解
整體例項分割的總損失
為語義損失和例項損失之和。
這樣,例項分割分支就可以為演算法學習例項級的抓握提供例項資訊,因而模型可以自主完成抓取,更可以由你指定抓取目標,聽你差遣,指哪抓哪。
六自由度抓取姿態估計分支
六自由度抓取姿態估計分支在得到了例項的點雲後,會為點雲中的每個點生成SE(3)抓取配置引數,SE(3)抓取配置g由抓取中心點gt、旋轉矩陣gR、抓取寬度gw、抓取深度gd和抓取質量評估分數gs構成且每個點僅對應一個最優的抓取配置引數組合。
在訓練時,將場景點雲中可抓取點的預測視為一個二分類任務,使用交叉熵損失函式監督排除不可抓點,僅保留可抓點。每個可抓點的損失包含了旋轉損失
、抓持深度損失
和抓持質量得分損失
,以此進行監督訓練。
可是,從非線性和不連續的旋轉表示(如四元數或旋轉矩陣)中直接學習六自由度抓取姿態是非常困難的,為了解決這個問題,gR用兩個正交的單位向量將傳統旋轉矩陣分解為手爪的接近物體的方向
和手爪閉合的方向
。
為了最佳化,將旋轉損失
分為三個部分:偏移損失
、餘弦損失
和關聯損失
,分別用於約束位置、角度預測和正交性。抓持寬度損失
和抓持質量得分損失
用均方誤差(MSE)損失進行最佳化。
六自由度抓取姿態估計分支無需事先假定物體的幾何資訊,能夠直接從3D點雲的特徵中進行抓取姿態的預測,並對損失函式做了更精巧的設計,對於複雜場景中各種形狀和大小的物體都能「探囊取物」。
碰撞檢測分支
雖然前兩個分支能夠實現例項級六自由度抓取姿態預測,但仍然需要一個碰撞檢測分支來推斷每個抓取的潛在碰撞以保證生成的抓取姿態在場景中是有效的和可執行的。
碰撞檢測分支採用了一個可學習的碰撞檢測網路來直接預測所生成的抓取姿態可能產生的碰撞。
在訓練過程中,將對無碰撞和有碰撞視為二分類問題並進行取樣,真實的碰撞結果標籤由已有的碰撞檢測演算法根據六自由度抓取姿態估計分支的抓取配置生成,碰撞損失函式
使用二分類交叉熵損失進行監督。
並行的碰撞檢測分支使得該方法的六自由度抓取姿態估計分支不依賴碰撞檢測作為後處理模組來過濾無效的抓取姿態,大幅降低「思考」延遲,機械臂的抓取動作看上去就是兩個字,絲滑!
在公開資料集Graspnet-1Billion上的小試牛刀,一不小心就拿了個SOTA:
GraspNet-1Billion資料集實驗結果
刷刷榜不過癮,使用Kinova Jaco2機器人和商用RGB-D相機Realsense實戰演練,再拿SOTA,成功率和完成率較之前表現最好的GraspNet都有不小的提升:
真實機器人平臺實驗結果
入門先學抓,要想拜師學藝,還得練練放。
合理地抓和放,可以完成更復雜的任務,比如自主裝配,搭建等任務。
同樣是IROS 2021收錄的一篇位元組跳動和清華大學合作的論文,讓機器人可以在沒有人類指導的圖紙的情況下,也能進行結構設計與建造。
而以往機器人在裝配、佈置、堆積木時,得先告訴它任務的最終目標狀態,相當於按「圖」施工,沒「圖」可幹不了。
https://arxiv.org/pdf/2108.02439.pdf
搭個橋嘛,這有啥難的?
如果不依賴人類設計出的藍圖,機器人要面對的是一個任意寬的懸崖,一堆雜亂擺放的積木塊。
搭個什麼樣的橋啊?自己考慮。用幾塊積木啊?越少越好。這橋不會塌吧?那誰知道呢。
一問三不知,這可比給了精確目標狀態的標準裝配任務難多了,因為機器人既要考慮積木的操作順序,還必須找出即物理上穩定的橋的架構,規劃的搜尋空間之大,讓人頭皮發麻。
工程師們腦洞大開,提出了一個雙層框架來解決橋樑的設計和施工任務,在概念上,類似於任務與動作規劃(Task and Motion Planning,TAMP) :機器人先學習一個高層藍圖策略來一次又一次生成將一個構建塊移動到所需位置的組裝指令,再實施一個低層操縱策略來執行高層指令。
這其中的創新之處在於:高階藍圖策略是以物理感知的方式,使用深度強化學習在一個魔改的物理模擬器中學習神經藍圖策略。
高層藍圖策略
高層藍圖策略要學習的,就是按順序生成取放指令,用最少的積木搭建一座連線兩個懸崖的平橋,還不能倒。
每次,agent都可以觀察一下當前場景,然後指示拿一個積木去搭橋。讓物理引擎飛一會兒,agent就可以接收來自環境的反饋(橋垮沒垮),繼續觀察連續的場景並給出下一個指令。
咦?這個不就是傳說中的馬爾可夫決策過程(MDP)問題嗎?不用懷疑,你又學會了。
用元組{S,A,Γ,R,T}定義這個問題,S表示狀態空間,A表示動作空間,Γ是轉移函式,R代表獎勵函式,T是一回合的視野。
狀態空間編碼所有N個構建塊和2個懸崖的狀態:
,
是包含三維位置、尤拉角、笛卡爾速度、角速度、表示物體是否為積木的一維物體型別指示器和一維時間組成的向量。
動作空間簡單一點,只生成拾取放置指令,將構建塊放在橫跨兩個懸崖中間的yz二維平面上,編碼了一維目標物件標識、一維目標y位置、一維目標z位置和圍繞x軸的一維旋轉角度。
轉移函式的構建非常複雜,想是想不出來的,咋辦呢?
記得剛剛說過的物理模擬器嗎?模擬器在接受藍圖策略的指令後直接將選中的積木塊傳送到指令位置,繼續物理模擬,直到環境達到穩定狀態後,將結果狀態返回給藍圖agent。
因此,即使不依賴符號規則或任何已知的動力學模型,agent仍然可以獲知某個指令在很長一段時間內會造成的的物理結果,並學會尋求物理穩定的解決方案。
沒有明教,卻有暗示,只能說是「妙啊」!
獎勵函式是「施工獎勵」、「平整度獎勵」和「節省材料獎勵」的組合,說白了就是,用料要少,橋面要平,還不能倒。
為了解決上述的馬爾可夫決策過程問題,工程師們再次祭出三把「利器」:Transformer, 階段性策略梯度演算法(Phasic Policy Gradient,PPG)和自適應課程學習。
具體來說,提取積木塊和懸崖的特徵時,基於Transformer的特徵提取器
將物件和相互間關係的歸納偏差整合,傳送給策略網路和價值網路,並使用PPG演算法來有效地訓練策略。
說到階段性策略梯度演算法(Phasic Policy Gradient,PPG),不同於近端策略最佳化演算法(Proximal Policy Optimization,PPO),在訓練時,它會階段性地將價值資訊提取到策略中,以便更好地進行表徵學習,相當於使用一個模仿學習目標來穩定策略網路的訓練。
PPG有兩種架構變體,Dual和Shared。Shared架構中,策略和價值網路共享同一個特徵提取器
,後接策略頭
和價值頭
根據大量實踐,發現Shared表現更好。
演算法再強,一上來就設計長橋,也太難為人了。
自適應課程學習提供了一種循序漸進的升級打怪思路,根據agent的訓練進度調整谷寬。當機器人在狹窄的谷間搭橋的成功率漸漸提升時,模擬器才會漸漸增加遠距離懸崖出現的機率。
低層運動執行策略
指揮的有了,執行就不難了。
產生裝配指令的藍圖策略訓練好後,低層運動執行策略就可以照著這些指令來操縱積木塊到目標狀態。而藍圖策略在訓練期間受到過物理規律的薰陶,所以它能夠為低階控制器產生物理上可行的指令。
因此,低階策略每次只需要完成一個簡單的取放任務,用經典的運動規劃演算法就能解決:透過生成塊的質心抓取姿態,並使用雙向RRT演算法規劃無碰撞路徑。
正是由於在本方法中,指令生成和運動執行是完全解耦的,所以學習到的藍圖策略可以以Zero-Shot的方式直接應用於任何真實的機器人平臺。
真實機器人實驗
模擬器裡學習到的藍圖策略+現成的運動規劃方法放在真實的機器人系統身上表現如何呢?
現實世界中橋樑設計和施工的結果
拿三種情況測一測,其中懸崖之間的距離分別設定為10釐米、22釐米和32釐米,機器人可以成功地遵循所學習的藍圖策略給出的指令,使用不同的塊數以不同的方式建造橋樑。
「老司機」領進門,修行在個「機器人」
學會了抓和放,機器人終於入了師門。
拜師學藝,學的可不是簡單本領,光能擺弄兩下胳膊顯然是不夠的,任務複雜了「腦子」轉不過彎也不行。
這個看著很簡單,照著「師傅」的操作照貓畫虎地模仿幾遍就會了。
但是機器人看了卻只能直呼:「模仿難,難於上青天」。
比如把衣架掛起來這麼一個操作,就需要讓機器人去完成4個子任務,其中每一個子任務都是相互依賴的:
- 接近衣架
- 抓取衣架
- 移動衣架到掛杆附近
- 將衣架掛在杆子上
師傅領進門,修行在個人,機器人需要能理解整個任務過程是需要按階段進行劃分的,而且還需要「意識到」在一個階段沒有完成的情況下,是不能進行下一個階段的。
把任務進行拆解之後,每個子任務的複雜度也得到了簡化,同時也可以透過對已有的子任務進行重新組合實現新的更復雜的任務需求。
長序列操作任務
目前,主流的方法是利用分層模仿學習(HIL),包括行為克隆(BC)和逆向強化學習(IRL)。然而不幸的是,BC在專家示例有限的情況下,很容易出現累計誤差。IRL則將強化學習和環境探索引入了模仿過程中,透過不斷探索環境試錯,最終得到對環境變化不敏感的行為策略。
雖然IRL可以避免這類錯誤,但是考慮到高層和低層策略的時間耦合問題,在option模型上實現絕非易事。
不過,問題不大,位元組跳動在收錄於ICML 2021的論文中提出了一個新的分層IRL框架「Option-GAIL」。
簡單來說,Option-GAIL可以透過分析、利用專家給定的行為示教資訊,學習其背後的行為邏輯,使機器人在相似環境和任務下能完整重現與專家一致的行為結果。
https://arxiv.org/pdf/2106.05530.pdf
方法實現
Option-GAIL演算法基於對抗生成模仿學習(GAIL),其行為的整體相似度由對抗生成網路來近似得到,並且採用option模型代替MDP進行分層建模。
論文采用了單步(one-step)option 模型,也就是每一步都要決定下一步應該做什麼子任務,然後再根據當前所處的子任務和觀測到的狀態決定採取什麼動作。
藍色箭頭所指是的決策過程,紅色箭頭是決策,黑色箭頭是環境的狀態轉移
現在有了能把長週期任務表示成多個子任務分階段執行的option模型,下一步就要解決如何訓練這個模型,使得學到的策略能復刻演示資料。
雖然和 GAIL 所解決的佔用率度量(occupancy measurement)匹配問題很像,但是模型裡多出來的 option 在演示資料裡是觀測不到的。
因此,論文提出了一種類似EM演算法來訓練Option-GAIL的引數,從而實現端到端的訓練。
E(Expectation)步驟利用Viterbi演算法推斷出專家資料的option。
M(Maximization)步驟透過最小-最大博弈來交替最佳化內層和外層運算元,從而得到給定專家option時最優的策略。
實驗結果
在常用的機器人移動和操作環境上測試我們的演算法。測試任務包括:
- 控制單足、雙足機器人運動,機器人需要在邁腿、彈跳等不同行為模式之間切換才能穩健行走;
- 控制螞蟻機器人先推開迷宮裡的障礙物才能走到終點;
- 控制機械臂關微波爐門,機械臂要靠近微波爐,抓住爐門把手,最後繞門軸旋轉到關閉。
為了驗證 Option-GAIL 中引入的層次化結構以及在演示資料以外和環境的互動是否能幫助智慧體更好地學習長週期任務,選擇如下四種基線方法和Option-GAIL進行對比:
- BC(純動作克隆):只在演示資料上做監督學習,不和環境互動,也沒有任何層次化的結構資訊;
- GAIL:有在演示資料之外自己和環境互動,但沒有利用長週期任務的結構資訊;
- H-BC(層次化動作克隆):建模了層次化結構,但自己不和環境互動;
- GAIL-HRL:在佔用率測度匹配的過程中不考慮option。
結果表明,Option-GAIL相比非層次化的方法收斂速度更快,相比不和環境互動的純模仿學習演算法最終的表現更貼近演示資料。
測試環境及各種演算法的效能曲線
不如,一起來鼓搗機器人!
當然,除了讓機器人學會抓取操作之外,位元組跳動還研發了2D/3D環境語義感知、人機互動等系列技術,之前也對外開源了SOLO等系列機器人感知模型和程式碼,在GitHub上頗受歡迎。
不過,技術研究到產業化落地還有很長的路要走,這就需要長期的投入和探索。希望大廠們繼續努力,讓機器人早日真正走進我們的生活。
參考資料:
https://mp.weixin.qq.com/s/FuC4XvgWYNMVYUjG9XoMGw
https://arxiv.org/pdf/2108.02425.pdf
https://arxiv.org/pdf/2108.02439.pdf
https://arxiv.org/pdf/2106.05530.pdf