
Vamos a resolver la cinemática inversa de un robot de 2 grados de libertad. Este problema consiste en encontrar los ángulos de las articulaciones (θ1 y θ2) que posicionan el extremo del robot en un punto deseado (x, y). Primero, definimos las longitudes de los eslabones como L1 y L2.
El primer paso es comprender la geometría del robot. Imagina dos brazos conectados. El primero, de longitud L1, está conectado a la base. El segundo, de longitud L2, está conectado al extremo del primero. Necesitamos encontrar los ángulos θ1 y θ2 que hagan que el extremo del segundo brazo esté en la posición (x, y).
Calculando θ2
Utilizaremos la ley de los cosenos para encontrar θ2. Consideremos un triángulo formado por L1, L2, y la distancia r desde la base hasta el punto (x, y). Primero calculamos r usando el teorema de Pitágoras: r2 = x2 + y2, entonces r = √(x2 + y2).
Must Read
Ahora aplicamos la ley de los cosenos al triángulo. La ley de los cosenos nos dice que r2 = L12 + L22 - 2 * L1 * L2 * cos(π - θ2). Recuerda que estamos buscando θ2. Tenemos que despejarlo de esta ecuación.
Reorganizamos la ecuación para aislar el término con coseno: cos(π - θ2) = (L12 + L22 - r2) / (2 * L1 * L2). Dado que cos(π - θ2) = -cos(θ2), entonces cos(θ2) = (r2 - L12 - L22) / (2 * L1 * L2).

Finalmente, obtenemos θ2 aplicando la función arco coseno (arccos): θ2 = arccos((r2 - L12 - L22) / (2 * L1 * L2)). Ten en cuenta que el arco coseno tiene dos soluciones: una positiva y otra negativa. Estas soluciones corresponden a las dos configuraciones posibles del robot (codo arriba y codo abajo).
Calculando θ1
Para encontrar θ1, necesitamos un poco más de trigonometría. Usaremos la función atan2(y, x), que devuelve el ángulo entre el eje x positivo y el punto (x, y). Primero calculamos el ángulo α entre el eje x y la línea que conecta la base con el punto (x, y): α = atan2(y, x).

Ahora necesitamos encontrar el ángulo β dentro del triángulo que formamos antes, opuesto al lado L2. Aplicamos la ley de los senos: sin(β) / L2 = sin(π - θ2) / r. Despejando sin(β), obtenemos: sin(β) = (L2 * sin(π - θ2)) / r. Como sin(π - θ2) = sin(θ2), entonces sin(β) = (L2 * sin(θ2)) / r.
Calculamos β usando la función arco seno (arcsin): β = arcsin((L2 * sin(θ2)) / r). Finalmente, θ1 = α ± β. Usamos el signo más o menos dependiendo de la configuración del robot (codo arriba o codo abajo) y la solución para θ2.
Resumen: Hemos calculado θ2 usando la ley de los cosenos y luego θ1 usando la función atan2 y la ley de los senos. Recuerda que arccos y arcsin tienen múltiples soluciones. Selecciona la solución correcta dependiendo de la configuración del robot y las restricciones del problema.