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.
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)
- set cartesian speed :
-
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)
- set joint speed :
Library
build the project
cmake -B build -S .
cmake --build build
Python example
import sys; sys.path.insert(0, 'build')
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ikdh-1.0.0.tar.gz.
File metadata
- Download URL: ikdh-1.0.0.tar.gz
- Upload date:
- Size: 386.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cffb4626493edf6d0679781762d6a6edb08a18e92ab7242684b38386d6d32ab4
|
|
| MD5 |
8199ce72644897295ce57d2cbe5fbf8d
|
|
| BLAKE2b-256 |
c5e88b4942d352527f185fda10b1709ebc58549ef5f81e53787a6fe6282d4966
|
File details
Details for the file ikdh-1.0.0-cp314-cp314-macosx_26_0_arm64.whl.
File metadata
- Download URL: ikdh-1.0.0-cp314-cp314-macosx_26_0_arm64.whl
- Upload date:
- Size: 228.6 kB
- Tags: CPython 3.14, macOS 26.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8690af435848d4548c7f58b3e5683f4888c5436fd90c1ff76387f8a17b8bf18e
|
|
| MD5 |
01ea442764b2e017865cc70ebaef21f9
|
|
| BLAKE2b-256 |
73603f858b8b4b765bf26cd73e01308aa94a9b170d02322c27d990e3d6423263
|