zoukankan      html  css  js  c++  java
  • 方向余弦阵,欧拉角,四元数

    1,方向余弦阵

    坐标变换矩阵的每一个元素都是i系某个坐标系与b系坐标系的夹角的余弦。这个转换方法也同样适用于二维坐标转换。只不过二维坐标转换不仅需要考虑旋转,同时也需要考虑坐标的平移变换。

    如上图所示,表示只进行旋转的时候二维坐标转换公式。此时旋转矩阵表示为P=

    2,欧拉角

     经典的欧拉角有多种定义,下面只介绍内旋方式的定义。

     

    所以,欧拉角只是绕着两个本机坐标轴在旋转,第三个坐标轴就没有用到。

    之后提出 Tait-Bryan 角

    经常说的yaw,pitch,roll就是用Tait-Bryan角实现的。并且yaw指的是绕z轴旋转的角度值,pitch指的是绕y轴旋转的角度值,roll指的是绕x轴旋转的角度值。

    通常yaw角也用ψ表示,pitch角也用θ表示,roll角也用φ表示。并且yaw和roll的范围是[-∏,∏],pitch的范围是[-Π/2,Π/2].

    不同的旋转组合虽然可以得到相同的坐标转换结果,但是得到的roll,pitch,yaw是不同的。

    按照x,y,z顺序旋转得到由roll,pitch,yaw表示的方向余弦如下

    由方向余弦得到roll pitch yaw的表达式如下

    roll(φ)=atan2(R(3,2),R(3,3));

    pitch(θ)=-asin(R(3,1));

    yaw(ψ)=atan2(R(2,1),R(1,1));

    3,四元数

    四元数的理解可以参考http://www.qiujiawei.com/understanding-quaternions/(理解四元数,比较通俗的解释了四元数)

    推导请查看秦永元版惯性导航中相关章节。

    四元数的几何意义:实部表示旋转角度的1/2的余弦值。虚部表示旋转轴与旋转角度的1/2的正弦值的乘积。

    四元数得到方向余弦矩阵的表达式

    上式和下式是相同的,因为四元数的平方和等于1。

    由方向余弦阵到四元数的转换可以参考以下matlab程序

    function q=dcm2q(R)
    
    T = 1 + R(1,1) + R(2,2) + R(3,3);
    
    if T > 10^-8
        
        S = 0.5 / sqrt(T);
        qw = 0.25 / S;
        qx = ( R(3,2) - R(2,3) ) * S;
        qy = ( R(1,3) - R(3,1) ) * S;
        qz = ( R(2,1) - R(1,2) ) * S;
    
    else
        
        if (R(1,1) > R(2,2)) && (R(1,1) > R(3,3))
            
            S = sqrt( 1 + R(1,1) - R(2,2) - R(3,3)) * 2; % S=4*qx
            qw = (R(3,2) - R(2,3)) / S;
            qx = 0.25 * S;
            qy = (R(1,2) + R(2,1)) / S;
            qz = (R(1,3) + R(3,1)) / S;
            
        elseif (R(2,2) > R(3,3))
            
            S = sqrt( 1 + R(2,2) - R(1,1) - R(3,3) ) * 2; %S=4*qy
            qw = (R(1,3) - R(3,1)) / S;
            qx = (R(1,2) + R(2,1)) / S;
            qy = 0.25 * S;
            qz = (R(2,3) + R(3,2)) / S;
    
        else
            
            S = sqrt( 1 + R(3,3) - R(1,1) - R(2,2) ) * 2; % S=4*qz
            qw = (R(2,1) - R(1,2)) / S;
            qx = (R(1,3) + R(3,1)) / S;
            qy = (R(2,3) + R(3,2)) / S;
            qz = 0.25 * S;
    
        end
    
    end
    q = [qx qy qz qw]';
    end
    

    4,方向余弦阵的微分

    5,四元数微分

    详细的推导参看秦永元版惯性导航

      

  • 相关阅读:
    38861cba61c66739c1452c3a71e39852.ttf net::ERR_ABORTED 404 (Not Found)
    php 进制转换base_convert
    mysql find_in_set 函数 使用方法
    xmind 破解
    python 获取 一个正整数的二进制
    算法 求一个数的平方根
    详细的描述一个测试活动完整的过程。
    常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
    HTTP 协议中 Vary 的一些研究
    svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
  • 原文地址:https://www.cnblogs.com/lianjiehere/p/8663290.html
Copyright © 2011-2022 走看看