Un recorrido pequeño, una orden grande
Un programa prepara una secuencia de puntos para la pinza, separados por pocos milímetros. El cálculo confirma que todos son alcanzables. Sin embargo, a mitad de la secuencia solicita una gran rotación del codo. El objetivo no tiene por qué haber saltado ni el motor estar averiado: puede haber cambiado la solución elegida. Entenderemos por qué la posición final no identifica siempre una sola postura y cómo mantener una elección coherente en el recorrido.
Resumen. Analizamos un brazo plano ideal de dos articulaciones rotativas y segmentos de 0,5 y 0,4 metros. Derivamos dos soluciones para alcanzar un punto y comparamos dos reglas sobre un arco de radio 0,6 metros: minimizar el ángulo absoluto del hombro en cada punto o elegir la configuración más próxima a la anterior. En el cálculo ejecutado, un paso del objetivo de unos 6 milímetros produce cambios de aproximadamente 82,25° en el hombro y 194,36° en el codo con la primera regla. La segunda conserva la rama y cambia solo el hombro unos 0,573°. Son diferencias entre configuraciones solicitadas, no velocidades medidas ni movimientos instantáneos de un robot real.
Posición y configuración son informaciones distintas
Fijamos un plano x-y con el hombro en el origen. L₁ y L₂ son longitudes en metros. q₁ es el ángulo del primer segmento respecto a x; q₂, el del segundo respecto al primero. Los positivos son antihorarios y calculamos en radianes: 180° equivale a π radianes. q = (q₁,q₂) describe las articulaciones; p = (x,y), solo la posición de la punta. No imponemos orientación de la pinza: añadirla cambiaría el problema y podría eliminar soluciones.
La cinemática directa pregunta dónde llega la punta con ángulos conocidos. Sumamos proyecciones de los segmentos en x e y. Para el segundo usamos q₁ + q₂ porque incluye ambas rotaciones. La fórmula permite comprobar la solución inversa: cualquier candidata debe recuperar el objetivo al sustituirla. No basta con que un algoritmo declare una solución; podemos verificarla geométricamente.
Derivar ambas ramas sin ocultarlas en el programa
La inversa pregunta qué ángulos alcanzan un punto dado. Primero buscamos q₂ usando la distancia r al hombro. Girar todo el brazo mediante q₁ cambia dirección, no r. Al elevar x e y al cuadrado y sumar, los términos cruzados son 2L₁L₂ cos(q₂); cos² + sin² = 1 elimina los demás ángulos. Queda una incógnita. C es adimensional: dividimos metros cuadrados por metros cuadrados.
Con C estrictamente entre −1 y 1, el coseno admite ángulos opuestos y dos ramas. Fuera no hay solución real. En los bordes coinciden geométricamente, teniendo en cuenta las representaciones equivalentes ±π. Con nuestras longitudes, el radio alcanzable va de |0,5−0,4| = 0,1 metros a 0,5+0,4 = 0,9 metros. El arco de 0,6 queda dentro de esa corona. Las soluciones múltiples no nacen de ruido ni aproximación: pertenecen a la geometría ideal.
Falta determinar q₁ para cada rama. φ es la dirección del objetivo, calculada con atan2(y,x). A diferencia de la arctangente de y/x, atan2 usa ambos signos para distinguir cuadrantes. Con q₁ = 0, el vector de la punta tiene componentes L₁ + L₂ cos(q₂) y L₂ sin(q₂). Su ángulo β se obtiene con otra atan2. Girando el primer eje φ − β lo alineamos con la dirección deseada. Cada q₂ lleva un q₁ distinto.
En x = 0,6 metros, y = 0, C vale −0,125. El programa obtiene q₂ = ±97,18076° y hombros ∓41,40962°. Al sustituir cualquiera en la directa recuperamos (0,6;0) dentro de la tolerancia numérica comprobada. Son configuraciones distintas del mismo modelo con igual punto final. La figura muestra puntas coincidentes y codos a ambos lados de x. No podemos llamar mejor a una postura sin definir el criterio.
| Rama | q1 (°) | q2 (°) | x (m) | y (m) |
|---|---|---|---|---|
| + | -41.40962 | 97.18076 | 0.6 | 0 |
| − | 41.40962 | -97.18076 | 0.6 | 0 |
Una regla razonable para una postura puede fallar en una secuencia
Construimos 31 puntos en un arco pequeño: φ va de −0,15 a +0,15 radianes con paso 0,01. Cada punto es (0,6 cosφ, 0,6 sinφ). La distancia entre vecinos es 2 × 0,6 sin(0,01/2), aproximadamente 0,005999975 metros. No asignamos tiempos: es un camino geométrico muestreado, no una trayectoria con velocidad. Los límites sintéticos son hombro de −170° a +170° y codo de −150° a +150°. Ambas ramas los cumplen en los 31 puntos; el código verifica límites y posición reconstruida.
La primera regla elige el menor valor absoluto de q₁ en cada punto, quizá para mantener el hombro cerca de cero. Ignora la configuración anterior. φ negativo favorece q₂ negativo; φ positivo, q₂ positivo. En dirección cero los costes empatan y el código escoge la primera candidata. Cerca del empate, el mínimo cambia de rama: el coste permanece bajo, pero cambia mucho la configuración. Salta la solución elegida, no el punto deseado.
Entre los puntos 14 y 15, contando desde cero, el hombro solicitado cambia 82,24629° y el codo 194,36151°. La punta deseada avanza unos 6 mm. El programa no ha especificado movimiento físico instantáneo: produjo referencias consecutivas distantes. Un controlador real podría ralentizar, rechazar o interpolar, con consecuencias por evaluar. Nuestro resultado verificable es más concreto: continuidad cartesiana no garantiza continuidad de las configuraciones elegidas aisladamente.
¿Bastaría aumentar la densidad de puntos? Comprobémoslo. Dos objetivos con direcciones −ε y +ε distan unos 6 mm para ε = 0,005 radianes y unos 0,6 mm para ε = 0,0005. Sin embargo, la regla independiente conserva ramas opuestas: el codo cambia 194,36°. El cambio del hombro se aproxima a 82,82°, no a cero. El cálculo de sensibilidad incluido lo confirma: reducir el paso geométrico no elimina el defecto de selección.
Las fórmulas explican el motivo. Sean γ = arccos(C) y β₀ = β(γ), positivos aquí. Antes de cero elegimos q₂ = −γ, q₁ = −ε + β₀; después, q₂ = +γ, q₁ = +ε − β₀. El cambio absoluto es 2γ en el codo y 2β₀ − 2ε en el hombro. Cuando ε tiende a cero ambos siguen siendo no nulos. Hay que corregir esa propiedad de selección, no la separación de muestras. Desempatar exactamente en cero solo cambia el lado donde aparece el salto.
Usar la configuración anterior
La segunda regla solo recuerda q anterior. Elegimos inicialmente la rama con q₂ negativo. En cada punto comparamos distancias a esa configuración y tomamos la más cercana. En el intervalo pequeño, la rama anterior solo cambia 0,01 radianes en el hombro; pasar a la otra cambia ambos ángulos. Permanecemos en la misma rama. También se deduce analíticamente: radio constante implica C constante, luego q₂ y β constantes; q₁ varía exactamente con φ.

En la derecha observemos las líneas verdes del codo: la referencia independiente pasa de negativa a positiva; la que usa memoria permanece negativa. Las del hombro muestran una consecuencia vinculada, no otro experimento. Unen muestras para leerlas, no una interpolación física verificada. El eje horizontal es dirección, no tiempo: sin ley temporal la pendiente no indica velocidad ni aceleración.
La distancia entre ángulos requiere una convención
La norma es distancia euclídea entre dos ángulos en radianes, con igual peso. No es rotación de un solo eje ni medida de energía. Nuestros ejes están acotados y comparamos valores directamente. En un eje realmente continuo, 179° y −179° podrían distar solo 2° por un giro permitido; restarlos daría 358°. La métrica debe respetar tipo de eje y límites, no solo representación numérica.
El salto no es solo cruzar el borde de representación ±180°. Las soluciones rondan ±97° y el límite es ±150°; pasar por 180° está prohibido. Es diferencia de configuración, no de impresión del ángulo. Pasar continuamente de q₂ negativo a positivo exige cruzar cero: el brazo estaría extendido y r sería 0,9 metros. No podría permanecer en el arco de 0,6 durante ese paso. Las ramas están separadas en nuestro modelo.
Cuándo importan el recorrido completo y otros límites
La selección más próxima es local: mira el siguiente punto, no el futuro. En otro problema conservaría una rama que después encuentra límites u obstáculos, mientras otra inicial permitiría todo el cometido. Una alternativa usa candidatos como nodos y transiciones consecutivas factibles como aristas. Buscar en el grafo considera la secuencia. Pero extremos alcanzables no hacen factible una arista: hay que comprobar el movimiento intermedio con el modelo adecuado.
Con dos candidatos, la comparación local requiere trabajo constante por paso: O(N). Un grafo con B candidatos por punto podría exigir O(NB²) comparaciones entre niveles, antes del coste de verificar geometría. No implementamos ni medimos ese planificador: es análisis estructural, no benchmark. Orientación, obstáculos, velocidades, aceleraciones y pares amplían el problema. Resolver nuestro arco no demuestra seguridad, ausencia de colisiones ni viabilidad dinámica industrial.
Reproducir y separar cálculo de prueba física
El paquete contiene experiment.py, plot.py y los 31 puntos en JSON. ik calcula candidatas con arccos y atan2; fk reconstruye posición. Los assert verifican error cartesiano inferior a 10⁻¹² metros y límites en los puntos asignados. Se comparan ambas reglas en la misma secuencia y se busca el mayor paso. La tolerancia 10⁻¹² comprueba cálculo numérico, no precisión de un robot. No hay aleatoriedad ni semilla. El fragmento debe ejecutarse en el directorio extraído.
El software general necesita más controles: objetivos fuera de alcance, límites exactos, representaciones equivalentes, fusión de ramas y tolerancias cerca de C = ±1. Recortar siempre C a [−1,1] ocultaría objetivos realmente imposibles; hay que distinguir error numérico e imposibilidad geométrica. El código se limita a los datos declarados. La prueba física añadiría parámetros reales, calibración, control temporal y verificación del camino. No movimos un brazo ni medimos prestaciones hardware.
Qué responde este ejemplo
Objetivos cercanos pueden generar configuraciones solicitadas con saltos porque la inversa admite varias soluciones y elegir punto a punto puede cambiar de rama. En nuestro arco, recordar la configuración anterior lo evita y conserva cambios coherentes. Esto plantea una pregunta cuando una aplicación de IA propone objetivos: ¿qué continuidad y restricciones se conservan después? La robótica industrial y colaborativa es una dirección que EL-AI pretende explorar. El estudio didáctico aclara un requisito sin atribuirle robots, instalaciones ni experimentos realizados.
Fuente y contribución
Fuente primaria: Kris Hauser, Robotic Systems, capítulo 6 “Inverse Kinematics”, secciones sobre problema inverso, elección de soluciones y derivación analítica 2R. Leímos pasos y algoritmo, no solo introducción. Página docente consultada el 10 de octubre de 2026, sin asignarle fecha de publicación no verificada. Longitudes, arco, reglas y comparación numérica se construyeron para este artículo. Es derivación y análisis didáctico asistido por IA, no investigación original revisada por pares ni nuevo benchmark.
Kris Hauser — Robotic Systems, Chapter 6: Inverse Kinematics.
import json
from experiment import ik, fk
import math
for q in ik(.6, 0):
print('angles deg', [math.degrees(v) for v in q])
print('position m', fk(q))
r = json.loads(open('results.json', encoding='utf8').read())
print('largest transition', r['largest_naive_transition'])
Código, datos e instrucciones · JSON. Cálculos didácticos ejecutados con Python 3.14.0; figuras con Matplotlib 3.11.2. Análisis asistido por IA, sin afirmar revisión por pares ni humana. Portada original ImageGen ilustrativa: no documenta personas, sedes ni instalaciones de EL-AI. Fuentes consultadas el 10 de octubre de 2026.

