23 lines
931 B
Matlab
23 lines
931 B
Matlab
|
function [Cb2n_312, Cb2n_321] = eul2m(att)
|
|||
|
% 将欧拉角转换为姿态阵
|
|||
|
% 复用严龚敏老师的a2mat
|
|||
|
%
|
|||
|
% Input: att 单位:rad
|
|||
|
% 对于312((Z->X->Y))顺序,对应att = [pitch(绕X轴) roll(绕Y轴) yaw(绕Z轴)]
|
|||
|
% 对于3211(Z->Y->X)顺序,对应att = [roll(绕X轴) pitch(绕Y轴) yaw(绕Z轴)]
|
|||
|
% Outputs:
|
|||
|
% Cb2n_312: 312欧拉角顺序下转换后的Cb2n
|
|||
|
% Cb2n_321: 321欧拉角顺序下转换后的Cb2n
|
|||
|
|
|||
|
s = sin(att); c = cos(att);
|
|||
|
si = s(1); sj = s(2); sk = s(3);
|
|||
|
ci = c(1); cj = c(2); ck = c(3);
|
|||
|
Cb2n_312 = [ cj*ck-si*sj*sk, -ci*sk, sj*ck+si*cj*sk;
|
|||
|
cj*sk+si*sj*ck, ci*ck, sj*sk-si*cj*ck;
|
|||
|
-ci*sj, si, ci*cj ];
|
|||
|
if nargout==2 % dual Euler angle DCM
|
|||
|
Cb2n_321 = [ cj*ck, si*sj*ck-ci*sk, ci*sj*ck+si*sk;
|
|||
|
cj*sk, si*sj*sk+ci*ck, ci*sj*sk-si*ck;
|
|||
|
-sj, si*cj, ci*cj ];
|
|||
|
end
|
|||
|
|