How to calculate the workspace for a 7 DOF robot
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am generating a workspace for a 7 degrees of freedom robotic arm using the values in the table below, however according to the code I have written below the x and y ranges obtained do not seem accurate since the diagram indicates that the effector is able to move 1000mm in either direction in the x and y axes - this is incorrect since the end effector can only move approximately 200mm in either direction in the x and y axes.
a1 = 0;
a2_0 = 0;
a2_1 = 40.09;
a2_2 = 144.54;
a2_3 = 182.62;
a2_4 = 516;
a2_5 = 96;
a3_0 = 40.09;
a3_1 = 40.09;
a4 = 0;
a5 = 0;
a6 = 0.91;
a7 = 0.91;
alph1 = pi/2;
alph2_0 = -pi/2;
alph2_1 = 0;
alph2_2 = 0;
alph2_3 = 0;
alph2_4 = 0;
alph2_5 = 0;
alph3_0 = -pi/2;
alph3_1 = -pi/2;
alph4 = 0;
alph5 = pi/2;
alph6 = -pi/2;
alph7 = -pi/2;
alpha1_min = -1.4835298642 + pi/2;
alpha1_max = 1.4835298642 + pi/2;
alpha2_0_min = -0.75049157836 - pi/2;
alpha2_0_max = 0.80285145592 - pi/2;
alpha2_1_min = pi/2;
alpha2_1_max = pi/2;
alpha2_2_min = 0.75049157836 + pi/2;
alpha2_2_max = -0.80285145592 + pi/2;
alpha2_3_min = 0.75049157836 + pi/2;
alpha2_3_max = -0.80285145592 + pi/2;
alpha2_4_min = -0.75049157836;
alpha2_4_max = 0.80285145592;
alpha2_5_min = -0.75049157836 + pi;
alpha2_5_max = 0.80285145592 + pi;
alpha3_0_min = 0;
alpha3_0_max = 0;
alpha3_1_min = 0;
alpha3_1_max = 0;
alpha4_min = -1.5009831567;
alpha4_max = 1.5009831567;
alpha5_min = -1.3962634016 + pi/2;
alpha5_max = 1.3962634016 + pi/2;
alpha6_min = -1.5009831567 + pi/2;
alpha6_max = 1.5009831567 + pi/2;
alpha7_min = -1.5009831567 + pi/2;
alpha7_max = 1.5009831567 + pi/2;
d1 = 0;
d2_0 = 0;
d2_1 = 0;
d2_2 = 0;
d2_3 = 0;
d2_4 = 0;
d2_5 = 0;
d3_0 = 0.0012217304764 - 431.8 + 144.54;
d3_1 = 0.0012217304764;
d4 = 416.2;
d5 = 0;
d6 = 0;
d7 = 0;
N = 20000;
t1 = alpha1_max + (alpha1_max - alpha1_min)*rand(N,1);
t2_0 = alpha2_0_max + (alpha2_0_max - alpha2_0_min)*rand(N,1);
t2_1 = alpha2_1_max + (alpha2_1_max - alpha2_1_min)*rand(N,1);
t2_2 = alpha2_2_max + (alpha2_2_max - alpha2_2_min)*rand(N,1);
t2_3 = alpha2_3_max + (alpha2_3_max - alpha2_3_min)*rand(N,1);
t2_4 = alpha2_4_max + (alpha2_4_max - alpha2_4_min)*rand(N,1);
t2_5 = alpha2_5_max + (alpha2_5_max - alpha2_5_min)*rand(N,1);
t3_0 = alpha3_0_max + (alpha3_0_max - alpha3_0_min)*rand(N,1);
t3_1 = alpha3_1_max + (alpha3_1_max - alpha3_1_min)*rand(N,1);
t4 = alpha4_max + (alpha4_max - alpha4_min)*rand(N,1);
t5 = alpha5_max + (alpha5_max - alpha5_min)*rand(N,1);
t6 = alpha6_max + (alpha6_max - alpha6_min)*rand(N,1);
t7 = alpha7_max + (alpha7_max - alpha7_min)*rand(N,1);
for i = 1:N
A1 = TransMat(a1,alph1,d1,t1(i));
A2_0 = TransMat(a2_0,alph2_0,d2_0,t2_0(i));
A2_1 = TransMat(a2_1,alph2_1,d2_1,t2_1(i));
A2_2 = TransMat(a2_2,alph2_2,d2_2,t2_2(i));
A2_3 = TransMat(a2_3,alph2_3,d2_3,t2_3(i));
A2_4 = TransMat(a2_4,alph2_4,d2_4,t2_4(i));
A2_5 = TransMat(a2_5,alph2_5,d2_5,t2_5(i));
A3_0 = TransMat(a3_0,alph3_0,d3_0,t3_0(i));
A3_1 = TransMat(a3_1,alph3_1,d3_1,t3_1(i));
A4 = TransMat(a4,alph4,d4,t4(i));
A5 = TransMat(a5,alph5,d5,t5(i));
A6 = TransMat(a6,alph6,d6,t6(i));
A7 = TransMat(a7,alph7,d7,t7(i));
T = A1 * A2_0 * A2_2 * A2_3 * A2_4 * A2_5 * A3_0 * A3_1 * A4 * A5 * A6 * A7;
X=T(1,4);
Y=T(2,4);
Z=T(3,4);
plot3(X,Y,Z,'.')
hold on;
end
view(3);
title('Isometric view');
xlabel('x (mm)');
ylabel('y (mm)');
zlabel('z (mm) ');
% view(2); % top view
% title(' Top view');
% xlabel('x (mm)');
% ylabel('y (mm)');
% view([0 0 1]); % y-z plane
% title('Side view, Y-Z');
% ylabel('y (mm)');
% zlabel('z (mm)');
function [ T ] = TransMat( a,b,c,d )
T = [ cos(d), -sin(d)*cos(b), sin(d)*sin(b), a*cos(d);
sin(d), cos(d)*cos(b), -cos(d)*sin(b), a*sin(d);
0, sin(b), cos(b), c;
0, 0, 0, 1];
end
I have implemented the Monte Carlo method of generating the workspace, however I'm not sure if this is the correct method that I should be using. Are there alternative methods to calculate the kinematics of a robot?
Any help you could provide me would be greatly appreciated!
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Robotics finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!