基於影像與基於位置的伺服
視覺伺服——靠一路即時相機畫面來引導機器人——有兩種風格,區別在於機器人是在哪裡來度量自己的誤差。基於影像的伺服(IBVS)直接在那張平面畫面裡工作:它看角點或小點這類特徵此刻出現在影像中的位置,和任務完成時它們應該出現的位置,然後移動去縮小這個像素上的差距,根本不去把真實的三維佈局完整地重建出來。基於位置的伺服(PBVS)則反其道而行:它先用影像把東西在真實三維空間裡實際所處的位置重建出來——物體完整的位置和朝向——再在那個物理空間裡規劃一段運動,去到達目標位姿。
打個家常的比方:你想把車停到某個位置,好讓一棵特定的樹正好佔據你後視鏡裡的某個點。基於影像的做法,是一邊開一邊只盯著後視鏡,慢慢挪,直到那棵樹正好落在鏡子裡它該在的地方——你從不計算車的座標,你只是去對上那幅畫面。基於位置的做法,則是先算出「這棵樹在我身後三米、偏右一米」,再把你真實的位置開到那個算出來的點上。兩種辦法都能把車停好;它們只是在「該用畫面來想,還是用真實世界來想」這件事上意見不同。
這裡的取捨是實實在在的。基於影像的伺服很穩健,因為它從不去依賴脆弱的完整三維重建——相機標定上的小誤差幾乎傷不到它——但它在真實空間裡走出的路徑可能會繞得有些古怪,因為它只最佳化那幅畫面。基於位置的伺服在真實世界裡給出乾淨、可預測的運動,也便於推理,但它得仰仗準確的標定和位姿估計,所以一旦重建出錯,機器人就會信心十足地開到錯誤的地方去。許多實用系統會把兩者糅合起來,以兼得雙方的長處。
要讓夾爪對接到一個把手上,IBVS 控制器只管把影像中的四個角點開到它們各自的目標像素上;PBVS 控制器則改為算出把手的三維位姿、再朝它移動——兩者都能成功,但 IBVS 的路徑可能彎彎繞繞,而 PBVS 的路徑走得筆直。
對上畫面,還是先重建出世界——通往同一對準結果的兩條路。
IBVS 在影像內部以像素來度量誤差;PBVS 則在重建出的三維空間裡以米和角度來度量誤差——目標相同,卻是在兩個不同的空間裡思考。