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

8 ビュー (過去 30 日間)
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

採用された回答

Geoff Hayes
Geoff Hayes 2022 年 6 月 17 日
@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 件のコメント
Timothy Ambun
Timothy Ambun 2022 年 6 月 18 日
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.

サインインしてコメントする。

その他の回答 (0 件)

タグ

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by