Scara机器人关节空间轨迹规划-机器人工具箱函数jtraj

1、前记:记录下scara机器人建模和轨迹规划。由于有移动关节的存在,稍微和六轴的有区别。

clc
clear
L1=Link([0 0 0 0 0],'modified');
L2=Link([0 0 200 pi 0],'modified');
L3=Link([0 0 150 0 1],'modified');%移动关节最后一个参数为1
L4=Link([0 0.20 0 0 0],'modified');
Robot=SerialLink([L1 L2 L3 L4],'name','Scara');
Robot.qlim=[-125*pi/180 125*pi/180;-140*pi/180 140*pi/180;0 200;-3*pi 3*pi];%关节限制
Robot.plot([0 0 0 0], 'workspace',[-400 400 -400 400 -300 300]);%空间范围定义
% Robot.teach()
 q0=[0 0 0 0];
 q1b=[pi/2 0 100 -3*pi];
 q1=[pi/2 0 200 3*pi];
 q2=[pi/2 0 0 pi];
 q3=[0 0 0 0];
t=0:.04:2;
sqtraj1=jtraj(q0,q1b,t);
sqtraj2=jtraj(q1b,q1,t);
sqtraj3=jtraj(q1,q2,t);
sqtraj4=jtraj(q2,q3,t);
hold on
atj=zeros(4,4);
view(3)
hold on
for i=1:1:51
    atj=Robot.fkine(sqtraj1(i,:));
    jta=transpose(atj);
    JTA(i,:)=jta.t;
    jta=JTA;
    plot2(jta(i,:),'r.')
    Robot.plot(sqtraj1(i,:))
    plot2(JTA,'b')
end
for i=1:1:51
    atj=Robot.fkine(sqtraj2(i,:));
    jta=transpose(atj);
    JTA(i,:)=jta.t;
    jta=JTA;
    plot2(jta(i,:),'r.')
    Robot.plot(sqtraj2(i,:))
    plot2(JTA,'b')
end
for i=1:1:51
    atj=Robot.fkine(sqtraj3(i,:));
    jta=transpose(atj);
    JTA(i,:)=jta.t;
    jta=JTA;
    plot2(jta(i,:),'r.')
    Robot.plot(sqtraj3(i,:))
    plot2(JTA,'b')
end
for i=1:1:51
    atj=Robot.fkine(sqtraj4(i,:));
    jta=transpose(atj);
    JTA(i,:)=jta.t;
    jta=JTA;
    plot2(jta(i,:),'r.')
    Robot.plot(sqtraj4(i,:))
    plot2(JTA,'b')
end

效果(打孔、拧螺丝动作):

后记:在matlab2018a中,工具箱为10.3.其他版本报错可参考:https://blog.csdn.net/weixin_39090239/article/details/105022806

该演示Scara机器人建模参考:https://blog.csdn.net/qq_38023025/article/details/98777586?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

轨迹规划参考:https://blog.csdn.net/weixin_39090239/article/details/80962723

猜你喜欢

转载自blog.csdn.net/weixin_39090239/article/details/106675533