【作业锦集】机器人学导论-空间变换及Matlab实现(part-1)
聲明:
本文最早發布于2022-03-18,轉載請注明出處
若有疑問請第一時間在評論區或者私信作者交流
前言:
最近需要完成一個作業,即程序實現《機器人學導論》中的齊次變換矩陣,并實現空間變換的動態效果。經過細致推敲,作者在愉快地交上作業后便留下了此文,用于交流和學習。本文主要內容來自于作業報告(原因是作者懶,不想改太多),涉及齊次變換矩陣的介紹和Matlab程序的設計思路。總而言之,謹以此文來進行記錄和學習交流。
作業要求
作業的要求就是將上面的過程給動態化。不過為了讓程序更具備一般性,我們僅考慮局部坐標系的變換情況,而不會特別的去考慮P點該怎么計算。因為一但知道變換后的局部坐標系的位置和姿態,便可以很輕易的計算出P點的坐標。
先放一個最終的動態效果圖
?正文
先介紹下齊次變換矩陣
?齊次變換矩陣F主要分成兩部分,第一部分是一個3*3的矩陣,代表了局部坐標系的坐標軸的正向方向,其由三個單位方向向量組成。
第二部分則代表局部坐標系原點在全局坐標系中的坐標。至于矩陣的第4行,可以簡單地理解為向量的長度(其實這并不準確,不過這里不再贅述,因為不是重點)
1.平移效果的實現
在齊次變換矩陣?F 中,?的實際含義便是局部參考系的原點在全局坐標系中的坐標。此外,我們知道,單純平移操作并不會改變局部坐標軸的方向(即沒有旋轉),而是僅僅改變P點相當于全局坐標系的坐標。
那么,只要設置一個變量用于儲存P點的坐標,然后在每次平移后,按P點的位置來繪制局部坐標系即可。
平移的Matlab核心代碼(部分),這里我們僅用圖片的方式呈現一種思路。
2.旋轉效果的實現
?在理論計算中,旋轉效果的實現依賴于旋轉矩陣(實際上這是一種線性變換,空間的映射)。例如若是繞X軸旋轉度,計算過程如下圖所示:
?其中為P在全局坐標系中的坐標,為P點在局部坐標系中的坐標,而代表繞X軸旋轉角度。
遵循同樣的思路,我們不關注P點前后的計算結果,因為程序實現比較復雜。重點的關注對象是旋轉矩陣以及其內部隱含的信息。回到齊次矩陣F,其組成除了原點外,還有局部坐標軸矩陣。分析矩陣,便可以知道局部坐標軸的朝向。
下圖是一個齊次變換矩陣的實例
?單位方向向量在矩陣T中對應的便是,其代表局部坐標系的其中一個坐標軸?在全局參考系的X、Y和Z軸上的分量分別為1、0和0。更具體地說,便是該坐標軸和全局參考系中的X軸同方向(注意,比例因子為0,代表無窮遠,加上方向便是坐標軸)。
將矩陣和旋轉矩陣進行左乘,便可以得到旋轉之后的矩陣局部坐標系矩陣。我們只需要解讀每一次旋轉后矩陣的信息,便可以實現想要的旋轉效果。特別地,由于計算精度的誤差,我們這里只采用90度旋轉,其正余弦值在-1,1和0之間變動。
常見的旋轉矩陣如下:
?
?旋轉效果的核心代碼為:
?最終實現效果在開頭已經給出。
結語
最近一直在實現一種編程思路,將代碼封裝成各個模塊便可以像搭積木一樣實現不同的過程。這次也是這樣處理。例如這次是這樣實現三個操作的。
感興趣的朋友可以關注博客,不定期更新。
總結
以上是生活随笔為你收集整理的【作业锦集】机器人学导论-空间变换及Matlab实现(part-1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python题目59:员工考勤记录
- 下一篇: 《机会的数学》--陈希孺