Python Interface for the robot Kinematics library pykin
This library has been created simply by referring to ikpy and kinpy .
- Pure python library
- Support only URDF file.
- Compute forward, inverse kinematics and jacobian, referred to the Introduction to Humanoid Robotics book.
- Check robot self-collision and collision between robot's bodies and objects.
- Plot robot kinematic chain and mesh using matplotlib or trimesh library
You need a python-fcl package to do object collision checking.
-
On Ubuntu, install two dependency libraries using
apt
sudo apt install liboctomap-dev
sudo apt install libfcl-dev
-
On Mac, download the two dependency libraries from git repository and build it.
-
octomap
git clone https://github.com/OctoMap/octomap.git
$ cd octomap $ mkdir build $ cd build $ cmake .. $ sudo make $ sudo make install
-
fcl
git clone https://github.com/flexible-collision-library/fcl.git
Since python-fcl uses version 0.5.0 of fcl, checkout with tag 0.5.0
$ cd fcl $ git checkout 0.5.0 $ mkdir build $ cd build $ cmake .. $ sudo make $ sudo make install
-
pykin supports macOS and Linux on Python 3.
-
Install from pip
$ pip3 or pip install pykin
-
Install from source [recommend]
$ git clone https://github.com/jdj2261/pykin.git $ cd pykin $ python3 seup.py install or sudo python3 setup.py install
-
pykin directory structure
└── pykin ├── assets ├── collision ├── examples ├── geometry ├── kinematics ├── models ├── robots └── utils
You can see various examples in examples directory
-
Robot Info
You can see 7 robot info.
baxter, sawyer, iiwa14, iiwa7, panda, ur5e, doosan
$ cd pykin/examples $ python robot_info.py $(robot_name) # baxter $ python robot_info.py baxter # saywer $ python robot_info.py sawyer
-
Forward kinematics
You can compute the forward kinematics as well as visualize the visual or collision geometry.
$ cd pykin/examples/forward_kinematics $ python robot_fk_baxter_test.py
visual collision -
Inverse Kinematics
You can compute the inverse kinematics using levenberg marquardt(LM) or newton raphson(NR) method
$ cd pykin/examples/inverse_kinematics $ python robot_ik_baxter_test.py
-
Sampling based Inverse Kinematics
You can compute the inverse kinematics using geometric-aware bayesian optimization(GaBO) method
For more detailed information, check GaBO module
$ cd pykin/examples/inverse_kinematics $ python robot_ik_gabo_test.py
-
Collision check
The below images show the collision result as well as visualize robot using trimesh.Scene class
$ cd pykin/examples/trimesh_renders $ python sawyer_render.py
trimesh.Scene Result
You can see visualization using matplotlib library or trimesh.Scene class.