ELAI S.r.l.

Enseñar la punta al robot: por qué muchas poses pueden no bastar

La punta queda en un punto, pero su posición puede seguir indeterminada. Geometría, rango y ruido mediante calibración TCP sintética.

Enseñar la punta al robot: por qué muchas poses pueden no bastar

El problema: la brida no es la punta

El robot conoce su brida, donde monta la herramienta. Para llevar la punta a un agujero necesita el desplazamiento entre ambas. Un método intuitivo mantiene la punta en una referencia y cambia orientación. ¿Cuatro, diez o cien poses garantizan el resultado? No: importa qué movimientos revelan las coordenadas desconocidas, no solo cuántas filas hay.

Resumen. Derivamos un modelo lineal de calibración del Tool Center Point, TCP, solo para posición, no orientación completa. Un caso tiene residuo casi cero y error vertical de 225 mm; otro es identificable pero sensible al ruido. Comparamos geometrías con 20.000 réplicas sintéticas. No son pruebas robóticas ni reconstrucción de algoritmos comerciales, sino cálculos sobre información de las medidas.

Dos referencias, una punta

t es el vector brida-punta en ejes de la brida, constante para herramienta rígida y fija. Rᵢ transforma vectores a la base; pᵢ es la posición de brida en la base. c es el punto fijo, también en la base e inicialmente desconocido. t, p y c están en milímetros; R no tiene unidades. Rotamos t y sumamos pᵢ.

Rᵢ t + pᵢ = c [Rᵢ −I] [t; c] = −pᵢ

La primera línea lleva la misma punta al mismo punto en cada pose. La segunda reordena seis incógnitas: tres de t y tres de c. I es la identidad. Apilamos poses en Hx=b, x=[t;c]. Cuatro poses dan doce ecuaciones, pero no necesariamente doce informaciones distintas.

Un ejemplo completo sin ruido

Elegimos verdades sintéticas t=(30,−20,150) mm y c=(500,200,300) mm, conocidas por el generador pero ocultas a la estimación. Construimos pᵢ=c−Rᵢt. Con R=I, p=(470,220,150); con giro z de 90°, Rt=(20,30,150) y p=(480,170,150). Cambian datos, pero la componente vertical sigue en 150: ahí está la advertencia.

Usamos giros z de 0°, 90°, 180° y 270°. Añadir 100 mm a t_z y c_z deja iguales todos los pᵢ, porque esos giros conservan (0,0,100). Ningún estimador puede distinguir las dos herramientas con estas ecuaciones: falta información. Es no identificabilidad, no falta de precisión numérica.

Residuo cero puede acompañar un resultado erróneo

El residuo Hx−b mide ajuste a los datos. Mínimos cuadrados NumPy da t=(30,−20,−75) mm y norma residual aproximada 3,4×10⁻¹³ mm. z está a 225 mm de la verdad pese al ajuste perfecto. El solver elige norma mínima entre infinitas soluciones: convención matemática, no conocimiento físico de longitud.

El rango cuenta combinaciones independientes restringidas. Aquí es cinco, no seis: falta una dirección. Repetir cien veces no cambia rango, aunque reduzca ruido observable. Cuatro poses idénticas dan rango tres: solo conocemos la diferencia entre punta rotada y punto fijo. Cantidad y diversidad son recursos distintos.

Identificable no significa estable

Los giros en ejes distintos pueden dar rango seis. Sin embargo, diferencias mínimas dejan el problema cerca del caso deficiente. Comparamos identidad más giros de 1° en x, y, z con identidad más giros de 90° en esos ejes. Son construcciones matemáticas, no instrucciones para mover un robot. El modelo no representa alcance, colisiones, contacto ni límites mecánicos.

Para entender la sensibilidad descomponemos H: rotar coordenadas de incógnitas, escalar cada dirección y rotar hacia coordenadas de datos. Es la descomposición en valores singulares, SVD. Un factor cero elimina una dirección; uno pequeño deja una huella débil. Reconstruir exige dividir por ese factor, amplificando también el error.

H = U Σ Vᵀ x̂ = Σⱼ vⱼ (uⱼᵀ b) / sⱼ (sⱼ > 0) κ₂(H) = s_max / s_min (rank H = 6)

Las columnas uⱼ y vⱼ son direcciones de datos e incógnitas; sⱼ no tienen unidades aquí. La suma reconstruye direcciones observadas. Omitir una ausente da norma mínima, no su medida. El condicionamiento κ compara factores extremo: aproximadamente 205 para 1° y 2,22 para 90°. No es precisión en milímetros ni puntuación universal: depende de matriz, unidades y parametrización.

¿Cuánto se amplifica el ruido?

Añadimos ruido gaussiano independiente de media cero y desviación 0,2 mm a cada coordenada de p; las rotaciones siguen exactas. Generamos 20.000 calibraciones por geometría identificable, resolviendo juntas las poses. Medimos raíz de la media del cuadrado de la distancia punta estimada-verdadera: RMSE tridimensional en milímetros. No es error máximo ni desviación de una coordenada.

OrientacionesRangoκ₂RMSE punta (mm)
I × 43∞—
Rz(0°,90°,180°,270°)5∞—
I, Rx(1°), Ry(1°), Rz(1°)6204.98716.6504
I, Rx(90°), Ry(90°), Rz(90°)62.215250.220980

Con giros pequeños, 0,2 mm de ruido de brida producen unos 16,65 mm de RMSE de punta; con orientaciones diversas, unos 0,221 mm. Es resultado de esta geometría y modelo, no una mejora transferible a cualquier robot. Los guiones señalan casos no identificables sin inventar precisión. NumPy usa semilla 20260929, primero ángulos pequeños; código, versiones y resultados son descargables.

Izquierda: seis valores singulares; cero indica dirección invisible. Derecha: RMSE sintético en eje logarítmico de milímetros, con igual separación por cada factor diez. No son medidas de hardware.
Izquierda: seis valores singulares; cero indica dirección invisible. Derecha: RMSE sintético en eje logarítmico de milímetros, con igual separación por cada factor diez. No son medidas de hardware.

También se predice la dispersión: con H exacta, rango completo y ruido independiente de varianza σ², la covarianza es σ²H⁺(H⁺)ᵀ; H⁺ es la pseudoinversa. Las raíces de las tres primeras entradas diagonales dan desviaciones de punta: unos 9,588 mm y 0,1277 mm, coherentes con réplicas. La distancia tridimensional combina componentes; su RMSE supera la desviación de una sola.

La fórmula no permite declarar incertidumbre cero en una dirección ausente de rango cinco: la pseudoinversa impone una convención donde los datos no restringen. Si hay incertidumbre angular, H también tiene ruido, no solo b. El modelo deja de bastar. Un error angular pequeño desplaza más la punta cuanto más lejos está de la brida; importa especialmente con herramientas largas.

Del sistema lineal a una validación creíble

El código resuelve mínimos cuadrados con descomposición estable. Invertir explícitamente HᵀH es menos prudente: su condicionamiento es el cuadrado del de H y puede agravar pérdida de precisión. Con m poses y seis incógnitas hay 3m filas y seis columnas; la factorización densa cuesta del orden de m·6², sin constantes. Aquí importa más la geometría informativa que ahorrar multiplicaciones.

Conviene comparar métodos que añaden información física. Si c se mide independientemente, una pose da formalmente t=Rᵀ(c−p), pues transponer invierte una rotación. La incertidumbre de c sigue presente: no hay precisión gratuita. Longitud conocida o regularización restringen soluciones mediante un supuesto externo. Hay que declararlo y verificarlo para no confundir hipótesis con evidencia de calibración.

Validar en dispositivo exige poses distintas a las del ajuste y, cuando sea posible, referencia metrológica independiente. Separar repetibilidad —dispersión entre repeticiones— de exactitud frente a referencia; cuantificar deformación, holguras, deslizamiento e incertidumbre cinemática. Son verificaciones propuestas, no ejecutadas. Residuo bajo de ajuste es control interno, no certificación de precisión o seguridad.

La documentación consultada de Universal Robots describe enseñar posición TCP con tres o cuatro posiciones de distinta orientación en un punto y advierte de diversidad insuficiente. Confirma relevancia práctica, no que el fabricante use nuestro modelo, solver o tratamiento del ruido. Analizamos un modelo explícito reproducible, no validamos un producto comercial.

Qué aprendimos sobre la punta

Muchas poses no bastan si cuentan lo mismo. Identificar la punta requiere variaciones que revelen todas las coordenadas; hacerlo establemente exige huellas grandes frente al error. Separamos tres preguntas: ¿es única la solución?, ¿cuánto le afecta el ruido?, ¿cuán fiable es en dispositivo? Rango, condicionamiento y validación independiente responden respectivamente, sin sustituirse.

La robótica industrial y colaborativa es una dirección que EL-AI pretende explorar. Esta monografía explica el problema; no anuncia servicio de calibración, instalación ni resultados experimentales empresariales. Quedan preguntas donde termina el modelo ideal: calidad de referencias, incertidumbre angular y validación en condiciones reales.

Fuentes y reproducibilidad

Universal Robots — PolyScope X, SW10.12, Teaching TCP Position.

El programa reproduce el contraejemplo de un eje. No aparece Rᵀ porque resolvemos poses apiladas; lstsq devuelve también rango, aquí cinco. El archivo contiene experimento completo, 20.000 réplicas por geometría, código de figuras y resultados. Son análisis didácticos realizados aquí, no investigación original revisada por pares.

import numpy as np
I = np.eye(3)
Rz = np.array([[0.,-1,0],[1,0,0],[0,0,1]])
t = np.array([30.,-20,150]); c = np.array([500.,200,300])
Rs = [I, Rz, Rz@Rz, Rz@Rz@Rz]
H = np.vstack([np.hstack([R,-I]) for R in Rs])
b = -np.concatenate([c-R@t for R in Rs])
x, _, rank, _ = np.linalg.lstsq(H,b,rcond=None)
print("rank:", rank, "estimated tip mm:", x[:3])
print("residual mm:", np.linalg.norm(H@x-b))
# Zero residual does not identify the missing direction.

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 29 de septiembre de 2026.