im currently still learning how to do Matlab why do i getting Index in position 1 exceeds array bounds. Index must not exceed 6? (line 51) Rob.plot(y(i,:));

6 visualizzazioni (ultimi 30 giorni)
clear all;
% Robot Kinematics
% Robot dimension
L1 = 0.4; L2 =0.5; L3 = 0.4; d1 = 0.05;
%DH Parameters
L(1) = Link([0 L1 0 1.5708])
L(2) = Link([0 0 L2 0 ])
L(3) = Link([0 0 L3 0 ])
%Link Robot using serialink
Rob=SerialLink(L);
Rob.name = ('Group7')
P = transl(2.338e-06, 0.5365, 1.036)
P1= transl(0.1, 0.3, -0.3)
P2= transl(0.4, -0.2, 0.1)
P3= transl(-0.4, 0.4, -0.3)
P4= transl(-0.3,-0.3, 0.2)
q0=[0 0 0];
%Inverse
I=Rob.ikine(P,'q0',[0 0 0],'mask',[1 1 1 0 0 0]);
I1=Rob.ikine(P1,'q0',[0 0 0],'mask',[1 1 1 0 0 0]);
I2=Rob.ikine(P2,'q0',[0 0 0],'mask',[1 1 1 0 0 0]);
I3=Rob.ikine(P3,'q0',[0 0 0],'mask',[1 1 1 0 0 0]);
I4=Rob.ikine(P4,'q0',[0 0 0],'mask',[1 1 1 0 0 0]);
%Trajectory
t=0:0.04:0.2;
y=jtraj(q0,I,t);
y1=jtraj(I,I1,t);
y2=jtraj(I1,I2,t);
y3=jtraj(I2,I3,t);
y4=jtraj(I3,I4,t);
y5=jtraj(I4,q0,t);
hold on
atj=zeros(4,4);
view(3)
for i = 1:1:51
atj=Rob.fkine(y(1,:));
jta=transl(atj);
JTA(i,:) = jta;
jta=JTA;
plot2(jta(i,:),'r.')
Rob.plot(y(i,:));
plot2 (JTA,'b')
end
for i= 1:1:51
atj1=Rob.fkine(y1(1,:));
jta=transl(atj1);
JTA1(i,:) = jta;
jta=JTA1;
plot2(jta(i,:),'r.')
Rob.plot(y1(i,:))
plot2 (JTA1,'b')
end
for i= 1:1:51
atj2=Rob.fkine(y2(1,:));
jta=transl(atj2);
JTA2(i,:) = jta;
jta=JTA2;
plot2(jta(i,:),'r.')
Rob.plot(y1(i,:))
plot2 (JTA2,'b')
end
for i= 1:1:51
atj3=Rob.fkine(y3(1,:));
jta=transl(atj3);
JTA3(i,:) = jta;
jta=JTA3;
plot2(jta(i,:),'r.')
Rob.plot(y3(i,:))
plot2 (JTA3,'b')
end
for i= 1:1:51
atj4=Rob.fkine(y4(1,:));
jta=transl(atj4);
JTA4(i,:) = jta;
jta=JTA4;
plot2(jta(i,:),'r.')
Rob.plot(y4(i,:))
plot2 (JTA4,'b')
end
for i= 1:1:51
atj5=Rob.fkine(y5(1,:));
jta=transl(atj5);
JTA5(i,:) = jta;
jta=JTA5;
plot2(jta(i,:),'r.')
Rob.plot(y5(i,:))
plot2 (JTA5,'b')
end

Risposta accettata

Geoff Hayes
Geoff Hayes il 17 Giu 2022
@Timothy Ambun - the error message is telling you that there are only 6 elements in y so
for i = 1:1:51
atj=Rob.fkine(y(1,:));
jta=transl(atj);
JTA(i,:) = jta;
jta=JTA;
plot2(jta(i,:),'r.')
Rob.plot(y(i,:));
plot2 (JTA,'b')
end
since i iterates from 1 to 51, then when i is 7, you will observe this error. You should be able to use the MATLAB debugger to confirm that y only has six items.
Also, why have you chosen 51? How does that relate to anything?
  1 Commento
Timothy Ambun
Timothy Ambun il 18 Giu 2022
okay thank you, i chose 51 because i copied the code from my lecturer and he can run it well. But i have change it to 6 and it work well. Thanks for you explaination.

Accedi per commentare.

Più risposte (0)

Tag

Prodotti


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by