Unidad 2 / 9

Inteligencia artificial en robótica y control de movimiento

Ganancias:

  • Capacidad para configurar y resolver problemas de planificación de trayectorias y cinemática directa/inversa con la ayuda de la IA.
  • Capacidad de producir una órbita segura al proporcionar límites de articulación del robot, restricciones de velocidad y aceleración como contexto para el mensaje.
  • Capacidad para verificar numérica y físicamente la salida cinemática y de trayectoria producida por la IA.

Llevar la pinza situada en el extremo de un brazo robótico a un determinado punto del espacio, en una determinada orientación; Suena simple, pero detrás de esto hay ecuaciones cinemáticas, límites conjuntos, singularidades y planificación de trayectorias. Aquí el ingeniero mecatrónico combina la trigonometría, el álgebra lineal y la teoría de control. La inteligencia artificial es una poderosa ayuda en este proceso: puede establecer ecuaciones de cinemática directa, sugerir enfoques de solución para cinemática inversa y parametrizar una trayectoria de acuerdo con restricciones de velocidad/aceleración. Sin embargo, la robótica es una de las áreas de la mecatrónica con mayor riesgo físico; Si una secuencia de ángulos generada por la IA se envía al robot sin verificación, el brazo puede golpearse a sí mismo, al entorno o al operador. En esta unidad veremos cómo configurar y verificar cinemática y planificación de trayectorias con IA.

Cinemática directa e inversa

Cinemática directa (FK): encontrar la posición y orientación del efector final si se conocen los ángulos de las articulaciones. Sólo hay una solución, es directa.

Cinemática inversa (IK): Si se conoce la posición deseada de la función final, encontrar los ángulos de unión que la proporcionarán. Generalmente tiene más de una solución (como codo arriba/abajo), a veces no tiene soluciones (punto inalcanzable), a veces tiene infinitas soluciones (singularidad).

concepto

entrada

salida

Número de soluciones

Cinemática directa

ángulos articulares

Posición/orientación extrema

soltero

Cinemática inversa

Posición/orientación extrema

ángulos articulares

Múltiple/ninguno/infinito

Para un brazo plano de dos articulaciones, la cinemática inversa se puede configurar en la IA y verificarse manualmente de la siguiente manera:

import numpy as npdef inverse_kinematik_2r(x, y, L1, L2): """IK para brazo plano de 2 articulaciones. Devuelve ángulos en radianes (solución con el codo hacia abajo).""" r2 = x**2 + y**2 # Comprobación de accesibilidad: ¿está el punto en el espacio de trabajo? si np.sqrt(r2) > (L1 + L2) o np.sqrt(r2) < abs(L1 - L2): rise ValueError("El punto está fuera del espacio de trabajo accesible") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # seguridad numérica t2 = np.arccos(cos_t2) # codo hacia abajo t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.grados(t1), np.grados(t2)# Validación: L1=L2=1, objetivo (1,1) -> esperado t2=90 gradosprint(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Las líneas críticas aquí son donde la IA a menudo se salta: verificación de accesibilidad (es el punto en el espacio de trabajo) y `np.clip` (evita que la entrada de arccos vaya más allá de ±1 debido a un error de redondeo). Sin estas dos protecciones, el código producirá NaN o fallará en un punto no válido.

Consejo: cuando solicite la resolución IK, indique claramente a la IA que "agregue control de accesibilidad y limite la entrada de arccos para recortar". Estas dos líneas previenen los errores silenciosos que más dolores de cabeza causan en el campo.

Límites conjuntos, singularidad y múltiples soluciones

Cada articulación de un robot real tiene un rango de ángulo (por ejemplo, de -170° a +170°), un límite de velocidad y un límite de aceleración. Incluso si IK proporciona un ángulo matemáticamente válido, no se puede utilizar si ese ángulo está fuera del rango físico de la articulación. Además, el robot cae en singularidad en algunas configuraciones: dos ejes están alineados, se pierde un grado de libertad y las velocidades de las articulaciones intentan llegar al infinito para un pequeño movimiento de la punta.

Por eso, una solución de recursos humanos por sí sola no es suficiente; Cada solución debe pasar un filtro de aceptabilidad:

def solución_gecerli_mi(acilar_deg, limites_deg): """dolores: [t1,t2,...], límites: [(min,max),...]""" para el dolor, (amin, amax) in zip(acilar_deg, limites_deg): if not (amine <= dolor <= amax): return False, f"Límite articular excedido: {dolor:.1f} grados ({amine},{amax}) excepto" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limites)) # (True, 'OK')print(cozum_valid_mi([0.0, 150.0], limites)) # (False, 'Límite conjunto superado...')

La IA puede dar la solución "matemática" del IK; pero los límites conjuntos y la evitación de singularidades son específicos de su sistema y deben brindarse como contexto para el mensaje.

Planificación de órbita

Llevar el robot del punto A al punto B no se trata de trazar una línea recta entre dos ángulos. El cambio repentino de velocidad crea golpes mecánicos y vibraciones. En su lugar, se utilizan perfiles suaves: perfil de velocidad trapezoidal (aceleración constante – velocidad constante – desaceleración constante) o curva en S (más suave, donde la aceleración también es limitada). Al hacer que la IA genere una trayectoria, debes indicar el objetivo, la duración y las limitaciones.

import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Perfil de velocidad trapezoidal para una sola articulación. Se devuelve la matriz de posiciones.""" distancia = abs(q1 - q0) dirección = np.sign(q1 - q0) t_speed = v_max / a_max distancia_velocidad = 0.5 * a_max * t_speed**2 if 2 * distancia_velocidad > distancia: # perfil triangular (v_max no alcanzable) t_speed = np.sqrt(distancia / a_max) t_constant = 0.0 v_peak = a_max * t_speed else: t_constant = (distancia - 2 * distancia_velocidad) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... cálculo de posición para cada t (basado en las fases de aceleración/constante/deceleración) return t, T, v_peak, length, vz = trapezoidal_trajectory(0.0, 90.0, v_max=60.0, a_max=120.0)print(f"Duración total: {duración:.3f} s, velocidad máxima: {vz:.1f} grados/s")

La comprobación lógica aquí es la siguiente: si la distancia es corta, el motor nunca alcanzará v_max y el perfil pasará de trapezoidal a triangular. Si la IA no cumple esta condición, se calculará una duración incorrecta para movimientos cortos. Puede verificar esto probando el código con un valor conocido (por ejemplo, una distancia muy corta).

Aviso débil / Aviso fuerte

DÉBIL: "Escriba una trayectoria que lleve el brazo del robot de A a B". (Sin restricción: ¿límite de velocidad? ¿Aceleración? ¿Espaciamiento entre juntas? Salida ciega.) FUERTE: "Genere una trayectoria punto a punto en el espacio articular para un robot de 6 ejes. El límite de velocidad para cada articulación es 90 grados/s, el límite de aceleración es 180 grados/s^2, el rango de ángulo se proporciona en la tabla. Utilice un perfil de velocidad trapezoidal, si la distancia es En resumen, caiga en un perfil triangular. La salida de cada articulación también escribe una función de verificación que verifique que no exceda los límites de la articulación: {{table}}".

Verificación: de la simulación al robot

La trayectoria generada por la IA se verifica en este orden antes de dirigirse al robot:

  1. Numérico: ¿Están el ángulo de la articulación, la velocidad y la aceleración de cada paso dentro de los límites?
  2. Colisión: A lo largo de la trayectoria, ¿el brazo choca consigo mismo o con el entorno (visualizar/simular si es posible)?
  3. Singularidad: ¿La órbita pasa por una región de singularidad (el determinante jacobiano se acerca a cero)?
  4. Prueba de hardware lenta: opere el robot a baja velocidad (por ejemplo, 10%) y vigílelo visualmente.
  5. Aumento gradual de la velocidad: Una vez comprobado todo, la velocidad aumenta paso a paso hasta el valor nominal.
Precaución: Al iniciar un robot con una nueva trayectoria por primera vez, la anulación de velocidad siempre debe ser baja y la parada de emergencia debe estar disponible. Incluso si la salida de la IA es "matemáticamente correcta", un desplazamiento, un eje inverso o un cable enganchado en la configuración física solo se revelará con pruebas lentas.

Mini caso

El ingeniero de automatización Ece solicita a la IA un código de trayectoria en el espacio conjunto para una aplicación de recogida y colocación. La IA produce un perfil trapezoidal, pero cuando Ece prueba un movimiento de corta distancia, ve que el tiempo es negativo: el código no maneja el caso del perfil triangular donde no se puede alcanzar v_max. Ece corrige esto diciendo "si la distancia es corta, cae en el perfil triangular". Luego compara los ángulos de las juntas dados por la IA a través de su función de validación con su propia tabla de límites y encuentra que la junta 5 quería +125° en un punto, mientras que el límite era +120°. Replanifica la trayectoria y la monitorea, esta vez haciendo funcionar el robot al 10% de velocidad. En la primera ronda, ve que la pinza se acerca demasiado a la mesa y corrige el desplazamiento Z. La IA arrojó un esquema de trabajo en minutos; pero tres validaciones separadas (perfil triangular, límite de articulación, prueba lenta) detectaron tres problemas reales separados.

Errores comunes

  • Utilizar la solución IK sin límites de juntas y control de accesibilidad.
  • No recortar las entradas de arccos/arcsin pero producir NaN en caso de error de redondeo.
  • Solicitar la órbita sin limitar la velocidad/aceleración y crear choque mecánico.
  • Ignorar las zonas de singularidad y dejar que las velocidades de las articulaciones se disparen.
  • Saltarse la transición del perfil trapezoidal-triangular en una distancia corta y calcular el tiempo equivocado.
  • Realización de la primera prueba orbital a toda velocidad y sin acceso a parada de emergencia.

En resumen

  • La cinemática directa tiene una única solución; La cinemática inversa puede producir soluciones múltiples, inexistentes o infinitas.
  • Las soluciones IK están necesariamente filtradas en términos de límites conjuntos, accesibilidad y singularidad.
  • Planificación de trayectorias; Utiliza perfiles suaves y compatibles con los límites, como trapezoidal o curva en S.
  • A corta distancia el perfil cambia de trapezoidal a triangular; esto debe manejarse en el código.
  • La IA acelera las matemáticas; Los límites y el contexto de instalación física deben ingresar al mensaje.
  • La nueva trayectoria siempre se recorre por primera vez con una relación de velocidad baja y una parada de emergencia accesible.

Tarea de aplicación

Seleccione un modelo de brazo de dos o tres articulaciones (con longitudes de enlace y límites de articulación reales o imaginarios). Hacer que la IA genere una función cinemática inversa y un planificador de trayectoria con este contexto. Luego: (1) verificar manualmente la salida IK con un objetivo conocido (vuelve a poner los ángulos y regresar al mismo punto que el FK), (2) probar que el código los captura dando al menos un punto inaccesible y un límite de articulación que excede el objetivo, (3) verificar que a una distancia corta el tiempo orbital resulte razonable. Escriba cuántos problemas de validación encontró en la primera versión del código y qué capa detectó cada uno.