/ikfast_pybind

Ikfast python binding modules built with a CMake-based build system

Primary LanguageC++MIT LicenseMIT

ikfast_pybind

Github Actions Build Status License

ikfast_pybind is a python binding generation library for the analytic kinematics engine IKfast. The python bindings are generated via pybind11 a CMake-based build system.

Main features

Analytical inverse and forward kinematics (IK and FK) for robots with less or equal than six degrees of freedom. For a given end effector pose, ikfast computes all IK solutions (e.g. 8 solutions for a 6-dof robot). The ikfast backend is C++ code, and it only performs geometric kinematic computations, it is fast and deterministic.

However, ikfast knows nothing about the robot's joint limits and collision models, so it is up to the user to filter the solutions and check for collisions.

Note: ikfast_pybind contains a few commonly used industrial robot models to allow pip install and quick use. ikfast_pybind includes the ikfast cpp code for these robots, but it mainly takes care of the compilation and wrapping of the ikfast cpp code into python bindings.

THe actual ikfast cpp code generation from a given robot model is done by OpenRave's ikfast module, which is not included in this library. If you want to add new robot models from URDF files, please refer to the Adding new robots section.

Installation

  git clone --recursive https://github.com/yijiangh/ikfast_pybind
  cd ikfast_pybind
  pip install .

Adding new robots

Docker workflow (recommended)

Using the Dockerfile and the library generation workflow in pyikfast, we can now (relatively) easily generate new ikfast modules for new robot models!

Installing openrave from source

If you don't like docker and want to install openrave and ikfast manually, you can follow the instructions in this tutorial. Warning: this can be non-trivial and time-consuming!

Development

  # Building using Docker
  docker build . --tag pyikfast
  # replace ${PWD} with `pwd` if you are using bash
  docker run -it -v ${PWD}/output:/output --entrypoint bash pyikfast

References

Citation

If you find IKFast useful, please cite OpenRave:

  @phdthesis{diankov_thesis,
    author = "Rosen Diankov",
    title = "Automated Construction of Robotic Manipulation Programs",
    school = "Carnegie Mellon University, Robotics Institute",
    month = "August",
    year = "2010",
    number= "CMU-RI-TR-10-29",
    url={http://www.programmingvision.com/rosen_diankov_thesis.pdf},
  }

Related links