方向余弦矩阵DCM&刚体的矢量—矩阵描述

  • 简介
  • 方向余弦矩阵
  • 刚体的矢量—矩阵描述

简介

我本意是为了学习理论力学,但是我对方向余弦矩阵的理解不够,所以不得不补习一下基础知识。这个过程里,我发现网上其他的文章当中,没有从方向余弦矩阵讲到理论力学的(但是有DCM&无人机的文章)。为了方便自己以后复习,我就把两个部分合并在一起写下来。第一次写文,若有不足望海涵

方向余弦矩阵

  1. 简介
    百度百科的解释
    方向余弦是指在解析几何里,一个向量的三个方向余弦分别是这向量与三个坐标轴之间的角度的余弦。两个向量之间的方向余弦指的是这两个向量之间的角度的余弦。方向余弦是指在解析几何里,一个向量的三个方向余弦分别是这向量与三个坐标轴之间的角度的余弦。两个向量之间的方向余弦指的是这两个向量之间的角度的余弦。
    “方向余弦矩阵”是由两组不同的标准正交基的基底向量之间的方向余弦所形成的矩阵。方向余弦矩阵可以用来表达一组标准正交基与另一组标准正交基之间的关系,也可以用来表达一个向量对于另一组标准正交基的方向余弦。
    我的通俗理解
    线性空间中的一个矢量,是不依赖坐标系的。但是在理论力学中,我们往往需要一个坐标系去描述该矢量。
    涉及到多个坐标轴系时,就需要寻找同一矢量的不同坐标表示之间的关系。而这个关系就是方向余弦矩阵。
    符号说明
符号 说明
I , J \bm{I},\bm{J} I,J O X Y OXY OXY坐标轴系的基向量
i , j \bm{i},\bm{j} i,j O x y Oxy Oxy坐标轴系的基向量
r \bm{r} r 目标矢量
I i , I j , J i , J j I_i,I_j,J_i,J_j Ii​,Ij​,Ji​,Jj​… I i I_i Ii​为 I \bm{I} I在 i \bm{i} i上的投影的长度,其他类同
( r I , r J ) (r_I,r_J) (rI​,rJ​) r \bm{r} r在 O X Y OXY OXY坐标轴系下的表示
( r i , r j ) (r_i,r_j) (ri​,rj​) r \bm{r} r在 O x y Oxy Oxy坐标轴系下的表示

例子

图中的矢量 r \bm{r} r(注意:矢量 r \bm{r} r与上面三个坐标系都没有关系)
请问:如何根据 ( r I , r J ) ({r_I},{r_J}) (rI​,rJ​),求出矢量 r \bm{r} r在 O x y Oxy Oxy坐标轴系下的坐标 ( r i , r j ) ({r_i},{r_j}) (ri​,rj​)?
反之,如果知道矢量 r \bm{r} r在 O x y Oxy Oxy坐标轴系下的坐标 ( r i , r j ) ({r_i},{r_j}) (ri​,rj​),如何求出 ( r I , r J ) ({r_I},{r_J}) (rI​,rJ​)?
这两个就需要方向余弦矩阵解答了。
2. 正题
Q1:根据 ( r i , r j ) ({r_i},{r_j}) (ri​,rj​),求出矢量 r \bm{r} r在 O X Y OXY OXY坐标轴系下的坐标 ( r I , r J ) ({r_I},{r_J}) (rI​,rJ​)

矢量 r \bm{r} r在 O X Y OXY OXY坐标轴系下的坐标为 ( r I , r J ) ({r_I},{r_J}) (rI​,rJ​),即:
r = r I I + r J J \bm{r} = r_I \bm{I}+r_J \bm{J} r=rI​I+rJ​J
I , J \bm{I},\bm{J} I,J本身作为矢量,也是可以被 O x y Oxy Oxy表示的:

{ I = I i i + I j j J = J i i + J j j \begin{cases} \bm{I} = I_i \bm{i} + I_j \bm{j}\\ \bm{J} = J_i \bm{i} + J_j \bm{j} \end{cases} {I=Ii​i+Ij​jJ=Ji​i+Jj​j​
(注意:粗体 I I I和细体 I i , I j I_i,I_j Ii​,Ij​的差别)
带回后

r = r I I + r J J = r I ( I i i + I j j ) + r J ( J i i + J j j ) = ( r I I i + r J J i ) i + ( r I I j + r J J j ) j \begin {aligned} \bm{r}&=r_I \bm{I}+r_J \bm{J} \\ &= r_I ( I_i \bm{i} + I_j \bm{j})+r_J (J_i \bm{i} + J_j \bm{j}) \\ &=(r_I I_i + r_J J_i)\bm{i}+(r_I I_j + r_J J_j) \bm{j} \end {aligned} r​=rI​I+rJ​J=rI​(Ii​i+Ij​j)+rJ​(Ji​i+Jj​j)=(rI​Ii​+rJ​Ji​)i+(rI​Ij​+rJ​Jj​)j​
( r i r j ) = ( r I I i + r J J i r I I j + r J J j ) = [ I i J i I j J j ] ( r I r J ) \left( \begin{matrix} r_i\\ r_j \end{matrix} \right)= \left( \begin{matrix} r_I I_i + r_J J_i\\ r_I I_j + r_J J_j \end{matrix} \right)= \left[ \begin{matrix} I_i & J_i \\ I_j & J_j \end{matrix} \right] \left( \begin{matrix} r_I \\ r_J \end{matrix} \right) (ri​rj​​)=(rI​Ii​+rJ​Ji​rI​Ij​+rJ​Jj​​)=[Ii​Ij​​Ji​Jj​​](rI​rJ​​)

[ I i J i I j J j ] \left[ \begin{matrix} I_i & J_i \\ I_j & J_j \end{matrix} \right] [Ii​Ij​​Ji​Jj​​]就是方向余弦矩阵,按列展开,第一列表示 I \bm{I} I在 O x y Oxy Oxy坐标轴系下的坐标 I O x y \bm{I}^{Oxy} IOxy,第二列表示 J \bm{J} J在 O x y Oxy Oxy坐标轴系下的坐标 J O x y \bm{J}^{Oxy} JOxy,记作 [ I J ] O x y \left[ \begin{matrix}\bm{I} & \bm{J}\end{matrix}\right]^{Oxy} [I​J​]Oxy。
具体矩阵的每一个元素的值是多少呢?
[ I J ] O x y = [ I ⋅ i ∥ i ∥ J ⋅ i ∥ i ∥ I ⋅ j ∥ j ∥ J ⋅ j ∥ j ∥ ] = [ ∥ I ∥ c o s ( I , i ) ∥ J ∥ c o s ( J , i ) ∥ I ∥ c o s ( I , j ) ∥ J ∥ c o s ( J , j ) ] \left[ \begin{matrix}\bm{I} & \bm{J}\end{matrix}\right]^{Oxy}= \left[ \begin{matrix} \frac{\bm{I \cdot i}}{\|{\bm{i}}\|} & \frac{\bm{J \cdot i}}{\|{\bm{i}}\|} \\ \frac{\bm{I \cdot j}}{\|{\bm{j}}\|} & \frac{\bm{J \cdot j}}{\|{\bm{j}}\|} \end{matrix} \right]= \left[ \begin{matrix} {\|\bm{I}\|}cos(\bm{I},\bm{i}) & {\|\bm{J}\|}cos(\bm{J},\bm{i}) \\ {\|\bm{I}\|}cos(\bm{I},\bm{j}) & {\|\bm{J}\|}cos(\bm{J},\bm{j}) \end{matrix} \right] [I​J​]Oxy=[∥i∥I⋅i​∥j∥I⋅j​​∥i∥J⋅i​∥j∥J⋅j​​]=[∥I∥cos(I,i)∥I∥cos(I,j)​∥J∥cos(J,i)∥J∥cos(J,j)​]
当 ∥ I ∥ , ∥ J ∥ \|\bm{I}\|,\|\bm{J}\| ∥I∥,∥J∥均为 1 1 1时
[ I J ] O x y = [ I ⋅ i J ⋅ i I ⋅ j J ⋅ j ] = [ c o s ( I , i ) c o s ( J , i ) c o s ( I , j ) c o s ( J , j ) ] \left[ \begin{matrix}\bm{I}&\bm{J}\end{matrix}\right]^{Oxy}= \left[ \begin{matrix} {\bm{I \cdot i}} & {\bm{J \cdot i}} \\ {\bm{I \cdot j}} & {\bm{J \cdot j}} \end{matrix} \right]= \left[ \begin{matrix} cos(\bm{I},\bm{i}) & cos(\bm{J},\bm{i}) \\ cos(\bm{I},\bm{j}) & cos(\bm{J},\bm{j}) \end{matrix} \right] [I​J​]Oxy=[I⋅iI⋅j​J⋅iJ⋅j​]=[cos(I,i)cos(I,j)​cos(J,i)cos(J,j)​]
类似地:
[ i j ] O X Y = [ i ⋅ I j ⋅ I i ⋅ J j ⋅ J ] = [ c o s ( i , I ) c o s ( j , I ) c o s ( i , J ) c o s ( j , J ) ] \left[ \begin{matrix}\bm{i}&\bm{j}\end{matrix}\right]^{OXY}= \left[ \begin{matrix} {\bm{i \cdot I}} & {\bm{j \cdot I}} \\ {\bm{i \cdot J}} & {\bm{j \cdot J}} \end{matrix} \right]= \left[ \begin{matrix} cos(\bm{i},\bm{I}) & cos(\bm{j},\bm{I}) \\ cos(\bm{i},\bm{J}) & cos(\bm{j},\bm{J}) \end{matrix} \right] [i​j​]OXY=[i⋅Ii⋅J​j⋅Ij⋅J​]=[cos(i,I)cos(i,J)​cos(j,I)cos(j,J)​]
根据方向余弦矩阵,就能变换矢量 r \bm{r} r的坐标表示。
3. 性质

  • [ I J ] O x y \left[ \begin{matrix}\bm{I}&\bm{J}\end{matrix}\right]^{Oxy} [I​J​]Oxy的转置等于 [ i j ] O X Y \left[ \begin{matrix}\bm{i}&\bm{j}\end{matrix}\right]^{OXY} [i​j​]OXY
  • 方向余弦矩阵为正交矩阵
    (证明:因为 I ⋅ J = 0 I \cdot J = 0 I⋅J=0所以 I O x y ⋅ J O x y = 0 I^{Oxy}\cdot J^{Oxy} = 0 IOxy⋅JOxy=0)
  • n阶方向余弦矩阵只有n个自由量
    以三维坐标轴系为例,做一个不严谨但直观的解释:确定一个坐标轴系A只需要知道任意两个坐标轴,就可以确定第三条轴,从而确定整个坐标轴系;坐标轴A旋转至坐标轴B的夹角也是一个三维向量,从而就能确定坐标轴B。综上,3阶方向余弦矩阵需要3个自由量。

刚体的矢量—矩阵描述

符号 说明
O 0 X 0 Y 0 Z 0 O_0X_0Y_0Z_0 O0​X0​Y0​Z0​ 固定坐标系
O X Y Z OXYZ OXYZ 平动坐标系,由 O 0 X 0 Y 0 Z 0 O_0X_0Y_0Z_0 O0​X0​Y0​Z0​ 平移得到
O x y z Oxyz Oxyz 固连坐标系,由 O X Y Z OXYZ OXYZ旋转得到
ρ ‾ \underline{\rho} ρ​ r \bm{r} r在 O x y z Oxyz Oxyz下的坐标,为常数
r ‾ \underline{r} r​ r \bm{r} r在 O X Y Z OXYZ OXYZ下的坐标,随着刚体旋转而发生变化
A A A 从 O x y z Oxyz Oxyz到 O X Y Z OXYZ OXYZ的方向余弦矩阵,随着刚体旋转而发生变化( r ‾ = A ρ ‾ \underline{r} = A\underline{\rho} r​=Aρ​, ρ ‾ = A − 1 r ‾ = A T r ‾ \underline{\rho} = A^{-1} \underline{r}=A^{T} \underline{r} ρ​=A−1r​=ATr​)

如何求得 O 0 X 0 Y 0 Z 0 O_0X_0Y_0Z_0 O0​X0​Y0​Z0​坐标系下, 刚体上任意一点的轨迹方程?
不考虑任何坐标轴系
R = R 0 + r \bm{R} = \bm{R_0}+\bm{r} R=R0​+r
在 O 0 X 0 Y 0 Z 0 O_0X_0Y_0Z_0 O0​X0​Y0​Z0​下
R ‾ = R 0 ‾ + r ‾ = R 0 ‾ + A ρ ‾ \underline{R} = \underline{R_0}+\underline{r} = \underline{R_0}+{ A\underline{\rho}} R​=R0​​+r​=R0​​+Aρ​
刚体上任意一点的运动可以由一个向量 R 0 R_0 R0​和一个矩阵 A A A描述
{ R 0 = R 0 ( t ) — — 描 述 平 动 A = A ( t ) — — 描 述 刚 体 相 对 于 基 点 的 转 动 ( 定 点 运 动 ) \begin{cases} \bm{R_0} = \bm{R_0(t)}——描述平动\\ \bm{A} = \bm{A(t)}——描述刚体相对于基点的转动(定点运动) \end{cases} {R0​=R0​(t)——描述平动A=A(t)——描述刚体相对于基点的转动(定点运动)​
因此,一般刚体的运动可以分解为基点的平动和相对于基点的转动(定点运动)。
由于 R 0 \bm{R_0} R0​有三个自由量,正交矩阵 A \bm{A} A有三个自由量,因此描述刚体运动需要六个独立参数。
如何求得 O 0 X 0 Y 0 Z 0 O_0X_0Y_0Z_0 O0​X0​Y0​Z0​坐标系下, 刚体上任意一点的速度方程?
在 O 0 X 0 Y 0 Z 0 O_0X_0Y_0Z_0 O0​X0​Y0​Z0​下对 R ‾ = R 0 ‾ + A ρ ‾ \underline{R} = \underline{R_0}+{ A\underline{\rho}} R​=R0​​+Aρ​求导:
R ‾ ˙ = R 0 ‾ ˙ + A ρ ‾ ˙ + A ρ ‾ ˙ = R 0 ‾ ˙ + A A T r ‾ ˙ + A ρ ‾ ˙ \dot{\underline{R}} = \dot{\underline{R_0}}+\dot{{ A}\underline{\rho}}+A\dot{\underline{\rho}}=\dot{\underline{R_0}}+\dot{{ A}A^T\underline{r}}+A\dot{\underline{\rho}} R​˙​=R0​​˙​+Aρ​˙​+Aρ​˙​=R0​​˙​+AATr​˙​+Aρ​˙​
由于 ρ ‾ \underline{\rho} ρ​是常数,所以 A ρ ‾ ˙ = 0 A\dot{\underline{\rho}}=0 Aρ​˙​=0,因此
R ‾ ˙ = R 0 ‾ ˙ + A A T r ‾ ˙ \dot{\underline{R}} =\dot{\underline{R_0}}+\dot{{ A}A^T\underline{r}} R​˙​=R0​​˙​+AATr​˙​

因此
v ‾ = R ‾ ˙ = R 0 ‾ ˙ + ω ~ r ‾ = R 0 ‾ ˙ + ω × r ‾ \underline{{v}} =\dot{\underline{R}} =\dot{\underline{R_0}}+\tilde{\omega}\underline{r}=\dot{\underline{R_0}}+\omega\times \underline{r} v​=R​˙​=R0​​˙​+ω~r​=R0​​˙​+ω×r​
其中 R 0 ‾ ˙ \dot{\underline{R_0}} R0​​˙​代表基点的平动速度, r ‾ ˙ = ω × r ‾ \dot{\underline{r}}=\omega\times \underline{r} r​˙​=ω×r​代表相对于基点的转动速度。
如何求得 O 0 X 0 Y 0 Z 0 O_0X_0Y_0Z_0 O0​X0​Y0​Z0​坐标系下, 刚体上任意一点的加速度方程?
a ‾ = v ‾ ˙ = R 0 ‾ ¨ + ω ˙ × r ‾ + ω × r ‾ ˙ = R 0 ‾ ¨ + ω ˙ × r ‾ + ω × ( ω × r ‾ ) \underline{{a}} = \dot{\underline{v}} =\ddot{\underline{R_0}}+\dot{\omega}\times \underline{r}+\omega\times \dot{\underline{r}}=\ddot{\underline{R_0}}+\dot{\omega}\times \underline{r}+\omega\times (\omega\times \underline{r}) a​=v​˙​=R0​​¨​+ω˙×r​+ω×r​˙​=R0​​¨​+ω˙×r​+ω×(ω×r​)
a ‾ = a 0 ‾ + ε × r ‾ + ω × ( ω × r ‾ ) \underline{{a}} = \underline{a_0}+{\varepsilon}\times \underline{r}+\omega\times (\omega\times \underline{r}) a​=a0​​+ε×r​+ω×(ω×r​)
其中
{ a 0 ‾ = R 0 ‾ ¨ 基 点 的 加 速 度 ε × r ‾ 转 动 加 速 度 ( 其 中 ε = ω ˙ ) ω × ( ω × r ‾ ) 向 ( 轴 ) 心 加 速 度 \begin{cases} \underline{a_0}=\ddot{\underline{R_0}} & 基点的加速度\\ {\varepsilon}\times \underline{r} & 转动加速度(其中\varepsilon = \dot{\omega})\\ \omega\times (\omega\times \underline{r}) &向(轴)心加速度 \end{cases} ⎩⎪⎨⎪⎧​a0​​=R0​​¨​ε×r​ω×(ω×r​)​基点的加速度转动加速度(其中ε=ω˙)向(轴)心加速度​
参考:
理论力学-刚体运动的矩阵与向量描述
https://wenku.baidu.com/view/7e699e4e8e9951e79b892757.html

方向余弦矩阵DCM刚体的矢量—矩阵描述相关推荐

  1. 向量的方向余弦公式_定位中方向余弦矩阵(DCM)简介

    1   前言 这篇文章是翻译Starlino_DCM_Tutorial.pdf而来, 链接为:http://www.starlino.com/dcm_tutorial.html 这篇文章主要是介绍无人 ...

  2. 方向余弦矩阵(DCM)简介(转)

    1   前言 这篇文章是翻译Starlino_DCM_Tutorial.pdf而来, 链接为:http://www.starlino.com/dcm_tutorial.html,各位看官可以对照着原文 ...

  3. 导向矢量矩阵(steering vector matrix)

    在阵列信号处理中,导向矢量矩阵(steering vector matrix)是描述阵列接收信号和信号源之间关系的重要工具.它用于计算不同到达角度(Direction of Arrival,DOA)下 ...

  4. 基础矩阵,本质矩阵,单应性矩阵讲解

    ORB-SLAM点云地图中相机的位姿初始化,无论算法工作在平面场景,还是非平面场景下,都能够完成初始化的工作.其中主要是使用了适用于平面场景的单应性矩阵H和适用于非平面场景的基础矩阵F,程序中通过一个 ...

  5. 向量 矩阵 张量_张量,矩阵和向量有什么区别?

    向量 矩阵 张量 机器学习代数 (MACHINE LEARNING ALGEBRA) Algebra is an important element of mathematics and has a ...

  6. ACMNO.24 C语言-转置矩阵 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。 输入 一个3x3的矩阵 输出 转置后的矩阵 样例

    题目描述 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换. 输入 一个3x3的矩阵 输出 转置后的矩阵 样例输入 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5 8 3 ...

  7. python 矩阵点乘_python相乘矩阵

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 鉴于最近复习线性代数计算量较大,且1800答案常常忽略一些逆阵.行列式的计算答案 ...

  8. 将矩阵转为一行_LeetCode1253:矩阵重构

    专注最新leetcode刷题,用自己的努力提升自己:用自己的分享,让更多人对算法更加得心应手. 题目描述 给定一个n列2行的矩阵,其满足一下的特征: 矩阵为一个二值矩阵,也就是矩阵中的每个元素要么为1 ...

  9. 矩阵迹的性质_矩阵(含逆)的迹、行列式关于矩阵自身的导数计算与Maple验证...

    常见神经网络在计算相邻层权重关系式时,矩阵对矩阵求导所涉及的维度拼接操作对理论萌新往往不太友好:对于数据型为矩阵的最小二乘问题,尽管迹对矩阵求导操作十分实用但很多人仍习惯于逐项计算偏导.本文避开&qu ...

最新文章

  1. 从这篇YouTube论文,剖析强化学习在工业级场景推荐系统中的应用
  2. c#百度排名点击器编写 及webser 填表.
  3. C#下的Windows服务通用壳程序(二)
  4. 正则判断 空格_js关于正则的前后关联约束(前后预查)
  5. 关于REST API设计的一些小经验
  6. java 检查打印机状态_爱普生打印机常见故障有哪些 爱普生打印机故障解决方法【详解】...
  7. 【主席树】bzoj1112: [POI2008]砖块Klo
  8. NLP—1.自然语言处理的基础任务与应用
  9. paip.提升用户体验----gcc c++ JIT-debugging 技术
  10. b站视频能外链吗html,Iframe代码嵌入BiliBili视频外链
  11. 分数排名 mysql_MYSQL分数排名
  12. linux利用源码安装madplay
  13. overleaf表格_LaTeX基本命令使用教程(清晰实例)(Overleaf平台)(论文排版)
  14. GRUB2配置文件grub.cfg详解(GRUB2实战手册)
  15. pytorch 调参
  16. 安全合规/法案--29--《网络安全法》原文及解读
  17. 计算机毕业设计之java+javaweb的仓储系统出入库模块设计系统
  18. 华为OD机试 - 硬件产品销售方案(Java JS Python)
  19. 华为云从入门到实战 | AI云开发ModelArts入门与WAF应用与部署
  20. 整理服务器项目描述,项目详细实施方案-模板整理版.doc

热门文章

  1. map和multimap的用法详解
  2. 影响企业未来的十大管理理念
  3. 任正非:做好这件事情最重要
  4. 什么是数据产品,怎么设计一个好用的数据产品
  5. 奥利给!有了这么豪横的指南,还愁不会逛 GitHub?!
  6. web前端开发学习路线
  7. HTML与CSS——CSS字体样式
  8. 选择SaaS供应商的15个关键问题
  9. OPC DA调研报告
  10. H5C3进阶——播放器