滚动,俯仰,偏航计算

nab*_*eel 4 3d robotics

如何计算与均匀变换矩阵相关的滚转角,俯仰角和偏航角?

我目前正在使用以下公式,但我不确定它们是否正确.

pitch = atan2( -r20, sqrt(r21*r21+r22*r22) );
yaw   = atan2(  r10, r00 );
roll  = atan2(  r21, r22 );
Run Code Online (Sandbox Code Playgroud)

r10表示第二行和第一列.

She*_*ohn 9

只有当旋转顺序为:滚动,然后是俯仰,然后是偏航时,你的方程才是正确的.对于记录,与欧拉角的对应关系(相对于用变换矩阵隐式给出的参照系)如下:

  • 滚动是围绕x轴的旋转(在-180和180度之间);
  • 间距是围绕y轴的旋转(介于-90和90度之间);
  • 偏航是围绕z轴的旋转(介于-180和180之间).

鉴于这些,第一句中提到的顺序滚动,俯仰,偏航对应于由矩阵乘积获得的旋转矩阵Rz Ry Rx(按此顺序).请注意,您的公式以弧度为单位给出这些角度的值(乘以180并除以pi以获得以度为单位的值).所有旋转都相对于轴逆时针旋转.

在此输入图像描述 图取自维基百科


按照你点评一下这个链接,我觉得本文可能有助于理解你指的是该程序.Matlab函数的输入应该是你的变换矩阵,如果你想要以度为单位返回角度,则返回'deg';如果旋转的顺序是z左右,则返回过时选项'zyx',然后是y ,然后围绕x.