01 · Punto de partida
De ángulos a posición
Un brazo robótico se comanda en el espacio de sus articulaciones —un ángulo por servo— pero trabaja en el espacio de la tarea —un punto donde agarrar, soldar o dibujar—. La cinemática es el puente entre ambos. Tiene dos direcciones:
- Cinemática directa: dados los ángulos, calcular dónde queda el extremo. Es lo que estudiamos aquí.
- Cinemática inversa: dado el punto deseado, encontrar los ángulos que lo alcanzan. Es el tema 22, y es más delicada: puede haber dos soluciones, una o ninguna.
La directa es más simple porque siempre existe y es única: a cada par de ángulos le corresponde un solo punto. Por eso conviene dominarla antes, y por eso sirve también para verificar la inversa: calculás los ángulos, aplicás la directa y comprobás que volvés al punto pedido.
Trabajamos en el plano, con el brazo moviéndose en un plano vertical u horizontal. Los servos dan la posición de las articulaciones en lazo abierto (tema 15): lo que calculamos es la posición ordenada, no una medición.
02 · El modelo
El brazo plano de dos eslabones
El modelo tiene una base fija en el origen, un primer eslabón de longitud L1, una articulación de codo, un segundo eslabón de longitud L2 y un extremo (la pinza o la herramienta). Las longitudes se miden entre ejes de giro, no entre bordes de las piezas.
Las convenciones, iguales a las del tema 20, son:
θ1es el ángulo del primer eslabón respecto del ejexdel mundo, positivo en sentido antihorario.θ2es el ángulo del segundo eslabón relativo al primero, medido desde la prolongación de este. Conθ2 = 0los eslabones están alineados.- La orientación absoluta del segundo eslabón es entonces
φ = θ1 + θ2.
Otros textos miden θ2 como ángulo absoluto, o desde el primer eslabón plegado. Antes de usar una fórmula ajena, confirmá qué significa cada ángulo: es la fuente de error más común.
03 · La deducción
Las fórmulas del extremo
Se obtienen sumando dos vectores. El codo está a distancia L1 de la base en la dirección θ1. El extremo está a distancia L2 del codo en la dirección θ1 + θ2:
x = L1 cos θ1 + L2 cos(θ1 + θ2)
y = L1 sen θ1 + L2 sen(θ1 + θ2)
El mismo resultado sale de encadenar las transformaciones del tema 20, de la base al extremo: girar θ1, avanzar L1 por el eje del eslabón, girar θ2 y avanzar L2:
La posición del extremo son los dos primeros elementos de la última columna de T, y el ángulo total es la suma de las rotaciones. Esta forma no depende de que haya solo dos eslabones: agregar un tercero es multiplicar por otro par R · Trasl. Para un brazo de dos articulaciones las fórmulas directas son más breves, y se usan en el microcontrolador; la cadena sirve como verificación.
Con L1 = 10 cm, L2 = 8 cm, θ1 = 30° y θ2 = 45°: el codo queda en (8,66; 5,00) cm y el extremo en x = 8,66 + 8·cos 75° ≈ 10,73 cm, y = 5,00 + 8·sen 75° ≈ 12,73 cm. La orientación del segundo eslabón es 75°.
Lo que se obtiene es la posición de un punto: el extremo del eslabón 2. Si la herramienta tiene longitud o desfase propio, es otra transformación fija a continuación (la «herramienta»), que se agrega a la cadena sin cambiar el método.
04 · Verificar con lo que ya sabemos
Casos particulares y comprobaciones
Antes de confiar en el código, comprobá posiciones cuyo resultado se ve a ojo:
| θ1 | θ2 | Extremo (x, y) | Qué se espera |
|---|---|---|---|
| 0° | 0° | (18; 0) | Brazo extendido sobre el eje x: alcance máximo L1 + L2 |
| 90° | −90° | (8; 10) | Primer eslabón vertical, segundo horizontal hacia +x |
| 0° | 180° | (2; 0) | Plegado sobre sí mismo: distancia |L1 − L2| |
| 30° | 45° | (10,73; 12,73) | Caso general del ejemplo |
Una propiedad útil: la distancia de la base al extremo, r, solo depende de θ2. Por la ley de los cosenos:
Girar θ1 hace rotar todo el brazo alrededor de la base sin cambiar r. De esto sale que el extremo solo puede estar entre dos circunferencias: de radio |L1 − L2| y de radio L1 + L2. Es el espacio de trabajo, que desarrolla el tema 23 junto con los límites articulares.
Con θ2 = 60°: r² = 100 + 64 + 2·10·8·0,5 = 244, r ≈ 15,62 cm. Estas pruebas son baratas y detectan inmediatamente un seno por un coseno o un signo cambiado.
05 · Una pista del tema siguiente
Dos configuraciones para una misma distancia
Cambiar el signo de θ2 deja r igual (el coseno es par) pero lleva el extremo al otro lado de la recta que une la base con el codo. En el ejemplo, (θ1, θ2) = (30°, 45°) da (10,73; 12,73), y (30°, −45°) da (16,39; 2,93): ambos están a 16,65 cm de la base.
Para un mismo punto del espacio de trabajo suele haber dos pares de ángulos distintos: «codo hacia arriba» y «codo hacia abajo». En la directa no hay ambigüedad —cada par da un punto—; en la inversa sí, y habrá que elegir. El laboratorio 1 dibuja en naranja la configuración con el codo opuesto para que se vea la diferencia.
Hay un detalle práctico: no todos los mecanismos pueden adoptar ambos codos. Los límites del servo y los topes mecánicos pueden dejar solo una de las dos. Esa restricción forma parte del modelo, no es un detalle de montaje.
06 · Del papel al servo
De los ángulos geométricos a las órdenes de servo
Los ángulos θ1 y θ2 son geométricos: se miden en el mecanismo según nuestra convención. Un servo (tema 15) recibe una orden en su propia escala, por ejemplo de 0° a 180° o como un ancho de pulso. La relación es una calibración: un desfase y, a veces, un cambio de signo.
Por ejemplo, si el servo del codo está montado de forma que 90° corresponde a los eslabones alineados y aumentar la orden aumenta el ángulo, entonces θ2 = orden − 90°. Una orden de 120° significa θ2 = +30°. Si el servo está montado al revés, el signo cambia.
Cuatro precauciones:
- Medí el cero y el sentido con el brazo armado, usando un transportador o una plantilla; no los supongas por la hoja de datos.
- Definí los límites de cada articulación con el montaje real (cables, topes, colisión entre eslabones) y rechazá lo que los exceda, como hicimos con la ventana de pulsos en el tema 15.
- Guardá la calibración en un único lugar del código; si se repite, cualquier ajuste se aplicará a medias.
- Recordá que el servo recibe una referencia y no confirma la posición: el ángulo real puede diferir por carga, holgura o torque insuficiente.
El peso del brazo y de la carga agrega un torque sobre cada articulación (tema 15). Con el brazo extendido, el brazo de palanca crece y la articulación de la base soporta más. Un movimiento que es posible en geometría puede no serlo en torque.
07 · Sensibilidad
Cuánto se mueve el extremo si el ángulo falla
Los ángulos reales nunca coinciden exactamente con los ordenados: la resolución de la orden, la holgura de los engranajes, la flexión de los eslabones y la deriva térmica agregan un error δ. Su efecto en el extremo se estima con la idea de palanca: un giro pequeño δ (en radianes) de una articulación desplaza el extremo aproximadamente la distancia entre esa articulación y el extremo, multiplicada por δ.
El error de la articulación de la base se amplifica por toda la longitud del brazo. Con r ≈ 16,65 cm, L2 = 8 cm y δ = 1° ≈ 0,01745 rad, la cota es (16,65 + 8)·0,01745 ≈ 4,3 mm; el cálculo exacto en el peor de los cuatro casos extremos da 4,22 mm.
Esto explica dos reglas de diseño: la precisión angular es más valiosa en las articulaciones cercanas a la base, y un brazo más largo es, a igual error angular, menos preciso en el extremo. También muestra por qué la resolución del servo importa: si la orden avanza en pasos de 1°, el extremo avanza en pasos de milímetros a decenas de milímetros.
El cálculo es una aproximación lineal: vale mientras los errores son pequeños. La holgura o la flexión bajo carga pueden ser mayores y no son simétricas; se resuelven con mecánica, no con matemática.
08 · Lo que suele salir mal
Errores típicos
- Ángulo del codo relativo o absoluto. Usar
θ2como si fuera absoluto en la fórmula (o al revés) da un brazo que «casi» funciona. - Grados y radianes. Las funciones trigonométricas esperan radianes (tema 20).
- Longitudes mal medidas. Medir entre bordes en lugar de entre ejes, o ignorar el desfase de la pinza.
- Calibración de servos omitida o mal signada. El brazo se mueve, pero en el sentido contrario o con un desfase.
- Suponer que la posición calculada es la real. Carga, holgura y torque insuficiente separan lo ordenado de lo logrado.
- Ignorar los límites. Una combinación de ángulos geométricamente válida puede chocar contra la base, contra el suelo o contra el otro eslabón.
- Mezclar marcos. El resultado está en el marco de la base; si la pieza está en otro, falta transformar (tema 20).
La mejor defensa es comparar con una medición real: llevá el brazo a dos o tres poses, medí la posición del extremo con una regla y compará con la calculada. La diferencia no es un error del cálculo sino la información que falta en el modelo.
09 · Código para la placa
Cinemática directa en Arduino
Este sketch no necesita servos conectados. Recibe por el monitor serie dos ángulos geométricos, comprueba los límites validados, calcula la posición del extremo y muestra también las órdenes de servo equivalentes con el montaje descrito antes. Sirve para ensayar el modelo antes de mover el mecanismo.
const float L1 = 10.0, L2 = 8.0; // cm, medidos entre ejes de giro
const float TH1_MIN = 0.0, TH1_MAX = 180.0; // límites validados del mecanismo (grados)
const float TH2_MIN = -135.0, TH2_MAX = 135.0;
const float SERVO2_CENTRO = 90.0; // servo 2 a 90° = eslabones alineados
struct Extremo { float x, y, fi; };
Extremo directa(float th1, float th2) {
const float a = th1 * DEG_TO_RAD;
const float b = (th1 + th2) * DEG_TO_RAD; // th2 es relativo al primer eslabón
return { L1 * cos(a) + L2 * cos(b), L1 * sin(a) + L2 * sin(b), th1 + th2 };
}
float limpio(float v) { return (fabs(v) < 1e-4) ? 0.0 : v; }
void setup() {
Serial.begin(115200);
Serial.setTimeout(100);
Serial.println("Escribi 'th1 th2' en grados, por ejemplo: 30 45");
}
void loop() {
if (Serial.available() == 0) return;
const float th1 = Serial.parseFloat();
const float th2 = Serial.parseFloat();
while (Serial.available() > 0) Serial.read();
if (th1 < TH1_MIN || th1 > TH1_MAX || th2 < TH2_MIN || th2 > TH2_MAX) {
Serial.println("Fuera de los limites validados; no se calcula.");
return;
}
const Extremo e = directa(th1, th2);
Serial.print("x="); Serial.print(limpio(e.x), 3);
Serial.print(" y="); Serial.print(limpio(e.y), 3);
Serial.print(" fi="); Serial.print(e.fi, 1);
Serial.print(" r="); Serial.print(sqrt(e.x * e.x + e.y * e.y), 3);
Serial.print(" | servo1="); Serial.print(th1, 1);
Serial.print(" servo2="); Serial.println(th2 + SERVO2_CENTRO, 1);
}
Escribí, por ejemplo, 30 45 y deberías ver x=10.731 y=12.727 fi=75.0 r=16.647 | servo1=30.0 servo2=135.0. Con 0 0: x=18.000 y=0.000. Con 90 -90: x=8.000 y=10.000. Si algo no coincide, revisá primero la convención del ángulo del codo.
Enviá siempre los dos números. parseFloat() espera con un tiempo límite, así que no sirve para un programa que debe seguir atendiendo otras tareas; aquí es aceptable porque el sketch solo calcula. En un brazo real el comando se leería con el mismo esquema sin bloqueo de los temas 16 y 19.
Cuando conectes los servos, no envíes el ángulo calculado de golpe: llevalo con una rampa de velocidad limitada (tema 16) y dentro de los límites validados. La posición calculada es la que pedís, no la que obtenés.
10 · Exploración interactiva
Laboratorios: el brazo y su incertidumbre
1. Mover el brazo con los ángulos
Elegí las longitudes y los ángulos. El eslabón claro es el 1 y el lima el 2. Las circunferencias punteadas marcan el alcance mínimo y máximo. La silueta naranja punteada es la misma θ1 con el codo opuesto (−θ2).
Elegí longitudes y ángulos.
Con los valores iniciales el extremo queda en (10,73; 12,73) cm. Poné θ2 = 0°: el brazo se extiende y r llega a 18 cm, el alcance máximo. Poné θ2 = 180°: se pliega y r vale 2 cm. Cambiá θ1 sin tocar θ2 y verificá que r no cambia, solo gira el conjunto.
2. Error angular y dispersión del extremo
Brazo de L1 = 10 cm y L2 = 8 cm. Cada articulación puede estar hasta ±δ fuera de lo ordenado. Los puntos lima son las posiciones posibles del extremo (una grilla de 9×9 errores) respecto de la nominal, en rojo, ampliadas para verse.
Elegí una pose y un error.
Con 30° y 45° y δ = 1°, el peor desvío es de 4,2 mm, y la cota lineal (4,3 mm) lo acota por poco. Con el brazo extendido (0° y 0°) el desvío sube a 4,5 mm y se concentra en y: el error de giro mueve el extremo perpendicularmente al brazo. Duplicá δ y el desvío se duplica: la relación es lineal.
11 · Código ejecutable
Verificar con matrices en Python
Calculamos varias poses con la fórmula cerrada, las comparamos con la cadena de matrices homogéneas del tema 20 en una grilla de ángulos, y medimos la sensibilidad al error de 1° por articulación.
Probalo en el navegador. Python se descarga con Pyodide la primera vez y requiere conexión. El código es editable y no controla ningún brazo.
import math
L1, L2 = 10.0, 8.0
def directa(t1, t2):
a, b = math.radians(t1), math.radians(t1 + t2)
return (L1 * math.cos(a) + L2 * math.cos(b),
L1 * math.sin(a) + L2 * math.sin(b), t1 + t2)
def rot(t):
c, s = math.cos(math.radians(t)), math.sin(math.radians(t))
return [[c, -s, 0], [s, c, 0], [0, 0, 1]]
def trans(x, y):
return [[1, 0, x], [0, 1, y], [0, 0, 1]]
def mul(a, b):
return [[sum(a[i][k] * b[k][j] for k in range(3)) for j in range(3)] for i in range(3)]
def cadena(t1, t2):
T = mul(mul(mul(rot(t1), trans(L1, 0)), rot(t2)), trans(L2, 0))
return T[0][2], T[1][2]
def limpio(v):
return 0.0 if abs(v) < 1e-9 else v
for t1, t2 in ((0, 0), (90, -90), (30, 45), (30, -45), (0, 180)):
x, y, fi = directa(t1, t2)
print(f"th1={t1:4} th2={t2:4} -> x={limpio(x):7.3f} y={limpio(y):7.3f} fi={fi:4} r={math.hypot(x, y):6.3f}")
dif = 0.0
for t1 in range(0, 181, 15):
for t2 in range(-135, 136, 15):
x, y, _ = directa(t1, t2)
cx, cy = cadena(t1, t2)
dif = max(dif, abs(x - cx), abs(y - cy))
print(f"Diferencia maxima formula/cadena: {dif:.1e} cm")
x0, y0, _ = directa(30, 45)
peor = max(math.hypot(directa(30 + e1, 45 + e2)[0] - x0, directa(30 + e1, 45 + e2)[1] - y0)
for e1 in (-1, 1) for e2 in (-1, 1))
cota = (math.hypot(x0, y0) + L2) * math.radians(1)
print(f"Error de 1 grado por articulacion: peor={peor * 10:.2f} mm; cota lineal={cota * 10:.2f} mm")Las cinco poses reproducen la tabla del texto, incluido (30°, 45°) → (10,731; 12,727) y su espejo (30°, −45°) → (16,388; 2,929), ambos a 16,647 cm de la base. La fórmula y la cadena de matrices coinciden con una diferencia del orden de 10⁻¹⁵ cm. Para 1° de error por articulación, el peor desvío es de 4,22 mm contra 4,30 mm de la cota lineal.
Probá cambiar L2 a 12 y ver cómo cambian el alcance y la sensibilidad. Agregá un tercer eslabón a la cadena: basta otra pareja rot · trans.
12 · Método y diagnóstico
Pruebas y diagnóstico
- Verificá el modelo en papel con las poses de la tabla (extendido, plegado, vertical-horizontal).
- Comprobá que la distancia base–extremo concuerda con la fórmula de r² para varias poses.
- Calibrá cero y sentido de cada articulación con el mecanismo armado, sin carga y a baja velocidad.
- Llevá el brazo a tres o cuatro poses y medí la posición real del extremo con una regla o una plantilla.
- Compará lo medido con lo calculado: una diferencia sistemática indica calibración o longitudes mal medidas; una variable, holgura o carga.
- Repetí cada pose desde sentidos de aproximación distintos para evaluar la holgura.
- Probá los límites con prudencia, sin forzar topes, y registrá la zona validada.
«El extremo se mueve en espejo»
Un signo de ángulo está cambiado: el sentido de giro de un servo o de la convención no coincide con el del modelo. Corregí el signo en la calibración, no en las fórmulas.
«Con θ2 = 0 no queda extendido»
El cero del servo del codo está desfasado, o θ2 se mide como absoluto en un lugar y relativo en otro. Revisá la calibración y la convención.
«Los valores calculados son correctos y el brazo no llega»
Puede faltar torque, haber holgura o carga, o el servo estar fuera de rango. La directa calcula geometría; no sabe de esfuerzos.
«Un error de 1° no importa»
En el extremo de un brazo de 25 cm son varios milímetros. Para tareas finas es mucho.
«La cinemática directa tiene dos soluciones»
Tiene una. Las dos soluciones aparecen en la inversa, donde un mismo punto puede alcanzarse con codo arriba y codo abajo.
«Si cambio L1, solo cambia el primer eslabón»
Cambia también el codo y por lo tanto toda la posición del extremo. Con θ1 fijo, el segundo eslabón se traslada.
13 · Práctica guiada
Predecí antes de comprobar
1. Brazo extendido
Con L1 = 10 cm, L2 = 8 cm, θ1 = 0° y θ2 = 0°, ¿dónde queda el extremo?
Ver solución
x = 10 + 8 = 18 cm, y = 0. Es el alcance máximo, L1 + L2.
2. Vertical y horizontal
Con θ1 = 90° y θ2 = −90°, ¿cuál es la posición del codo y del extremo?
Ver solución
Codo: (0; 10). La orientación del segundo eslabón es 0°, hacia +x: extremo en (0 + 8; 10 + 0) = (8; 10).
3. Caso general
Calculá el extremo para θ1 = 30° y θ2 = 45°.
Ver solución
x = 10·cos 30° + 8·cos 75° = 8,660 + 2,071 ≈ 10,73 cm; y = 10·sen 30° + 8·sen 75° = 5,000 + 7,727 ≈ 12,73 cm. Orientación 75°.
4. Plegado
Con θ1 = 0° y θ2 = 180°, ¿dónde queda el extremo y cuánto vale r?
Ver solución
El segundo eslabón vuelve sobre el primero: x = 10 − 8 = 2 cm, y = 0. r = |L1 − L2| = 2 cm: el alcance mínimo.
5. Distancia sin conocer θ1
Con θ2 = 60°, ¿a qué distancia de la base está el extremo, cualquiera sea θ1?
Ver solución
r² = 100 + 64 + 2·10·8·cos 60° = 244, r ≈ 15,62 cm. No depende de θ1.
6. Error angular
La articulación de la base tiene 2° de error y el extremo está a 20 cm de ella. ¿Cuánto se desplaza, aproximadamente, el extremo por ese error?
Ver solución
20 cm · 2° · π/180 ≈ 0,70 cm = 7 mm, perpendicular a la línea base–extremo.
7. Orden de servo
El servo del codo está calibrado con 90° = alineado y sentido positivo. ¿Qué θ2 corresponde a una orden de 120°? ¿Y qué orden pide θ2 = −45°?
Ver solución
θ2 = 120 − 90 = +30°. Para −45°: orden = 90 − 45 = 45°. Siempre dentro de los límites validados del servo.
14 · Síntesis
Ideas para recordar
- La cinemática directa pasa de ángulos de articulación a la posición del extremo; siempre existe y es única.
- Con θ2 relativo:
x = L1cos θ1 + L2cos(θ1+θ2)eyanáloga con senos. - Equivale a la cadena
R · Trasl · R · Trasldel tema 20; sirve para verificar y para agregar eslabones. - La distancia base–extremo solo depende de θ2:
r² = L1² + L2² + 2L1L2cos θ2. - ±θ2 da puntos distintos con la misma distancia: anticipa «codo arriba» y «codo abajo».
- La relación ángulo geométrico–orden de servo es una calibración de desfase y signo, con límites validados.
- Un error angular se amplifica por la distancia a la articulación:
≈ r·δpara la base yL2·δpara el codo. - La posición calculada es la ordenada; la real puede diferir por carga, holgura y torque.
¿Listo para el tema 22?
Antes de avanzar, elegí dos longitudes de eslabón, calculá la posición del extremo para tres pares de ángulos y dibujá el brazo en cada caso. Luego pensá: dado uno de esos puntos, ¿cuántos pares de ángulos lo alcanzan? ¿Y si el punto está fuera del alcance?
En el próximo tema estudiamos la cinemática inversa de un brazo de dos articulaciones: de la posición deseada a los ángulos, con sus soluciones y los casos sin solución.