這陣子頻繁遇到二維座標系轉換的應用,好像遇到了職涯中的座標轉換年,比方像是:
- 在影像檢測系統中,需要將檢測出的座標點,將預設的以影像座標系為參考,轉化成以產品座標系為參考
- 機械手臂影像對位應用,需要將對位系統吐出的座標補償值 ,預設以機械手大地座標為參考,轉化成以機械手工具座標為參考
- 需要新增一個參考點,以產品座標系為參考偏移,偏偏系統上只有大地座標系可用,只好自己簡單刻座標轉換…
一陣時日下來,總感覺矩陣是一種很難儲存在人體大腦的資料結構,時常遇到卻不容易背起來,寫成以下筆記供日後經常翻查.
• 討論中的座標系參照關係
將以下筆記內容所使用的坐標系上下標,用簡圖定義清楚參照關係:
• 二維轉換矩陣
○ 未展開的形式
將前面鬼扯了這麼多不涉及維度的通用形式中,將R矩陣賦予2x2(個別座標軸只有兩個維度,共兩個座標軸X與Y);T賦予2x1 (原點有X與Y二維度方向偏移);整理後以下是二維轉換矩陣的基礎符號形式:
[R2x2T2x101x21]3x3個人習慣在分析轉換關係時先不展開個別矩陣,反倒是先以上述簡易符號方式簡單相乘、逆轉確認系統建模邏輯無誤後再展開後實作運算
○ R矩陣
R矩陣可以被理解成具像的繞軸旋轉,在運用熟悉後可以漸漸理解後發現R矩陣可以被更廣泛的理解成"將局部坐標系座標軸在參考座標系表示",比方說第一行(Colomn)為i座標系的X軸向量 Xi以R座標系表示,第二行為i坐標系Y軸向量Yi以R座標係表示:
可以看到上圖Xi軸在旋轉後,衍生出在R座標系中的Y軸分量,以及R座標系中的X分量縮短,透過三角函數可以得出此二分量的內容,即為Xi軸在參考係中的表示;Yi軸也是同樣的道理
註記:如果以座標軸向量組看待R矩陣,會發現旋轉只是一種過程,但不見得是唯一的程序,雙軸縮放、單軸縮放、非正交都是有可能的形式.
○ 展開後形式
- 正轉換TiR(原先以{i}為參照,轉換成以{R}為參照)
R矩陣即為Xi、Yi座標軸向量,O矩陣為原點相對參考係原點的偏移量,套入後便成以下形式:
TiR=[R2x2T2x101x21]3x3=[→XiR→YiR→OiR001]=[cosθ−sinθtxsinθcosθty001]
此時的旋轉Θ是以R座標系為基準 - 相對XR逆時針為正,反之為負
從前篇我們知道逆轉換的形式,座標原點除了變號還要乘上R逆矩陣:
TRi=[RT01]−1=[R−1−R−1T01]=[cosθsinθ−1(txcosθ+tysinθ)−sinθcosθ−1(−txsinθ+tycosθ)001]
此時的旋轉Θ、平移tx、ty仍然是以R座標系為基準喔!與正轉換所提到的是同一堆物件,別搞混了
○ 實作驗證技巧
因為工業自動化領域中有各種可程式裝置,比方說智慧相機、機械手控制器、PLC…等等,廠家不同使用的語言邏輯也不同,本魯我常常陷入在不同組件中重複實作矩陣運算的窘境(好懷念只要維護.NET的日子);因此得出了要怎麼確認寫出來的正逆轉換是否正確的小心法.
非常簡單:將i原點正逆轉換後應該還是要為0 ,如果正逆轉換後不為0就是有地方搞錯了!可能是角度定義錯誤或是Sin、Cos代錯、正負號錯置等等…總之有方法知道自己錯了一切好談
沒有留言:
張貼留言