EBIKE stands for Enhancement and Benchmarking of Inverse Kinematics in Environments. The library provides tools to compare, evaluate, and optimize different IK solvers in real-world scenarios.
Usually, inverse kinematics solvers are evaluated using a very simple approach: A high number of joint space configurations are randomly generated, forward kinematics is performed on the configuration, and the resulting end effector pose is used as input for the inverse kinematics solver. While this approach ensures that no unreachable goal is given to the solver and that the targets are equally distributed in joint space, it does not always represent practical use cases. Especially highly occluded environments and targets near the joint limits of the robot are difficult to reach and not covered by current IK benchmarking tools.
To use the library, clone this repository into your colcon workspace. Also clone REACH and the ROS 2 extenstions into the workspace. Depending on the IKs you want to test, you should also clone the following:
Using the run_benchmark.py
script, the benchmark can be started, visualization.launch.py
can be used for visualization.
The library uses the REACH library to try to move the robot's end effector to
certain points on the target object.
The scenarios that are evaluated are located in the scenarios
folder and used in the scenario.py
file.
Robots and IK solvers are set up in the robot.py
and ik.py
files, respectively.
It should be easy to add your own robots, IK solvers, and scenarios to evaluate according to your own needs.
For optimization, parameters for PickIK can automatically be optimized using the run_optuna.py
script.
This script uses the Optuna library for optimization.
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
Small table | Table | Kallax | Barrel |
Some example results obtained from the library are shown here. The experiments were run on the UR10 robot with the four default scenarios.