I developed a solution to the inverse kinematics problem using the A* algorithm to perform a discrete search through 3D space. My prelimiary research report outlines the approach, which I hope will eventually be useful in a practical robot.
The approach is based on the A* algorithm. A robotic armature is modeled as a series of quaternion rotations in 3D space and the configuration is fed into a heuristic function which looks at the current configuration with respect to the goal. When this error is within a specified tolerance, a solution is found.
In general, I found that this approach is far more reliable than other numerical solutions, and (I suspect) satisfies several useful properties:
- We want to find all solutions (but if we can find at least one solution quickly that is good).
- We want the algorithm to be decidable.
- We need our algorithm to be both sound and complete. (If a solution is found, it is a valid configuration, if no solutions are found, then no solutions exist).
- We want to be able to apply arbitrary constraints.
Here is a video of the algorithm in action: