记录一下工业机器人的其中一个实验,上图为老师指定的D-H参数
蒙特卡罗法
clear;
clc;
%建立机器人模型
q1_lim = [-180,180];q1_lim = deg2rad(q1_lim);
q2_lim = [-90,90];q2_lim = deg2rad(q2_lim);
q3_lim = [-90,90];q3_lim = deg2rad(q3_lim);%限制每个关节的运动角度,转弧度制
q4_lim = [-90,90];q4_lim = deg2rad(q4_lim);
q5_lim = [-90,90];q5_lim = deg2rad(q5_lim);
q6_lim = [-90,90];q6_lim = deg2rad(q6_lim);
% theta d a alpha offset
L1=Link([0 0 0 0 0 ]);L1.qlim = q1_lim;%定义连杆的D-H参数
L2=Link([0 0.06 0 -1.571 0 ]);L2.qlim = q2_lim;
L3=Link([0 -0.004 0.332 0 0 ]);L3.qlim = q3_lim;
L4=Link([0 -0.056 0 1.571 0 ]); L4.qlim = q4_lim;
L5=Link([0 0.05 0 -1.571 0 ]); L5.qlim = q5_lim;
L6=Link([0 -0.05 0 1.571 0 ]); L6.qlim = q6_lim;
%%关节限制
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','S725'); %连接连杆,机器人取名manman
N=3000; %随机次数
theta1=q1_lim(1)+diff(q1_lim)*rand(N,1); %关节1限制
theta2=q2_lim(1)+diff(q2_lim)*rand(N,1); %关节2限制
theta3=q3_lim(1)+diff(q3_lim)*rand(N,1); %关节3限制
theta4=q4_lim(1)+diff(q4_lim)*rand(N,1); %关节4限制
theta5=q5_lim(1)+diff(q5_lim)*rand(N,1); %关节5限制
theta6=q6_lim(1)+diff(q6_lim)*rand(N,1); %关节6限制
pos = {1,N};
% 正运动学求解
for i=1:N
pos{i}=robot.fkine([theta1(i) theta2(i) theta3(i) theta4(i) theta5(i) theta6(i)]);
end
% 绘图
figure
robot.plot([0 0 0 0 0 0],'jointdiam',1)
axis equal;
hold on;
for i=1:N
plot3(pos{i}(1,4),pos{i}(2,4),pos{i}(3,4),'r.');
hold on;
end
grid off
view(20,30)