1、欧拉角的类型:

例程中MATLAB机器人工具箱中采用的是世界坐标系的欧拉角(先旋转的在右边)。如下:

利用机器人工具箱的.teach()函数进行可是化时的欧拉角如下:

2、正解算法中的欧拉角: 

在运动学正解中根据输入的各关节角度得到末端的位姿,这里输出的姿态就是欧拉角即RPY。利用上面的旋转矩阵便可以根据齐次矩阵中的旋转矩阵求解R(\gamma)P(\beta)Y(\alpha)角。

   %% 求末端姿态Rotations about X, Y, Z axes (for a robot gripper)
    R=T06;
    if abs(abs(R(1,3)) - 1) < eps  % when |R13| == 1
        % singularity
        rpy(1) = 0;  % roll is zero
        if R(1,3) > 0
        rpy(3) = atan2( R(3,2), R(2,2));   % R+Y
        else
             rpy(3) = -atan2( R(2,1), R(3,1));   % R-Y
        end
        rpy(2) = asin(R(1,3));
    else
        rpy(1) = -atan2(R(1,2), R(1,1));
        rpy(3) = -atan2(R(2,3), R(3,3));

        rpy(2) = atan(R(1,3)*cos(rpy(1))/R(1,1));
    end
    RPY=rpy*180/pi;
    Rall=RPY(1);Pitch=RPY(2);Yaw=RPY(3);

这里还需要注意当\beta =90时,sin\beta =1,cos\beta =0,此时:

 

 当\beta =-90时,sin\beta =-1,cos\beta =0,此时:

 

这时只能求出\alpha +\gamma\alpha -\gamma 的值,通常令\alpha =0,求出此时的\gamma。如上代码所示。

3、逆解算法中的欧拉角:

在逆运动学中输入的是位姿Pos=[x,y,z,\gamma ,\beta ,\alpha ],先输入的\gamma是绕z轴转动的角度,\beta是绕y轴转动的角度,\alpha是绕x轴转动的角度。

根据输入的参数得到的齐次矩阵为:

综上可知,在正逆解中的欧拉角类型都是一致的采用的都是世界坐标系的欧拉角: 

 而且他们也必须一致否则正逆解的结果就不会统一起来。


版权声明:本文为rouyu308原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/rouyu308/article/details/125072162