机器人研究方向的自我学习[2] Matlab机器人工具箱 欧拉角 参考书:《机器人学导论》第四版

空间描述和变换

1、位姿描述:即操作臂的位置和状态。

2、坐标系一般变换:

在这里插入图片描述

表示B相对于A的坐标(_B^A)R
表示B坐标系的原点偏距表示B坐标系的原点偏距

在这里插入图片描述

在这里插入图片描述

3、复合变换和逆变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、其他姿态描述

X-Y-Z固定角
在这里插入图片描述
在这里插入图片描述

Z-Y-X(z-y-z)欧拉角
首先将坐标系{B}和另一个已知参考坐标系{A}重合。先将{B}绕Zb转α角,再绕Yb转β角,最后绕Xb转γ角。
在这里插入图片描述

等效角度-轴线表示法
符号Rx(30.0)表示绕一个给定轴X旋转30度的姿态描述。
在这里插入图片描述

P43页MATLAB练习

在这里插入图片描述


在这里插入图片描述

1.a

注意
用 a,b,c分别代表角α,β,γ 。
我用的是角度,sind(角度)

clc
clear all
  
a=input("输入欧拉角a:");%a-alpha,b-beta,c-gramma
b=input("输入欧拉角b:");
c=input("输入欧拉角c:");
                          
Rz=[cosd(a), -sind(a), 0; sind(a), cosd(a), 0; 0, 0, 1]; %afa是绕z轴旋转a,偏航角——yaw
Ry=[cosd(b),0, sind(b);0, 1, 0; -sind(b), 0, cosd(b)];%beta是绕y轴旋转b,俯仰角——pitch
Rx=[1, 0, 0; 0, cosd(c), -sind(c); 0, sind(c), cosd(c)];%gama是绕x轴旋转c,翻滚角——roll

R=Rz*Ry*Rx;   
R 


  

运行程序,例如输入角度45,45,45,得到旋转矩阵R
在这里插入图片描述

1.b

clc
clear all


a=input("输入欧拉角a:");%a-alpha,b-beta,c-gramma
b=input("输入欧拉角b:");
c=input("输入欧拉角c:");
Rz=[cosd(a), -sind(a), 0; sind(a), cosd(a), 0; 0, 0, 1]; %afa是绕z轴旋转a,偏航角——yaw
Ry=[cosd(b),0, sind(b);0, 1, 0; -sind(b), 0, cosd(b)];%beta是绕y轴旋转b,俯仰角——pitch
Rx=[1, 0, 0; 0, cosd(c), -sind(c); 0, sind(c), cosd(c)];%gama是绕x轴旋转c,翻滚角——roll

R=Rz*Ry*Rx;    


b=(atan(-R(3,1)/sqrt(R(1,1)^2+R(2,1)^2)))*180/pi;
a=(atan((R(2,1)/cosd(b))/(R(1,1)/cosd(b))))*180/pi;
c=(atan((R(3,2)/cosd(b))/(R(3,3)/cosd(b))))*180/pi;


if b==90
    a=0;
    b=90;
    c=(atan(R(1,2)/R(2,2)))*180/pi;
    
else
    if b==-90
        a=0;
        b=-90;
        c=(-atan(R(1,2)/R(2,2)))*180/pi;
            
   end
end

a
b
c

运行程序:发现成功反解旋转矩阵
在这里插入图片描述

1.d

clc;
clear all;

R=rotx(pi/4)*roty(pi/4)*rotz(pi/4);

t=rpy2tr(pi/4,pi/4,pi/4);%求旋转矩阵
w=(tr2rpy(t))*180/pi;%旋转矩阵反解

R
t
w

t的第四行和第四列表示原点偏移为0.
在这里插入图片描述

注意:使用函数rpy2tr()反解旋转函数时可能会有不同结果,因为有序旋转顺序的存在,故旋转矩阵的反解会有多种。详情请看:https://www.cnblogs.com/dadidelearning/p/9571101.html


版权声明:本文为weixin_44897776原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。