機器人之空間位置和變化

野德新之助 2024-06-17 00:12 9次浏览 0 条评论 taohigo.com

舉個例子,比如我們在做基於視覺的抓取時,不管是眼在手上(eye-in-hand),還是眼在手外(eye-to-hand),總是需要標定相機和執行器末端的關系的,那如何對這二者之間的關系進行表述呢?就是使用這裡將要介紹的空間描述和變換。說白瞭,就是把我們學過的線性代數的知識拿過來用一用,然後對其在空間中的含義進行理解,而不是單純的瞭解矩陣的數學運算。

我們知道,在我們生活的三維空間中,對於剛體而言,存在著六個自由度,其中三個用來描述質心位置,而另外三個自由度用來描述整個剛體繞質心的旋轉。所以,我們下面先介紹位置描述,然後介紹姿態描述。

位置描述

關於位置描述其實大傢是比較熟悉的,比如說下面的圖例:

在這裡,我們在坐標系{A}下對矢量進行表示:

用上面的有序三元組對我們在空間中的一個質點的位置進行表示,這三個量是完全獨立的,因此有3個自由度。

姿態描述

上面我們談到位置描述的時候,關心的對象是質點,因此它本身不需要對其姿態進行描述,故而沒有引入旋轉,但是當我們的研究對象是剛體的時候,則需要在剛體上固定一個坐標系,用來表示剛體的旋轉瞭,這也就是我們引入姿態描述的原因。

如上圖所示,我們關心機械臂末端夾持器末端中心的位姿(包括位置和姿態)在坐標系{A}下的表示。所以我們以該點作為原點,並且選擇三個正交單位向量作為軸,建立一個坐標系{B},這個坐標系本身就是我們所尋求的表示:

這個矩陣就叫做旋轉矩陣,表示{B}相對於{A}的旋轉。其中的三個分量分別為{B}的三個主軸向量在{A}中的表示,因此我們可以將上面的式子寫為:

這樣,我們就能夠清晰地理解這個矩陣的由來瞭,並且由於旋轉矩陣是利用{B}的三個主軸單位向量在{A}中的投影得到的,所以它有一些特殊性質,首先它是一個對稱矩陣:

這個式子的話可以很容易從上一個式子匯總看出來,下面我們來看它的另一個性質,即“旋轉矩陣的逆等於它的轉置”:

拿單位陣中的第一行第一列的1來說,它其實就是坐標系{B}的X軸在坐標系{A}中各軸上的投影構成的行向量乘以它構成的列向量,也就等於{B}的X軸本身的長度1,同理,我們可以得到旋轉矩陣的轉置乘以旋轉矩陣等於單位陣(可以從方向餘弦推導),所以說“旋轉矩陣的逆等於它的轉置”。

可是旋轉矩陣明明有9個值,為什麼隻占瞭3個自由度呢?因為這些量之間是有約束方程的:每一列的平方和為1,不同列相互正交,這與旋轉矩陣的轉置乘以旋轉矩陣本身等於單位矩陣是一樣的。這麼一算,就有6個約束方程瞭,所以隻有3個自由度,這一點我們後面將會詳細分析。

坐標系的描述

在機器人學中,位置和姿態經常成對出現,於是我們將此組合稱為坐標系,比如坐標系{B}在坐標系{A}中的表示如下:

值得註意的是,在John J.Craig的《Introduction to Robotics: Mechanics and Control》書中有這樣一句表述:“一個參考系可以用一個坐標系相對於另一個坐標系的關系來描述”。也就是說,在這裡,Craig將參考系虛化為瞭一種關系,這與我們平時說的參考系的理解其實不太一樣。“參考系包括位置和姿態兩個概念,大多數情況下被認為是這兩個概念的結合。位置可由一個參考系表示,這個參考系中的旋轉矩陣是單位陣,並且這個參考系中的位置矢量確定瞭被描述點的位置。同樣,如果參考系中的位置矢量是零矢量,那麼它表示的就是姿態。”從這段話來看,其實將參考系理解為一個變換就好瞭,比如說如果{B}是由{A}平移得到的,那麼{B}的原點可以由旋轉矩陣為單位陣,平移向量為{A}到{B}的矢量的這樣一個組合來表示。後面我們介紹完映射之後,大傢將進一步理解這本書裡面的參考系的含義。

映射

這一節主要介紹平移坐標系的映射以及旋轉坐標系的映射,其中平移坐標系映射的概念相比大傢都比較熟悉,所以我們就不仔細討論瞭:

P相對於{A}的位置可以表示為:

值得註意的是,我們已知P在{B}中的位置表示以及{B}相對於{A}的平移,想要計算的是P在{A}中的位置表示,能夠列出上式的前提是,{B}相對於{A}不存在旋轉。如果存在旋轉的話,我們需要瞭解旋轉坐標系的映射:

我們知道{A}的主軸X在{B}中的表示為:

這個映射將空間中的某個點P相對於{B}的描述轉換成瞭該點相對於{A}的描述。

關於一般坐標系的描述

在這裡,我們將討論下圖所示的一般情況:

算子

逆變換

變換方程

這一小節比較簡單,我們直接給出示例:

姿態的其他描述方法

我們知道旋轉矩陣是單位正交陣,又因為其行列式為1,所以被稱為標準正交陣(非標準正交陣的行列式值為-1)。前面我們聊到旋轉矩陣中有9個量,但是卻隻表示瞭3個自由度,是因為矩陣中的元素存在著6個約束:

我們對{B}進行旋轉,每次都是繞著固定坐標系{A}的軸進行旋轉的,我們常將繞著X、Y、Z的旋轉稱為pitch、yaw、roll,也即俯仰、偏航、翻滾。將三次旋轉利用旋轉矩陣寫出並相乘:

關於這個式子應該怎麼理解呢?我們最終的目標是求出{B}相對於{A}的旋轉,對於固定角坐標系,每次旋轉都是基於{A}的,因而是按照旋轉次序,依次左乘;對於歐拉角則是利用中間坐標系變換,所以依次右乘。比如上面的Z-Y-X歐拉角,記{A}繞{A}的Z旋轉得到{B'},然後{B'}繞{B'}的Y旋轉得到{B''},最後{B''}繞{B''}的X旋轉得到{B},所以,我們可以寫出:

式中的3個旋轉角分別是繞著{A}的Z軸,{B'}的Y軸,{B‘’}的X軸旋轉(所以相對於我們的旋轉,是右乘,先乘以繞X的旋轉,再乘以繞Y的旋轉,最後才是繞Z的旋轉),因此我們可以得出結論:X-Y-Z固定角與Z-Y-X歐拉角在同樣的角度大小下,旋轉所得到的最終結果是一樣的,也就是說在這兩種表示下,{B}相對於{A}的姿態一致。註意,這並不是巧合,是因為固定角表示下是基本旋轉矩陣左乘,而歐拉角表示下是基本旋轉矩陣的右乘,而恰好X-Y-Z與Z-Y-X是相反的旋轉順序,所以最終的效果就一樣瞭。

本次介紹就到這裡