matlab欧拉角,欧拉角转旋转矩阵(Matlab内部函数&公式实现) |
您所在的位置:网站首页 › rotate函数matlab自带函数 › matlab欧拉角,欧拉角转旋转矩阵(Matlab内部函数&公式实现) |
一、根据公式,自己编写函数 S表示旋转顺序,我习惯上将‘XYZ’定义为“先旋转X,再旋转Y,最后旋转Z”,所以最后的R=Rz*Ry*Rx(特别注意这里!不同的地方表示的含义不一样,有些工具(比如Matlab)里面'XYZ',表示的是“先旋转Z,再旋转Y,最后旋转X”,所以最后的R=Rx*Ry*Rz) 注意:区分角度的单位是度还是弧度!deg2rad()是Matlab自带的角度转弧度的函数! 二、Matlab自带的函数eul2rotm() 官方文档:https://ww2.mathworks.cn/help/robotics/ref/eul2rotm.html 特别注意红框里面的两处(之前想当然的认为Matlab里面的XYZ跟自己习惯的一样,然而并不是,英语好点的话也不会折腾这么久了......) 第一处:Matlab中S='XYZ'的意义是指“先旋转Z,再旋转Y,最后旋转X”; 第二处:调用函数的时候,参数1也就是eul(1*3的行向量)里面的三个数,顺序要跟S对应上, S='XYZ'时,eul=[angleX angleY angleZ] S='ZYX'时,eul=[angleZ angleY angleX] ...... 三、关于Direction Cosine Matrix函数angle2dcm() 参考:https://en.wikiversity.org/wiki/PlanetPhysics/Direction_Cosine_Matrix R_dcm=angle2dcm(angleZ, angleY ,angleX,'ZYX'); R_rotm=eul2rotm(eul,'ZYX');(其中eul=[angleZ angleY angleX]) 运行结果: 可以发现:二者是一个逆(正交单位阵,转置=逆)的关系,因此,如果eul2rotm结果描述的旋转是A->B的旋转,那么angle2dcm结果描述的是B->A的旋转!注意这一点即可! 参考: [1]https://blog..net/zzcoming/article/details/52065276 [2]https://blog..net/u012423865/article/details/78219787 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |