Problem in returning equation solution for solve()
1 次查看(过去 30 天)
显示 更早的评论
Hi I have this code used for inverse kinematics analysis of a manipulator, where i want to check for motor angles to finite number of points. So the solution is to check whether motor angles are real or imaginary values. I have made included some of the function which give me trouble.
%% Beregening af motorvinkler vha. Virtual Link (VL) syms alpha1 alpha2 alpha3 alpha4 b
alphamotor = zeros(4,1); %Opstilling af vector
for i=4:4
vektilnorm =(Motor(1:3,i)+(Roty(beta(i))*Rotz(gamma(i))*Rotx(alpha4)*PL(1:3,i))-MP-PC(1:3,i));
norma = sqrt(vektilnorm(1)^2+vektilnorm(2)^2+vektilnorm(3)^2);
eq = norma^2-VL(i)^2==0;
%eq4 = ((363684746018783151*cos(alpha4))/1801439850948198400 - (8870359658994711*sin(alpha4))/360287970189639680 + 3/100)^2 + ((9068988574485043*cos(alpha4))/360287970189639680 - (221194843280123*sin(alpha4))/72057594037927936 + (2^(1/2)*cos(alpha4))/80 + (41*2^(1/2)*sin(alpha4))/400 - 51/100)^2 + ((4423896865602461*sin(alpha4))/1441151880758558720 - (181379771489700901*cos(alpha4))/7205759403792793600 + (2^(1/2)*cos(alpha4))/80 + (41*2^(1/2)*sin(alpha4))/400 - 7/40)^2 - 4/25 == 0 ((363684746018783151*cos(alpha4))/1801439850948198400 - (8870359658994711*sin(alpha4))/360287970189639680 + 3/100)^2 + ((9068988574485043*cos(alpha4))/360287970189639680 - (221194843280123*sin(alpha4))/72057594037927936 + (2^(1/2)*cos(alpha4))/80 + (41*2^(1/2)*sin(alpha4))/400 - 51/100)^2 + ((4423896865602461*sin(alpha4))/1441151880758558720 - (181379771489700901*cos(alpha4))/7205759403792793600 + (2^(1/2)*cos(alpha4))/80 + (41*2^(1/2)*sin(alpha4))/400 - 7/40)^2 - 4/25 == 0
[alpharesult, param, cond] = solve(eq,alpha4,'ReturnConditions', true);
assume(cond); alpharesultcheck = solve(-pi/2<alpharesult, alpharesult<pi/2, param);
xvalues = subs(alpharesult, alpharesultcheck);
alphamotor(i) = length(xvalues);
end
eq4 is the eqution from the command window got by calcultion of rotation and vectors.
So the problem is when to solve for solutions, if i do by using eq it gives me zero real values. if instead use eq4 (which is a copy of the command window from eq) it gives me the real solution. Have somebody tried something similar?
best regards
0 个评论
回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!