MATLAB Answers

0

Inverse Kinematic Solver solutions

Hello, I am using the robotic toolbox inverse kinematic solver as shown below.
My main question is why do I get different results everytime this script is ran? There are small differneces in the outputs but then every few iterations the values seem to almost double.
Thank you for any advice you can offer!

clear

robot = importrobot('appleRobot.urdf');
homeConfig = robot.homeConfiguration;
ik = robotics.InverseKinematics('RigidBodyTree', robot);

ik.SolverParameters.AllowRandomRestarts = true;
ik.SolverParameters.MaxIterations = 1500;

x = 24;
y = 25;
z = 26;

%inches to meters
x = x / 39.37; y = y / 39.37; z = z / 39.37;
pos = [x y z];

pose = eye(4);
pose(1:3, 4) = pos';

weights = [0.25 0.25 0.25 1 1 1];

[configSoln,solnInfo] = ik('end', pose, weights,...
homeConfig);

dis = 0; theta = 0; phi = 0;

dis = configSoln(1).JointPosition;
theta = configSoln(2).JointPosition;
phi = configSoln(3).JointPosition;

[dis theta phi];
%solnInfo

  댓글 수: 0

로그인 to comment.

답변 수: 1

Cam Salzberger 님의 답변 6 Sep 2019
 채택된 답변

Hello Kyle,
The inverse kinematics solver parameter AllowRandomRestarts is likely the culprit here. If you check the documentation:
AllowRandomRestarts — Indicator if random restarts are allowed. Random restarts are triggered when the algorithm approaches a solution that does not satisfy the constraints. A randomly generated initial guess is used. MaxIteration and MaxTime are still obeyed. By default, random restarts are enabled.
Since there is some randomness in the solver process, the results may differ every time. Especially if there are multiple solutions for the same position.
-Cam

  댓글 수: 1

Cam,
Thank you for the response, its solved the issue of huge jumps in solutions.
Kyle

로그인 to comment.



Translated by