旋转的描述【1】——方向余弦矩阵

旋转的描述【1】——方向余弦矩阵目录刚体定点旋转 1 定义 2 表示方法 2 1 方向余弦矩阵 2 2 旋转矢量 2 2 1 等效旋转矢量 2 2 2 罗德里格参数 2 3 四元数 2 4 欧拉角 3 相关转化刚体定点旋转 1 定义我们对 Markdown 编辑器进行了一些功能拓展与语法支持 除了标准的 Markdown 编辑器功能 我们增加了如下几点新功能 帮助你用它写博客 全新的界面设计 将会带来全新的写作体验 在创作中心设置你喜爱的代码高亮

1.定义

方向余弦矩阵是由两组不同标准正交基基底向量之间的方向余弦所形成的矩阵。
 通常一个矢量 V V V在某个坐标系内可用矢量的坐标该坐标系的标准正交基来表示。例如,一个矢量在直角 X Y Z XYZ XYZ坐标系下的坐标为 ( a , b , c ) (a,b,c) (a,b,c),则 V = a i + b j + c k V=ai+bj+ck V=ai+bj+ck。这里的 i , j , k i,j,k i,j,k即为坐标系的标准正交基,分别是 X Y Z XYZ XYZ三轴的单位矢量,模值均为1。
 方向余弦矩阵可以用来表达一组标准正交基与另一组标准正交基之间的转化关系,也可以用来表达一个向量对于另一组标准正交基的方向余弦。换句话说,方向余弦矩阵可以表示两个坐标系间的角位置关系,也可以表示一个向量相对于一个坐标系的角位置。

2.推导

2.1 已知条件

2.2 推导目标

 将坐标系b的标准正交基用坐标系n的标准正交基表示,换句话讲,求坐标系b标准正交基在坐标系n内的坐标。

2.3 推导过程

 先看二维情况,如图所示,假设坐标系 X b Y b X_{b}Y_{b} XbYb和坐标系 X n Y n X_{n}Y_{n} XnYn,分别称为 b b b系和 n n n系,其基底分别为 i b , j b i_{b},j_{b} ib,jb i n , j n i_{n},j_{n} in,jn,坐标系 b b b由坐标系 n n n旋转得到。考虑用 n n n系的标准正交基来表示 b b b的标准正交基,于是将 b b b系标准正交基的基底(以下简称基底)投影到 n n n系。结合向量内积的含义,得到如下图所示的关系。
描述个屁,看图自明
 如上图所示,基底 i b i_{b} ib需要投影到 n n n系下水平 i n i_{n} in和垂直 j n j_{n} jn两个方向。先看投影到 i n i_{n} in的部分,投影到 i n i_{n} in的分量由两部分构成,前面括号里的内积 i b ⋅ i n i_{b} \cdot i_{n} ibin表示 i b i_{b} ib投影到 i n i_{n} in的大小,后面的 i n i_{n} in表示投影矢量方向。由于两个矢量都是单位矢量,
i b ⋅ i n = ∣ i b ∣ ∗ ∣ i n ∣ ∗ c o s ⟨ i b , i n ⟩ = ∣ i b ∣ ∗ c o s ⟨ i b , i n ⟩ = c o s ⟨ i b , i n ⟩ (1) i_{b} \cdot i_{n}=\lvert i_{b}\rvert* \lvert i_{n}\rvert * cos \left \langle i_{b},i_{n} \right \rangle=\lvert i_{b}\rvert * cos \left \langle i_{b},i_{n} \right \rangle=cos \left \langle i_{b},i_{n} \right \rangle\tag{1} ibin=ibincosib,in=ibcosib,in=cosib,in(1)类比可以得到 i b i_{b} ib投影到 n n n系下垂直 j n j_{n} jn方向的分量。
于是,基底 i b i_{b} ib n n n系下可以表示为
i b = ( i b ⋅ i n ) i n + ( i b ⋅ j n ) j n (2) i_{b}=(i_{b} \cdot i_{n})i_{n}+(i_{b} \cdot j_{n})j_{n}\tag{2} ib=(ibin)in+(ibjn)jn(2)同理可得,基底 j b j_{b} jb n n n系下可以表示为
j b = ( j b ⋅ i n ) i n + ( j b ⋅ j n ) j n (3) j_{b}=(j_{b} \cdot i_{n})i_{n}+(j_{b} \cdot j_{n})j_{n}\tag{3} jb=(jbin)in+(jbjn)jn(3)
将式 ( 2 ) ( 3 ) (2)(3) (2)(3)写为矩阵形式有,
[ i b j b ] = [ i n j n ] [ i b ⋅ i n j b ⋅ i n i b ⋅ j n j b ⋅ j n ] (4) \left [ \begin{matrix} i_{b} & j_{b} \end{matrix}\right ]=\left [ \begin{matrix} i_{n} & j_{n} \end{matrix}\right ]\begin{bmatrix} i_{b}\cdot i_{n} & j_{b}\cdot i_{n}\\ i_{b}\cdot j_{n}& j_{b}\cdot j_{n} \end{bmatrix}\tag{4} [ibjb]=[injn][ibinibjnjbinjbjn](4)
结合 ( 1 ) (1) (1)式,上式可写为
[ i b j b ] = [ i n j n ] [ c o s ⟨ i b , i n ⟩ c o s ⟨ j b , i n ⟩ c o s ⟨ i b , j n ⟩ c o s ⟨ j b , j n ⟩ ] (4) \left [ \begin{matrix} i_{b} & j_{b} \end{matrix}\right ]=\left [ \begin{matrix} i_{n} & j_{n} \end{matrix}\right ]\begin{bmatrix} cos \left \langle i_{b},i_{n} \right \rangle &cos \left \langle j_{b},i_{n} \right \rangle\\ cos \left \langle i_{b},j_{n} \right \rangle& cos \left \langle j_{b},j_{n} \right \rangle \end{bmatrix}\tag{4} [ibjb]=[injn][cosib,incosib,jncosjb,incosjb,jn](4)
 将以上情况推广到三维情况下时,标准正交基中增加基底 k k k,容易得到相应的基底变换式为:
[ i b j b k b ] = [ i n j n k b ] [ c o s ⟨ i b , i n ⟩ c o s ⟨ j b , i n ⟩ c o s ⟨ k b , i n ⟩ c o s ⟨ i b , j n ⟩ c o s ⟨ j b , j n ⟩ c o s ⟨ k b , j n ⟩ c o s ⟨ i b , k n ⟩ c o s ⟨ j b , k n ⟩ c o s ⟨ k b , k n ⟩ ] = [ i n j n k b ] P n b (5) \begin{aligned}\left [ \begin{matrix} i_{b} & j_{b}& k_{b} \end{matrix}\right ]&=\left [ \begin{matrix} i_{n} & j_{n}& k_{b} \end{matrix}\right ]\begin{bmatrix} cos \left \langle i_{b},i_{n} \right \rangle &cos \left \langle j_{b},i_{n} \right \rangle&cos \left \langle k_{b},i_{n} \right \rangle\\ cos \left \langle i_{b},j_{n} \right \rangle& cos \left \langle j_{b},j_{n} \right \rangle& cos \left \langle k_{b},j_{n} \right \rangle\\ cos \left \langle i_{b},k_{n} \right \rangle& cos \left \langle j_{b},k_{n} \right \rangle& cos \left \langle k_{b},k_{n} \right \rangle\\ \end{bmatrix} \\ &= \left [ \begin{matrix} i_{n} & j_{n}& k_{b} \end{matrix}\right ]P_{n}^b\end{aligned}\tag{5} [ibjbkb]=[injnkb]cosib,incosib,jncosib,kncosjb,incosjb,jncosjb,kncoskb,incoskb,jncoskb,kn=[injnkb]Pnb(5)
 下面分析式 ( 5 ) (5) (5)。整体来看,通过矩阵 P n b P_{n}^b Pnb即可利用 n n n系基底表示 b b b系基底,因此称 P n b P_{n}^b Pnb为从 n n n系到 b b b过渡矩阵,或 坐标系/基 变换矩阵,其中 P n b P_{n}^b Pnb的列向量为 b b b系三个基底分别与 n n n系三个基底的夹角余弦,而行向量为 n n n系三个基底分别与 b b b系三个基底的夹角余弦。
 考虑如何将 b b b系下的坐标转换为 n n n系下。假设有向量 V V V,其在两个坐标系下的表示为 V = V x n i n + V y n j n + V z n k n = V x b i b + V y b j b + V z b k b \\V=V_{x}^{n}i_{n}+V_{y}^{n}j_{n}+V_{z}^{n}k_{n}=V_{x}^{b}i_{b}+V_{y}^{b}j_{b}+V_{z}^{b}k_{b} V=Vxnin+Vynjn+Vznkn=Vxbib+Vybjb+Vzbkb,写成向量的形式为:
[ i n j n k n ] [ V x n V y n V z n ] = [ i b j b k b ] [ V x b V y b V z b ] (6) \left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ]\left [ \begin{matrix} V_{x}^{n}\\ V_{y}^{n}\\ V_{z}^{n} \end{matrix}\right ]=\left [ \begin{matrix} i_{b} & j_{b}& k_{b} \end{matrix}\right ]\left [ \begin{matrix} V_{x}^{b}\\ V_{y}^{b}\\ V_{z}^{b} \end{matrix}\right ]\tag{6} [injnkn]VxnVynVzn=[ibjbkb]VxbVybVzb(6)
( 5 ) (5) (5)式代入上式,可得:
[ i n j n k n ] [ V x n V y n V z n ] = [ i n j n k n ] P n b [ V x b V y b V z b ] (7) \left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ]\left [ \begin{matrix} V_{x}^{n}\\ V_{y}^{n}\\ V_{z}^{n} \end{matrix}\right ]=\left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ]P_{n}^b \left [ \begin{matrix} V_{x}^{b}\\ V_{y}^{b}\\ V_{z}^{b} \end{matrix}\right ]\tag{7} [injnkn]VxnVynVzn=[injnkn]PnbVxbVybVzb(7)
上式中,显然 [ i n j n k n ] \left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ] [injnkn]可逆,于是有
[ V x n V y n V z n ] = P n b [ V x b V y b V z b ] (8) \left [ \begin{matrix} V_{x}^{n}\\ V_{y}^{n}\\ V_{z}^{n} \end{matrix}\right ]=P_{n}^b \left [ \begin{matrix} V_{x}^{b}\\ V_{y}^{b}\\ V_{z}^{b} \end{matrix}\right ]\tag{8} VxnVynVzn=PnbVxbVybVzb(8)
观察上式可以发现 P n b P_{n}^b Pnb不仅为从 n n n系到 b b b过渡矩阵,也是从 b b b系到 n n n坐标变换矩阵,为体现坐标变换将 P n b P_{n}^b Pnb记为 C b n C_{b}^n Cbn。又因为 C b n C_{b}^n Cbn由两坐标轴间夹角的余弦值构成,故又称方向余弦矩阵



















3.总结

 本文以旋转前后两坐标系的标准正交基投影关系切入,将旋转后坐标系的标准正交基用旋转前坐标系的标准正交基表示,从而建立起坐标系间的变换关系。然后,根据坐标系间基底的变换关系,推导出两坐标系坐标的变换公式,同时得到了方向余弦矩阵。

4.参考文献

《捷联惯导算法与组合导航原理》严恭敏 P9—P10 2.2.1方向余弦阵

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231840.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • golang 激活码2021_通用破解码

    golang 激活码2021_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    286
  • Python搭建代理IP池(一)- 获取 IP[通俗易懂]

    Python搭建代理IP池(一)- 获取 IP[通俗易懂]使用爬虫时,大部分网站都有一定的反爬措施,有些网站会限制每个IP的访问速度或访问次数,超出了它的限制你的IP就会被封掉。对于访问速度的处理比较简单,只要间隔一段时间爬取一次就行了,避免频繁访问;而对于访问次数,就需要使用代理IP来帮忙了,使用多个代理IP轮换着去访问目标网址可以有效地解决问题。目前网上有很多的代理服务网站可以提供代理服务,也提供一些免费的代理,但可用性较差,如果需…

    2022年6月5日
    131
  • pytorch安装、环境搭建及在pycharm中的设置

    pytorch安装、环境搭建及在pycharm中的设置pytorch安装、环境搭建及在pycharm中设置这两天同学在问我pytorch的安装,因为自己的已经安装好了,但是好像又有点遗忘,所以记录一下。一、安装python直接到官网找到和自己设备匹配的版本下载安装即可。安装过程不会出现太多问题,一般情况下python安装在本机上,故可以直接在终端测试是否安装成功。只需win+R——cmd——输入python,就会输出python的版本信息。…

    2022年8月29日
    3
  • java中接口(interface)详解

    java中接口(interface)详解接口(interface)有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口定义举例publicinterfaceRunnerintid=…

    2022年7月13日
    25
  • 面试官都震惊,你这网络基础可以啊![通俗易懂]

    面试官都震惊,你这网络基础可以啊![通俗易懂]目录网络1.对网络的基础认识<1>.组网方式<2>.OSI七层模型<3>.TCP/IP五层(四层模型)<4>.对封装分用的理解2.网络数据传输<1>局域网(1)认识IP和MAC(2)网络数据传输的特性(3)网络数据传输流程1)网络互联的方式2).局域网交换机组网的方式3)局域网交换机+路由器组网的方式<2>广域网传输流程3.UDP和TCP<1>UDP协议<2>TCP协议(可靠的传输协议)(1)TCP相关概念(2)

    2022年4月20日
    420

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号