ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

坐标变换中旋转矩阵的前乘和后乘

2021-07-18 22:33:28  阅读:382  来源: 互联网

标签:begin right end matrix 变换 矩阵 坐标 hat left


文章目录

一、旋转矩阵的两种用法

我在旋转矩阵的两种用法一文中提出了关于 R R R的两个基本变换关系: 旧 坐 标 = R ∗ 新 坐 标 ( 坐 标 转 换 公 式 ) 旧坐标=R*新坐标(坐标转换公式) 旧坐标=R∗新坐标(坐标转换公式) 新 向 量 = R ∗ 旧 向 量 ( 向 量 转 移 公 式 ) 新向量=R*旧向量(向量转移公式) 新向量=R∗旧向量(向量转移公式)这两个公式便于记忆,但是不够严谨,严谨地用数学公式表示,我们可以写成: [ 0 x , 0 y , 0 z ] T = R ∗ [ 1 x , 1 y , 1 z ] T [^0x,^0y,^0z]^T = R*[^1x,^1y,^1z]^T [0x,0y,0z]T=R∗[1x,1y,1z]T [ i ^ 1 j ^ 1 k ^ 1 ] = R [ i ^ 0 j ^ 0 k ^ 0 ] \left[ \begin{matrix} \hat i_1&\hat j_1&\hat k_1\end{matrix}\right] = R\left[ \begin{matrix} \hat i_0&\hat j_0&\hat k_0\end{matrix}\right] [i^1​​j^​1​​k^1​​]=R[i^0​​j^​0​​k^0​​]其中:

  • [ 0 x , 0 y , 0 z ] T [^0x,^0y,^0z]^T [0x,0y,0z]T为某个固定点在固定坐标系中的旧坐标, [ 1 x , 1 y , 1 z ] T [^1x,^1y,^1z]^T [1x,1y,1z]T为这个坐标点在旋转后的坐标系中的坐标。
  • [ i ^ 1 j ^ 1 k ^ 1 ] \left[ \begin{matrix} \hat i_1&\hat j_1&\hat k_1\end{matrix}\right] [i^1​​j^​1​​k^1​​]为旋转后动坐标系的三组新的基向量, [ i ^ 0 j ^ 0 k ^ 0 ] \left[ \begin{matrix} \hat i_0&\hat j_0&\hat k_0\end{matrix}\right] [i^0​​j^​0​​k^0​​]为固定坐标系(或者是旋转前与之重合的动坐标系)的三组旧的基向量。

通过以上的旋转矩阵 R R R的基本性质,我们可以推导出关于前乘和后乘的相关作用。

二、旋转矩阵的后乘(右乘)

旋转矩阵的后乘(post-multiply)用于欧拉角系统,欧拉角有多种组合,每个旋转矩阵都以前一个坐标系为基准,我们简单地假设三个旋转矩阵为 R 1 、 R 2 、 R 3 R_1、R_2、R_3 R1​、R2​、R3​。我们假设在物体坐标系中的某点的坐标为 [ b x , b y , b z ] = [ 3 x , 3 y , 3 z ] [^bx,^by,^bz]=[^3x,^3y,^3z] [bx,by,bz]=[3x,3y,3z],该点在固定坐标系中的坐标为 [ 0 x , 0 y , 0 z ] = [ s x , s y , s z ] [^0x,^0y,^0z]=[^sx,^sy,^sz] [0x,0y,0z]=[sx,sy,sz],在n级新坐标系中的坐标为 [ n x , n y , n z ] [^nx,^ny,^nz] [nx,ny,nz],我们可以得到以下坐标准换公式: [ 0 x , 0 y , 0 z ] = R 1 [ 1 x , 1 y , 1 z ] [^0x,^0y,^0z]=R_1[^1x,^1y,^1z] [0x,0y,0z]=R1​[1x,1y,1z] [ 1 x , 1 y , 1 z ] = R 2 [ 2 x , 2 y , 2 z ] [^1x,^1y,^1z]=R_2[^2x,^2y,^2z] [1x,1y,1z]=R2​[2x,2y,2z] [ 2 x , 2 y , 2 z ] = R 3 [ 3 x , 3 y , 3 z ] [^2x,^2y,^2z]=R_3[^3x,^3y,^3z] [2x,2y,2z]=R3​[3x,3y,3z]我们容易得到: [ 0 x , 0 y , 0 z ] = R 1 R 2 R 3 [ 3 x , 3 y , 3 z ] [^0x,^0y,^0z]=R_1R_2R_3[^3x,^3y,^3z] [0x,0y,0z]=R1​R2​R3​[3x,3y,3z]从而得到了 R s b = R 1 R 2 R 3 R_{sb}=R_1R_2R_3 Rsb​=R1​R2​R3​满足: [ s x , s y , s z ] = R [ b x , b y , b z ] [^sx,^sy,^sz]=R[^bx,^by,^bz] [sx,sy,sz]=R[bx,by,bz]

三、旋转矩阵的前乘(左乘)

旋转矩阵的前乘(pre-multiply)用于坐标系相对于固定坐标系进行旋转。我们不妨讨论RPY角系统(注意RPY角不是欧拉角,这点菜鸟容易混淆),也就是先绕固定坐标系 x ^ s \hat x_s x^s​轴旋转 γ \gamma γ角,再绕固定坐标系 y ^ s \hat y_s y^​s​轴旋转 β \beta β角,最后绕固定坐标系 z ^ s \hat z_s z^s​轴旋转 α \alpha α角。我们可以得到三个旋转矩阵 R 1 = R ( x ^ s , γ ) R_1 = R(\hat x_s,\gamma) R1​=R(x^s​,γ) R 2 = R ( y ^ s , β ) R_2 = R(\hat y_s,\beta) R2​=R(y^​s​,β) R 3 = R ( z ^ s , α ) R_3 = R(\hat z_s,\alpha) R3​=R(z^s​,α)
我们假设固定坐标系的三个基向量为 x ^ 0 = x ^ \hat x_0 = \hat x x^0​=x^, y ^ 0 = y ^ \hat y_0 = \hat y y^​0​=y^​, z ^ 0 = z ^ \hat z_0 = \hat z z^0​=z^,经过第一次旋转之后的一级新坐标系的三个基向量为 x ^ 1 \hat x_1 x^1​, y ^ 1 \hat y_1 y^​1​, z ^ 1 \hat z_1 z^1​,经过第二次旋转之后的二级新坐标系的三个基向量为 x ^ 2 \hat x_2 x^2​, y ^ 2 \hat y_2 y^​2​, z ^ 2 \hat z_2 z^2​,经过第三次旋转之后的三级新坐标系的三个基向量为 x ^ 3 = x ^ b \hat x_3=\hat x_b x^3​=x^b​, y ^ 3 = y ^ b \hat y_3=\hat y_b y^​3​=y^​b​, z ^ 3 = z ^ b \hat z_3=\hat z_b z^3​=z^b​。根据向量转移公式,我们可以得到: x ^ n + 1 = R n + 1 x ^ n \hat x_{n+1} = R_{n+1} \hat x_n x^n+1​=Rn+1​x^n​ y ^ n + 1 = R n + 1 y ^ n \hat y_{n+1} = R_{n+1} \hat y_n y^​n+1​=Rn+1​y^​n​ z ^ n + 1 = R n + 1 z ^ n \hat z_{n+1} = R_{n+1} \hat z_n z^n+1​=Rn+1​z^n​也就是 [ x ^ n + 1 y ^ n + 1 z ^ n + 1 ] = R n + 1 [ x ^ n y ^ n z ^ n ] \left[ \begin{matrix} \hat x_{n+1}&\hat y_{n+1}&\hat z_{n+1}\end{matrix}\right] = R_{n+1}\left[ \begin{matrix}\hat x_{n}&\hat y_{n}&\hat z_{n}\end{matrix}\right] [x^n+1​​y^​n+1​​z^n+1​​]=Rn+1​[x^n​​y^​n​​z^n​​]分别把1/2/3代入到公式中,我们能够得到: [ x ^ 1 y ^ 1 z ^ 1 ] = R 1 [ x ^ 0 y ^ 0 z ^ 0 ] \left[ \begin{matrix} \hat x_{1}&\hat y_{1}&\hat z_{1}\end{matrix}\right] = R_{1}\left[ \begin{matrix}\hat x_{0}&\hat y_{0}&\hat z_{0}\end{matrix}\right] [x^1​​y^​1​​z^1​​]=R1​[x^0​​y^​0​​z^0​​] [ x ^ 2 y ^ 2 z ^ 2 ] = R 2 [ x ^ 1 y ^ 1 z ^ 1 ] \left[ \begin{matrix} \hat x_{2}&\hat y_{2}&\hat z_{2}\end{matrix}\right] = R_{2}\left[ \begin{matrix}\hat x_{1}&\hat y_{1}&\hat z_{1}\end{matrix}\right] [x^2​​y^​2​​z^2​​]=R2​[x^1​​y^​1​​z^1​​] [ x ^ 3 y ^ 3 z ^ 3 ] = R 3 [ x ^ 2 y ^ 2 z ^ 2 ] \left[ \begin{matrix} \hat x_{3}&\hat y_{3}&\hat z_{3}\end{matrix}\right] = R_{3}\left[ \begin{matrix}\hat x_{2}&\hat y_{2}&\hat z_{2}\end{matrix}\right] [x^3​​y^​3​​z^3​​]=R3​[x^2​​y^​2​​z^2​​]这样可以简单地推导得到: [ x ^ 3 y ^ 3 z ^ 3 ] = R 3 R 2 R 1 [ x ^ 0 y ^ 0 z ^ 0 ] \left[ \begin{matrix} \hat x_{3}&\hat y_{3}&\hat z_{3}\end{matrix}\right] = R_{3}R_{2}R_{1}\left[ \begin{matrix}\hat x_{0}&\hat y_{0}&\hat z_{0}\end{matrix}\right] [x^3​​y^​3​​z^3​​]=R3​R2​R1​[x^0​​y^​0​​z^0​​]我们可以写出物体坐标系相对于固定坐标系的一次性等效旋转矩阵 R = R 3 R 2 R 1 R=R_3R_2R_1 R=R3​R2​R1​,从而满足 [ x ^ b y ^ b z ^ b ] = R [ x ^ s y ^ s z ^ s ] \left[ \begin{matrix} \hat x_{b}&\hat y_{b}&\hat z_{b}\end{matrix}\right] = R\left[ \begin{matrix}\hat x_{s}&\hat y_{s}&\hat z_{s}\end{matrix}\right] [x^b​​y^​b​​z^b​​]=R[x^s​​y^​s​​z^s​​]即 R b = R R s R_b=RR_s Rb​=RRs​注意到这里 R 1 R 2 R 3 R_1R_2R_3 R1​R2​R3​的顺序满足左乘关系。

标签:begin,right,end,matrix,变换,矩阵,坐标,hat,left
来源: https://blog.csdn.net/weixin_41855010/article/details/118882860

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有