¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cinemática inversa de un brazo robótico

Después de esta lección: Puedo hallar los ángulos que llevan la mano de un brazo a un punto objetivo.

Lección de 60 min3 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

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

PalabraQué significa
Cinemática inversadel punto objetivo a los ángulos
Objetivoel punto al que debe llegar la mano
Ley de los cosenosliga los tres lados de un triángulo con uno de sus ángulos
Alcancela zona de puntos a los que llega la mano
Codo arriba y codo abajolas 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)

PasoCálculoResultado
Distancia al cuadrado10 × 10 + 10 × 10200
Coseno del ángulo 2(200 - 100 - 100) ÷ 2000
Ángulo 2dos opciones: 90 o -9090 y -90
Ángulo 1 con 9045 - 450
Ángulo 1 con -9045 + 4590

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El ángulo 2 cuando el coseno vale 0

Comando
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

Comando
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)

Código: python
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

Comando
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é.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.