夾爪必須回答的兩個問題
想像一隻機械臂伸過去拿一個咖啡杯。它的手,也就是末端執行器,必須到達空間中恰好正確的位置。但「正確的位置」比聽起來更微妙,因為這裡面其實藏著兩個不同的問題。第一:手在哪裡?第二:手是怎麼傾斜的?你可以完美地懸停在杯子正上方,卻仍然抓不住它——只要你的手指指向了錯誤的方向。
這兩個問題是真正彼此獨立的。你可以改變手所在的位置,卻完全不旋轉它;你也可以讓手原地旋轉,卻一寸都不移動。機器人學者給每個問題各起了一個名字:「在哪裡」的答案是位置,「朝哪個方向」的答案是朝向。接下來幾乎每一章,其實都是在用數字精確地描述這兩者之一或兩者。
位置:用三個數表示在哪裡
位置是簡單的那一半,因為我們每天本來就這樣思考。要說出某物在哪裡,你給出它相對於參考系原點、沿三個互相垂直方向的偏移量:向右多遠、向前多遠、向上多遠。這三個偏移量寫成一個位置向量,通常記作 p,分量為 (x, y, z)。杯子位於 p = (0.4, 0.1, 0.2) 公尺;手需要到達同一個 p。
把位置想成信封上印的地址。它只釘住一個點,僅此而已。它不在乎物體是立著、側躺,還是像陀螺一樣旋轉。一個點本身沒有「朝向」,所以單靠位置永遠無法告訴你怎麼抓住某樣東西,只能告訴你伸到哪裡。
三個數,三種獨立的移動方式:左右、前後、上下。每一種都是一個獨立的自由度,是一個你可以轉動而不影響另外兩個的旋鈕。這就是為什麼我們說位置存在於三維之中。記住「三」這個數字,因為令人意外的是,朝向也恰好需要三個數,下一節會解釋原因。
朝向:物體被轉到了哪個方向
現在來看比較棘手的那一半。朝向回答的是「它轉向了哪個方向?」最清晰的想像方法,是把一小組箭頭黏到物體本身上:一支從夾爪手掌指出去,一支指向側面,一支沿著手腕方向。當手傾斜、旋轉時,這一小組箭頭也隨之傾斜、旋轉。朝向,就是這些固定在物體上的箭頭,相對於世界那組固定參考箭頭,指向了什麼方向。
為什麼朝向也需要三個數?設想物體的箭頭一開始與世界的箭頭完全對齊。你可以讓它們前後俯仰(pitch),左右翻滾(roll),以及左右偏擺(yaw)。三種獨立的旋轉,不多也不少,就足以達到三維空間中的任意朝向。所以一個完全自由的剛體總共有六個自由度:三個屬於位置,三個屬於朝向。
把朝向寫下來有好幾種不同的記法:一個旋轉矩陣、一組歐拉角,或者一個單位四元數。它們只是同一個概念(物體被轉到哪個方向)的不同字母表,各有各的長處。本節的重點僅僅是直覺;具體的記法細節留到後面。
位姿:兩個部分合二為一
把這兩半拼到一起,你就得到了整章裡最重要的一個詞:位姿。位姿是「在哪裡、朝哪個方向」的完整答案——位置加朝向,打包成一個整體。當有人說「讓夾爪到這個位姿」時,他的意思是兩件事:到達這個點,並且以這個角度傾斜到達。一旦你知道了一個剛體的位姿,關於它擺放方式的一切就再沒有遺漏。
由於位置帶三個數、朝向帶三個數,一個完整的位姿帶六個數。這就是為什麼你總能聽到工程師說一隻自由懸浮的機械臂或物體有「六自由度」。位姿永遠是相對於某個參考系來表達的,所以同樣自然的是描述一個參考系在另一個參考系下看到的位姿,例如從桌角度量出來的夾爪位姿。
pose = position (3 numbers) + orientation (3 numbers)
= where + which way
= 6 degrees of freedom for a free rigid body
mug pose: p = (0.4, 0.1, 0.2) m , upright
gripper goal: same p , fingers pointing down at the mug從這裡開始,本章餘下的部分都是對一個問題的長長回答:我們如何用數字把朝向寫下來,讓電腦能夠儲存它、組合它、並對它發號施令?位置很簡單,不過是三個偏移量。朝向才是真正機巧所在,接下來幾章會一個接一個地介紹旋轉矩陣、歐拉角和四元數。請把位姿這幅圖像記在心裡,因為這些工具中的每一個,歸根結底都只是填好位姿中朝向那一半的方法。