Inverse kinematics: Greville and SVD algorithm, ENIB Project

To introduce the topic, I’m going to quote wikipedia (I know, it’s bad, but at least I will not lose anyone at the first line :))

The inverse kinematics problem is simply stated as, “Given the desired position of the robot’s hand, what must be the angles at all of the robot’s joints?” This is in contrast to the forward kinematics problem, which is, “Given the angles at all of the robot’s joints, what is the position of the hand?”

Humans solve the inverse kinematics problem constantly without conscious effort. For example, when eating cereal in the morning, humans reach out for their spoon without considering the relative configuration of their shoulder and elbow required to reach the spoon.

http://en.wikipedia.org/wiki/Inverse_kinematics

In this project, one of the goal was to implement a function allowing to compute the pseudoInverse of a non-square matrice. After some researches, the SVD and Greville algorithms seemed to be the one to use. For now I’m not going to enter too much into the rest of the project, but I mostly wanted to make my code available for people who would like to do the same ( I couldn’t find any code of the Greville algorithm at this time)  Mine is coded in C++ with the GSL library

In the archive, you will find the implementation of the Greville and SVD algorithm, plus a simple test code allowing the test of the performance of both of them. To make it faster, you can see below some information about the speed of the two algorithm.

for 500.000 iterations

> Download the archive <