方向餘弦陣,歐拉角,四元數

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,四元數微分

詳細的推導參看秦永元版慣性導航

相關文章
相關標籤/搜索