草庐IT

欧拉角表示的姿态矩阵(313和312转序)

步木木 2025-07-09 原文

一、习惯约定


图片来自 PSINS(高精度捷联惯导算法) PSINS工具箱入门与详解.pptx

二、基本旋转矩阵

绕x轴逆时钟旋转 α \alpha α角度
R x ( α ) = [   1 0 0 0 cos ⁡ α sin ⁡ α 0 − sin ⁡ α cos ⁡ α ] R_x(\alpha)=\begin{bmatrix} \ 1 & 0 & 0 \\ 0 & \cos \alpha & \sin \alpha \\ 0 & -\sin \alpha & \cos \alpha\end{bmatrix} Rx(α)=  1000cosαsinα0sinαcosα
绕y轴逆时钟旋转 α \alpha α角度
R y ( α ) = [   cos ⁡ α 0 − sin ⁡ α 0 1 0 sin ⁡ α 0 cos ⁡ α ] R_y(\alpha)=\begin{bmatrix} \ \cos \alpha & 0 & -\sin \alpha \\ 0 & 1 & 0 \\ \sin \alpha & 0 & \cos \alpha\end{bmatrix} Ry(α)=  cosα0sinα010sinα0cosα
绕z轴逆时钟旋转 α \alpha α角度
R z ( α ) = [ cos ⁡ α sin ⁡ α 0 − sin ⁡ α cos ⁡ α 0 0 0 1 ] R_z(\alpha)=\begin{bmatrix} \cos \alpha & \sin \alpha & 0 \\ -\sin \alpha & \cos \alpha & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(α)= cosαsinα0sinαcosα0001

三、313转序(ZXZ)

ZXZ转序如图所示,转角依次为: ψ \psi ψ θ \theta θ ϕ \phi ϕ,即绕 z z z轴转 ψ \psi ψ角,在绕 x ′ x' x轴转 θ \theta θ角,最后绕 z ′ ′ z'' z′′轴转 ϕ \phi ϕ角。

根据基本旋转矩阵,可得出姿态矩阵
C = R z ( ϕ ) R x ( θ ) R z ( ψ ) = [ cos ⁡ ϕ sin ⁡ ϕ 0 − sin ⁡ ϕ cos ⁡ ϕ 0 0 0 1 ] [   1 0 0 0 cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ ] [ cos ⁡ ψ sin ⁡ ψ 0 − sin ⁡ ψ cos ⁡ ψ 0 0 0 1 ] = [ cos ⁡ ϕ cos ⁡ ψ − sin ⁡ ϕ cos ⁡ θ sin ⁡ ψ cos ⁡ ϕ sin ⁡ ψ + sin ⁡ ϕ cos ⁡ θ cos ⁡ ψ sin ⁡ ϕ sin ⁡ θ − sin ⁡ ϕ cos ⁡ ψ − cos ⁡ ϕ cos ⁡ θ sin ⁡ ψ − sin ⁡ ϕ sin ⁡ ψ + cos ⁡ ϕ cos ⁡ θ cos ⁡ ψ cos ⁡ ϕ sin ⁡ θ sin ⁡ θ sin ⁡ ψ − sin ⁡ θ cos ⁡ ψ cos ⁡ θ ] \begin{align} C &= R_z(\phi)R_x(\theta)R_z(\psi)\\ &= \begin{bmatrix} \cos \phi & \sin \phi & 0 \\ -\sin \phi & \cos \phi & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} \ 1 & 0 & 0 \\ 0 & \cos \theta & \sin \theta \\ 0 & -\sin \theta & \cos \theta\end{bmatrix} \begin{bmatrix} \cos \psi & \sin \psi & 0 \\ -\sin \psi & \cos \psi & 0 \\ 0 & 0 & 1 \end{bmatrix}\\ &= \begin{bmatrix} \cos\phi\cos\psi-\sin\phi\cos\theta\sin\psi & \cos\phi\sin\psi+\sin\phi\cos\theta\cos\psi & \sin\phi\sin\theta \\ -\sin\phi\cos\psi-\cos\phi\cos\theta\sin\psi & -\sin\phi\sin\psi+\cos\phi\cos\theta\cos\psi & \cos\phi\sin\theta \\ \sin\theta\sin\psi & -\sin\theta\cos\psi & \cos\theta \end{bmatrix} \end{align} C=Rz(ϕ)Rx(θ)Rz(ψ)= cosϕsinϕ0sinϕcosϕ0001  1000cosθsinθ0sinθcosθ cosψsinψ0sinψcosψ0001 = cosϕcosψsinϕcosθsinψsinϕcosψcosϕcosθsinψsinθsinψcosϕsinψ+sinϕcosθcosψsinϕsinψ+cosϕcosθcosψsinθcosψsinϕsinθcosϕsinθcosθ
{ ψ = − arctan ⁡ C z x C z y θ = arccos ⁡ C z z ϕ = arctan ⁡ C x z C y z \begin{equation} \left\{ \begin{array}{lr} \psi=-\arctan\dfrac{C_{zx}}{C_{zy}} \\ \theta=\arccos{C_{zz}}\\ \phi=\arctan\dfrac{C_{xz}}{C_{yz}} \end{array} \right. \end{equation} ψ=arctanCzyCzxθ=arccosCzzϕ=arctanCyzCxz

四、312转序(ZXY)


ZXY转序如图所示,转角依次为: ψ \psi ψ ϕ \phi ϕ θ \theta θ,即绕 z z z轴转 ψ \psi ψ角,在绕 x ′ x' x轴转 ϕ \phi ϕ角,最后绕 y ′ ′ y'' y′′轴转 θ \theta θ角。

根据基本旋转矩阵,可得出姿态矩阵
C = R y ( θ ) R x ( ϕ ) R z ( ψ ) = [   cos ⁡ θ 0 − sin ⁡ θ 0 1 0 sin ⁡ θ 0 cos ⁡ θ ] [   1 0 0 0 cos ⁡ ϕ sin ⁡ ϕ 0 − sin ⁡ ϕ cos ⁡ ϕ ] [ cos ⁡ ψ sin ⁡ ψ 0 − sin ⁡ ψ cos ⁡ ψ 0 0 0 1 ] = [ cos ⁡ θ cos ⁡ ψ − sin ⁡ θ sin ⁡ ϕ sin ⁡ ψ cos ⁡ θ sin ⁡ ψ + sin ⁡ θ sin ⁡ ϕ cos ⁡ ψ − sin ⁡ θ cos ⁡ ϕ − cos ⁡ ϕ sin ⁡ ψ cos ⁡ ϕ cos ⁡ ψ sin ⁡ ϕ sin ⁡ θ cos ⁡ ψ + cos ⁡ θ sin ⁡ ϕ sin ⁡ ψ sin ⁡ θ sin ⁡ ψ − cos ⁡ θ sin ⁡ ϕ cos ⁡ ψ cos ⁡ θ cos ⁡ ϕ ] \begin{align} C &= R_y(\theta)R_x(\phi)R_z(\psi)\\ &=\begin{bmatrix} \ \cos \theta & 0 & -\sin \theta \\ 0 & 1 & 0 \\ \sin \theta & 0 & \cos \theta\end{bmatrix}\begin{bmatrix} \ 1 & 0 & 0 \\ 0 & \cos \phi & \sin \phi \\ 0 & -\sin \phi & \cos \phi\end{bmatrix} \begin{bmatrix} \cos \psi & \sin \psi & 0 \\ -\sin \psi & \cos \psi & 0 \\ 0 & 0 & 1 \end{bmatrix}\\ &= \begin{bmatrix} \cos\theta\cos\psi-\sin\theta\sin\phi\sin\psi & \cos\theta\sin\psi+\sin\theta\sin\phi\cos\psi & -\sin\theta\cos\phi \\ -\cos\phi\sin\psi & \cos\phi\cos\psi & \sin\phi \\ \sin\theta\cos\psi+\cos\theta\sin\phi\sin\psi & \sin\theta\sin\psi-\cos\theta\sin\phi\cos\psi & \cos\theta\cos\phi \end{bmatrix} \end{align} C=Ry(θ)Rx(ϕ)Rz(ψ)=  cosθ0sinθ010sinθ0cosθ  1000cosϕsinϕ0sinϕcosϕ cosψsinψ0sinψcosψ0001 = cosθcosψsinθsinϕsinψcosϕsinψsinθcosψ+cosθsinϕsinψcosθsinψ+sinθsinϕcosψcosϕcosψsinθsinψcosθsinϕcosψsinθcosϕsinϕcosθcosϕ
{ ψ = − arctan ⁡ C y x C y y θ = arcsin ⁡ C y z ϕ = − arctan ⁡ C x z C z z \begin{equation} \left\{ \begin{array}{lr} \psi=-\arctan\dfrac{C_{yx}}{C_{yy}} \\ \theta=\arcsin{C_{yz}}\\ \phi=-\arctan\dfrac{C_{xz}}{C_{zz}} \end{array} \right. \end{equation} ψ=arctanCyyCyxθ=arcsinCyzϕ=arctanCzzCxz

有关欧拉角表示的姿态矩阵(313和312转序)的更多相关文章

  1. Ruby - 如何将消息长度表示为 2 个二进制字节 - 2

    我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi

  2. 旋转矩阵的几何意义 - 2

    点向量坐标矩阵的几何意义介绍旋转矩阵的几何含义之前,先介绍一下点向量坐标矩阵的几何含义点:在一维空间下就是一个标量,如同一条直线上,以任意某一个位置为0点,以一定的尺度间隔为1,2,3...,相反方向为-1,-2,-3...;如此就形成了一维坐标系,这时候任何一个点都可以用一个数值表示,如点p1=5,即即从原点出发沿着x轴正方向移动5个尺度;点p2=-3,负方向移动3个尺度;     在一维坐标系上过原点做垂直于一维坐标系的直线,则形成了二维坐标系,此时描述一个点需要两个数值来表示点p3=(3,2),即从原点出发沿着x轴正方向移动3个尺度,在此基础上沿着y轴正方向移动两个尺度的位置就是点p3。

  3. 华为OD机试真题 C++ 实现【带传送阵的矩阵游离】【2023 Q2 | 200分】 - 2

            所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。

  4. ruby - 如何在 Ruby 中返回整数的固定长度二进制表示? - 2

    我知道我可以使用Fixnum#to_s将整数表示为二进制格式的字符串。但是1.to_s(2)生成1而我希望它生成00000001。我怎样才能使所有返回的字符串都以零作为填充到8个字符?我可以使用类似的东西:binary="#{'0'*(8-(1.to_s(2)).size)}#{1.to_s(2)}"if(1.to_s(2)).size但这看起来不是很优雅。 最佳答案 使用字符串格式。"%08b"%1#=>"00000001" 关于ruby-如何在Ruby中返回整数的固定长度二进制表示?

  5. 欧拉角表示的姿态矩阵(313和312转序) - 2

    一、习惯约定图片来自PSINS(高精度捷联惯导算法)PSINS工具箱入门与详解.pptx二、基本旋转矩阵绕x轴逆时钟旋转α\alphaα角度Rx(α)=[ 1000cos⁡αsin⁡α0−sin⁡αcos⁡α]R_x(\alpha)=\begin{bmatrix}\1&0&0\\0&\cos\alpha&\sin\alpha\\0&-\sin\alpha&\cos\alpha\end{bmatrix}Rx​(α)=​ 100​0cosα−sinα​0sinαcosα​​绕y轴逆时钟旋转α\alphaα角度Ry(α)=[ cos⁡α0−sin⁡α010sin⁡α0cos⁡α]R_y(\alpha

  6. 欧拉角、旋转矩阵及四元数 - 2

    欧拉角、旋转矩阵及四元数1.简介2.欧拉角2.1欧拉角定义2.2右手系和左手系2.3转换流程3.旋转矩阵4.四元数4.1四元数与欧拉角和旋转矩阵之间等效变换4.2测试Matlab代码5.总结1.简介常用姿态参数表达方式包括方向余弦矩阵、欧拉轴/角参数、欧拉角、四元数以及罗德里格参数等。高分辨率光学遥感卫星主要采用欧拉角与四元数对姿态参数进行描述。这里着重讲解欧拉角、旋转矩阵和四元数。2.欧拉角2.1欧拉角定义欧拉角是表征刚体旋转的一种方法之一,由莱昂哈德·欧拉引入的三个角度,用于描述刚体相对于固定坐标系的方向。在摄影测量、空间科学或其它技术领域,一般用一组(三个)欧拉角描述两个空间坐标之间的旋

  7. ruby - 如何修改矩阵(Ruby std-lib Matrix 类)? - 2

    我理解RubystdlibMatrix是不可修改的,也就是说,例如。m=Matrix.zero(3,4)不会写m[0,1]=7但我非常想做...我可以用笨拙的编程来做,比如defmodify_value_in_a_matrix(matrix,row,col,newval)ary=(0...m.row_size).map{|i|m.rowi}.map(&:to_a)ary[row][col]=newvalMatrix[*ary]end...或者作弊,比如Matrix.send:[]=,0,1,7但我想知道,这一定是人们一直遇到的问题。有没有一些标准的、习惯的方法可以做到这一点,而不必使用

  8. 欧拉系统安装与部署NextCloud及数据迁移 - 2

    欧拉系统部署NextCloud与常见部署问题解决以及数据盘迁移一、欧拉系统安装二、openEuler安装图形界面Ukui三、yum安装的npm包进行本地保存设置(个人任务需要)四、部署nextCloud4.1构建LAMP环境基础4.1.1开启httpd,防火墙端口号4.1.2开启MariaDB服务4.1.3安装并测试php4.2下载安装nextCloud4.2.1创建nextCloud数据库,存放网盘文件索引与用户信息4.2.2拷贝NextCloud并创建data目录,目录赋予权限五、离线npm包方式部署NextCloud(个人需要,正常联网状态搭建LAMP环境后,拷贝NextCloud安装即

  9. 线性代数让我想想:快速求三阶矩阵的逆矩阵 - 2

    快速求三阶矩阵的逆矩阵前言一般情况下,我们求解伴随矩阵是要注意符号问题和位置问题的(如下所示)A−1=1[  ][−[  ]−[  ]−[  ]  −[  ]]=A−1=1[  ][   M11−[M12]   M13−[M21]   M22−[M23]     M31−[M32]   M33]⊤\begin{aligned}&A^{-1}=\frac{1}{[\\]}\left[\begin{array}{cccccc}&-[\\]&\\-[\\]&&-[\\]\\\\&-[\\]&\\\end{array}\right]=\\\\&A^{-1}=\frac{1}{[\\]}\left[\b

  10. 相机校准—外参矩阵 - 2

    在本文中,我们将探讨摄影机的外参,并通过Python中的一个实践示例来加强我们的理解。相机外参摄像头可以位于世界任何地方,并且可以指向任何方向。我们想从摄像机的角度来观察世界上的物体,这种从世界坐标系到摄像机坐标系的转换被称为摄像机外参。那么,我们怎样才能找到相机外参呢?一旦我们弄清楚相机是如何变换的,我们就可以找到从世界坐标系到相机坐标系的基变换的变化。我们将详细探讨这个想法。具体来说,我们需要知道相机是如何定位的,以及它在世界空间中的位置,有两种转换可以帮助我们:有助于确定摄影机方向的旋转变换。有助于移动相机的平移变换。让我们详细看看每一个。旋转通过旋转改变坐标让我们看一下将点旋转一个角度

随机推荐