SkillAgentSearch skills...

Pytracik

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.

Install / Use

/learn @chenhaox/Pytracik
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

  • Trac-IK Repository: https://bitbucket.org/traclabs/trac_ik/src/master/
  • Trac-IK Homepage: https://traclabs.com/projects/trac-ik/
  • Other ROS-free Trac-IK Python Bindings: https://github.com/mjd3/tracikpy

⚡ 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

  • Download Boost 1.79.0 (https://www.boost.org/)
  • Eigen3 3.4.0 (https://eigen.tuxfamily.org/index.php?title=Main_Page)
  • NLopt (https://nlopt.readthedocs.io/en/latest/)
  • Orocos KDL (https://orocos.github.io/orocos_kinematics_dynamics/installation.html)

👉 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 .
    
View on GitHub
GitHub Stars28
CategoryCustomer
Updated9d ago
Forks7

Languages

C++

Security Score

90/100

Audited on Mar 27, 2026

No findings