2021年2月1日 星期一

[自動化工程]座標系統_閒聊齊次轉換矩陣_part2_二維轉換矩陣

 這陣子頻繁遇到二維座標系轉換的應用,好像遇到了職涯中的座標轉換年,比方像是:


  1. 在影像檢測系統中,需要將檢測出的座標點,將預設的以影像座標系為參考,轉化成以產品座標系為參考
  2. 機械手臂影像對位應用,需要將對位系統吐出的座標補償值 ,預設以機械手大地座標為參考,轉化成以機械手工具座標為參考
  3. 需要新增一個參考點,以產品座標系為參考偏移,偏偏系統上只有大地座標系可用,只好自己簡單刻座標轉換…

一陣時日下來,總感覺矩陣是一種很難儲存在人體大腦的資料結構,時常遇到卻不容易背起來,寫成以下筆記供日後經常翻查.


• 討論中的座標系參照關係

將以下筆記內容所使用的坐標系上下標,用簡圖定義清楚參照關係:


• 二維轉換矩陣

○ 未展開的形式

前面鬼扯了這麼多不涉及維度的通用形式中,將R矩陣賦予2x2(個別座標軸只有兩個維度,共兩個座標軸X與Y)T賦予2x1 (原點有X與Y二維度方向偏移);整理後以下是二維轉換矩陣的基礎符號形式:

$$ \begin{bmatrix} R_{2x2} & T_{2x1} \\ 0_{1x2} & 1 \end{bmatrix}_{3x3} $$

個人習慣在分析轉換關係時先不展開個別矩陣,反倒是先以上述簡易符號方式簡單相乘、逆轉確認系統建模邏輯無誤後再展開後實作運算

○ R矩陣

R矩陣可以被理解成具像的繞軸旋轉,在運用熟悉後可以漸漸理解後發現R矩陣可以被更廣泛的理解成"將局部坐標系座標軸在參考座標系表示",比方說第一行(Colomn)為i座標系的X軸向量 $X_i$以R座標系表示,第二行為i坐標系Y軸向量$Y_i$以R座標係表示:



可以看到上圖$X_i$軸在旋轉後,衍生出在R座標系中的Y軸分量,以及R座標系中的X分量縮短,透過三角函數可以得出此二分量的內容,即為$X_i$軸在參考係中的表示;$Y_i$軸也是同樣的道理

註記:如果以座標軸向量組看待R矩陣,會發現旋轉只是一種過程,但不見得是唯一的程序,雙軸縮放、單軸縮放、非正交都是有可能的形式.

○ 展開後形式

  1. 正轉換$T^i_R$(原先以$\{i\}$為參照,轉換成以$\{R\}$為參照)

R矩陣即為$X_i$、$Y_i$座標軸向量,O矩陣為原點相對參考係原點的偏移量,套入後便成以下形式:

$$ T^i_R= \begin{bmatrix} R_{2x2} & T_{2x1} \\ 0_{1x2} & 1 \end{bmatrix}_{3x3}= \begin{bmatrix} \vec{X}^i_R & \vec{Y}^i_R & \vec{O}^i_R\\ 0 & 0 & 1 \end{bmatrix}= \begin{bmatrix} \cos\theta & -\sin\theta & t_x\\ \sin{\theta} & \cos\theta & t_y\\ 0 & 0 & 1 \end{bmatrix} $$

此時的旋轉$\Theta$是以R座標系為基準 - 相對$X_R$逆時針為正,反之為負

    2.轉換$T^R_i$ ( 原先以$\{R\}$為參照,轉換成以$\{i\}$為參照)

前篇我們知道逆轉換的形式,座標原點除了變號還要乘上R逆矩陣:

$$ T^R_i={\begin{bmatrix} R & T\\ 0 & 1 \end{bmatrix} }^{-1} = {\begin{bmatrix} R^{-1} & -R^{-1}T\\ 0 & 1 \end{bmatrix} } =\begin{bmatrix} \cos\theta & \sin\theta & -1(t_x\cos\theta+t_y\sin\theta)\\ -\sin{\theta} & \cos\theta & -1(-t_x\sin\theta+t_y\cos\theta)\\ 0 & 0 & 1 \end{bmatrix} $$

此時的旋轉$\Theta$、平移$t_x$、$t_y$仍然是以R座標系為基準喔!與正轉換所提到的是同一堆物件,別搞混了

○ 實作驗證技巧

因為工業自動化領域中有各種可程式裝置,比方說智慧相機、機械手控制器、PLC…等等,廠家不同使用的語言邏輯也不同,本魯我常常陷入在不同組件中重複實作矩陣運算的窘境(好懷念只要維護.NET的日子);因此得出了要怎麼確認寫出來的正逆轉換是否正確的小心法.

非常簡單:將${i}$原點正逆轉換後應該還是要為0 ,如果正逆轉換後不為0就是有地方搞錯了!可能是角度定義錯誤或是Sin、Cos代錯、正負號錯置等等…總之有方法知道自己錯了一切好談


沒有留言:

張貼留言