天天看點

《機器人與數字人:基于MATLAB的模組化與控制》——2.3節指數映射和k過程

本節書摘來自華章社群《機器人與數字人:基于matlab的模組化與控制》一書中的第2章,第2.3節指數映射和k過程,作者[美]顧友諒(edward y.l.gu),更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

2.3指數映射和k過程

如前面所述,李群的so(3)旋轉矩陣常用來表示三維旋轉。這已經被公認為最為通用、穩定和獨特的方法。然而,在許多應用執行個體中,希望執行給定坐标系繞自身機關向量k旋轉角度,而不是使用一個連續的旋轉,即從基坐标系的三個基本旋轉矩陣的乘積公式(22)計算出來。由于這種連續旋轉變換的矩陣乘法一般是不可交換的,是以此旋轉方法在機器人路徑規劃應用中更加直覺、自然、簡單有效。

将一個機關向量k=k1

k2k3投影到給定坐标系中進行旋轉,顯然,‖k‖2=k21+k22+k23=1。給出其相應的斜對稱矩陣為

基于以上介紹的機關斜對稱矩陣k特有的性質,提出了一個實用的旋轉表達方法,稱為k過程。首先,令k∈瘙綆3為3×1向量。将它的斜對稱矩陣k∈so(3)代入指數映射公式(26)中得到:

exp(k)=r∈so(3)(27)

指數映射結果是旋轉矩陣,它應該等同于繞k軸旋轉角度。

将式(27)左邊按照泰勒級數展開,結合上面提到的k的性質,得到:

方程(29)和方程(211)提供了遞歸求逆算法,可以求解給定旋轉矩陣r的向量k和旋轉角度。乍一看,此公式沒有唯一的符号。然而,對于每個餘弦值都存在正負角度,假如公式(29)選擇+(或-),那麼方程(211)将相對應地得到k(或-k)。是以,可以選擇一對可能的和k或者-和-k,且任何一對都是正确的。

例如,如果要使一個坐标系繞軸(121)t自身旋轉60°(π/3),則機關坐标軸和其斜對稱矩陣為

是以,機關向量為k=(040820816504082)t。顯然,由于餘弦函數是偶函數,可以取旋轉角度為-60°。在這種情況下,軸線k相應變為負值。這兩種選擇顯然是等價的,因為初始坐标系繞軸線旋轉角度與繞相反的軸旋轉負角度在三維空間中有同樣的終點。

第二個執行個體是建立一個新的坐标系1,使得它的z1軸在基坐标系0下沿向量z10=(1-1-1)t。雖然可能有不同方法來建立坐标系1的方向矩陣r10,但我們隻是嘗試用k過程。将基坐标系z0=(001)t軸和新坐标系z1軸的公共法向量通過叉積确定為

是以,當r=rt,r ≠i時,必須使用這個公式來确定k。

例如,如果

這樣,無論是k1=2/2,k2=-2/2還是k1=-2/2,k2=2/2,都與=±180°相對應,其旋轉結果相同。可以任取一組這樣的機關向量

是以,僅在rt=r但r≠i的情況下,可以使用上面的方法來确定k,以及設定=180°。這樣的情況在第3章中将會再次提到。

如果方程(28)兩邊都右乘機關向量k,很容易得到

rk=k+sinkk+(1-cos)k2k=k

因為kk=k×k≡0。這個結果顯示機關向量k是k過程中特征值為1的旋轉矩陣r的特征向量。是以,如果在matlab中進行k過程反解數值程式設計,對于給定的旋轉矩陣r,可以利用内部求特征值

函數特征向量eig(r)而不需要通過方程(211)确定k,以避免可能産生的奇異點。在先前的數值執行個體中,

可以清楚地看到,一旦内部函數eig(r)被調用,元素“val”沿着輸出矩陣的對角線列印出三個特征值,而“vec”列印輸入矩陣r的三列特征向量。顯然,因為最後一個對角元素“val”是10000,其對應的特征向量是“vec”的第三列,即(040820816504082)t,得到的結果和公式(212)是一緻的。如果令r=i,則機關矩陣在matlab工作視窗中輸出如下結果:

《機器人與數字人:基于MATLAB的模組化與控制》——2.3節指數映射和k過程

這一結果表明特征值+1對應的機關特征向量為k=(-07071070710)t。從上面的例子中得到這個向量為負值,但它并不影響最終旋轉結果,因為在這種特殊情況下,旋轉角度可以選擇±180°。

總之,基于數學上的完美指數映射在公式(27)中的so(3)和so(3),研究了式(28)中簡潔的旋轉矩陣r∈so(3)的正向和逆向方程,以及式(29)和式(211)中的k過程。後面将會發現,k過程在機器人運動學、數字人運動規劃尤其是路徑定向規劃方面是非常有用的。

繼續閱讀