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

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Matlab中,可以使用旋转矩阵(DCM)和欧拉角之间进行转换旋转矩阵可以表示物体在三维空间中的旋转,而XYZ欧拉角则描述了该旋转的姿态。通过使用Matlab提供的现有函数,可以实现旋转矩阵到XYZ欧拉角转换。 在Matlab中,可以使用以下函数实现旋转矩阵到XYZ欧拉角转换: [X,Y,Z] = ROTATESURF(x,y,z,euleraxis,eulerangle) 其中,x、y和z是相同大小的矩阵,表示要进行旋转的对象的坐标。euleraxis是旋转轴的向量,eulerangle是欧拉角(以弧度表示)。 使用该函数,你可以将旋转矩阵表示的姿态转换为对应的XYZ欧拉角,并将其应用于要旋转的对象。省略输出参数会导致旋转结果不被显示。 需要注意的是,Matlab中有多种选择的S(旋转顺序),包括'ZYX'、'ZYZ'、'ZXY'、'ZXZ'、'YXZ'、'YXY'、'YZX'、'YZY'、'XYZ'、'XYX'、'XZY'和'XZX'。根据具体的需求和应用场景,你可以选择适合的旋转顺序。 因此,通过使用ROTATESURF函数并指定相应的输入参数,你可以在Matlab中实现旋转矩阵到XYZ欧拉角转换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Matlab ——旋转矩阵四元数欧拉角之间转换](https://blog.csdn.net/M_try/article/details/82900500)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Rotate surf input matrices:在三维空间旋转SURF输入矩阵-matlab开发](https://download.csdn.net/download/weixin_38592847/19203902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值