Qué ángulos llevan la mano a un punto
La cinemática inversa es el cálculo contrario a la directa. Dado un punto objetivo, busca los ángulos de las articulaciones que llevan la mano hasta él. Un robot que coge una pieza la necesita siempre.
A veces hay dos soluciones y a veces ninguna. Aprenderás a saber cuándo ocurre cada caso. Todo es una simulación.
Al final de esta lección
Nota
Puedo hallar los ángulos que llevan la mano de un brazo a un punto objetivo.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Cinemática inversa | del punto objetivo a los ángulos |
| Objetivo | el punto al que debe llegar la mano |
| Ley de los cosenos | liga los tres lados de un triángulo con uno de sus ángulos |
| Alcance | la zona de puntos a los que llega la mano |
| Codo arriba y codo abajo | las dos formas de llegar al mismo punto |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Base, codo y objetivo forman un triángulo
Para un objetivo (x, y), los tres puntos base, codo y mano forman un triángulo. Sus lados miden l1, l2 y la distancia d de la base al objetivo.
La ley de los cosenos da el ángulo del codo. El coseno del ángulo 2 es d al cuadrado, menos l1 al cuadrado, menos l2 al cuadrado, todo dividido entre dos por l1 por l2.
Ejemplo resuelto: el objetivo (10, 10)
| Paso | Cálculo | Resultado |
|---|---|---|
| Distancia al cuadrado | 10 × 10 + 10 × 10 | 200 |
| Coseno del ángulo 2 | (200 - 100 - 100) ÷ 200 | 0 |
| Ángulo 2 | dos opciones: 90 o -90 | 90 y -90 |
| Ángulo 1 con 90 | 45 - 45 | 0 |
| Ángulo 1 con -90 | 45 + 45 | 90 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El ángulo 2 cuando el coseno vale 0
docker exec jupyter python3 -c "import numpy as np; print(round(np.degrees(np.arccos((10 ** 2 + 10 ** 2 - 10 ** 2 - 10 ** 2) / (2 * 10 * 10))), 1))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Casi siempre hay dos soluciones
El ángulo del codo puede ser positivo o negativo y la mano llega al mismo punto. Es el codo arriba y el codo abajo. Un brazo real elige uno según lo que tenga alrededor.
El ángulo 1 sale del ángulo del objetivo, al que se resta lo que desvía el segundo eslabón. Esa desviación cambia de signo con el ángulo 2.
Los dos ángulos cuyo coseno es 0,5
docker exec jupyter python3 -c "import numpy as np; print(round(np.degrees(np.arccos(0.5)), 1), round(-np.degrees(np.arccos(0.5)), 1))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Los dos ángulos para el objetivo (10, 10)
import math
# Brazo de dos eslabones de 10 cm y objetivo en (10, 10).
l1 = 10
l2 = 10
x = 10
y = 10
c2 = (x * x + y * y - l1 * l1 - l2 * l2) / (2 * l1 * l2)
print("coseno del ángulo 2:", round(c2, 3))
for sign in [1, -1]:
a2 = sign * math.acos(c2)
deviation = math.atan2(l2 * math.sin(a2), l1 + l2 * math.cos(a2))
a1 = math.atan2(y, x) - deviation
print("ángulos:", round(math.degrees(a1), 1), round(math.degrees(a2), 1))
Fuera de -1 y 1 no hay solución
Un coseno solo vale entre -1 y 1. Si la cuenta da más de 1, el objetivo está más lejos de lo que llega el brazo. Si da menos de -1, está demasiado cerca de la base.
Por eso se calcula el coseno primero y se mira. Con eslabones de 10 y 10 cm, un objetivo a 25 cm da 2,125 y no se alcanza.
El coseno de un objetivo a 25 cm
docker exec jupyter python3 -c "print((25 ** 2 - 10 ** 2 - 10 ** 2) / (2 * 10 * 10))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error muy común
Advertencia
Mucha gente cree que cada objetivo tiene una sola solución, o que siempre tiene alguna. Dentro del alcance hay dos, en el borde una y fuera ninguna. Mira siempre si el coseno está entre -1 y 1.
Para ir más lejos: un eslabón más corto
Con eslabones de 10 y 6 cm, calcula la distancia mínima y la máxima que alcanza la mano.
Después decide si el objetivo (3, 0) se puede alcanzar y explica por qué.