Skip to main content

Inverse kinematics for general 6R serial robots (Husty-Pfurner algebraic method)

Project description

IKDH

IKDH is an Inverse Kinematics solver based on the Denavit and Hartenberg convention. It finds all solutions for general six revolute joint robots based on the Husty and Pfurner algorithm [1] and [2].


Web Interface

Web Interface can be accessed here.

joints frames manipulability

Robots can be browsed and downloaded from the RoboDK Robot Library. Once found, add your .robot file with load and the DH parameters will be directly extracted from it.

Terminal Commands

  • cartesian motion : MoveL x_mm, y_mm, z_mm, roll_deg, pitch_deg, yaw_deg

    • set cartesian speed : SetSpeedL mm_per_s (default: 100 mm/s)
  • joint motion : MoveJ J1_deg, J2_deg, J3_deg, J4_deg, J5_deg, J6_deg

    • set joint speed : SetSpeedJ deg_per_s (default: 60 °/s)

Library

Install the python

pip install ikdh

Or locally build the project

cmake -B build -S .
cmake --build build

Python example

import ikdh

robot  = ikdh.load_robot("robots/your_robot.yaml")
solver = ikdh.Solver(robot.dh, robot.limits)

#                            x      y    z      roll pitch yaw
ee   = ikdh.pose_from_xyzrpw(500.0, 0.0, 500.0, 0.0, 90.0, 0.0)
sols = solver.solve(ee)   # list of (6,) numpy arrays, in degrees

for q in sols:
    print(q)

C++ example

#include <ikdh.h>
#include <robots.h>
#include <cstdio>

int main()
{
    auto robot = Robots::loadRobot("robots/gofa5.yaml");
    IKDH::Solver solver(robot.dh, robot.limits);

    auto ee = IKDH::poseFromXYZRPW(500.0, 0.0, 500.0, 0.0, 90.0, 0.0);
    auto sols = solver.solve(ee);

    for (size_t i = 0; i < sols.size(); ++i) {
        for (double q : sols[i]) printf("%.3f ", q);
        printf("\n");
    }
}

How to cite

@misc{axel_ikdh_2026,
  author       = {Axel Refalo},
  title        = {IKDH: An Inverse Kinematics Solver based Denavit and Hartenberg Convention},
  year         = {2026},
  publisher    = {GitHub},
  journal      = {GitHub Repository},
  howpublished = {\url{https://github.com/Lab-CORO/IKDH}},
}

References

[1] M. Husty, M. Pfurner and H.-P. Schröcker. A new and efficient algorithm for the inverse kinematics of a general serial 6R manipulator, Mech. Mach. Theory 42: 66–81, 2007.

[2] J. Capco, M. J. C. Loquias, S. M. M. Manongsong and F. R. Nemenzo. Inverse Kinematics of Some General 6R/P Manipulators, arXiv:1906.07813, 2019.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ikdh-1.0.1.tar.gz (385.4 kB view details)

Uploaded Source

File details

Details for the file ikdh-1.0.1.tar.gz.

File metadata

  • Download URL: ikdh-1.0.1.tar.gz
  • Upload date:
  • Size: 385.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for ikdh-1.0.1.tar.gz
Algorithm Hash digest
SHA256 945ea86b30597b57ec490b5cfa4acb249c46f6908edff044ff88a3fa6631fcf7
MD5 e40c8562543da2cb7c3499c92b3765d7
BLAKE2b-256 804eff8537bb77eaf14a215429d5ca1e41af7d723fa2b96efd98ac8f611fb484

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page