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,:));

5 views (last 30 days)
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

Accepted Answer

Geoff Hayes
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?
  1 Comment
Timothy Ambun
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.

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!