fsolve doesn't give correct answer even with close initial guess
古いコメントを表示
hello everyone
i'm trying to solve these equations with fsolve, but even with close initial guess it doesn't give me the correct answer. here are the equations:
function F=IK(x)
F=[cos(x(4))*sin(x(1))*sin(x(6)) - 1.0*cos(x(5))*cos(x(6))*sin(x(1))*sin(x(4)) + cos(x(1))*cos(x(2))*cos(x(3))*sin(x(4))*sin(x(6)) - 1.0*cos(x(1))*cos(x(2))*cos(x(6))*sin(x(3))*sin(x(5)) + cos(x(1))*cos(x(3))*cos(x(6))*sin(x(2))*sin(x(5)) + cos(x(1))*sin(x(2))*sin(x(3))*sin(x(4))*sin(x(6)) + cos(x(1))*cos(x(2))*cos(x(3))*cos(x(4))*cos(x(5))*cos(x(6)) + cos(x(1))*cos(x(4))*cos(x(5))*cos(x(6))*sin(x(2))*sin(x(3));
cos(x(1))*cos(x(5))*cos(x(6))*sin(x(4)) - 1.0*cos(x(1))*cos(x(4))*sin(x(6)) + cos(x(2))*cos(x(3))*sin(x(1))*sin(x(4))*sin(x(6)) - 1.0*cos(x(2))*cos(x(6))*sin(x(1))*sin(x(3))*sin(x(5)) + cos(x(3))*cos(x(6))*sin(x(1))*sin(x(2))*sin(x(5)) + sin(x(1))*sin(x(2))*sin(x(3))*sin(x(4))*sin(x(6)) + cos(x(2))*cos(x(3))*cos(x(4))*cos(x(5))*cos(x(6))*sin(x(1)) + cos(x(4))*cos(x(5))*cos(x(6))*sin(x(1))*sin(x(2))*sin(x(3));
cos(x(2))*cos(x(3))*cos(x(6))*sin(x(5)) + cos(x(2))*sin(x(3))*sin(x(4))*sin(x(6)) - 1.0*cos(x(3))*sin(x(2))*sin(x(4))*sin(x(6)) + cos(x(6))*sin(x(2))*sin(x(3))*sin(x(5)) + cos(x(2))*cos(x(4))*cos(x(5))*cos(x(6))*sin(x(3)) - 1.0*cos(x(3))*cos(x(4))*cos(x(5))*cos(x(6))*sin(x(2));
cos(x(1))*cos(x(3))*sin(x(2))*sin(x(5))*sin(x(6)) - 1.0*cos(x(5))*sin(x(1))*sin(x(4))*sin(x(6)) - 1.0*cos(x(1))*cos(x(2))*cos(x(3))*cos(x(6))*sin(x(4)) - 1.0*cos(x(1))*cos(x(6))*sin(x(2))*sin(x(3))*sin(x(4)) - 1.0*cos(x(1))*cos(x(2))*sin(x(3))*sin(x(5))*sin(x(6)) - 1.0*cos(x(4))*cos(x(6))*sin(x(1)) + cos(x(1))*cos(x(2))*cos(x(3))*cos(x(4))*cos(x(5))*sin(x(6)) + cos(x(1))*cos(x(4))*cos(x(5))*sin(x(2))*sin(x(3))*sin(x(6));
cos(x(1))*cos(x(4))*cos(x(6)) + cos(x(1))*cos(x(5))*sin(x(4))*sin(x(6)) - 1.0*cos(x(2))*cos(x(3))*cos(x(6))*sin(x(1))*sin(x(4)) - 1.0*cos(x(6))*sin(x(1))*sin(x(2))*sin(x(3))*sin(x(4)) - 1.0*cos(x(2))*sin(x(1))*sin(x(3))*sin(x(5))*sin(x(6)) + cos(x(3))*sin(x(1))*sin(x(2))*sin(x(5))*sin(x(6)) + cos(x(2))*cos(x(3))*cos(x(4))*cos(x(5))*sin(x(1))*sin(x(6)) + cos(x(4))*cos(x(5))*sin(x(1))*sin(x(2))*sin(x(3))*sin(x(6));
cos(x(3))*cos(x(6))*sin(x(2))*sin(x(4)) - 1.0*cos(x(2))*cos(x(6))*sin(x(3))*sin(x(4)) + cos(x(2))*cos(x(3))*sin(x(5))*sin(x(6)) + sin(x(2))*sin(x(3))*sin(x(5))*sin(x(6)) + cos(x(2))*cos(x(4))*cos(x(5))*sin(x(3))*sin(x(6)) - 1.0*cos(x(3))*cos(x(4))*cos(x(5))*sin(x(2))*sin(x(6));
sin(x(1))*sin(x(4))*sin(x(5)) - 1.0*cos(x(1))*cos(x(2))*cos(x(5))*sin(x(3)) + cos(x(1))*cos(x(3))*cos(x(5))*sin(x(2)) - 1.0*cos(x(1))*cos(x(2))*cos(x(3))*cos(x(4))*sin(x(5)) - 1.0*cos(x(1))*cos(x(4))*sin(x(2))*sin(x(3))*sin(x(5));
cos(x(3))*cos(x(5))*sin(x(1))*sin(x(2)) - 1.0*cos(x(2))*cos(x(5))*sin(x(1))*sin(x(3)) - 1.0*cos(x(1))*sin(x(4))*sin(x(5)) - 1.0*cos(x(2))*cos(x(3))*cos(x(4))*sin(x(1))*sin(x(5)) - 1.0*cos(x(4))*sin(x(1))*sin(x(2))*sin(x(3))*sin(x(5));
cos(x(5))*sin(x(2))*sin(x(3)) + cos(x(2))*cos(x(3))*cos(x(5)) - 1.0*cos(x(2))*cos(x(4))*sin(x(3))*sin(x(5)) + cos(x(3))*cos(x(4))*sin(x(2))*sin(x(5));
0.16*cos(x(1)) - 0.0006763*sin(x(1)) + 0.59*cos(x(1))*cos(x(2)) - 0.10587*cos(x(4))*sin(x(1)) + 0.2*cos(x(1))*sin(x(2))*sin(x(3)) + 0.2015*sin(x(1))*sin(x(4))*sin(x(5)) + 0.2*cos(x(1))*cos(x(2))*cos(x(3)) + 0.723*cos(x(1))*cos(x(2))*sin(x(3)) - 0.723*cos(x(1))*cos(x(3))*sin(x(2)) - 0.10587*cos(x(1))*cos(x(2))*cos(x(3))*sin(x(4)) - 0.2015*cos(x(1))*cos(x(2))*cos(x(5))*sin(x(3)) + 0.2015*cos(x(1))*cos(x(3))*cos(x(5))*sin(x(2)) - 0.10587*cos(x(1))*sin(x(2))*sin(x(3))*sin(x(4)) - 0.2015*cos(x(1))*cos(x(2))*cos(x(3))*cos(x(4))*sin(x(5)) - 0.2015*cos(x(1))*cos(x(4))*sin(x(2))*sin(x(3))*sin(x(5));
0.0006763*cos(x(1)) + 0.16*sin(x(1)) + 0.10587*cos(x(1))*cos(x(4)) + 0.59*cos(x(2))*sin(x(1)) + 0.723*cos(x(2))*sin(x(1))*sin(x(3)) - 0.723*cos(x(3))*sin(x(1))*sin(x(2)) - 0.2015*cos(x(1))*sin(x(4))*sin(x(5)) + 0.2*sin(x(1))*sin(x(2))*sin(x(3)) + 0.2*cos(x(2))*cos(x(3))*sin(x(1)) - 0.10587*cos(x(2))*cos(x(3))*sin(x(1))*sin(x(4)) - 0.2015*cos(x(2))*cos(x(5))*sin(x(1))*sin(x(3)) + 0.2015*cos(x(3))*cos(x(5))*sin(x(1))*sin(x(2)) - 0.10587*sin(x(1))*sin(x(2))*sin(x(3))*sin(x(4)) - 0.2015*cos(x(2))*cos(x(3))*cos(x(4))*sin(x(1))*sin(x(5)) - 0.2015*cos(x(4))*sin(x(1))*sin(x(2))*sin(x(3))*sin(x(5));
0.2*cos(x(2))*sin(x(3)) - 0.723*cos(x(2))*cos(x(3)) - 0.59*sin(x(2)) - 0.2*cos(x(3))*sin(x(2)) - 0.723*sin(x(2))*sin(x(3)) - 0.10587*cos(x(2))*sin(x(3))*sin(x(4)) + 0.10587*cos(x(3))*sin(x(2))*sin(x(4)) + 0.2015*cos(x(5))*sin(x(2))*sin(x(3)) + 0.2015*cos(x(2))*cos(x(3))*cos(x(5)) - 0.2015*cos(x(2))*cos(x(4))*sin(x(3))*sin(x(5)) + 0.2015*cos(x(3))*cos(x(4))*sin(x(2))*sin(x(5)) + 0.456]
and the code:
clc;
clear;
tic;
x0=[2.5570, 3.005,1,0,2.3685,2.0853];
% x0=[2.55707, 3.13087,0.68765,0,2.443221,2.557073]; exact initial guess
[x,fval] = fsolve(@IK,x0)
toc;
%answer with exact initial guess : x = 1.6735 0.4234 -0.8127 0.4869 1.6022 1.3645
%answer with another guess yet close to answer: x = 4.1680 0.5210 -0.7761 0.4922 1.4093 4.2110
what the problem can be?
7 件のコメント
dpb
2019 年 6 月 9 日
There doesn't appear to be a solution -- certainly your claimed "exact initial guess" isn't--
>> IK(x1)
ans =
0.8284
0.4291
-0.3599
-0.2564
0.8619
0.4375
0.4980
-0.2702
0.8240
-0.0000
0.0000
0.0000
>>
sanam
2019 年 6 月 9 日
dpb
2019 年 6 月 9 日
What makes you think a) necessarily is so and that fsolve isn't working correctly?
Granted, I've not tried to do any reduction or evaluation of the system, so it may be so, but...looks like a mess and with all the mixed-effects terms, not particularly surprised doesn't find such a solution.
sanam
2019 年 6 月 9 日
Walter Roberson
2019 年 6 月 9 日
12 equations in 6 variables is difficult
dpb
2019 年 6 月 9 日
Good point, Walter...
What's "3 of 4 DH parameters"? and there are six variables, not 4.
Given the complexity of the expressions, it's not out of the realm that there's a mistake or two in the formulation--be hard to avoid. You confirmed for absolute certain that the system is coded correctly? That could explain the symptom.
Are there any X that are known that could be removed to solve for the others to reduce dimensionality?
sanam
2019 年 6 月 9 日
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Solver Outputs and Iterative Display についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!