打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
浅析机器人学位置与姿态之坐标系绕任意轴线旋转算法
userphoto

2022.09.23 广东

关注

接着讲一下三维坐标系绕任意轴旋转的算法原理,这些算法可能应用的时候很少碰到,但是不可以不学,说不定哪天碰到各问题就是这个算法可以解决的,例如,想快速搞一个球面轨迹出来;建议朋友们了解下!

对于空间里两个任意姿态的坐标系,总可以找到某个轴,使其中一个坐标系绕该轴旋转一个角度就能与另一个坐标系姿态重合。

用matlab写一下程序;

先写个旋转矩阵,分别绕X/Y/Z旋转0.1、0.2、0.3弧度;

>> R = rpy2r(0.1 , 0.2, 0.3);

旋转

这个旋转矩阵是从原点坐标系通过旋转矩阵旋转到一个新位置,那么我们可以通过下面的程序得出,坐标系原点是绕着哪个向量轴旋转一定角度后得到新坐标系的;

>> [theta, v] = tr2angvec(R)th =0.3655v =0.1886 0.5834 0.7900

其中theta是旋转角度,V是绕其旋转的向量轴;

扩展知识:

其实性和谐信息都是R的特征值和特征向量中的。

什么叫特征值和特征向量呢?

设 A 是n阶方阵,如果存在数m和非零n维列向量 x,使得 Ax=mx 成立,则称 m 是A的一个特征值(characteristic value)或本征值(eigenvalue)。非零n维列向量x称为矩阵A的属于(对应于)特征值m的特征向量或本征向量,简称A的特征向量或A的本征向量。

使用函数eig可以求矩阵的特征值和特征向量;

>> [x,e] = eig(R)x =-0.6944 + 0.0000i -0.6944 + 0.0000i 0.1886 + 0.0000i0.0792 + 0.5688i 0.0792 - 0.5688i 0.5834 + 0.0000i0.1073 - 0.4200i 0.1073 + 0.4200i 0.7900 + 0.0000ie =0.9339 + 0.3574i 0.0000 + 0.0000i 0.0000 + 0.0000i0.0000 + 0.0000i 0.9339 - 0.3574i 0.0000 + 0.0000i0.0000 + 0.0000i 0.0000 + 0.0000i 1.0000 + 0.0000i

矩阵e的对角线三个元素就是返回的特征值,对于的特征向量再矩阵V的对应列向量;

比如矩阵e的第三行里的特征值 1.0000 + 0.0000i, 对应的特征向量就是向量x里的第三列!

从特征值和特征向量的定义中,得出:

其中,v为特征值λ对应的特征向量。如λ=1则:

这意味着相应的特征向量v随旋转而保持不变。只有一个这样的向量,那就是以这个向量为轴发生的旋转。在这个例子中,第三个特征值等于1,所以旋转轴是矩阵x的第三列。

反过来推导;利用罗德里格斯的旋转公式,可以实现从角度和矢量到旋转矩阵的逆转问题:

>> R = angvec2r(pi/2, [1 0 0])R =1.0000 0 00 0.0000 -1.00000 1.0000 0.0000

函数里有四个输入参数,一个表示角度pi/2,其它三个[1 0 0]表示向量旋转轴;实际可以更简化,因为向量可以只用两个参数表示,另一个可以通过这两个参数求出值; 所以实际只需要输入三个参数,就可以实现转换!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
矩阵变换:沿任意轴旋转及其推导
主成分分析(PCA)原理解读
特征值与特征向量:信号处理中的应用
从拉普拉斯矩阵说到谱聚类
特征方程的物理意义
基于PCA降维的交通标志训练和识别算法matlab仿真
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服