matlab 中旋转矩阵、欧拉角、四元数之间的变换
- 欧拉角表示旋转矩阵
- 使用matlab函数进行转换
syms x;
syms y;
syms z;
% 欧拉角
x=pi/3;y=pi/4;z=pi/6;
r11= cos(z) * cos(y);
r12=cos(z) * sin(y) * sin(x) - sin(z) * cos(x);
r13=cos(z) * sin(y) * cos(x) + sin(z) * sin(x);
r21=sin(z) * cos(y);
r22=sin(z) * sin(y) * sin(x) + cos(z) * cos(x);
r23=sin(z) * sin(y) * cos(x) - cos(z) * sin(x);
r31=-sin(y);
r32=cos(y) * sin(x);
r33=cos(y) * cos(x);
R = [ r11 r12 r13;
r21 r22 r23;
r31 r32 r33
]
% rr=roundn(rr,-6);
%一
q =dcm2quat(R) %旋转矩阵转四元数
R
R1=quat2dcm([q(1) q(2) q(3) q(4)])%四元数转旋转矩阵
%以上,由 R--->q,再由q--->R1,互相验证
%二
x=pi/3;y=pi/4;z=pi/6;
q1=angle2quat(x,y,z)%欧拉角转四元数
% All rotation sequences, S, are supported: 'ZYX', 'ZYZ', 'ZXY', 'ZXZ',
% 'YXZ', 'YXY', 'YZX', 'YZY', 'XYZ', 'XYX', 'XZY', and 'XZX'.
%三
[x1,y1,z1]=quat2angle([q1(1) q1(2) q1(3) q1(4)])%四元数转欧拉角 得x1=pi/3,y1=pi/4,z1=pi/6
%以上,由 x,y,z---->q1,再由q1---->x1,y1,z1,互相验证
%四
R2=angle2dcm(pi/6,pi/4,pi/3)%欧拉角转旋转矩阵
%q = angle2quat( yaw, pitch, roll )
inv(R2)
%以上,由x,y,z---->R2,求R2的inv 与之前求得的R,R1均一致
命令行窗口