Skip to content

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

License

Notifications You must be signed in to change notification settings

chenhaox/pytracik

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pytracik - Trac-IK bindings in Python

License: MIT

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 both Windows and Linux 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 or Linux, pytracik ensures consistent functionality across environments.

Links

Quick Start

import os
import numpy as np
from pytracik.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

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 

TODO: Finishthe installation instructions

Install on Windows

  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. Install required Python packages:

    pip install -r requirements.txt
  3. Download Dependencies:

  4. 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

  5. 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:

  6. Make installation (Optional):

    pip install -e .

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published