Each time maximum number of valid configs changes depending on the pick up point
4 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I am trying to generate some valid pick up configurations for a given orientation ( I have 17 different orientations to test) around some points in space with UR5e. I count them as well so that I know the exact number of valid pick up configurations around each point. The thing is, sometimes when I run the simulation for some points, it counts less or more then it did before. So let's say the result of the first execution for the point A was 16 valid pick up configs around that point, the second time it can be 13 for example instead of 16. Why is this happening ? Should I modify the solver parameters of gik to overcome this ? Because if sometimes it looks like the UR5 can't reach certain poses but other times it can so it's not really viable.
Hello,
I am trying to generate valid pick-up configurations for a given orientation with a UR5e robot. I have 17 different orientations to test around specific points in space. For each point, I count the number of valid pick-up configurations to determine the exact number of feasible configurations.
However, I have encountered an inconsistency: the number of valid configurations varies between simulation runs. For instance, for a given point A, the first execution might yield 16 valid configurations, while the second might yield only 13.
Why is this inconsistency happening? Should I modify the solver parameters of the Generalized Inverse Kinematics (GIK) solver to achieve consistent results ? How can I be sure of getting the maximum reachable configurations? Because of this problem, it appears that sometimes the UR5e can reach certain poses, but other times it cannot, which undermines the reliability of the simulations.
Thank you for your assistance.
0 件のコメント
採用された回答
Remo Pillat
2024 年 5 月 29 日
Hi Denizhan,
GIK is a numeric inverse kinematics algorithm and uses a non-linear optimization under the hood. The quality of the result is based on:
(1) The solver settings specified in the "SolverParameters" property of GIK.
(2) The initial guess configuration that is provided when calling GIK. This is the initialization used for the optimization.
(3) Some randomness if random restarts are used by the solver. If the optimizer determines that the optimization starting at the initial guess does not converge, it will trigger a "random restart", i.e. restart the optimization at a random configuration. This is controlled through the "AllowRandomRestart" property in SolverParameters. By default, this is on.
The way you describe your problem, you are probably seeing an effect of (3) where different random stream configurations cause different results for the same GIK problem at different times. If you want GIK to be repeatable, you can either (a) disable random restarts by setting SolverParameters.AllowRandomRestart=0 or (b) fix the random number generator before calling GIK, e.g. by setting rng(64) to some fixed number.
Thanks,
Remo
3 件のコメント
Remo Pillat
2024 年 5 月 30 日
Hi Denizhan,
The initial guess is just a set of joint angles that are used as a starting point for the optimization algorithm. Since the underlying optimization is non-linear, it's not guaranteed that it converges to the global optimum, but it's possible that it will converge to local minimum that can be different for each initial guess. That's also the reason that the "random restart" mechanism significantly helps with convergence, since the optimization will try different initial guesses to find the "best" local minimum.
This is a limitation of the numeric inverse kinematics algorithm and doesn't correspond to any physical limitation of the robot's ability to reach certain poses.
For some robots, you can find analytical (closed-form) solutions to the inverse kinematics problem. An added advantage is that it can compute all possible joint configurations. See the analyticalInverseKinematics documentation page for more details.
Hope this helps.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Code Generation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!