Dónde está la mano si conozco los ángulos
La cinemática directa es el cálculo que da la posición de la mano de un robot a partir de los ángulos de sus articulaciones. Con ella, un programa sabe dónde está la mano sin mirarla.
Aquí usarás un brazo plano de dos eslabones, simulado. Un eslabón es una barra rígida. Una articulación es el giro entre dos barras.
Al final de esta lección
Nota
Puedo calcular dónde está la mano de un brazo de dos eslabones a partir de sus ángulos.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Eslabón | una barra rígida del brazo |
| Articulación | el giro que une dos eslabones |
| Mano | el extremo del brazo, que se llama efector final |
| Cinemática directa | de los ángulos a la posición de la mano |
| Pose | el conjunto de ángulos que tiene el brazo ahora |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El brazo tiene dos barras y dos giros
El brazo se fija en el origen. El primer eslabón mide 10 cm y el segundo 6 cm. El ángulo 1 se mide desde el eje x hasta el primer eslabón.
El ángulo 2 se mide desde la dirección del primer eslabón. Por eso el segundo eslabón apunta con el ángulo 1 más el ángulo 2.
La mano se calcula en dos pasos
Primero calcula el codo: es el final del primer eslabón. Su x es 10 por el coseno de a1 y su y es 10 por el seno de a1.
Después suma el segundo eslabón. Su x es 6 por el coseno de a1 más a2 y su y es 6 por el seno de a1 más a2. La mano es la suma de los dos.
Ejemplo resuelto: cinco poses del mismo brazo
| Ángulo 1 | Ángulo 2 | Codo | Mano |
|---|---|---|---|
| 0 | 0 | (10, 0) | (16, 0) |
| 90 | 0 | (0, 10) | (0, 16) |
| 0 | 90 | (10, 0) | (10, 6) |
| 90 | -90 | (0, 10) | (6, 10) |
| 30 | 60 | (8,66; 5) | (8,66; 11) |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La mano con 30 y 60 grados
docker exec jupyter python3 -c "import numpy as np; a = np.radians(30); b = np.radians(60); print(round(10 * np.cos(a) + 6 * np.cos(a + b), 2), round(10 * np.sin(a) + 6 * np.sin(a + b), 2))"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 usa solo el ángulo 2 para el segundo eslabón. El ángulo 2 se mide desde el primer eslabón, así que el segundo apunta a a1 más a2. Si no sumas a1, la mano queda en un sitio equivocado.
La mano en Python
import math
def hand_position(l1, l2, a1, a2):
r1 = math.radians(a1)
r12 = math.radians(a1 + a2)
x = l1 * math.cos(r1) + l2 * math.cos(r12)
y = l1 * math.sin(r1) + l2 * math.sin(r12)
return [x, y]
hand = hand_position(10, 6, 30, 60)
print("mano:", round(hand[0], 2), round(hand[1], 2))
# Cambia los ángulos a 90 y -90: la mano debe quedar en 6 y 10.
La mano nunca sale de un anillo
Con el brazo estirado, la mano llega a 10 más 6, es decir 16 cm. Con el codo del todo doblado, queda a 10 menos 6, es decir 4 cm.
Toda pose da una mano entre 4 y 16 cm del origen. Los puntos fuera de ese anillo no se alcanzan.
Ejemplo resuelto: a qué distancia llega la mano
| Ángulo 2 | Qué hace el codo | Distancia de la mano al origen |
|---|---|---|
| 0 | Estirado | 16 cm |
| 90 | En ángulo recto | 11,66 cm |
| 180 | Doblado del todo | 4 cm |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Para ir más lejos: un brazo más largo
Cambia los eslabones a 12 y 8 cm. Calcula a mano la mano con los ángulos 0 y 0, y con 90 y 0.
Después calcula la distancia más corta y la más larga que puede alcanzar este brazo.