角度定义
艏摇角-偏航角--psi
横摇角-滚动角--phi
纵摇角-俯仰角--theta
MATLAB符号推导
首先定义符号变量phi theta psi
>> syms phi theta psi real
绕本体x轴转动的坐标转换关系为
>> cx = [1 0 0;0 cos(phi) sin(phi);0 -sin(phi) cos(phi)]
cx =
[1, 0, 0]
[0, cos(phi), sin(phi)]
[0, -sin(phi), cos(phi)]
绕本体y轴转动的坐标转换关系为
>> cy = [cos(theta) 0 -sin(theta);0 1 0;sin(theta) 0 cos(theta)]
cy =
[cos(theta), 0, -sin(theta)]
[ 0, 1, 0]
[sin(theta), 0, cos(theta)]
绕本体z轴转动的坐标转换关系为
>> cz = [cos(psi) sin(psi) 0;-sin(psi) cos(phi) 0;0 0 1]
cz =
[ cos(psi), sin(psi), 0]
[-sin(psi), cos(phi), 0]
[ 0, 0, 1]
按照3-2-1转序对应的坐标转换关系为
>> Cbo=cx*cy*cz
Cbo =
[ cos(psi)*cos(theta), cos(theta)*sin(psi), -sin(theta)]
[cos(psi)*sin(phi)*sin(theta) - cos(phi)*sin(psi), cos(phi)^2 + sin(phi)*sin(psi)*sin(theta), cos(theta)*sin(phi)]
[sin(phi)*sin(psi) + cos(phi)*cos(psi)*sin(theta), cos(phi)*sin(psi)*sin(theta) - cos(phi)*sin(phi), cos(phi)*cos(theta)]
>> Cob=Cbo'
Cob =
[cos(psi)*cos(theta), cos(psi)*sin(phi)*sin(theta) - cos(phi)*sin(psi), sin(phi)*sin(psi) + cos(phi)*cos(psi)*sin(theta)]
[cos(theta)*sin(psi), cos(phi)^2 + sin(phi)*sin(psi)*sin(theta), cos(phi)*sin(psi)*sin(theta) - cos(phi)*sin(phi)]
[ -sin(theta), cos(theta)*sin(phi), cos(phi)*cos(theta)]
按照3-1-2转序对应的坐标转换关系为
>> Cbo=cy*cx*cz
Cbo =
[cos(psi)*cos(theta) - sin(phi)*sin(psi)*sin(theta), cos(theta)*sin(psi) + cos(phi)*sin(phi)*sin(theta), -cos(phi)*sin(theta)]
[ -cos(phi)*sin(psi), cos(phi)^2, sin(phi)]
[cos(psi)*sin(theta) + cos(theta)*sin(phi)*sin(psi), sin(psi)*sin(theta) - cos(phi)*cos(theta)*sin(phi), cos(phi)*cos(theta)]
>> Cob=Cbo'
Cob =
[cos(psi)*cos(theta) - sin(phi)*sin(psi)*sin(theta), -cos(phi)*sin(psi), cos(psi)*sin(theta) + cos(theta)*sin(phi)*sin(psi)]
[cos(theta)*sin(psi) + cos(phi)*sin(phi)*sin(theta), cos(phi)^2, sin(psi)*sin(theta) - cos(phi)*cos(theta)*sin(phi)]
[ -cos(phi)*sin(theta), sin(phi), cos(phi)*cos(theta)]
按照3-2-1转序对应的角速度转换关系为
>> c = cx*cy*cz*diag([0,0,1])+cx*cy*diag([0,1,0])+cx*diag([1,0,0])
c =
[1, 0, -sin(theta)]
[0, cos(phi), cos(theta)*sin(phi)]
[0, -sin(phi), cos(phi)*cos(theta)]
>> invc = inv(c)
invc =
[1, (sin(phi)*sin(theta))/(cos(theta)*cos(phi)^2 + cos(theta)*sin(phi)^2), (cos(phi)*sin(theta))/(cos(theta)*cos(phi)^2 + cos(theta)*sin(phi)^2)]
[0, cos(phi)/(cos(phi)^2 + sin(phi)^2), -sin(phi)/(cos(phi)^2 + sin(phi)^2)]
[0, sin(phi)/(cos(theta)*cos(phi)^2 + cos(theta)*sin(phi)^2), cos(phi)/(cos(theta)*cos(phi)^2 + cos(theta)*sin(phi)^2)]
>> simplify(invc)
ans =
[1, (sin(phi)*sin(theta))/cos(theta), (cos(phi)*sin(theta))/cos(theta)]
[0, cos(phi), -sin(phi)]
[0, sin(phi)/cos(theta), cos(phi)/cos(theta)]
按照3-1-2转序对应的角速度转换关系为
>> c = cy*cx*cz*diag([0,0,1])+cy*cx*diag([1,0,0])+cy*diag([0,1,0])
c =
[cos(theta), 0, -cos(phi)*sin(theta)]
[ 0, 1, sin(phi)]
[sin(theta), 0, cos(phi)*cos(theta)]
>> invc = inv(c)
invc =
[ cos(theta)/(cos(theta)^2 + sin(theta)^2), 0, sin(theta)/(cos(theta)^2 + sin(theta)^2)]
[(sin(phi)*sin(theta))/(cos(phi)*cos(theta)^2 + cos(phi)*sin(theta)^2), 1, -(cos(theta)*sin(phi))/(cos(phi)*cos(theta)^2 + cos(phi)*sin(theta)^2)]
[ -sin(theta)/(cos(phi)*cos(theta)^2 + cos(phi)*sin(theta)^2), 0, cos(theta)/(cos(phi)*cos(theta)^2 + cos(phi)*sin(theta)^2)]
>> simplify(invc)
ans =
[ cos(theta), 0, sin(theta)]
[(sin(phi)*sin(theta))/cos(phi), 1, -(cos(theta)*sin(phi))/cos(phi)]
[ -sin(theta)/cos(phi), 0, cos(theta)/cos(phi)]