導航:首頁 > 源碼編譯 > abb矩陣運演算法則圖解

abb矩陣運演算法則圖解

發布時間:2025-08-15 17:43:39

❶ 機器人手眼標定細節 AX=XB

前文介紹了機器人手眼標定的原理和具體實現的公式:

文中提到需要解決AX=XB的問題,並給出2種解決方案。其中第一種有較大缺陷,不多說,這篇主要講講第二種四元數解AX=XB的原理。很巧妙的思路,沒有什麼太復雜的計算和數學理論。

全網鋪天蓋地四元數的介紹,這里不多說。旋轉矩陣轉換四元數公式如下:

這里引用的是ABB機器人手冊中的公式,原版手冊下載地址如下:

Technical reference manual - RAPID Instructions, Functions and Data types RW 7

這篇文章需要用到的四元數性質很少,就兩點,一個是四元數的2-norm是1,另一個是四元數「乘法」計算。

如果我有一個四元數(這篇文章的四元數都會是4行1列的列向量):

[公式]

s是四元數的標量部分,[公式] 是向量部分。

2-Norm等於1

有如下性質:

[公式]

這里的norm指的是2-norm,也就是向量每個元素的平方和開根號。

「乘法」

如果我有兩個旋轉矩陣相乘,表示連續2個旋轉:[公式]

這組旋轉對應的四元數表示為:[公式] ,計算方法為:

[公式]

注意,[公式] 指的是點乘,也就是內積,得到的結果是一個標量。

用Matlab驗證:

向量計算經常出現點乘與叉乘,比如四元數乘法。而推導公式過程中希望運算符統一,所以都會轉換成矩陣乘法的形式。

點乘

向量點乘可以表示為[公式] ,但是在Matlab中輸入a*b(或者Numpy中用a@b),會報錯告訴你矩陣尺寸不對,這是因為Matlab認為這是在做矩陣相乘。把向量點乘轉換成矩陣乘法也很簡單:

[公式]

叉乘

叉乘計算的是和兩個向量同時垂直的一個向量,方向由右手法則決定,因此這兩個向量順序反一下,結果的方向也要反一下:

[公式]

叉乘同樣也可以轉換成矩陣乘法形式:

[公式]

那個a構成的反對稱矩陣,一般記作[公式] 或者 [公式]

[公式]

這里關於奇異值分解不多說,詳細的可以去看另一篇文章:

這里只關心SVD分解出的3個矩陣的特性:

[公式]

[公式] 都是正交矩陣,det是1或者-1,而且他的逆就是他的轉置 。

[公式], [公式]

更直觀來說,相當於4維空間里的旋轉/翻轉矩陣。

旋轉/翻轉矩陣不改變向量長度!

假設q是一個4*1的向量,則有:

[公式]

[公式]

另一個矩陣:

[公式]

其中對角線元素從大到小排列:

[公式]

這里主要解決的問題是[公式]

用四元數表示:

[公式]

四元數乘法展開:

[公式]

左右移動,整理一下:

[公式]

最後得到:

[公式]

把式子中的點乘,叉乘全部換成矩陣乘法:

式子中:

[公式]

替換得到:

[公式]

進一步合並,最終得到:

[公式]

可以發現,兩部分都有[公式] 和 [公式] ,把這兩個式子寫成一個大矩陣(最基礎的線性代數,二元一次方程組):

[公式]

其中第一個矩陣記為M:

[公式]

其中第二個矩陣,[公式] ,也就是我們想要求的四元數,滿足:

[公式]

把這兩個代入等式,同時滿足四元數的模等於1,那前面這個等式可以寫成:

[公式]

好了,那現在的就變成了一個最小化的問題了:

[公式]

前面說過SVD,這里需要用到這個:

[公式]

[公式]

[公式] 的結果是一個向量,而 [公式] 並不會改變向量的長度(2-norm),可以直接忽略。

[公式]

另外,[公式] 是四元數,他的2-norm是1, [公式] 不改變向量的長度(2-norm)。

用向量y來替代[公式] : [公式]

則有:

[公式]

並且[公式]

這樣前面那個最小化問題[公式]

可以寫成這個形式:

[公式]

展開看一下:

[公式]

[公式]

[公式]

由於[公式] ,如果我想最小化 [公式] ,肯定需要讓 [公式] 盡可能小,把所有的數都放在 [公式] 上,同時要保證向量 [公式] 的2-norm是1,答案很明顯:

[公式]

前面有個式子:[公式] ,把 [公式] 的值代進去:

[公式]

前面說SVD那一段時提過,[公式] ,所以 [公式] ,用這個性質移項:

[公式]

[公式]

如果把V寫成列向量的形式,結果就很清晰了:

[公式]

所以這就是最終結果。

"Talk is cheap. Show me the code." - Linus Torvalds

閱讀全文

與abb矩陣運演算法則圖解相關的資料

熱點內容
如何查詢qq綁定郵箱伺服器地址 瀏覽:764
網頁如何搭載伺服器 瀏覽:487
電腦為什麼新存文件夾就會未響應 瀏覽:492
外企程序員脫口秀 瀏覽:899
python更新word目錄 瀏覽:259
如何查看電腦是否已經連接了伺服器 瀏覽:875
myeclipsephp開發環境搭建 瀏覽:792
citra模擬器按鍵皮膚壓縮包 瀏覽:681
單片機開發綜合實驗箱 瀏覽:518
linux解析域名失敗 瀏覽:106
加密與版本不兼容 瀏覽:38
主備伺服器叫什麼 瀏覽:947
伺服器tbs全稱是什麼 瀏覽:621
dhcp伺服器查看地址租用信息 瀏覽:426
如何刪除一個空白子命令 瀏覽:705
單片機期末試卷 瀏覽:555
phpregisterglobal 瀏覽:407
android常用命令 瀏覽:671
什麼p圖app可以加隸書字體 瀏覽:968
安卓手機的全景聲怎麼用 瀏覽:545