論文導讀:AnyGrasp——把稠密 6 自由度抓取生成與時序追蹤合而為一

Hao-Shu Fang, Chenxi Wang, Minghao Gou, Cewu Lu · 2023原文連結

論文資訊卡

  • 標題:AnyGrasp: Robust and Efficient Grasp Perception in Spatial and Temporal Domains
  • 作者:Hao-Shu Fang、Chenxi Wang、Minghao Gou、Cewu Lu(上海交通大學)
  • 發表:IEEE Transactions on Robotics, 2023
  • 後續發展:論文成果後來發展成商業化 SDK,是少數從學術模型走到實際產品化的抓取演算法案例

研究動機:人類抓取為什麼這麼厲害

論文開頭提出一個看似簡單、卻直接決定了整篇論文設計方向的問題:人類抓東西的能力為什麼這麼強?作者把答案拆解成四個能力——只看到物體的局部就能很快決定怎麼抓、決策速度快、抓得穩、而且即使物體在移動也能持續追蹤調整抓取策略。這四個能力被轉譯成 AnyGrasp 的四個設計目標:Robust(穩健)、Dense(稠密,不是只給一個答案)、Efficient(即時)、Temporal Continuous(能跨時間持續追蹤)。這四個目標貫穿了整篇論文的每一個模組設計,也是理解 AnyGrasp 為什麼要做出後面一系列架構決策的起點。

相關工作:既有方法各自的侷限

論文把既有的抓取方法分成四大類,每一類都有一個結構性的限制,這些限制的組合正好定義出 AnyGrasp 要填補的空白:

Model-based 方法(先估計物體姿態,再套用預先定義好的抓取策略)的問題是完全依賴已知的 CAD 模型——面對訓練時沒見過、沒有 CAD 資料的新物體就無法運作。2D 抓取方法(例如 GG-CNN)直接從影像輸出抓取品質 Q、角度 θ、寬度 W 三張圖,優點是快,但只能做由上往下的平面抓取,無法處理需要側面或任意角度接近的物體。取樣式方法(例如 Dex-Net)先大量取樣候選抓取姿態、再逐一評分排序,理論上能涵蓋更完整的抓取角度空間,但取樣加評分的流程計算成本高,速度是它的硬傷。6 自由度方法(例如 GraspNet)直接輸出任意角度的抓取姿態,補上了角度限制的問題,但論文指出這一整類方法(包括 GG-CNN 到 GraspNet)都是針對靜態場景設計的——輸入一張影像、輸出一組抓取姿態,完全沒有考慮物體在抓取過程中移動的情況,也就是說既有方法全部缺少時序追蹤(tracking)能力。這正是 AnyGrasp 要補上的最後一塊拼圖:把靜態的 6 自由度抓取生成,延伸到能處理動態場景的時序追蹤。

整體架構

AnyGrasp 的資料流可以概括成:

shell
RGBD 影像
   │
   ▼
點雲(Point Cloud)
   │
   ▼
Geometry Processing Module ──→ 稠密 6DoF 抓取候選
   │
   ▼
Temporal Association Module ──→ 跨幀抓取對應關係
   │
   ▼
Stable Score + Obstacle Awareness ──→ 篩選與排序
   │
   ▼
Collision Detection + Gripper Centering(後處理)
   │
   ▼
機器人實際執行

整套系統由五個核心設計組合而成,以下逐一拆解每個模組實際在解決什麼問題。

核心一:Geometry Processing Module——為什麼要「稠密」

這個模組的目標很單純:輸入點雲,直接輸出稠密的 6 自由度抓取候選集合。處理流程是點雲先經過 backbone 網路抽取特徵,產生一組種子點(seed),對每個種子點做圓柱形鄰域分組(cylinder grouping,這個技巧沿用自 GSNet),再把分組後的區域特徵映射成抓取參數,最終輸出規模是 M×12M \times 12MM 個抓取候選,每個候選用 12 維參數描述完整的 6 自由度抓取姿態)——實際輸出的抓取候選數量高達 1024 個,而不是只給單一個「最佳解」。

這個「稠密」設計不是為了准確率而做的無謂冗餘,而是整套時序追蹤機制能夠成立的前提:如果一個物體只對應一個抓取候選,物體稍微移動、或者相機視角稍微改變,這個唯一的候選就可能直接消失、找不到對應。只有當抓取候選夠稠密、覆蓋物體表面夠完整時,物體移動後才能保證附近仍然有足夠多的候選可以匹配追蹤,這是整篇論文裡最關鍵、也最容易被忽略的設計動機——稠密輸出本身就是為了服務後面的時序模組而存在的。

核心二:Temporal Association Module——用 Embedding 取代 Kalman Filter

AnyGrasp 沒有直接對「物體」做追蹤,而是對每一個抓取姿態分別學一個 Embedding 特徵向量(256 維)。當前一幀的抓取候選 A 跟下一幀的抓取候選 B 都各自被編碼成 256 維特徵之後,計算兩兩之間的餘弦相似度(Cosine Similarity),得到一個 M×MM \times M 的對應矩陣(Correspondence Matrix),矩陣裡數值最高的配對,就代表「這是同一個抓取姿態在下一幀的位置」——這就是 AnyGrasp 定義時序追蹤的方式。

論文選擇這條路線而不是傳統的 Kalman Filter,理由直接而具體:Kalman Filter 這類方法追蹤的對象通常是單一物體(用一組狀態向量描述位置、速度),但 AnyGrasp 一個物體上同時存在上千個抓取候選,Kalman Filter 沒有機制去判斷「這一千個候選裡,哪一個對應到下一幀的哪一個」,這本質上是一個多目標關聯(data association)問題,而不是單一目標的狀態估計問題。用 Embedding 相似度匹配,等於把追蹤問題重新定義成「學一個對每個抓取姿態都具有判別力的特徵表示」,這跟多目標追蹤、重識別(re-identification)領域常見的技術思路是同一套邏輯。

核心三:Dense Supervision——沒有動態資料集,就自己生成標籤

要訓練時序追蹤模組,理論上需要大量「同一個場景在不同時刻、物體有移動」的動態標註資料,但這類資料集並不存在,人工標註的成本也極高。論文的解法是利用多視角靜態場景資料:同一個靜止場景從 256 台不同位置的相機拍攝,View 1 到 View 2 之間的視角變化,在幾何效果上跟「物體真的移動了一點」是高度相似的——都是同一組抓取姿態在不同觀察角度下的相對位置變化。作者直接把這種視角變化當成偽動作(pseudo motion),用來生成時序關聯的訓練標籤,不需要真正蒐集動態抓取資料集就能訓練 Temporal Association Module。這是整篇論文在工程上最巧妙的一步——把一個「沒有資料」的問題,重新定義成可以用既有靜態多視角資料集解決的問題。

核心四:Stable Score——讓模型學會重心感知

人類抓東西不是隨便抓哪裡都一樣穩,會傾向靠近物體重心(Center of Gravity, COG)的位置施力。AnyGrasp 把這個直覺量化成訓練訊號:每個抓取候選除了原本的抓取品質分數之外,額外加入一個 Stable Score——抓取點離物體重心越近,分數越高(例如離重心僅 2mm 給高分),離重心越遠分數越低(例如離重心 5cm 給低分),這個分數跟其他抓取參數一起訓練,讓模型不只學會「這個點能不能抓」,還學會「抓這個點穩不穩」。

核心五:Obstacle Awareness——訓練階段就內建避障

既有方法通常把碰撞檢查當成推論之後的後處理步驟——先生成抓取候選,再逐一檢查會不會撞到周遭物體或桌面,撞到的候選直接丟棄。AnyGrasp 把這個資訊提前搬進訓練階段本身:讓網路在訓練時就直接學習「這個位置的抓取會不會有障礙物阻擋夾爪路徑」,網路自己學會避開容易碰撞的候選,而不是全部生成完畢後靠額外規則篩選。但論文也保留了最後一道防線——推論後仍然會再做一次正式的碰撞檢測,這一層訓練時內建的避障能力是提升整體品質與效率的手段,不是用來取代最終的安全檢查。

後處理:碰撞檢測與夾爪置中

模型輸出之後,只有兩個後處理步驟:碰撞檢測(Collision Detection)與夾爪置中(Gripper Centering)。兩者都不涉及神經網路運算,純粹是幾何層面的校正——碰撞檢測是前面提到的最終安全把關,夾爪置中則是把選定的抓取點微調到更貼合夾爪實際張合幾何的位置,兩者共同的目的是進一步提升實際執行時的成功率,屬於工程化的收尾步驟。

實驗:真正在機器人上跑,不是模擬

AnyGrasp 的實驗設計刻意避開只報告離線準確率這種常見做法,重心放在真實機器人的表現:包含涵蓋 300 種以上物體的箱中揀選(bin picking)任務、人類主動干擾抓取過程的測試、以及對移動中的魚類這類非剛性動態物體的抓取實驗。論文報告的抓取速度達到每小時 900 次以上——這個數字本身就在傳達一個訊息:AnyGrasp 從一開始的設計目標就是要在真實世界、真實速度要求下可用,而不是停留在展示準確率指標的學術原型階段。

真正的創新在哪裡

如果把 AnyGrasp 拆解開來看,其中沒有任何一個元件是全新發明——點雲 backbone 是既有架構、圓柱形分組沿用自 GSNet、稠密抓取生成的概念 GraspNet 已經提出過、餘弦相似度與 MLP 更是深度學習裡的常見元件。AnyGrasp 真正的貢獻,不在於發明了某個新元件,而在於把這些既有元件組合成一套完整、能在真實世界穩定運作的系統,具體體現在四個層面:把稠密抓取生成跟時序追蹤結合起來,而且追蹤的對象是「每一個抓取姿態」而不是「物體整體」;用靜態多視角資料生成時序監督訊號,繞開了動態抓取資料集不存在的問題;加入 Stable Score 與 Obstacle Awareness,讓模型不只回答「能不能抓」,還回答「穩不穩」跟「有沒有空間放進夾爪」;以及一套完整涵蓋碰撞檢測、夾爪置中、真實機器人動態抓取驗證的工程化流程。這也是為什麼 AnyGrasp 後來能發展成商業化 SDK,而不只是停留在論文與程式碼倉庫——它從一開始的設計思路,就是要解決真實部署會遇到的問題,而不只是在學術基準測試集上取得更好的數字。

相關論文推薦