您的位置:首页 > 编程语言 > MATLAB

我做的是轨迹规划,有人能看懂这段matlab代码是什么意思么

2020-02-12 07:37 447 查看

% 适用于AUBO I5机器人
function theta=TEST(robot,T,orient)
L=robot.links;
T = inv(robot.base) * T * inv(robot.tool);
y=T(2,4);x=T(1,4);
% theta(1)
theta(1)=atan(y/x);
if orient(1)‘w’ %所在平面在X轴的正方向
theta(1)=atan(y/x);
else %所在平面在Y轴的负方向
theta(1)=pi+theta(1);
end
T1=trotz(-theta(1))T; %将机械臂旋转至y=0的(x,z)平面
l1=L(1).a; l2=L(2).a; l3=L(3).a; l4=L(4).d;
x4=T1(1,4); y4=T1(2,4); z4=T1(3,4);
x2=l1;z2=0; %关节2所在的坐标
l11=sqrt((x4-x2)2+(z4-z2)2); %Z2取零
l34=sqrt(l32+l42); %关节4到关节3的直线距离即l

theta1=-angle((x4-x2)+(z4-z2)*1i); theta2=acos((l2^2+l11^2-l34^2)/(2*l2*l11)); theta(2)=theta1-theta2; %theta(2) if orient(2)=='u' %u为z,x平面x轴正方向的方位 theta(2)=theta(2); else theta(2)=-2*angle((x4-x2)+(z4-z2)*1i)-theta(2);%(姿态2的解) end %求theta(3) theta0=atan(l4/l3); %theta0即theta

x3=x2+l2cos(theta(2));z3=z2-l2*sin(theta(2));
theta3=-angle((x4-x3)+(z4-z3)*1i);
theta(3)=theta3-theta(2)-theta0;
%正解矩阵
F=@(alpha,a,thelta,d) [cos(thelta), -sin(thelta), 0, a;
cos(alpha)*sin(thelta), cos(alpha)cos(thelta), -sin(alpha), -dsin(alpha);
sin(alpha)*sin(thelta), sin(alpha)cos(thelta), cos(alpha), dcos(alpha);
0, 0, 0, 1];
T10=F(0,0,theta(1),0);
T21=F(L(1).alpha,l1,theta(2),0);
T32=F(L(2).alpha,l2,theta(3),0);
T63=inv(T32)*inv(T21)*inv(T10)*T; %求出6相对3的齐次矩阵
%求theta(5)
theta(5)=acos(T63(2,3));
if orient(3)‘f’ %f为第五轴旋转角度再【0,pi】
theta(5)=theta(5);
else
theta(5)=2*pi-theta(5);
end
%求theta(4)
theta(4)=angle(-T63(1,3)/sin(theta(5))+T63(3,3)/sin(theta(5))*1i);
%求theta(6)
theta(6)=angle(T63(2,1)/sin(theta(5))-T63(2,2)/sin(theta(5))*1i);
end

  • 点赞
  • 收藏
  • 分享
  • 文章举报
qq_40327934 发布了1 篇原创文章 · 获赞 0 · 访问量 263 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: