62 lines
1.6 KiB
Matlab
62 lines
1.6 KiB
Matlab
clear;
|
||
clc;
|
||
|
||
L1=0.151;L3=0.350; L4=0.139;
|
||
|
||
theta_1=-0.02;
|
||
theta_2=-1.473;
|
||
theta_3=-0.024;
|
||
theta_4=-1.559;
|
||
theta_5=-2.98966;
|
||
|
||
q = [theta_1,theta_2,theta_3,theta_4,theta_5]
|
||
|
||
|
||
%定义关节角度限制
|
||
lim1_min = -pi/2; lim1_max = pi/2; %关节1(-90,90)
|
||
lim2_min = -pi/2; lim2_max = pi/2; %关节2(0,90)
|
||
lim3_min = -pi; lim3_max = pi; %关节4(-180,180)
|
||
lim4_min = -pi; lim4_max = pi; %关节5(-180,180)
|
||
lim5_min = -pi/2; lim5_max = pi/2; %关节6(-90,90)
|
||
|
||
|
||
%定义关节旋转范围
|
||
lim1 = lim1_max - lim1_min;
|
||
lim2 = lim2_max - lim2_min;
|
||
lim3 = lim3_max - lim3_min;
|
||
lim4 = lim4_max - lim4_min;
|
||
lim5 = lim5_max - lim5_min;
|
||
|
||
%定义关节
|
||
r(1)=Link([0 L1 0 pi/2]);r(1).qlim=[lim1_min,lim1_max];
|
||
r(2)=Link([0 0 L3 pi/2]);r(2).qlim=[lim2_min,lim2_max];
|
||
r(3)=Link([0 0 0 -pi/2]);r(3).qlim=[lim3_min,lim3_max];
|
||
r(4)=Link([0 0 0 pi/2]);r(4).qlim=[lim4_min,lim4_max];
|
||
r(5)=Link([0 L4 0 0]);r(5).qlim=[lim5_min,lim5_max];
|
||
|
||
%组合关节
|
||
robot=SerialLink([r(1),r(2),r(3),r(4),r(5)],'name','robot');
|
||
robot.fkine(q)
|
||
|
||
robot.display();
|
||
|
||
%
|
||
%使用蒙特卡洛法绘制机械臂的工作空间
|
||
N=5000;
|
||
theta1 = ( lim1_min + (lim1 * rand(N,1)) );
|
||
theta2 = ( lim2_min + (lim2 * rand(N,1)) );
|
||
theta3 = ( lim3_min + (lim3 * rand(N,1)) );
|
||
theta4 = ( lim4_min + (lim4 * rand(N,1)) );
|
||
theta5 = ( lim5_min + (lim5 * rand(N,1)) );
|
||
|
||
% for n = 1:N
|
||
% theta = [theta1(n),theta2(n),theta3(n),theta4(n),theta5(n)];
|
||
% workspace = robot.fkine(theta);
|
||
% plot3(workspace.t(1),workspace.t(2),workspace.t(3),'b.','markersize',1);
|
||
% hold on;
|
||
% end
|
||
% robot.plot(theta); %动画显示
|
||
|
||
robot.teach;
|
||
|