Skip to content

chenhaox/pytracik

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

56 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

pytracik - Trac-IK bindings in Python

License: MIT PyPI version

πŸ“’ Now available on PyPI! Install with pip install pytracik. See Installation for details.

Welcome to pytracik, a Python library that provides convenient and efficient bindings for the Trac-IK inverse kinematics solver. With support for Python 3.8+ and compatibility across Windows, Linux and Mac environments. pytracik eliminates the need for ROS installation and simplifies the integration process.

✨ Differences from Original Repo:

  • πŸš€ ROS-Free Integration: Say goodbye to the ROS requirement. pytracik allows you to effortlessly incorporate Trac-IK's advanced inverse kinematics solver into your Python projects. However, it still depends on the boost,eigen,orocos-kdl and nlopt libraries.
  • πŸ’» Cross-Platform Compatibility: Whether you're on Windows, Linux or Mac, pytracik ensures consistent functionality across environments.

πŸ”— Links

⚑ Quick Start

import os
import numpy as np
from trac_ik import TracIK

urdf_path = os.path.join(os.path.dirname(__file__), "urdf/yumi.urdf")

yumi_rgt_arm_iksolver = TracIK(base_link_name="yumi_body",
                             tip_link_name="yumi_link_7_r",
                             urdf_path=urdf_path, )
yumi_lft_arm_iksolver = TracIK(base_link_name="yumi_body",
                             tip_link_name="yumi_link_7_l",
                             urdf_path=urdf_path, )
seed_jnt = np.array([-0.34906585, -1.57079633, -2.0943951, 0.52359878, 0.,
                   0.6981317, 0.])
tgt_pos = np.array([.3, -.4, .1])
tgt_rotmat = np.array([[0.5, 0., 0.8660254],
                     [0., 1., 0.],
                     [-0.8660254, 0., 0.5]])
result = yumi_rgt_arm_iksolver.ik(tgt_pos, tgt_rotmat, seed_jnt_values=seed_jnt)
print(result)

Output:

[ 1.17331584 -1.99621953 -1.08811406 -0.18234367  0.66571608  1.26591
  0.18141696]

πŸ“¦ Installation

⚑ Install from PyPI (recommended)

🐧 Linux (Ubuntu / Debian)

sudo apt-get install -y libboost-all-dev libeigen3-dev liborocos-kdl-dev libnlopt-dev libnlopt-cxx-dev
pip install pytracik

🍎 macOS

brew install boost eigen orocos-kdl nlopt
pip install pytracik

πŸͺŸ Windows

pip install pytracik

πŸ› οΈ Manual Installation (from source)

  1. Download this library and enter the project directory
git clone https://github.com/chenhaox/pytracik.git
cd pytracik

🐧 Installation on Linux

Here we use Ubuntu 22.04 as an example.

  1. Install dependencies: 1. Boost 2. Eigen3 3. Orocos KDL 4. NLopt
    sudo apt install libboost-all-dev libeigen3-dev liborocos-kdl-dev libnlopt-dev libnlopt-cxx-dev
  2. Install the package on Linux
    pip install .

πŸͺŸ Install on MacOS

  1. Install dependencies: 1.Boost 2. Eigen3 3. Orocos-KDL 4.Nlopt
    brew install boost eigen3 orocos-kdl nlopt
  2. Install the package on MacOS
    pip install .

πŸͺŸ Install on Windows

Download dependencies from Official Websites

πŸ‘‰ Shortcut: Instead of downloading them individually, you can grab a pre-packaged zip with all dependencies from the project’s GitHub release:

πŸ“₯ https://github.com/chenhaox/pytracik/releases/tag/dependency_files

πŸ”Ή Method 1: Install with pip (Recommended for most users)

Copy the downloaded dependency zip file and unzip it to project root directory. Then run the following command in the project root directory:

pip install .

πŸ”Ή Method 2: Manual Build with Visual Studio (For advanced users)

  1. Download Visual Studio (https://visualstudio.microsoft.com/downloads/). Here we use Visual Studio 2022 as an example. Install required components:

    • Desktop development with C++
    • C++ CMake tools for Windows
  2. Compile pytracik with Visual Studio following the instructions below. a. Create an C++ Empty project in Visual Studio.

    img.png

    b. Add the source files in src folder to the project.

    img_1.png

    c. Right click the project and select Properties.

    • Set the Configuration to Release and Platform to Active (x64)
    • In the Configuration Properites/General tab, set the Target Name to pytracik_bindings.
    • Set the Configuration Type to Dynamic Library (.dll).
    • Set C++ language standard to ISO C++17 Standard (/std:c++17).

    img_2.png

    d. In the Configuration Properites/Advanced tab, set Taget File Extension to .pyd. img_6.png

    e. In the C/C++ tab, add the include directories of 1. Boost, 2. Eigen3, 3. NLopt and 4. Orocos KDL 5. Python and 6. Pybind11 to Additional Include Directories.

    img_3.png

    f. In the Linker/General tab, add the library directories of 1. Boost, 2. NLopt 3. Orocos KDL and 4. Python to Additional Library Directories.

    img_4.png

    g. In the Linker/Input tab, add the library names of 1. Boost, 2. NLopt 3. Orocos KDL and 4. Python to Additional Dependencies.

    img_5.png

    h. Set the Solution Configuration to Release and Solution Platform to x64. Then build the project. The pytracik_bindings.pyd file will be generated in the Release folder. img_7.png

  3. Copy the pytracik_bindings.pyd file to the pytracik folder. Note: if the error ImportError: DLL load failed while importing pytracik: The specified module could not be found. occurs, please copy the nlopt.dll in the <NLopt installation path\bin> to the pytracik folder:

  4. Make installation (Optional):

    pip install -e .

About

A ROS-independent Python library providing bindings to the Track IK inverse kinematics solver. Supports Linux, Windows and Mac operating systems. Easy to integrate into new and existing projects.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors