坐标变换基础-欧拉角&固定角与位姿矩阵的相互转换

这篇具有很好参考价值的文章主要介绍了坐标变换基础-欧拉角&固定角与位姿矩阵的相互转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念定义

空间中一个坐标系相对于另一个坐标系的变换关系用新坐标系的三个坐标轴相对于原坐标系的方向矢量来确定,可用 矩阵来描述。用齐次矩阵(4x4)来统一描述刚体的位置和姿态:
欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法

其中,R便是描述姿态的旋转矩阵。
和沿着三个坐标轴的平移运动不一样,旋转矩阵显得很不直观,也繁琐。因此往往需要使用更简洁的方式来描述姿态变换。固定角与欧拉角便是最常规的两种。

欧拉角是用来唯一地确定定点转动刚体位置的三个一组独立角参量,由章动角θ、进动角ψ和自转角φ组成,为L.欧拉首先提出,故得名。

固定角与欧拉角的区别在于,在旋转变换的过程中,欧拉角指的是旋转是绕物体自身的坐标轴旋转。固定角指的是旋转绕世界坐标系的轴旋转。以下介绍两种常见的表达形式来具体分析

X-Y-Z固定角

如图所示,首先将目标坐标系{B}与参考坐标系{A}重合,将坐标系{B}先绕XA轴旋转γ度,再将坐标系{B}绕YA轴旋转β度,最后将坐标系{B}绕ZA轴旋转α度。最终得到新的坐标系{B}。
欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法

可以看到每次旋转都是绕着固定坐标系{A}的轴,所以才称为X-Y-Z固定角。

  • 欧拉角转换成旋转矩阵
    基于坐标系绕轴向量的旋转公式,由旋转顺序可直接推导:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
    得:

欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法

  • 旋转矩阵转换成欧拉角
    旋转矩阵已知,求未知量为γ,β,α,由式
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法

相当用9个方程对3个未知量求解。经分析,通过对r11和r21对应两个等式求平方和再开根,可以求得cosβ,再由r31可以求得sinβ,即可解出β。
在不考虑β=±90°的情况下,联立r11和r21对应两个等式可以求得α,联立r32和r33两个等式可求得γ,具体公式如下:
欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
考虑β=±90的特殊情况,α任意解都满足,一般取0。
若β=90°,则:
欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
若β=-90°,则:
欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
matlab代码如下

function coord_result = Tran_ZYX(pmatrix)
% 矩阵pmatrix转换成Z-Y-X型的位姿值想x,y,z,w,p,r
p_base = atan2(-pmatrix(3,1),sqrt(pmatrix(1,1)^2 + pmatrix(2,1)^2));
if (abs(pmatrix - pi/2) <= 0.000001)
	w_base = 0;
	r_base = atan2(pmatrix(1,2),pmatrix(2,2));
elseif (abs(pmatrix + pi/2) <= 0.000001)
    w_base = 0;
	r_base = atan2(-pmatrix(1,2),pmatrix(2,2)); 
else
	w_base = atan2(pmatrix(2,1)/cos(p_base),pmatrix(1,1)/cos(p_base));
    r_base = atan2(pmatrix(3,2)/cos(p_base),pmatrix(3,3)/cos(p_base));
end
%欧拉角形式的位姿值
coord_result(1) = pmatrix(1,4);
coord_result(2) = pmatrix(2,4);
coord_result(3) = pmatrix(3,4);
coord_result(4) = w_base*180/pi;
coord_result(5) = p_base*180/pi;
coord_result(6) = r_base*180/pi;

Z-Y-X欧拉角

如图所示,首先将目标坐标系{B}与参考坐标系{A}重合,将坐标系{B}先绕ZB轴旋转α度,再绕旋转后的坐标系{B}的YB轴旋转β度,最后再绕旋转后的坐标系{B}的XB轴旋转γ度。最终得到新的坐标系{B}。
欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
可以看到每次旋转都是绕着运动坐标系{B}的轴旋转,因此称为Z-Y-X欧拉角。

  • 欧拉角转换成旋转矩阵
    基于坐标系绕轴向量的旋转公式,由旋转顺序可直接推导:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
    得:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法

这里可以发现一个问题,Z-Y-X欧拉角和X-Y-Z固定角的旋转矩阵完全想同,这里印证了一个结论

三次绕固定轴旋转的最终姿态和以相反顺序三次绕运动坐标轴旋转最终姿态相同
  • 旋转矩阵转换成欧拉角
    由于和和X-Y-Z固定角的旋转矩阵一样,所以旋转矩阵换算成Z-Y-X欧拉角的解法公式也是一摸一样的。
    在不考虑β=±90°的情况下,具体公式如下:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
    若β=90°,则:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
    若β=-90°,则:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
    matlab代码参考的X-Y-Z固定角的代码

Z-Y-Z欧拉角

和Z-Y-X欧拉角一样,每次旋转都是绕着运动坐标系{B}的轴旋转,但是最后不是绕X轴旋转而是再次绕Z轴旋转,因此称为Z-Y-X欧拉角。

  • 欧拉角转换成旋转矩阵
    基于坐标系绕轴向量的旋转公式,直接得:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
    在不考虑sinβ=0的情况下,联立r23和r13对应两个等式可以求得α,联立r31和r32两个等式可求得γ,具体公式如下:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法
    考虑β=0°|180°的特殊情况,α任意解都满足,一般取0。
    若β=0°,则:
    欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法

若β=180°,则:
欧拉角坐标系转换,工业机器人运动控制,矩阵,线性代数,matlab,算法

matlab代码如下文章来源地址https://www.toymoban.com/news/detail-756803.html

function coord_result = Tran_ZYZ(pmatrix)
% 矩阵pmatrix转换成Z-Y-Z型的位姿值想x,y,z,w,p,r
p_base = atan2(sqrt(pmatrix(3,1)^2 + pmatrix(3,2)^2),pmatrix(3,3));
if (abs(pmatrix) <= 0.000001)% 0°
	w_base = 0;
	r_base = atan2(-pmatrix(1,2),pmatrix(1,1));
elseif (abs(abs(pmatrix) - pi) <= 0.000001)% 180°
    w_base = 0;
	r_base = atan2(-pmatrix(1,2),-pmatrix(1,1)); 
else
	w_base = atan2(pmatrix(2,3)/sin(p_base),pmatrix(1,3)/sin(p_base));
    r_base = atan2(pmatrix(3,2)/sin(p_base),-pmatrix(3,1)/sin(p_base));
end
%欧拉角形式的位姿值
coord_result(1) = pmatrix(1,4);
coord_result(2) = pmatrix(2,4);
coord_result(3) = pmatrix(3,4);
coord_result(4) = w_base*180/pi;
coord_result(5) = p_base*180/pi;
coord_result(6) = r_base*180/pi;

到了这里,关于坐标变换基础-欧拉角&固定角与位姿矩阵的相互转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity --- 三维数学 --- 欧拉角与四元数

      1.Transfrom中的Rotation中的x,y,z三个值就是对应着三个方向上的欧拉角 2.注意物体沿Y轴方向旋转时,是沿世界坐标系的Y轴旋转,而不是沿自身的Y轴旋转 3.一个物体三个方向上的欧拉角是用一个Vector3三维向量对象来表示的 --- (x,y,z)分别对应三个方向上的欧拉角 1.接下来开始

    2024年01月15日
    浏览(44)
  • ardupilot 中坐标变换矩阵和坐标系变换矩阵区别

    本节主要记录ardupilot 中坐标变换矩阵和坐标系变换矩阵的区别,这里非常重要,特别是进行姿态误差计算时,如果理解错误,很难搞明白后面算法。 坐标变换矩阵的本质含义: 是可以把一个向量的坐标从一个坐标系变换到另外一个坐标系。 而坐标系变换矩阵含义: 两个坐

    2024年02月14日
    浏览(43)
  • 深度学习·理论篇(2023版)·第002篇深度学习和计算机视觉中的基础数学知识01:线性变换的定义+基于角度的线性变换案例(坐标变换)+点积和投影+矩阵乘法的几何意义+图形化精讲

    💕 恭喜本博客浏览量达到两百万,CSDN内容合伙人,CSDN人工智能领域实力新星~ 🧡 本文章为2021版本迭代更新版本,在结合有效知识的基础上对文章进行合理的增加,使得整个文章时刻顺应时代需要 🧡 本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理

    2023年04月08日
    浏览(56)
  • 三维坐标变换及其矩阵

    三维坐标变换是将三维空间中的点从一个坐标系映射到另一个坐标系的数学操作。这些变换通常包括平移、旋转、缩放和投影等基本操作。以下是一些常见的三维坐标变换以及它们的变换矩阵表示方式: 1. **平移变换(Translation)**:    三维平移变换的矩阵表示为:      

    2024年02月02日
    浏览(44)
  • 过渡矩阵、线性变换矩阵在对应基下坐标的求法

    在求过渡矩阵时尤其要注意的是过渡矩阵和哪个向量组相乘得另一个向量组。 一般情况下,若描述是:求A到B的过渡矩阵,则形式应当是B=AC,其中C为过渡矩阵。 下面的这个例题就是求过渡矩阵和基下的坐标。 下面的这个例子主要是求线性变换矩阵在相应的基下的坐标。

    2024年02月11日
    浏览(41)
  • OpenCV中,坐标点(Point)利用变换矩阵进行坐标变换

    参考: 【OpenCV进行各种矩阵变换及变换参数求解】 在opencv中,在利用 getAffineTransform 等函数得到了变换矩阵后,假如需要进行图像的变换,可以通过 warpAffine进行。 但是假如只是想对Point的坐标进行变换,就需要用transform来进行了。

    2024年02月15日
    浏览(55)
  • 旋转矩阵的作用:世界坐标变换;求解局部坐标系下的局部坐标

    以下数据以平面直角坐标系为例,三维空间同理 上图中,B点为旋转前的点,C点为B点旋转后的对应点(逆时针旋转90°),对应的旋转矩阵为: 对坐标轴做相同旋转: 我们再对比下旋转矩阵,可以发现旋转后的坐标轴可以在旋转矩阵中找到,其实这个旋转矩阵也表示了一个坐标

    2024年01月22日
    浏览(41)
  • 坐标变换中,矩阵左乘和右乘的区别

    一、矩阵相乘的性质 乘法结合律: (AB)C=A(BC). 乘法左分配律:(A+B)C=AC+BC 乘法右分配律:C(A+B)=CA+CB 对数乘的结合性k(AB)=(kA)B=A(kB). 转置 (AB)T=BTAT. 矩阵乘法一般不满足交换律。矩阵放到左边和右边是要进行装置。 二、理论推导 对于两个变换的叠加: 表示先进行变换,再

    2024年02月06日
    浏览(45)
  • 【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

    x = [ x y ] boldsymbol{x} =begin{bmatrix}x\\\\yend{bmatrix} x = [ x y ​ ] 1. 平移变换 [ x ′ y ′ ] = [ x y ] + [ a b ] begin{bmatrix}x\\\'\\\\y\\\'end{bmatrix} = begin{bmatrix}x\\\\yend{bmatrix} + begin{bmatrix}a\\\\bend{bmatrix} [ x ′ y ′ ​ ] = [ x y ​ ] + [ a b ​ ]   将向量 [ a b ] begin{bmatrix}a\\\\bend{bmatrix} [ a b ​ ] 加到 [

    2024年03月17日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包