當偵測與深度還不夠時
在前面的章節裡,機器人學會了用 物體偵測 找到東西,並用 深度估計 和 點雲 測量它們有多遠。對於只需知道「前方兩公尺有一名行人」的自動駕駛汽車來說,這已經足夠了。但只要機器人需要把東西拿起來,僅知道物體在哪裡就只講了一半的故事。要讓夾爪環住一只馬克杯,機器人還得知道杯子朝哪個方向——把手在左還是在右,是立著還是側躺。
因此這最後一章把整條感知流水線串聯起來。偵測、分割、立體視覺、深度和點雲最終都匯聚到一個苛刻的問題上:物體在空間中的完整位置和朝向究竟是什麼?回答這個問題,再即時地依據答案去行動,正是把「看見」變成「做到」的關鍵。
六個自由度:物體的完整位姿
物體位姿估計 的任務是恢復物體在三維空間中的完整擺放:三個數表示位置(中心在哪裡——左右、上下、遠近),三個數表示 朝向(繞各個軸各轉了多少)。這六個數合起來稱為 6-DoF 位姿——六個自由度。我們早先見過同樣的概念,即用 齊次變換 表示的 位姿:它回答的不只是「在哪裡」,還有「朝哪個方向」。
為什麼抓取的成敗繫於朝向?想像工作檯上躺著一把螺絲起子。它的位置告訴手臂往哪裡伸,但只有它的朝向才告訴 末端執行器 該如何轉動夾爪,使爪子橫跨把手合攏,而不是迎面撞上去。把旋轉算錯九十度,即使位置完美無缺,抓取也會失敗。這正是為什麼一次 抓取 和可靠的 抓取放置 依賴的是位姿,而不僅僅是位置。
位姿究竟是怎麼估出來的?經典做法是:機器人持有物體的三維模型,去搜尋那個能讓模型與相機所見最佳對齊的旋轉和平移——把一個已知形狀與 點雲 或影像中的 特徵描述子 相匹配。現代系統則常常訓練一個神經網路,直接從單張圖片回歸出位姿。無論哪種方式,得到的都是手臂可以據以行動的、乾淨的 6-DoF 答案。
閉合迴路:視覺伺服
只估一次位姿然後盲目伸手是脆弱的:物體可能移位,手臂自身關節會有形變,或者標定漂移了一毫米。穩健的做法是邊動邊看。視覺伺服 是一個閉合控制迴路,其中即時相機影像不斷修正手臂的運動——這正是控制章節裡的 回饋控制 思想,只不過把相機當作感測器。看一眼,挪一點,再看一眼,再挪一點,直到手到位。
這裡有兩大家族,區別在於誤差是在哪裡測量的。這就是 基於影像與基於位置 之分。在基於位置的伺服(PBVS)中,機器人先估出目標的完整三維位姿,在真實世界座標裡算出手當前位置與應到位置之間的差距,再操控手臂去消除這個差距。在基於影像的伺服(IBVS)中,機器人根本不重建三維:它挑選若干視覺特徵,驅動手臂讓這些特徵在影像裡滑向它們期望的像素位置。
兩者各有性格。基於位置的伺服在真實空間裡沿直觀的直線運動,但嚴重依賴準確的位姿估計和標定——細小的三維誤差就會讓你偏離航向。基於影像的伺服對標定誤差極為寬容,因為它只在乎像素,但它在真實世界中的路徑可能彎得古怪,還可能在視覺奇異點附近栽跟頭。連接相機運動與影像運動的橋樑是影像 雅可比(常稱互動矩陣):它預測相機的一個微小運動會如何移動影像中的每個特徵,從而讓控制器反解這一關係、知道該往哪個方向動。
勾勒一個小小的伺服迴路
整個閉環比你想像的要短。它的核心是一個不斷重複的循環:在影像空間中測量誤差,乘以影像雅可比的偽逆,把像素誤差轉化為指令速度,讓手臂動一點,然後再看一次。
# image-based visual servoing, one control tick
target_px = desired feature pixels # where features SHOULD be
loop:
obs_px = detect_features(camera) # where they ARE now
e = obs_px - target_px # image-space error
if norm(e) < tol: break # close enough -> done
v = -gain * pseudo_inv(J_image) @ e # pixel error -> camera velocity
move_arm(v) # nudge, then look again注意這裡沒有單獨的「規劃路徑」步驟——這個迴路只是在每一拍把誤差縮小一點,就像 回饋 控制器那樣。這正是伺服安靜的力量:它能針對移動的目標或粗糙的標定自我糾正,因為每一張新影像都會重置計畫。
前沿:從像素直達動作
至此為止的一切都是手工搭建的流水線:偵測、估計位姿、計算雅可比、控制。機器人感知的前沿提出了一個更大膽的問題——如果讓單個深度神經網路從原始像素一路學到馬達指令,徹底跳過顯式的位姿,會怎樣?這就是端到端學習式感知,它生長自學習章節裡的 模仿學習 與 行為複製 思想,在那裡機器人模仿人類示範。
最大膽的版本是 視覺-語言-動作模型(VLA)。它接收相機影像和一句平實的語言指令——「把紅色方塊拿起來放進碗裡」——然後一幀接一幀地直接輸出機器人動作。VLA 建立在與聊天機器人背後同類的大模型之上,把所見與所聞融合,並直接映射成運動,全程不見單獨的偵測器或位姿估計器。從某種意義上說,它就是 視覺伺服,只是整個控制器被一個學得的網路替換掉了。
這些學習式系統令人興奮,因為它們能應對任何手工編寫的位姿估計器都未曾預料到的雜亂、新奇場景。但仍有兩大難關。穩健性:當光照、雜物或一個陌生的新物體把網路推出其訓練經驗之外時,它可能悄無聲息地失敗。泛化:在一千個廚房任務上訓練出的策略,到第一千零一個仍可能笨手笨腳。彌合這些模型常被訓練所在的模擬器與真實世界之間的差距——即 模擬到現實 問題,可藉 域隨機化 等技巧緩解——仍是一片廣闊的開放前沿。