方向余弦阵,欧拉角,四元数

1,方向余弦阵3d

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

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

 

 

2,欧拉角io

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

 

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

以后提出 Tait-Bryan 角nio

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

一般yaw角也用ψ表示,pitch角也用θ表示,roll角也用φ表示。而且yaw和roll的范围是[-∏,∏],pitch的范围是[-Π/2,Π/2].方法

不一样的旋转组合虽然能够获得相同的坐标转换结果,可是获得的roll,pitch,yaw是不一样的。im

按照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,四元数微分

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

相关文章
相关标签/搜索