【Robot|MATLAB Robotic Toolbox 机器人工具箱示例】程序是基于Matlab2016a,工具箱版本为Robotic Toolbox 10.2
参考博客:
MATLAB机器人工具箱使用
Matlab Robotic Toolbox V9.10工具箱(三):轨迹规划
六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现
效果:
文章图片
文章图片
代码:
clear;
clc;
% 建立连杆系
L1=Link([0 12.40pi/20-pi/2 ]);
L2=Link([0 00-pi/2]);
L3=Link([0 15.430pi/2]);
L4=Link([0 00-pi/200]);
L5=Link([0 15.925 0pi/2]);
L6=Link([0 00-pi/2]);
L7=Link([0 15.0000pi/2 ]);
% 机器人模型对象建立
Rbt=SerialLink([L1 L2 L3 L4 L5 L6 L7]);
% 6轨迹点的关节变量值
q0=[0 0 0 0 0 0 0];
qsq1=[0.46088 0.37699 0 1.31 0 1.4451 0];
qsq2=[.81681 0.56549 0 1.0681 0 1.2566 0 ];
qsq3=[2.36 0.69115 0 0.848 0 1.4451 0 ];
qsq4=[2.66 0.37699 0 1.31 0 1.4451 0];
qsq5=[pi/2 0.62831 0 1.5708 0 0.94249 0];
qsq6=[0 0.62831 0 1.5708 0 0.94249 0];
% 轨迹点规划 五次多项式来规划轨迹
t=0:.04:1;
sqtraj1=jtraj(q0,qsq1,t);
sqtraj2=jtraj(qsq1,qsq2,t);
sqtraj3=jtraj(qsq2,qsq3,t);
sqtraj4=jtraj(qsq3,qsq4,t);
sqtraj5=jtraj(qsq4,qsq1,t);
sqtraj6=jtraj(qsq1,q0,t);
sqtraj7=jtraj(q0,qsq6,t);
hold on%变量初始化
atj=zeros(4,4);
view(-35,40)
xlim([-40,40])
ylim([-40,40])
zlim([0,60])% 绘制第1段轨迹线
for i=1:1:length(t)
atj=Rbt.fkine(sqtraj1(i,:));
JTA(i,:)=transl(atj);
% 提取位姿矩阵的平移分量(3元素列向量)储存进JTA向量数组
jta=JTA;
plot2(jta(i,:),'r.')% 绘制轨迹点(红色点)
Rbt.plot(sqtraj1(i,:)) % 绘制轨迹动画
plot2(JTA,'b')% 绘制轨迹线(蓝色线)
end
% 绘制第2段轨迹线
for i=1:1:length(t)
atj2=Rbt.fkine(sqtraj2(i,:));
JTA2(i,:)=transl(atj2);
jta2=JTA2;
plot2(jta2(i,:),'r.')
Rbt.plot(sqtraj2(i,:))
plot2(JTA2,'b')
end
% 绘制第3段轨迹线
for i=1:1:length(t)
atj3=Rbt.fkine(sqtraj3(i,:));
JTA3(i,:)=transl(atj3);
jta3=JTA3;
plot2(jta3(i,:),'r.')
Rbt.plot(sqtraj3(i,:))
plot2(JTA3,'b')
end
% 绘制第4段轨迹线
for i=1:1:length(t)
atj4=Rbt.fkine(sqtraj4(i,:));
JTA4(i,:)=transl(atj4);
jta4=JTA4;
plot2(jta4(i,:),'r.')
Rbt.plot(sqtraj4(i,:))
plot2(JTA4,'b')
end
% 绘制第5段轨迹线
for i=1:1:length(t)
atj5=Rbt.fkine(sqtraj5(i,:));
JTA5(i,:)=transl(atj5);
jta5=JTA5;
plot2(jta5(i,:),'r.')
Rbt.plot(sqtraj5(i,:))
plot2(JTA5,'b')
end
% 绘制第6段轨迹线
for i=1:1:length(t)
atj6=Rbt.fkine(sqtraj6(i,:));
JTA6(i,:)=transl(atj6);
jta6=JTA6;
plot2(jta6(i,:),'r.')
Rbt.plot(sqtraj6(i,:))
plot2(JTA6,'b')
end
% 绘制第7段轨迹线
for i=1:1:length(t)
atj7=Rbt.fkine(sqtraj7(i,:));
JTA7(i,:)=transl(atj7);
jta7=JTA7;
plot2(jta7(i,:),'r.')
Rbt.plot(sqtraj7(i,:))
plot2(JTA7,'b')
end
推荐阅读
- 最优化问题|改进交叉算子的自适应人工蜂群黏菌算法
- matlab|嵌入均衡池的黏菌优化算法
- 最优化问题|加入领导者的黏菌优化算法
- MATLAB图形界面|基于Matlab的汽车出入库计时计费系统
- Matlab旅程|MATLAB的结构化程序设计
- matlab 内存管理 清理内存
- matlab中使用colormap没有效果