Borrar filtros
Borrar filtros

Appdesigner error: Index exceeds the number of array elements (2). Error in Robotprac/​Joint3Slid​erValueCha​nged (line 93)

1 visualización (últimos 30 días)
I am creating a four link robot. Here, I call the objective function to operate the robot, but receive an error in the 3rd line of my for-loop and don't know why.
function Joint3SliderValueChanged(app, event)
%get the values of the sliders from each joint
app.jointangles(4) = app.Joint3Slider.Value;
%plot the robot
fid = fopen('dhobjective.m','w');
%Arbitrary Parameters
d0 = 10.3;
d1 = 9.2;
a2 = 0;
d3 = 2;
%create parameter array
para = [d0,d1,a2,d3];
%create a simple four link robot.
L(1) = Link([0 0 10.3 0]);
L(1).qlim = [-90 90];
L(2) = Link([0 0 9.2 0]);
L(2).qlim = [-90 90];
L(3) = Link([0 0 0 -pi/2]);
L(3).qlim = [-90 90];
%L(4) is the end effector where the pen attaches
L(4) = Link([0 2 0 0]);
L(4).qlim = [-90 90];
%Build this robot
robo = SerialLink(L,'name', 'robo');
count = 0;
%Create random set of numbers to generate 5 data points
R = rand(5,4);
q = [0 0 0 0];
for i = 1:5
%for each iteration, set joint angles randomly
l = L(1).qlim; q(1) = l(1) + diff(L(1).qlim)*R(i,1);
l = L(2).qlim; q(2) = l(2) + diff(L(2).qlim)*R(i,2);
l = L(3).qlim; q(3) = l(3) + diff(L(3).qlim)*R(i,3); %%Error: Index exceeds the number of array elements (2).
l = L(4).qlim; q(4) = l(4) + diff(L(4).qlim)*R(i,4);
T = fkine(robo, q);
q
pos = [T(1,4), T(2,4), T(3,4)]
fprintf(fid, '%f %f %f %f %f\n', q(1), q(2), q(3), q(4))
end
fclose(fid);
para = [d0, d1, a2, d3];
%find original parameters based on optimization
disp('original parameters: ')
para
%Disturb the parameters
para(0) = 4;
para(1) = 5;
para(2) = 6;
para(3) = 7;
disp('disturbed parameters')
para
fminsearch('dhobjective', para)
app.rob.plot (app.jointangles);

Respuestas (1)

Dave B
Dave B el 14 de Nov. de 2021
Editada: Dave B el 14 de Nov. de 2021
Above, you set
L(3).qlim = [-90 90];
On the line that errors:
l = L(3).qlim; % so l is [-90 90]
q(3) = l(3) + ... % This says to take the third element of l, but l only has two elements
%Pro tip: if you name your variables "l" or "I" you're asking for trouble

Categorías

Más información sobre Robotics en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by