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,四元數微分
詳細的推導參看秦永元版慣性導航