1、用Z-Y-X(α-β-γ)欧拉角约定表示法,写出matlab程序。当用户输入欧拉角α-β-γ时,计算旋转矩阵 ,例:1)α = 10°,β = 20°,γ = 30°
欧拉角每次都是绕运动坐标系的各轴旋转而不是绕固定坐标旋转。其旋转矩阵和示意图如下:
matlab程序:
%输入欧拉角度
alpha = input('Roatate around the z-axis in alpha = ');
beta = input('Roatate around the y-axis in alpha = ');
gamma = input('Roatate around the x-axis in alpha = ');
%分别计算出绕X、Y、Z轴的旋转算子
RZ = [cosd(alpha) -sind(alpha) 0
sind(alpha) cosd(alpha) 0
0 0 1];
RY = [cosd(beta) 0 sind(beta)
0 1 0
-sind(beta) 0 cosd(beta)];
RX = [ 1 0 0
0 cosd(gamma) -sind(gamma)
0 sind(gamma) cosd(gamma)];
T =RZ*RY*RX %计算旋转矩阵TAB
输入各角度后获得旋转矩阵:
2、编写一个MATLAB程序。当输入旋转矩阵R时,计算出欧拉角α-β-gamma(反解问题)。计算两个可能的解。证明1中情况的反解,并检查你的结果是否正确。
由于旋转轴的旋转方式不同,一共有3x2x2=12种方式,以下将主要求解Z-Y-X欧拉角和Z-Y-Z欧拉角两种方式的解。旋转矩阵采用1中的结果,其中Z-Y-X欧拉角:
Z-Y-Z欧拉角:
matlab代码:
R = T;
%Z-Y-X欧拉角
beta = atan2(-R(3,1),sqrt(R(1,1)^2+R(2,1)^2));
alpha = atan2(R(2,1)/cos(beta),R(1,1)/cos(beta));
gamma = atan2(R(3,2)/cos(beta),R(3,3)/cos(beta));
disp('Z-Y-X欧拉角为:')
A = rad2deg([alpha beta gamma])
%Z-Y-Z欧拉角
beta = atan2(sqrt(R(3,1)^2+R(3,2)^2),R(3,3));
alpha = atan2(R(2,3)/sin(beta),R(1,3)/sin(beta));
gamma = atan2(R(3,2)/sin(beta),-R(3,1)/sin(beta));
disp('Z-Y-Z欧拉角为:')
B = [alpha beta gamma]
%验证Z-Y-Z结果正确性
T1 = rotz(alpha)*roty(beta)*rotz(gamma)
经过验证,反解后的角度和1一样,同时采用另一种解验证结果也与1一样。
3、仅简单的绕Y轴旋转β角。已知β = 20°和 = [ 1 0 1]',计算 。
beta = 20; %旋转角度
%旋转矩阵
RY = [cosd(beta) 0 sind(beta)
0 1 0
-sind(beta) 0 cosd(beta)];
PB = [ 1 0 1]';
PA = RY*PB
4、通matlab Robotics工具箱验算上面的一些结果。使用rpy2r(),tr2rpy(),rotx(),roty(),rotz()等函数。
%输入欧拉角度
alpha = input('Roatate around the z-axis in alpha = ');
beta = input('Roatate around the y-axis in alpha = ');
gamma = input('Roatate around the x-axis in alpha = ');
%计算旋转矩阵
T1 = rotz(alpha,'deg')*roty(beta,'deg')*rotx(gamma,'deg')
T2 = rpy2r(gamma,beta,alpha,'deg')
angle = rad2deg(tr2rpy(T2))
由上可知,求解旋转矩阵既可以用rotx()等函数,也可以使用rpy2r函数。使用方法可参考前面的文章。注意rpy2r()的使用方法和其原理。在matlab中输入edit rpy2r将可查看其函数代码。
T = rpy2r(roll,pitch,yaw,options)
该函数默认为绕Z-Y-X轴旋转,同时也可通过options选择其他旋转方法。在默认情况下,该函数结果相当于: = rotz(yaw)*roty(pitch)*rotx(roll) (注意角度的顺序)。知道rpy2r的原理后,tr2rpy(r)就是其逆过程。
评论(0)
您还未登录,请登录后发表或查看评论