旋转矩阵、四元数和欧拉角之间的转换——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中看相应函数的定义。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值