Skip to content

Additional optimization-based solver #70

@timonegk

Description

@timonegk

Hi, I recently experimented with some inverse kinematics solvers other than KDL/PickIK/BioIK and stumbled upon RelaxedIK and its derivatives. Because it is implemented in Rust and has a very poor ROS wrapper, I reimplemented the basic algorithm in C++ as a MoveIt plugin. The results are very good and, at least on the examples I already tested, outperform all three solvers mentioned above.

Would you be interested in including this solver as a third mode next to the global and local modes?

Example benchmarking

This quantitative example is with the UR10 robot on a small table, IK is calculated for all red arrows on the table, the robot must not collide with the table.

Success rates (ur10 on small_table):
RelaxedIK: 1.0
BioIK: 1.0
PickIK: 0.88
KDL: 1.0
Solve times (ms) (ur10 on small_table):
RelaxedIK: 2.06 ms ± 1.37 ms
BioIK: 3.31 ms ± 1.91 ms
PickIK: 24.23 ms ± 20.29 ms
KDL: 8.19 ms ± 6.20 ms

Note that PickIK with default parameters only managed to solve 88 of 100 points within the time frame of one second.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions