Dificultad 1
Inicialmente se tenía un modelo matemático para resolver el sistema de ecuaciones de los ángulos, sin embargo, la matriz del sistema en casi todos los casos tiene determinante cero, por lo que se hacía imposible resolverlo sin una librería lo suficientemente potente.
Solución
Se encontró la librería de álgebra lineal Eigen. Se replanteó el problema no cómo encontrar la inversa de una matriz, sino que como resolver una ecuación del tipo Ax = B (donde antes se buscaba invertir A para encontrar x). Utilizando la clase SVD de eigen, se puede encontrar una aproximación muy cercana para x incluso si A tiene determinante cero.
Dificultad 2
Inicialmente se pretendía tener un objeto OpenGL widget de QT para controlar la posición final del brazo de forma gráfica a través de una representación 2d del brazo. Se encontraron muchas dificultades gracias a la poca compatibilidad de OpenGL y las tarjetas gráficas nvidia con el sistema operativo y los computadores que utilizamos para programar.
Solución
Se reemplazó el OpenGL widget con una caja de comandos para “programar” una secuencia de movimientos.