Error using * Incorrect dimensions for matrix multiplication
Afficher commentaires plus anciens
How can I fix
Error using *
Incorrect dimensions for matrix multiplication. Check that the
number of columns in the first matrix matches the number of rows in
the second matrix. To perform elementwise multiplication, use '.*'.
Error in Untitled (line 55)
s23 = -((a3+a2*c3)*Pz)+(c1*Px+s1*Py)*(a2*s3-d4);
?
Here is the code
% *** Program ik_Algebraic.m
...Solving inverse kinematics...
...Created on March 2021 by KKK.Adams.***
%%
clear ; close all; clc;
% Link lenghts & Offsets in Millimeters(mm)
a2=380; a3=0; d3=0; d4=351; L5=89;
% Finding Px, Py, Px
p1x= 202.90; p1y= 55.85; p1z =-449.09;
p2x= 232.91; p2y= 49.08; p2z =-465.79;
p3x= 199.39; p3y= 31.37; p3z =-445.48;
p4x= 196.96; p4y= 55.17; p4z =-459.50;
Mx= 250.32; My= 44.14; Mz= -395.82;
p1_p2= 35; p1_p3= 25; p1_p4= 12;
nx = (p2x-p1x)/p1_p2; ny= (p2y-p1y)/p1_p2;nz= (p2z-p1z)/p1_p2;
disp('nx = '),disp(nx)
disp('ny = '),disp(ny)
disp('nz = '),disp(nz)
sx = (p3x-p1x)/p1_p3; sy= (p3y-p1y)/p1_p3;sz= (p3z-p1z)/p1_p3;
disp('sx = '),disp(sx)
disp('sy = '),disp(sy)
disp('sz = '),disp(sz)
ax = (p4x-p1x)/p1_p4; ay= (p4y-p1y)/p1_p4;az= (p4z-p1z)/p1_p4;
disp('ax = '),disp(ax)
disp('ay = '),disp(ay)
disp('az = '),disp(az)
%
Pxfp= 206.2437; Pyfp= 39.0914; Pzfp= -472.9750; %from forward kinematics
Px = (Pxfp-L5*ax); Py = (Pyfp-L5*ay); Pz = (Pzfp-L5*az);
% Finding joint angle 1
theta1 = atan2(Py,Px)-atan2(d3,[1 -1]*sqrt(Px^2+Py^2-d3^2)); % +/-...[1 -1]
theta1 = rad2deg(theta1);
disp('theta1 ='),disp(theta1)
%
c1 = cos(theta1);
s1 = sin(theta1);
% Finding joint angle 3
K = (Px^2+Py^2+Pz^2-a2^2-a3^2-d3^2-d4^2)/(2*a2);
disp('K= '),disp(K)
%
theta3 = atan2(a3,d4)-atan2(K,[1 -1]*sqrt(a3^2+d4^2-K^2)); % +/-...[1 -1]
theta3 = rad2deg(theta3);
disp('theta3 ='),disp(theta3)
%
c3 = cos(theta3);
s3 = sin(theta3);
% Finding joint angle 2
s23 = -((a3+a2*(c3))*Pz)+((c1)*Px+s1*Py)*(a2*(s3-d4));
c23 = (-d4+a2*s3)*Pz+(c1*Px+s1*Py)*(a2*c3+a3);
theta23 = atan2(s23,c23);
theta23 = rad2deg(theta23);
theta2 = theta23 - theta3;
disp('theta2 ='),disp(theta2)
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Mathematics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!