旋转矩阵、四元数和欧拉角之间的转换——Matlab

         这段时间一直在搞一些关于坐标旋转的东西,刚开始的时候很苦恼,不知道这三种方式之间怎么转换。最近终于明白怎么用Matlab来实现他们之间的转换,所以记录下来。

        用R表示旋转矩阵,yaw pitch roll分别表示Z Y X轴的转角,q=[q0,q1,q2,q3]'表示单位四元数。

          R=angle2dcm(r1,r2,r3,S); 

         [r2,r2,r3]=dcm2angle(R, S);    // 结果为弧度,需要转化为角度


         R=quat2dcm([q0 q1 q2 q3]);

         [r1,r2,r3]=quat2angle([q0 q1 q2 q2],S);

         [q0 q1 q2 q2]=dcm2quat(R);

         [q0 q1 q2 q2]=angle2quat(r1,r2,r3,S);

         r1,r2,r3 表示三次转动的转轴转角,S表示转动的次序,共有12种,‘ZYX’,‘ZXY’等等。如果不加S,则默认转序为‘ZYX’,

        R=angle2dcm(yaw/180*pi,pitch/180*pi,roll/180*pi);

        R=angle2dcm(roll/180*pi,yaw/180*pi,pitch/180*pi,'XZY');表示XZY的转序

       而四元数与欧拉角的转换,不加S的话,求角的顺序默认为

         [yaw,pitch,roll]=quat2angle([q0 q1 q2 q2]);    无论转序如何

       其他公式类似,注意转序对应。

如果想要看更加详尽的解释,可以去Matlab中看相应函数的定义。

你可能感兴趣的:(旋转矩阵、四元数和欧拉角之间的转换——Matlab)