# 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 views (last 30 days)
Timothy Ambun on 17 Jun 2022
Commented: Timothy Ambun on 18 Jun 2022
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 ])
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

Geoff Hayes on 17 Jun 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?
Timothy Ambun on 18 Jun 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.

R2022a

### Community Treasure Hunt

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

Start Hunting!