This is a fork of the IK-GEO repository by Alexander J. Elias, John T. Wen.
This repository aims to improve and partly enhance the provided C++ implementations and is still under construction.
Please see their paper for more information:
Implementation of subproblem solutions using a linear algebra approach from "Canonical Subproblems for Robot Inverse Kinematics". We also include inverse kinematics solutions to a number of 6-dof robot types, examples with specific robots, and timing tests.
For 7-DOF inverse kinematics using the Shoulder-Elbow-Wrist (SEW) angle, please see the stereo-sew repo.
minθ∥R(k,θ)p1−p2∥
minθ1,θ2∥R(k1,θ1)p1−R(k2,θ2)p2∥
minθ∣∥R(k,θ)p1−p2∥−d∣
minθ∣h⊤R(k,θ)p−d∣
R(k_2,\theta_2)(p_2+ R(k_3,\theta_3)p_3)$$
### Subproblem 6: Four circles
$$\begin{cases}
h_1^\top R(k_1, \theta_1)p_1 + h_2^\top R(k_2, \theta_2)p_2 = d_1\\
h_3^\top R(k_3, \theta_1)p_3 + h_3^\top R(k_4, \theta_2)p_4 = d_2
\end{cases}$$
## Folder breakdown
Make sure to switch to the right branch to see the most recent progress.
`cpp`: C++ implementation (Implemented/Enhanced within this fork).
Please see the "tests_and_demos" folder for information how to implement the C++ code into your project.
Currently working implementation contains:
* Solving Spherical-Wrist Robots with 6-DOF Revolute joints
* Implementation for 6-DOF Revolute joint robots with 3 parallel axes is under construction
* Construction of a variation of the 1D search algorithm is in planning
The following folders are unchanged from the original repository and (probably) won't be adapted in the future:
`ikfast`: Inverse kinematics comparison with IKFast
`matlab`: Reference MATLAB implementation
`python`: Python implementation (Work in progress)
`rust`: Rust implementation
## Contributing
If you have any improvements you'd like to make, or even ideas or requests for improvements, please start a GitHub issue.