ikfast-pybind 0.1.2
ikfast_pybind is a python binding generation library for the analytic kinematics engine ikfast.
License: MIT License
Keywords: Robotics,kinematics

==============
ikfast_pybind
==============

.. start-badges

.. image:: https://travis-ci.com/yijiangh/ikfast_pybind.svg?branch=master
    :target: https://travis-ci.com/yijiangh/ikfast_pybind
    :alt: Travis CI

.. image:: https://img.shields.io/github/license/yijiangh/conmech
    :target: ./LICENSE
    :alt: License MIT

.. image:: https://img.shields.io/badge/python-2.5+|3.x-blue
    :target: https://pypi.org/project/ikfast_pybind/
    :alt: PyPI - Python Version

.. image:: https://img.shields.io/badge/pypi-v0.0.1-orange
    :target: https://pypi.org/project/ikfast_pybind/
    :alt: PyPI - Latest Release


**ikfast_pybind** is a python binding generation library for the analytic kinematics engine `IKfast <http://openrave.org/docs/1.8.2/openravepy/ikfast/>`__. 
The python bindings are generated via `pybind11 <https://github.com/pybind/pybind11>`_ a `CMake <https://cmake.org/>`_-based build system.

**Note:** You need the ikfast `.h` and `.cpp` ready to generate the python bindings. This *URDF-to-cpp* generation part needs to be done with `openrave` and **IS NOT** done by this repo, 
please see `this tutorial <http://docs.ros.org/kinetic/api/framefab_irb6600_support/html/doc/ikfast_tutorial.html>`_ for details.

The assembly sequence and motion planning framework `pychoreo <https://github.com/yijiangh/pychoreo>`_ 
relies on this library to generate compatible IK modules for robots across brands, scales, and dofs.

Prerequisites
-------------

*ikfast_pybind* depends on the following dependencies, which come from pybind11 for building the python bindings.

**On Unix (Linux, OS X)**

* A compiler with C++11 support
* CMake >= 2.8.12

**On Windows**

* Visual Studio 2015 (required for all Python versions, see notes below)
* CMake >= 3.1

**It is recommended (especially for Windows users) to test the environment with the**
`cmake_example for pybind11 <https://github.com/pybind/cmake_example>`_ **before proceeding to build conmech.**

Installation
------------

::

  git clone --recursive https://github.com/yijiangh/ikfast_pybind
  cd ikfast_pybind
  pip install .
  # try with '--user' if you encountered a sudo problem

For developers:

::

  git clone --recursive https://github.com/yijiangh/ikfast_pybind
  cd ikfast_pybind
  python setup.py sdist
  pip install --verbose dist/*.tar.gz

With the ``setup.py`` file included in the base folder, the pip install command will invoke CMake and build the pybind11 module as specified in CMakeLists.txt.

References
----------

Citation
^^^^^^^^

If you find `IKFast <http://openrave.org/docs/0.8.2/openravepy/ikfast/>`__ useful, 
please cite `OpenRave <http://openrave.org/>`_:

::

  @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
^^^^^^^^^^^^^

`tutorial on ikfast cpp generation <http://docs.ros.org/kinetic/api/framefab_irb6600_support/html/doc/ikfast_tutorial.html>`_: See this tutorial for a detailed instruction on how to generate the ikfast cpp code from an URDF.

`Testing ikfast modules with a pick-n-place demo in pybullet <https://github.com/yijiangh/conrob_pybullet/tree/master/debug_examples>`_

pybind11_


Changelog
=========

All notable changes to this project will be documented in this file.

The format is based on `Keep a Changelog <http://keepachangelog.com/en/1.0.0/>`_
and this project adheres to `Semantic Versioning <http://semver.org/spec/v2.0.0.html>`_.

0.1.2
----------
**Fixed**
- Fix pypi wheel build issue

**Changed**
- Skip UR robot tests for now


0.1.1
----------
**Added**
- Added support for `kawasaki_rs010n` robot

**Changed**
- Reorganize test files to having a test file for each robot type.

**Updated**
- `pybind11` set to track master, commit `e08a58111`, which should fix pip installation issue.


0.1.0
----------
**Available robots**
- kuka_kr6_r900 (tested)
- ur3
- ur5
- abb_irb4600_40_255
- franka_panda (tested)
- eth_rfl (tested)

**Added**
Modules for `franka_panda`, `eth_rfl` robots.

Add ifkast modules for `ur5`, `kuka_kr6_r900`, `abb_irb4600`. `abb_irb4600` test fails some time randomly - need to regenerate its IKfast cpp files (might be the floating point truncation issue).

Include the upstreamed `ur_kinematics commit 6734142 July 2 2019 <https://github.com/ros-industrial/universal_robot/tree/9eccd19077c2e7b853e3a3215bce9f38b77adda5/ur_kinematics>`__
but it seems that the old one works more stably... I will do more tests on this.